<?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>147821</bug_id>
          
          <creation_ts>2015-08-09 22:27:13 -0700</creation_ts>
          <short_desc>Reduce use of PassRefPtr in WebCore/css</short_desc>
          <delta_ts>2015-08-11 18:13:23 -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>144092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116172</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-09 22:27:13 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116173</commentid>
    <comment_count>1</comment_count>
      <attachid>258609</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-09 22:28:13 -0700</bug_when>
    <thetext>Created attachment 258609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116174</commentid>
    <comment_count>2</comment_count>
      <attachid>258610</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-09 23:03:05 -0700</bug_when>
    <thetext>Created attachment 258610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116426</commentid>
    <comment_count>3</comment_count>
      <attachid>258610</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-10 18:12:56 -0700</bug_when>
    <thetext>Comment on attachment 258610
Patch

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

&gt; Source/WebCore/css/CSSGridLineNamesValue.cpp:47
&gt; +RefPtr&lt;CSSGridLineNamesValue&gt; CSSGridLineNamesValue::cloneForCSSOM() const

How did you come to the decision to change from Ref to RefPtr?

&gt; Source/WebCore/css/RGBColor.cpp:43
&gt; +    return WTF::move(result);

Is this WTF::move() necessary?

&gt; Source/WebCore/css/RGBColor.cpp:51
&gt; +    return WTF::move(result);

Ditto.

&gt; Source/WebCore/css/RGBColor.cpp:59
&gt; +    return WTF::move(result);

Ditto.

&gt; Source/WebCore/css/RGBColor.cpp:67
&gt; +    return WTF::move(result);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116463</commentid>
    <comment_count>4</comment_count>
      <attachid>258610</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-10 20:29:31 -0700</bug_when>
    <thetext>Comment on attachment 258610
Patch

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

&gt;&gt; Source/WebCore/css/CSSGridLineNamesValue.cpp:47
&gt;&gt; +RefPtr&lt;CSSGridLineNamesValue&gt; CSSGridLineNamesValue::cloneForCSSOM() const
&gt; 
&gt; How did you come to the decision to change from Ref to RefPtr?

Oops, I confused this change with other cloneForCSSOM(). Fixed.

&gt;&gt; Source/WebCore/css/RGBColor.cpp:43
&gt;&gt; +    return WTF::move(result);
&gt; 
&gt; Is this WTF::move() necessary?

Yes, it is unnecessary. nice catch !</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116464</commentid>
    <comment_count>5</comment_count>
      <attachid>258693</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-10 20:29:53 -0700</bug_when>
    <thetext>Created attachment 258693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116707</commentid>
    <comment_count>6</comment_count>
      <attachid>258693</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-11 14:10:47 -0700</bug_when>
    <thetext>Comment on attachment 258693
Patch

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

&gt; Source/WebCore/css/CSSCalculationValue.cpp:351
&gt; +    static RefPtr&lt;CSSCalcBinaryOperation&gt; create(CalcOperator op, PassRefPtr&lt;CSSCalcExpressionNode&gt; leftSide, PassRefPtr&lt;CSSCalcExpressionNode&gt; rightSide)

I&apos;m assuming you plan to remove the use of PassRefPtr in the arguments in a separate bug/patch.

&gt; Source/WebCore/css/CSSCalculationValue.cpp:364
&gt; +    static RefPtr&lt;CSSCalcExpressionNode&gt; createSimplified(CalcOperator op, PassRefPtr&lt;CSSCalcExpressionNode&gt; leftSide, PassRefPtr&lt;CSSCalcExpressionNode&gt; rightSide)

Ditto.

&gt; Source/WebCore/css/CSSCalculationValue.cpp:574
&gt; +    RefPtr&lt;CSSCalcExpressionNode&gt; parseCalc(CSSParserValueList* tokens)

This is OK as-is. The methods of this class, including this method, assume that argument tokens is a non-null pointer. So, we should change the data type of the argument tokens from CSSParserValueList* to CSSParserValueList&amp; in all applicable methods of this class. This can be done in a separate bug.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.h:71
&gt; +    RefPtr&lt;SVGPaint&gt; adjustSVGPaintForCurrentColor(PassRefPtr&lt;SVGPaint&gt;, RenderStyle*) const;

I&apos;m assuming you plan to remove the use of PassRefPtr in the first argument in a separate bug/patch.

&gt; Source/WebCore/css/CSSParser.h:357
&gt; +    RefPtr&lt;StyleRuleBase&gt; createMediaRule(PassRefPtr&lt;MediaQuerySet&gt;, RuleList*);

I&apos;m assuming you plan to remove the use of PassRefPtr in the first argument in a separate bug/patch.

&gt; Source/WebCore/css/CSSParser.h:561
&gt; +    RefPtr&lt;CSSBasicShape&gt; parseInsetRoundedCorners(PassRefPtr&lt;CSSBasicShapeInset&gt;, CSSParserValueList&amp;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116799</commentid>
    <comment_count>7</comment_count>
      <attachid>258693</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-11 17:24:40 -0700</bug_when>
    <thetext>Comment on attachment 258693
Patch

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

&gt;&gt; Source/WebCore/css/CSSCalculationValue.cpp:351
&gt;&gt; +    static RefPtr&lt;CSSCalcBinaryOperation&gt; create(CalcOperator op, PassRefPtr&lt;CSSCalcExpressionNode&gt; leftSide, PassRefPtr&lt;CSSCalcExpressionNode&gt; rightSide)
&gt; 
&gt; I&apos;m assuming you plan to remove the use of PassRefPtr in the arguments in a separate bug/patch.

Yes, right. Now I focus on removing PassRefPtr in return type first. Then I will plan to reduce use of PassRefPtr in the arguments too.

&gt;&gt; Source/WebCore/css/CSSCalculationValue.cpp:574
&gt;&gt; +    RefPtr&lt;CSSCalcExpressionNode&gt; parseCalc(CSSParserValueList* tokens)
&gt; 
&gt; This is OK as-is. The methods of this class, including this method, assume that argument tokens is a non-null pointer. So, we should change the data type of the argument tokens from CSSParserValueList* to CSSParserValueList&amp; in all applicable methods of this class. This can be done in a separate bug.

Ok, let me file a new bug for it.

&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.h:71
&gt;&gt; +    RefPtr&lt;SVGPaint&gt; adjustSVGPaintForCurrentColor(PassRefPtr&lt;SVGPaint&gt;, RenderStyle*) const;
&gt; 
&gt; I&apos;m assuming you plan to remove the use of PassRefPtr in the first argument in a separate bug/patch.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116813</commentid>
    <comment_count>8</comment_count>
      <attachid>258693</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-11 18:13:19 -0700</bug_when>
    <thetext>Comment on attachment 258693
Patch

Clearing flags on attachment: 258693

Committed r188315: &lt;http://trac.webkit.org/changeset/188315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116814</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-11 18:13:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258609</attachid>
            <date>2015-08-09 22:28:13 -0700</date>
            <delta_ts>2015-08-09 23:03:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147821-20150810142759.patch</filename>
            <type>text/plain</type>
            <size>129836</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYxNDE5YmZkYzA5NjVl
NzAwYWJhMzgyMzZlNzMwYWMyOWUwNTUxOC4uNjVmYjc3M2ZkMGQyMmQ3ZTk1M2EwM2U2YTM0NDZk
NTNjNjJkOTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAxNS0wOC0wOSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVz
ZSBvZiBQYXNzUmVmUHRyIGluIFdlYkNvcmUvY3NzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgUmVmUHRyIHdoZW4gcmV0dXJuaW5nIG51bGxwdHIg
b3IgUmVmUHRyLCBpZiBub3QsIHVzZSBSZWYuCisKKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlQ2FsYyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVCbGVuZEhhbGYpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ1NT
KToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FudmFzVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuaDoK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uT2Zmc2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJy
aW5nS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjb3VudGVyVG9DU1NWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjp6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0Fs
aWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERp
c3RyaWJ1dGlvbldpdGhPdmVyZmxvd0FsaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUpOgorICAgICAgICAqIGNzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZCk6CisgICAgICAgICog
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgor
ICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0dy
YWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGllbnRXaXRoU3R5
bGVzUmVzb2x2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NHcmlkTGluZU5hbWVzVmFsdWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9D
U1NHcmlkTGluZU5hbWVzVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpjbG9uZUZvckNTU09NKToK
KyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNsb25lRm9yQ1NT
T00pOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWxpZFByaW1pdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlUG9zaXRpb25YKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VQ
b3NpdGlvblkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlv
bkNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkRlbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25EaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25GaWxsTW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbk5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblBsYXlTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVHJpZ2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VHcmlkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Z3JpZE1pc3NpbmdHcmlkUG9zaXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlR3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3Jp
ZEJyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRBdXRvRmxv
dyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRlQXJlYXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VJbnNldFJvdW5kZWRDb3JuZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNoYXBlUmFkaXVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlQ2lyY2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZVBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVBbmRPckJveCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlU2hhcGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQ2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhc2lj
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRGYW1pbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUltYWdlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFu
c2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUZXh0SW5kZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZUVtcHR5TWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6Y3JlYXRlU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cG9wU3VwcG9ydHNSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0
ZUtleWZyYW1lc1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHls
ZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NT
U1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMpOgorICAgICAgICAq
IGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6c3R5bGVJbWFnZSk6CisgICAgICAgICog
Y3NzL0NTU1RvU3R5bGVNYXAuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUXVlcnlTZXQ6OmNvcHkpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5TWF0Y2hlcjo6bWF0Y2hNZWRpYSk6CisgICAg
ICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmg6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50
ZXJuYWwpOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoK
KyAgICAgICAgKiBjc3MvUkdCQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQ29sb3I6
OnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6Z3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6UkdCQ29sb3I6OmJsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UkdCQ29sb3I6OmFscGhh
KToKKyAgICAgICAgKiBjc3MvUkdCQ29sb3IuaDoKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdseXBoT3JpZW50YXRp
b25Ub0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJh
eVRvQ1NTVmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9T
VkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1N0
cm9rZURhc2hhcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU1ZHUGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VQYWludE9yZGVyKToKKyAgICAgICAgKiBjc3Mv
V2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6
bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0Q1NTTWF0cml4Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4
Ojpyb3RhdGVBeGlzQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpz
a2V3WCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKToKKyAgICAg
ICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4Lmg6CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aDoKKwogMjAxNS0wOC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEVuYWJsZSBXZWJHTCBvbiBXaW5kb3dzIENNYWtlIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggYTQ2ODM4NmFkYTgzN2U1NDBmM2Mz
OTkzNTEzZTFiOTQ5NmViYTVmNy4uYjQ0MDRjMzE0NTUzZTVjY2U0NTczMGE0NWNjMjhlYjBhMGNi
MGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoY29uc3QgUGFpciYgb2Zm
c2V0LCBjb25zdCBQYWlyJiBvdGhlcikKICAgICByZXR1cm4gb2Zmc2V0LmNzc1RleHQoKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxl
UG9zaXRpb25PZmZzZXQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb2Zmc2V0LCBDU1NW
YWx1ZUlEIGRlZmF1bHRTaWRlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRT
ZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBv
ZmZzZXQsIENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBzaWRlID0g
ZGVmYXVsdFNpZGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbW91bnQ7CkBAIC0x
MTAsOCArMTEwLDggQEAgc3RhdGljIFN0cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBTdHJp
bmcmIHJhZGl1cywgY29uc3QgU3RyaW5nJiBjZW50ZXJYLCBjb24KIAogU3RyaW5nIENTU0Jhc2lj
U2hhcGVDaXJjbGU6OmNzc1RleHQoKSBjb25zdAogewotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gbm9ybWFsaXplZENYID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2Nl
bnRlclgsIENTU1ZhbHVlTGVmdCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBub3Jt
YWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWSwgQ1NT
VmFsdWVUb3ApOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9ybWFsaXplZENYID0gYnVp
bGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclgsIENTU1ZhbHVlTGVmdCk7Cisg
ICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJs
ZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWSwgQ1NTVmFsdWVUb3ApOwogCiAgICAgU3RyaW5nIHJh
ZGl1czsKICAgICBpZiAobV9yYWRpdXMgJiYgbV9yYWRpdXMtPmdldFZhbHVlSUQoKSAhPSBDU1NW
YWx1ZUNsb3Nlc3RTaWRlKQpAQCAtMTczLDggKzE3Myw4IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRF
bGxpcHNlU3RyaW5nKGNvbnN0IFN0cmluZyYgcmFkaXVzWCwgY29uc3QgU3RyaW5nJiByYWRpdXNZ
LCBjCiAKIFN0cmluZyBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1ggPSBidWlsZFNlcmlhbGl6
YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWCwgQ1NTVmFsdWVMZWZ0KTsKLSAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRp
b25PZmZzZXQobV9jZW50ZXJZLCBDU1NWYWx1ZVRvcCk7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBub3JtYWxpemVkQ1ggPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2Vu
dGVyWCwgQ1NTVmFsdWVMZWZ0KTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6
ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJZLCBDU1NWYWx1
ZVRvcCk7CiAKICAgICBTdHJpbmcgcmFkaXVzWDsKICAgICBTdHJpbmcgcmFkaXVzWTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggYjdiNDZkYmM0MTI3YThlMDM0NTdmODg4YmYx
YmM2OTFmY2JlYmI0My4uODE3MzNkMjFmZmRkOWEyYjQwYWIwMjRhYWViMTQwNzQxZTk2YmEyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTE5Miw4ICsxOTIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh5KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBnZXRYQXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZXMuYXQoaSAqIDIpOyB9Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2V0
WUF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmF0KGkgKiAyICsgMSk7IH0K
KyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdldFhBdCh1bnNpZ25lZCBpKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlcy5hdChpICogMik7IH0KKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGdldFlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5hdChpICogMiAr
IDEpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4+JiB2YWx1
ZXMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlczsgfQogCiAgICAgdm9pZCBzZXRXaW5kUnVsZShX
aW5kUnVsZSB3KSB7IG1fd2luZFJ1bGUgPSB3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNGFlYWE3MTBiYmFlOWNlZGE1MzFhNGUxZjVkOGMyMjJh
NTg5OWNmZi4uMzYxNDJmMWJmMGJjMDI0ODA3OTNiNDA5YWNjMDdjNjlhOGMzNzU1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtNDcsOCArNDcsOCBA
QCBlbnVtIFBhcnNlU3RhdGUgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ1NTKGNvbnN0IENhbGNFeHByZXNz
aW9uTm9kZSYsIGNvbnN0IFJlbmRlclN0eWxlJik7Ci1zdGF0aWMgUGFzc1JlZlB0cjxDU1NDYWxj
RXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBMZW5ndGgmLCBjb25zdCBSZW5kZXJTdHls
ZSYpOworc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25z
dCBDYWxjRXhwcmVzc2lvbk5vZGUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworc3RhdGljIFJlZlB0
cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBMZW5ndGgmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogCiBzdGF0aWMgQ2FsY3VsYXRpb25DYXRlZ29yeSB1bml0Q2F0ZWdvcnko
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlKQogewpAQCAtMjAzLDcgKzIwMyw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ2FsY1ByaW1pdGl2ZVZh
bHVlKHZhbHVlLCBpc0ludGVnZXIpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMgdHlwZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZlB0cjxD
U1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMgdHlwZSwgYm9vbCBpc0ludGVnZXIpCiAgICAgewogICAgICAgICBpZiAo
c3RkOjppc25hbih2YWx1ZSkgfHwgc3RkOjppc2luZih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnRl
Z2VyUmVzdWx0KENhbGNPcGVyYXRvciBvcCwgY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJgog
Y2xhc3MgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVz
c2lvbk5vZGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNCaW5hcnlPcGVyYXRpb24+IGNyZWF0ZShDYWxjT3BlcmF0
b3Igb3AsIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1Jl
ZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKKyAgICBzdGF0aWMgUmVmUHRy
PENTU0NhbGNCaW5hcnlPcGVyYXRpb24+IGNyZWF0ZShDYWxjT3BlcmF0b3Igb3AsIFBhc3NSZWZQ
dHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxjRXhw
cmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChsZWZ0U2lkZS0+
Y2F0ZWdvcnkoKSA8IENhbGNPdGhlcik7CiAgICAgICAgIEFTU0VSVChyaWdodFNpZGUtPmNhdGVn
b3J5KCkgPCBDYWxjT3RoZXIpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKG5ld0NhdGVnb3J5LCBv
cCwgbGVmdFNpZGUsIHJpZ2h0U2lkZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlU2ltcGxpZmllZChDYWxjT3BlcmF0b3Igb3As
IFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKKyAgICBzdGF0aWMgUmVmUHRyPENTU0Nh
bGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlU2ltcGxpZmllZChDYWxjT3BlcmF0b3Igb3AsIFBhc3NS
ZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxj
RXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIENhbGN1bGF0aW9uQ2F0
ZWdvcnkgbGVmdENhdGVnb3J5ID0gbGVmdFNpZGUtPmNhdGVnb3J5KCk7CiAgICAgICAgIENhbGN1
bGF0aW9uQ2F0ZWdvcnkgcmlnaHRDYXRlZ29yeSA9IHJpZ2h0U2lkZS0+Y2F0ZWdvcnkoKTsKQEAg
LTU3MSw3ICs1NzEsNyBAQCBzdGF0aWMgUGFyc2VTdGF0ZSBjaGVja0RlcHRoQW5kSW5kZXgoaW50
KiBkZXB0aCwgdW5zaWduZWQgaW5kZXgsIENTU1BhcnNlclZhbHVlTAogCiBjbGFzcyBDU1NDYWxj
RXhwcmVzc2lvbk5vZGVQYXJzZXIgewogcHVibGljOgotICAgIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlPiBwYXJzZUNhbGMoQ1NTUGFyc2VyVmFsdWVMaXN0KiB0b2tlbnMpCisgICAg
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VDYWxjKENTU1BhcnNlclZhbHVlTGlz
dCogdG9rZW5zKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICBW
YWx1ZSByZXN1bHQ7CkBAIC02OTQsMTMgKzY5NCwxMyBAQCBwcml2YXRlOgogICAgIH0KIH07CiAK
LXN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxDU1NDYWxjQmluYXJ5T3BlcmF0aW9uPiBjcmVhdGVC
bGVuZEhhbGYoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
ZmxvYXQgcHJvZ3Jlc3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDU1NDYWxjQmluYXJ5T3BlcmF0
aW9uPiBjcmVhdGVCbGVuZEhhbGYoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJuIENTU0NhbGNCaW5hcnlP
cGVyYXRpb246OmNyZWF0ZShDYWxjTXVsdGlwbHksIGNyZWF0ZUNTUyhsZW5ndGgsIHN0eWxlKSwK
ICAgICAgICAgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShwcm9ncmVzcywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCAhcHJvZ3Jl
c3MgfHwgcHJvZ3Jlc3MgPT0gMSkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NDYWxjRXhw
cmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBDYWxjRXhwcmVzc2lvbk5vZGUmIG5vZGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25O
b2RlPiBjcmVhdGVDU1MoY29uc3QgQ2FsY0V4cHJlc3Npb25Ob2RlJiBub2RlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChub2RlLnR5cGUoKSkgewogICAgIGNhc2Ug
Q2FsY0V4cHJlc3Npb25Ob2RlTnVtYmVyOiB7CkBAIC03MjcsNyArNzI3LDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgQ2FsY0V4cHJl
c3Npb25Ob2RlJiBub2QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Np
b25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIFBlcmNl
bnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCBlYzUyMjI5YWIwZWM3
YzU2YjE1ZjMyNDU5MWUyMjY5Y2VmMmQxZDcyLi40YjIwMTkzMTMxMWViMjcyN2M5YWY2ZjJjMDA4
M2E5YjBjNzJmOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTc5
LDEyICs3OSwxMiBAQCBIVE1MQ2FudmFzRWxlbWVudCogQ1NTQ2FudmFzVmFsdWU6OmVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBtX2VsZW1lbnQ7CiB9CiAKLVBhc3NSZWZQ
dHI8SW1hZ2U+IENTU0NhbnZhc1ZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
Y29uc3QgRmxvYXRTaXplJiAvKnNpemUqLykKK1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIC8qc2l6ZSov
KQogewogICAgIEFTU0VSVChjbGllbnRzKCkuY29udGFpbnMocmVuZGVyZXIpKTsKICAgICBIVE1M
Q2FudmFzRWxlbWVudCogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50
KCkpOwogICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+YnVmZmVyKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZWxlbWVudC0+Y29w
aWVkSW1hZ2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZh
c1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCA0NWI3
OWE5ZmRmMGIyMDQ1M2M0ODk3YzQxOGMyNDllNDJiNTk4ZmYwLi5jOTY4MGE4OWFlMTNlNmRlODVm
MTE4N2MzNjExMjE0NjUxZmJhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FudmFzVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNv
bnN0OwogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0
IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgRmxvYXRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggZjI0NDZhM2ZhZDhiZGM1YmY4YTc5ZGIxNzY4YzY4MTc2ZjM0ZTBiZi4uYWRhNWI0
MDY4MzczNTY3YjExMDY3NGIwNmRmNTc4ZmMyODY2NmZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTY5MCw3ICs2OTAs
NyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjbwogICAgIHJldHVybiBwb3NpdGlvbkxpc3Q7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRl
clN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQorc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBMZW5ndGggbGVuZ3RoOwogICAgIHN3aXRjaCAocHJv
cGVydHlJRCkgewpAQCAtNzI3LDcgKzcyNyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJCiAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25z
dCBDb2xvciYgY29sb3IpIGNvbnN0CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSZW5kZXJTdHlsZSogc3R5
bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGRv
ZXMgTk9UIGxvb2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28gdGhhdCBjb21wdXRlZCBzdHls
ZSBkb2Vzbid0IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQpAQCAtMTMy
OCw3ICsxMzI4LDcgQEAgdm9pZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldENzc1Rl
eHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgZWMgPSBOT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJyaW5nS2V5d29y
ZCgpIGNvbnN0CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJyaW5nS2V5d29yZCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX25vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTUyMyw3ICsxNTIzLDcg
QEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1ZhbHVlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY291bnRlclRv
Q1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQpCiB7CiAgICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogbWFwID0gc3R5bGUtPmNvdW50
ZXJEaXJlY3RpdmVzKCk7CiAgICAgaWYgKCFtYXApCkBAIC0xNjMyLDcgKzE2MzIsNyBAQCB0eXBl
ZGVmIGNvbnN0IExlbmd0aCYgKFJlbmRlclN0eWxlOjoqUmVuZGVyU3R5bGVMZW5ndGhHZXR0ZXIp
KCkgY29uc3Q7CiB0eXBlZGVmIExheW91dFVuaXQgKFJlbmRlckJveE1vZGVsT2JqZWN0OjoqUmVu
ZGVyQm94Q29tcHV0ZWRDU1NWYWx1ZUdldHRlcikoKSBjb25zdDsKIAogdGVtcGxhdGU8UmVuZGVy
U3R5bGVMZW5ndGhHZXR0ZXIgbGVuZ3RoR2V0dGVyLCBSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVl
R2V0dGVyIGNvbXB1dGVkQ1NTVmFsdWVHZXR0ZXI+Ci1pbmxpbmUgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShSZW5kZXJTdHlsZSYgc3R5
bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitpbmxpbmUgUmVmUHRyPENTU1ZhbHVlPiB6b29t
QWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBMZW5ndGggdW56b29temVkTGVuZ3RoID0gKHN0
eWxlLipsZW5ndGhHZXR0ZXIpKCk7CiAgICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSB8
fCB1bnpvb216ZWRMZW5ndGguaXNGaXhlZCgpKQpAQCAtMTc1MCw3ICsxNzUwLDcgQEAgc3RhdGlj
IHZvaWQgcmVzb2x2ZUNvbnRlbnRBbGlnbm1lbnRBdXRvKENvbnRlbnRQb3NpdGlvbiYgcG9zaXRp
b24sIENvbnRlbnREaXN0cmkKICAgICAgICAgcG9zaXRpb24gPSBDb250ZW50UG9zaXRpb25TdGFy
dDsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxh
eW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIHJldHVybiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yKG1fbm9kZSwgbV9hbGxvd1Zpc2l0ZWRTdHlsZSwgbV9wc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQsIHVwZGF0ZUxheW91dCk7
CiB9CkBAIC0xNzg5LDcgKzE3ODksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlU3R5bGVJ
Zk5lZWRlZEZvck5vZGUoY29uc3QgTm9kZSYgbm9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVG
b3JQcm9wZXJ0eShOb2RlKiBzdHlsZWROb2RlLCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lm
aWVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoTm9kZSogc3R5bGVkTm9kZSwg
UHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZWROb2RlLT5yZW5kZXJlcigp
OwogCkBAIC0xNzk5LDcgKzE3OTksNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGNvbXB1dGVSZW5kZXJTdHlsZUZvclByb3BlcnR5KE5vZGUqIHN0eWxlZAogICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxsIG9ubHkgZXhpc3Qg
aWYgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4KICAgICAgICAgICAg
IHJldHVybiBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmll
cik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICAgICAg
cmV0dXJuIHN0eWxlOwogICAgIH0KIAogICAgIHJldHVybiBzdHlsZWROb2RlLT5jb21wdXRlZFN0
eWxlKHN0eWxlZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpID8gTk9QU0VVRE8gOiBwc2V1ZG9FbGVt
ZW50U3BlY2lmaWVyKTsKQEAgLTE4MzAsNyArMTgzMCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+
IHNoYXBlUHJvcGVydHlWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNoYXBl
VmFsCiB9CiAjZW5kaWYKIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZv
ckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChJdGVtUG9zaXRpb24gaXRlbVBvc2l0
aW9uLCBPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvd0FsaWdubWVudCwgSXRlbVBvc2l0aW9uVHlw
ZSBwb3NpdGlvblR5cGUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVt
UG9zaXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoSXRlbVBvc2l0aW9uIGl0ZW1Qb3NpdGlvbiwg
T3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3dBbGlnbm1lbnQsIEl0ZW1Qb3NpdGlvblR5cGUgcG9z
aXRpb25UeXBlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHJlc3VsdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAocG9zaXRpb25UeXBlID09IExl
Z2FjeVBvc2l0aW9uKQpAQCAtMTgzOSwxMCArMTgzOSwxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KEl0
ZW1QbwogICAgIGlmIChvdmVyZmxvd0FsaWdubWVudCAhPSBPdmVyZmxvd0FsaWdubWVudERlZmF1
bHQpCiAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKG92
ZXJmbG93QWxpZ25tZW50KSk7CiAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPD0gMik7Ci0g
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERp
c3RyaWJ1dGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChDb250ZW50UG9zaXRpb24gcG9zaXRpb24s
IENvbnRlbnREaXN0cmlidXRpb25UeXBlIGRpc3RyaWJ1dGlvbiwgT3ZlcmZsb3dBbGlnbm1lbnQg
b3ZlcmZsb3dBbGlnbm1lbnQpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JD
b250ZW50UG9zaXRpb25BbmREaXN0cmlidXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoQ29udGVu
dFBvc2l0aW9uIHBvc2l0aW9uLCBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBkaXN0cmlidXRpb24s
IE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93QWxpZ25tZW50KQogewogICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
ICAgICBpZiAoZGlzdHJpYnV0aW9uICE9IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0KQpAQCAt
MTg1MywxMCArMTg1MywxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVl
Rm9yQ29udGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0aW9uV2l0aE92ZXJmbAogICAgICAgICByZXN1
bHQtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG92ZXJmbG93QWxpZ25tZW50KSk7
CiAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPiAwKTsKICAgICBBU1NFUlQocmVzdWx0LT5s
ZW5ndGgoKSA8PSAzKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1
cGRhdGVMYXlvdXQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0
IHVwZGF0ZUxheW91dCkgY29uc3QKIHsKICAgICBOb2RlKiBzdHlsZWROb2RlID0gdGhpcy0+c3R5
bGVkTm9kZSgpOwogICAgIGlmICghc3R5bGVkTm9kZSkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZFNpemU6CkBAIC0xOTQxLDcgKzE5NDEsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydAogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXllci0+c2l6
ZSgpLCAqc3R5bGUpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAg
ICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0OiB7CkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAg
ICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3Vyckxh
eWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoZmlsbFJlcGVhdFRvQ1NTVmFsdWUoY3VyckxheWVyLT5yZXBlYXRYKCksIGN1cnJM
YXllci0+cmVwZWF0WSgpKSk7CiAKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrU291cmNlVHlwZTogewogICAgICAgICAgICAgY29uc3QgRmlsbExheWVy
KiBsYXllcnMgPSBzdHlsZS0+bWFza0xheWVycygpOwpAQCAtMTk2OCw3ICsxOTY4LDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBj
dXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0
KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1
ZShjdXJyTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxp
c3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOiB7CkBAIC0xOTgwLDcgKzE5ODAsNyBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5
ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXIt
Pm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT5jb21wb3NpdGUoKSkpOwogCi0gICAgICAgICAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6IHsKICAgICAgICAgICAg
IGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKQEAg
LTE5OTEsNyArMTk5MSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBm
b3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJM
YXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
c3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPmF0dGFjaG1lbnQoKSkpOwogCi0g
ICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlz
dDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgpAQCAtMjAxMiw3ICsyMDEy
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoYm94KSk7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246IHsKQEAgLTIwMjMs
NyArMjAyMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsg
Y3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgY3Vy
ckxheWVyLCAqc3R5bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewpAQCAtMjAzNSw3ICsyMDM1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnQKICAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7
IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+eFBv
c2l0aW9uKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAg
ICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25ZOiB7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAog
ICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3Vy
ckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoY3VyckxheWVyLT55UG9zaXRp
b24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Q29sbGFwc2U6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmJvcmRlckNvbGxhcHNlKCkpCkBAIC0y
MDU3LDcgKzIwNTcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0
eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpKTsKICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNw
YWNpbmcoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6CiAgICAgICAgICAgICByZXR1cm4gem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgKnN0
eWxlKTsKQEAgLTIxODIsNyArMjE4Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICBhdXRvIHZhbHVlID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmN1
cnNvcigpKTsKICAgICAgICAgICAgIGlmIChsaXN0KSB7CiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKFdURjo6bW92ZSh2YWx1ZSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0LnJl
bGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUodmFsdWUpOwogICAgICAgICB9CkBAIC0yMjUwLDcg
KzIyNTAsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgY29tcHV0ZWRG
b250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21TdHlsZShzdHlsZS5n
ZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250LnJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wdXRlZEZvbnQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRGYW1pbHk6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGZv
bnRGYW1pbHlMaXN0ID0gZm9udEZhbWlseUZyb21TdHlsZShzdHlsZS5nZXQoKSk7CkBAIC0yMjU4
LDcgKzIyNTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgLy8gTk9U
RTogR2Vja28gYWx3YXlzIHJldHVybnMgdGhpcyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBDU1NQcmlt
aXRpdmVWYWx1ZSBzdHJpbmcuCiAgICAgICAgICAgICBpZiAoZm9udEZhbWlseUxpc3QtPmxlbmd0
aCgpID09IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlMaXN0LT5pdGVtKDAp
OwotICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlMaXN0LnJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIHJldHVybiBmb250RmFtaWx5TGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Rm9udFNpemU6CiAgICAgICAgICAgICByZXR1cm4gZm9udFNpemVGcm9tU3R5bGUoKnN0
eWxlKTsKQEAgLTIyNzksNyArMjI3OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmUmIGZlYXR1cmUgPSBmZWF0dXJlU2V0dGluZ3Mt
PmF0KGkpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250RmVhdHVyZVZhbHVl
OjpjcmVhdGUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4g
bGlzdDsKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b0Zsb3c6IHsKQEAgLTIyOTMsNyArMjI5Myw3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmlzR3JpZEF1
dG9GbG93QWxnb3JpdGhtRGVuc2UoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAotICAg
ICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTcGVjcyBtZW50aW9uIHRoYXQgZ2V0Q29tcHV0ZWRT
dHlsZSgpIHNob3VsZCByZXR1cm4gdGhlIHVzZWQgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluc3Rl
YWQgb2YgdGhlIGNvbXB1dGVkCkBAIC0yNTU5LDcgKzI1NTksNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydAogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT50ZXh0RW1waGFzaXNGaWxs
KCkpKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSkpOwotICAgICAgICAgICAgICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6
IHsKQEAgLTI1NzYsMTAgKzI1NzYsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZVdlYmtpdEVhY2hMaW5lKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0
eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5naW5nKQogICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlV2Via2l0SGFuZ2luZykpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0LnJl
bGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgICAgIH0KICNl
bmRpZgotICAgICAgICAgICAgcmV0dXJuIHRleHRJbmRlbnQucmVsZWFzZSgpOworICAgICAgICAg
ICAgcmV0dXJuIHRleHRJbmRlbnQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3c6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRl
eHRTaGFkb3coKSwgcHJvcGVydHlJRCwgKnN0eWxlKTsKQEAgLTI3NTIsNyArMjc1Miw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246CkBAIC0yNzgwLDcgKzI3ODAsNyBAQCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDogewpAQCAtMjc5Niw3ICsyNzk2LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoQW5pbWF0aW9uOjppbml0aWFsSXRlcmF0aW9uQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25OYW1lOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
TmFtZTogewpAQCAtMjgwNyw3ICsyODA3LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHQtPmFuaW1hdGlvbihpKS5uYW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7
CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwotICAgICAgICAg
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZToKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZTogewpAQCAtMjgyMyw3
ICsyODIzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVubmluZykpOwotICAgICAgICAg
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246CkBA
IC0yOTA3LDcgKzI5MDcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5w
ZXJzcGVjdGl2ZU9yaWdpblkoKSwgKnN0eWxlKSk7CiAKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUt
PnJ0bE9yZGVyaW5nKCkgPyBDU1NWYWx1ZVZpc3VhbCA6IENTU1ZhbHVlTG9naWNhbCk7CkBAIC0y
OTYyLDcgKzI5NjIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAg
IGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1Pcmln
aW5aKCksICpzdHlsZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtU3R5bGU6CkBAIC0yOTkzLDcgKzI5OTMsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydAogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUoYW5pbWF0aW9uLmRlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UykpOwogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc0xpc3QtPmFwcGVuZChsaXN0LnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJhbnNpdGlvbnNMaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJh
bnNpdGlvbnNMaXN0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwpAQCAt
MzAwMiw3ICszMDAyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxE
dXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRpbWlu
Z0Z1bmN0aW9uKCkuZ2V0KCkpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQ
b2ludGVyRXZlbnRzOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZh
bHVlKHN0eWxlLT5wb2ludGVyRXZlbnRzKCkpOwpAQCAtMzA1MSw3ICszMDUxLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBib3hPcGVyYXRp
b24gPSBkb3duY2FzdDxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CiAgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGJveE9wZXJh
dGlvbi5yZWZlcmVuY2VCb3goKSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93
SW50bzoKQEAgLTMxMDUsNyArMzEwNSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICAgICAgaWYgKCFjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+KHZhbHVlLCBwcm9w
ZXJ0eVZhbHVlKHByb3BlcnR5LCBEb05vdFVwZGF0ZUxheW91dCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKICAgICAgICAgICAgIHJldHVybiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoYm9yZGVyQm90dG9tU2hv
cnRoYW5kKCkpOwpAQCAtMzM3MiwxNyArMzM3MiwxNyBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKSBjb25zdAogICAg
IHJldHVybiBjb3B5UHJvcGVydGllc0luU2V0KGNvbXB1dGVkUHJvcGVydGllcywgbnVtQ29tcHV0
ZWRQcm9wZXJ0aWVzKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CitSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
ID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxh
eW91dCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9Ci0gICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBsaXN0OwogfQogCi1Q
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiBzaG9ydGhhbmQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
IC8vIEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdC4KQEAgLTM0MDcsMTcgKzM0MDcsMTcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2lkZXNTaG8KICAgICBpZiAoc2hvd0xlZnQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChsZWZ0VmFs
dWUucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKSBjb25zdAorUmVmUHRyPENTU1ZhbHVlTGlz
dD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hv
cnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFz
aFNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5VmFs
dWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAg
ICBsaXN0LT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQo
Y29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CkBAIC0zNDM3
LDcgKzM0MzcsNyBAQCBDU1NSdWxlKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnBhcmVu
dFJ1bGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCitSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHBy
b3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQpAQCAtMzQ4MSw3ICszNDgxLDcgQEAg
U3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAgICAgCi1Q
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICByZXR1cm4gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKIH0KQEAgLTM0OTcsNyArMzQ5Nyw3IEBAIGJvb2wgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNob3J0aGFuZFZh
bHVlKCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yWzVdID0geyBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEF0dGFjaG1lbnQsICAKQEAgLTM1MDgsNyArMzUwOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUo
KSBjCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U2xhc2hTZXBhcmF0ZWQoKTsKICAgICBsaXN0LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5
QmFja2dyb3VuZCwgcHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOwogICAgIGxpc3Qt
PmFwcGVuZCgqZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQWZ0ZXJT
bGFzaFNlcGVyYXRvcikpKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGxpc3Q7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBlOTY2ZDI0M2FmMmJhODAz
Y2VkOGRlZmQ2YWJhMDkwMjQ0NTY3NDM2Li42ZTkxYzkzZGI0MzgyNDZhYTkxZGEyMWMxNTNkZGY0
MDNhZjg1OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCkBAIC00OSwxMiArNDksMTIgQEAgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJh
Y3RvciB7CiBwdWJsaWM6CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihQYXNzUmVmUHRyPE5v
ZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8p
OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
LCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFs
dWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxh
eW91dCkgY29uc3Q7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9kcyBmb3IgSFRNTCBlZGl0aW5nLgog
ICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0
IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdv
cmQoKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdldEZvbnRTaXplQ1NT
VmFsdWVQcmVmZXJyaW5nS2V5d29yZCgpIGNvbnN0OwogICAgIGJvb2wgdXNlRml4ZWRGb250RGVm
YXVsdFNpemUoKSBjb25zdDsKICAgICBib29sIHByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlE
LCBjb25zdCBDU1NWYWx1ZSopIGNvbnN0OwogCkBAIC02NywxNiArNjcsMTYgQEAgcHJpdmF0ZToK
ICAgICAvLyBvbiBFbGVtZW50cywgYnV0IHJpZ2h0IG5vdyBlZGl0aW5nIGNyZWF0ZXMgdGhlc2Ug
Zm9yIHRleHQgbm9kZXMuIFdlIHNob3VsZCBmaXggdGhhdC4KICAgICBOb2RlKiBzdHlsZWROb2Rl
KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8U1ZHUGFp
bnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBS
ZW5kZXJTdHlsZSopIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3ZnUHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKKyAgICBSZWZQdHI8U1ZHUGFp
bnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBS
ZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JT
aGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxl
JiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMp
OwotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRD
b2xvcihSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5bGUqLCBjb25z
dCBDb2xvciYpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYp
IGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRo
YW5kVmFsdWUoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
KSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0
OworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNT
aG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0OworICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpIGNvbnN0OworICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFu
ZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7CiAKICAgICBSZWZQdHI8Tm9k
ZT4gbV9ub2RlOwogICAgIFBzZXVkb0lkIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcjsKQEAgLTEw
Myw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgQ1NTUnVsZSogcGFyZW50UnVsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
UHJvcGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpIG92ZXJyaWRlOwpAQCAtMTEyLDEyICsxMTIsMTIgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFN0cmluZyByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKKyAgICBSZWZQdHI8
Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91
dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAg
IFBzZXVkb0lkIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGQwNjlkMmUxMmI4ZTBjN2NkMTc5YmZhMmM4N2E3OTQx
OGEyMzNkYjIuLjNjNzE3Y2IxNWM4OThhM2M1MDRlZDY0NjI3NzM1NzQ5MjVkNzc5OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBA
IHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImIGNhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgbV9jcm9zc2ZhZGVTdWJpbWFnZU9ic2VydmVy
LnNldFJlYWR5KHRydWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
K1JlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBQYXNzUmVmUHRy
PEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IEZsb2F0UwogCiAgICAgbV9nZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpjcmVhdGUoZnJvbUltYWdlLCB0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0
RmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVuZGVyZXIpLCBzaXplKTsKIAotICAgIHJldHVybiBt
X2dlbmVyYXRlZEltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZTsK
IH0KIAogdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jvc3NmYWRlQ2hhbmdlZChjb25zdCBJbnRS
ZWN0JikKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjp0cmF2ZXJz
ZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhYwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gQ1NTQ3Jvc3Nm
YWRlVmFsdWU6OmJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MpIGNvbnN0CitSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IENTU0Nyb3NzZmFkZVZhbHVl
OjpibGVuZChjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBj
b25zdAogewogICAgIEFTU0VSVChlcXVhbElucHV0SW1hZ2VzKGZyb20pKTsKICAgICBSZWZQdHI8
U3R5bGVDYWNoZWRJbWFnZT4gdG9TdHlsZWRJbWFnZSA9IFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0
ZShtX2NhY2hlZFRvSW1hZ2UuZ2V0KCkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIFBhc3NSZWZQdHI8
Q1NTQ3Jvc3NmYWRlVmFsdWU+IENTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZChjb25zdCBDU1NDcm9z
c2ZhZGVWYWx1ZSYKICAgICBpZiAobV9wZXJjZW50YWdlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQog
ICAgICAgICB0b1BlcmNlbnRhZ2UgLz0gMTAwLjA7CiAgICAgY3Jvc3NmYWRlVmFsdWUtPnNldFBl
cmNlbnRhZ2UoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShibGVuZEZ1bmMoZnJvbVBlcmNlbnRh
Z2UsIHRvUGVyY2VudGFnZSwgcHJvZ3Jlc3MpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikpOwotICAgIHJldHVybiBjcm9zc2ZhZGVWYWx1ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNy
b3NzZmFkZVZhbHVlOwogfQogCiBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTQ3Jvc3NmYWRlVmFsdWUmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3Nm
YWRlVmFsdWUuaAppbmRleCAxZWQ4YjZmM2UwZWQ2ZTMxOWYyNGI4M2M1NTc4YWVlNGFmN2YyYTJh
Li5mYTAzYmQ5NzY4NjgzMTNhYTYwNDM1MTRkOGIwMWIyYWJjNTliOWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFn
ZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIGJvb2wgaXNG
aXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgRmxvYXRTaXplIGZpeGVkU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNv
bnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8
Q1NTQ3Jvc3NmYWRlVmFsdWU+IGJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiwgZG91Ymxl
KSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGJsZW5kKGNvbnN0IENTU0Ny
b3NzZmFkZVZhbHVlJiwgZG91YmxlKSBjb25zdDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Nyb3NzZmFkZVZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmNwcAppbmRleCBjNmIzZGUyMzljMDI0YTgxNTlkNzkwZTViMzg3YzllNmNhN2Ri
MDVkLi42OWM4NGRmYjExNWExOTEzZDI1Yjc5ZmU5MmZiMGFlOWZmZjMzNjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRl
ciYgY2FjaGVkUmVzb3VyY2VMb2FkCiAgICAgbV9maWx0ZXJTdWJpbWFnZU9ic2VydmVyLnNldFJl
YWR5KHRydWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpp
bWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVm
UHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuaAppbmRleCA5Mzk1OWI2YTdmMzZlNTYxMTIxOTcwNDhmZTRlY2Q1OWNlYTE2YTUzLi4x
Mjk3MjRmZGUzNWU1ZGNhYWQ3NTcyYjg1MGViYTRlMDkwMGFjYTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+
IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsKICAgICBib29sIGlz
Rml4ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEZsb2F0U2l6ZSBmaXhlZFNp
emUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHAKaW5kZXggNWI0MzFlZmFlMDNiNWZlYWI4MWMwMWM3ZTk3NDY2YmZkOGU2YzE4MS4u
MWExMDYyYTYwYmVkOGIyMzM4MzE4NjU3OTUxZjY4YTA0N2Q5Mzc4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitSZWZQdHI8SW1h
Z2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTY5LDcgKzY5LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gQ1NTR3Jh
ZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2kK
ICAgICBpZiAoY2FjaGVhYmxlKQogICAgICAgICBzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKHNpemUs
IG5ld0ltYWdlKTsKIAotICAgIHJldHVybiBuZXdJbWFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IG5ld0ltYWdlOwogfQogCiAvLyBTaG91bGQgb25seSBldmVyIGJlIGNhbGxlZCBmb3IgZGVwcmVj
YXRlZCBncmFkaWVudHMuCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IEdyYWRpZW50U3RvcCB7
CiAgICAgeyB9CiB9OwogCi1QYXNzUmVmUHRyPENTU0dyYWRpZW50VmFsdWU+IENTU0dyYWRpZW50
VmFsdWU6OmdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVz
b2x2ZXIpCitSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gQ1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGll
bnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKIHsKICAg
ICBib29sIGRlcml2ZWQgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7
CkBAIC0xMzIsNyArMTMyLDcgQEAgUGFzc1JlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiBDU1NHcmFk
aWVudFZhbHVlOjpncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZVIKICAgICAgICAgICAg
IHN0b3AubV9yZXNvbHZlZENvbG9yID0gc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0aXZl
VmFsdWUoKnN0b3AubV9jb2xvcik7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgaW50ZXJwb2xh
dGUoaW50IG1pbiwgaW50IG1heCwgZmxvYXQgcG9zaXRpb24pCkBAIC03NDUsNyArNzQ1LDcgQEAg
c3RhdGljIHZvaWQgZW5kUG9pbnRzRnJvbUFuZ2xlKGZsb2F0IGFuZ2xlRGVnLCBjb25zdCBGbG9h
dFNpemUmIHNpemUsIEZsb2F0UG9pbnQKICAgICBmaXJzdFBvaW50LnNldChoYWxmV2lkdGggLSBl
bmRYLCBoYWxmSGVpZ2h0ICsgZW5kWSk7CiB9CiAKLVBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitSZWY8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9h
dFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7CiAKQEAgLTgwMywx
MiArODAzLDEyIEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6
OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlCiAKICAgICB9CiAKLSAgICBSZWZQ
dHI8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShmaXJzdFBvaW50LCBzZWNv
bmRQb2ludCk7CisgICAgUmVmPEdyYWRpZW50PiBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
Zmlyc3RQb2ludCwgc2Vjb25kUG9pbnQpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgc3RvcHMuCi0g
ICAgYWRkU3RvcHMoKmdyYWRpZW50LCBjb252ZXJzaW9uRGF0YSwgMSk7CisgICAgYWRkU3RvcHMo
Z3JhZGllbnQsIGNvbnZlcnNpb25EYXRhLCAxKTsKIAotICAgIHJldHVybiBncmFkaWVudC5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGdyYWRpZW50OwogfQogCiBib29sIENTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmVxdWFscyhjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlJiBvdGhlcikgY29uc3QK
QEAgLTEwODUsNyArMTA4NSw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVsbGlw
c2VSYWRpdXMoY29uc3QgRmxvYXRTaXplJiBwLCBmbG9hdCBhc3BlY3RSYXRpCiB9CiAKIC8vIEZJ
WE1FOiBzaGFyZSBjb2RlIHdpdGggdGhlIGxpbmVhciB2ZXJzaW9uCi1QYXNzUmVmUHRyPEdyYWRp
ZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVmPEdyYWRpZW50PiBDU1NSYWRp
YWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOwog
CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFk
aWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZQogICAgICAgICB9
CiAgICAgfQogCi0gICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVh
dGUoZmlyc3RQb2ludCwgZmlyc3RSYWRpdXMsIHNlY29uZFBvaW50LCBzZWNvbmRSYWRpdXMsIGFz
cGVjdFJhdGlvKTsKKyAgICBSZWY8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0
ZShmaXJzdFBvaW50LCBmaXJzdFJhZGl1cywgc2Vjb25kUG9pbnQsIHNlY29uZFJhZGl1cywgYXNw
ZWN0UmF0aW8pOwogCiAgICAgLy8gYWRkU3RvcHMoKSBvbmx5IHVzZXMgbWF4RXh0ZW50IGZvciBy
ZXBlYXRpbmcgZ3JhZGllbnRzLgogICAgIGZsb2F0IG1heEV4dGVudCA9IDA7CkBAIC0xMjIyLDkg
KzEyMjIsOSBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpj
cmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZQogICAgIH0KIAogICAgIC8vIE5vdyBh
ZGQgdGhlIHN0b3BzLgotICAgIGFkZFN0b3BzKCpncmFkaWVudCwgY29udmVyc2lvbkRhdGEsIG1h
eEV4dGVudCk7CisgICAgYWRkU3RvcHMoZ3JhZGllbnQsIGNvbnZlcnNpb25EYXRhLCBtYXhFeHRl
bnQpOwogCi0gICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZ3JhZGll
bnQ7CiB9CiAKIGJvb2wgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWUmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVu
dFZhbHVlLmgKaW5kZXggZGE5MTFhMjIwMzhkNjQ1YzM5ZDcyNjZjM2UzNDc2ZWJlYzU0ZjY0OS4u
M2FkNzA2NWUzZDVhMzg1M2ZhMjJlMGM3YmI1ZTMxYmNhNDg1MzlmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBDU1NHcmFkaWVu
dENvbG9yU3RvcCB7CiAKIGNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVu
ZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Uo
UmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgdm9pZCBzZXRGaXJzdFgo
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFsOyB9CiAg
ICAgdm9pZCBzZXRGaXJzdFkoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1f
Zmlyc3RZID0gdmFsOyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGtub3du
VG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRT
dWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmKSB7IH0KLSAgICBQYXNzUmVmUHRyPENTU0dyYWRpZW50VmFsdWU+IGdyYWRpZW50V2l0aFN0
eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqKTsKKyAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1
ZT4gZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwogCiBwcm90ZWN0
ZWQ6CiAgICAgQ1NTR3JhZGllbnRWYWx1ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBDU1NHcmFkaWVu
dFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAg
ICAvLyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0
cjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6
ZSYpOworICAgIFJlZjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgUmVmPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNsb25l
KCkgY29uc3QKICAgICB7CkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
RW5kVmVydGljYWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2Vu
ZFZlcnRpY2FsU2l6ZSA9IHZhbDsgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3Ig
YSBnaXZlbiBzaXplLgotICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJl
bmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBSZWY8R3JhZGllbnQ+IGNyZWF0
ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmNwcAppbmRleCBlMDhhMDdlOTQ1OTlk
NjdhZWZlNGU5YTU4YjBhZTU4MmE4N2EwNDQxLi5jNzQyYWZhZDYwODdhNGUyNjMxMDAwNzAyMDVj
MmJhMmU0NzRlOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1Zh
bHVlLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDU1NHcmlkTGluZU5hbWVzVmFsdWU6OkNTU0dyaWRM
aW5lTmFtZXNWYWx1ZSgpCiB7CiB9CiAKLVJlZjxDU1NHcmlkTGluZU5hbWVzVmFsdWU+IENTU0dy
aWRMaW5lTmFtZXNWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWZQdHI8Q1NTR3JpZExp
bmVOYW1lc1ZhbHVlPiBDU1NHcmlkTGluZU5hbWVzVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25z
dAogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0dyaWRMaW5lTmFtZXNWYWx1ZSgqdGhp
cykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKCp0aGlz
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkTGluZU5h
bWVzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaApp
bmRleCAyZmRkYmY4OTZjNzg1Y2MxMTM0N2IzZDdjMzA5ZDA4ZjU5NDZlNWUzLi40MGVhZjZjNGI1
NzlkYTY3MWYzNTBmMTYzNThmNTk5ZGI2NzRhZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyaWRMaW5lTmFtZXNWYWx1ZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBSZWY8Q1NTR3JpZExpbmVOYW1lc1Zh
bHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisgICAgUmVmUHRyPENTU0dyaWRMaW5lTmFtZXNW
YWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU0dyaWRMaW5l
TmFtZXNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4
IDc2MzFiZWVhYjNhOWYyZTkwZjRkN2QwYWVjNWY3Yjg4YmE2MzFkN2IuLmMwM2EzOWYyY2E3ZjA1
NmIyMDZhNTJmYzBmNzQwNGRjYjgxZjBkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBDU1NJbWFnZVNldFZhbHVlOjpDU1NJbWFn
ZVNldFZhbHVlKGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNsb25lRnJvbSkKICAgICAvLyBOb24t
Q1NTVmFsdWVMaXN0IGRhdGEgaXMgbm90IGFjY2Vzc2libGUgdGhyb3VnaCBDU1MgT00sIG5vIG5l
ZWQgdG8gY2xvbmUuCiB9CiAKLVBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gQ1NTSW1hZ2VT
ZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4g
Q1NTSW1hZ2VTZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDU1NJbWFnZVNldFZhbHVlKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlU2V0VmFsdWUuaAppbmRleCBmMDg4ODYzYmQ3ZjU0ZjRkYWQ4ODFjNTZhZWRkYmQ2ZjEw
YTgwYTQ2Li4xNjdlZGI3MTMzYzFjMjY3ZTQ4YTg2MTU2YjgzYmRhYzUzN2U1NTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wg
KGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAotICAgIFBhc3NSZWZQ
dHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZlB0cjxD
U1NJbWFnZVNldFZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAg
ICBJbWFnZVdpdGhTY2FsZSBiZXN0SW1hZ2VGb3JTY2FsZUZhY3RvcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGUxMjU0ZjBhODFhMzhlYzlhODYwYWU4MTZhNzQ1NDRl
ZTk2NTIxNjIuLjAyZWY3YjVkYTYyZmU3NTVjMTQxNDYwZWZiNzE5NGYxODE3ZjhkY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTExMywxMiArMTEzLDEyIEBAIFN0cmlu
ZyBDU1NJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gInVybCgi
ICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3VybCkgKyAnKSc7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0ltYWdlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAorUmVmUHRyPENTU1Zh
bHVlPiBDU1NJbWFnZVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKIHsKICAgICAvLyBOT1RF
OiBXZSBleHBvc2UgQ1NTSW1hZ2VWYWx1ZXMgYXMgVVJJIHByaW1pdGl2ZSB2YWx1ZXMgaW4gQ1NT
T00gdG8gbWFpbnRhaW4gb2xkIGJlaGF2aW9yLgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdXJpVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdXJsLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1VSSSk7CiAgICAgdXJpVmFsdWUtPnNldENTU09NU2FmZSgpOwotICAgIHJl
dHVybiB1cmlWYWx1ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHVyaVZhbHVlOwogfQogCiBib29s
IENTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDdlYTUwOTBjMWZk
MDMyYTBkNGUxMTIyYTQ4MTgyOWE4NzcyM2IzYWUuLmY1MzBlZDc1OTJlODZlNDY2NmJlNjg4N2Jl
NmEwZjUwMjM1YzZmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgYm9vbCB0cmF2ZXJzZVN1
YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNl
Jik+JiBoYW5kbGVyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBmYjFk
ZmI1NGFmMWVjYjcyNjZhYzcxNzRmZGVkNjEwZjdhMTQ5MmMwLi5hNzQ1Y2JlYjY5MmFiZWJkZDNl
MjgwNTEyZGU3Mzg0OGFkZjk2MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDYx
LDIxICs0NjEsMjEgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2hlZXQoU3R5bGVTaGVldENvbnRl
bnRzKiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnMKICAgICBtX2xvZ0Vycm9ycyA9
IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6cGFyc2VS
dWxlKFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVm
UHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6cGFyc2VSdWxlKFN0eWxlU2hlZXRDb250ZW50
cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHNldFN0eWxlU2hlZXQoc2hl
ZXQpOwogICAgIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICBzZXR1
cFBhcnNlcigiQC13ZWJraXQtcnVsZXsiLCBzdHJpbmcsICJ9ICIpOwogICAgIGNzc3l5cGFyc2Uo
dGhpcyk7Ci0gICAgcmV0dXJuIG1fcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1fcnVsZTsK
IH0KIAotUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVS
dWxlKFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVm
UHRyPFN0eWxlS2V5ZnJhbWU+IENTU1BhcnNlcjo6cGFyc2VLZXlmcmFtZVJ1bGUoU3R5bGVTaGVl
dENvbnRlbnRzKiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgc2V0U3R5bGVT
aGVldChzaGVldCk7CiAgICAgc2V0dXBQYXJzZXIoIkAtd2Via2l0LWtleWZyYW1lLXJ1bGV7ICIs
IHN0cmluZywgIn0gIik7CiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKLSAgICByZXR1cm4gbV9rZXlm
cmFtZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1fa2V5ZnJhbWU7CiB9CiAKIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTI3
OSw3ICsxMjc5LDcgQEAgc3RhdGljIENTU1BhcnNlcjo6UGFyc2VSZXN1bHQgcGFyc2VUcmFuc2xh
dGVUcmFuc2Zvcm1WYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWUKICAgICByZXR1cm4gcHJvcGVy
dGllcy0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0s
IHJlc3VsdC5yZWxlYXNlKCksIGltcG9ydGFudCkpID8gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6
Q2hhbmdlZCA6IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OlVuY2hhbmdlZDsKIH0KIAotUGFzc1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0
b21pY1N0cmluZyYgc3RyaW5nKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJz
ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0
cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgyMyw3ICsxODIz
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OmlzVmFsaWRTaXplKFZhbHVlV2l0aENhbGN1bGF0aW9uJiB2
YWx1ZVdpdGhDYWxjdWxhdGlvbikKICAgICByZXR1cm4gIWlkICYmIHZhbGlkYXRlVW5pdCh2YWx1
ZVdpdGhDYWxjdWxhdGlvbiwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZyk7CiB9CiAKLWlu
bGluZSBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsaWRQ
cmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBWYWx1ZVdpdGhDYWxjdWxhdGlvbiYgdmFs
dWVXaXRoQ2FsY3VsYXRpb24pCitpbmxpbmUgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlVmFsaWRQcmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBWYWx1ZVdp
dGhDYWxjdWxhdGlvbiYgdmFsdWVXaXRoQ2FsY3VsYXRpb24pCiB7CiAgICAgaWYgKGlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
aWRlbnRpZmllcik7CkBAIC0zMjc0LDcgKzMyNzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VM
ZWdhY3lQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
cmV0dXJuICFtX3ZhbHVlTGlzdC0+bmV4dCgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24oKQorUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93
UG9zaXRpb24oKQogewogICAgIC8vIGF1dG8gfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPGNvbnRl
bnQtZGlzdHJpYnV0aW9uPiB8fCBbIDxvdmVyZmxvdy1wb3NpdGlvbj4/ICYmIDxjb250ZW50LXBv
c2l0aW9uPiBdCiAgICAgLy8gPGJhc2VsaW5lLXBvc2l0aW9uPiA9IGJhc2VsaW5lIHwgbGFzdC1i
YXNlbGluZTsKQEAgLTQxNjUsNyArNDE2NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbnRl
bnQoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHIoQ1NTUGFy
c2VyVmFsdWVMaXN0JiBhcmdzKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0
cihDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDE4OCw3ICs0MTg4LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHIoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdz
KQogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShhdHRyTmFtZSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19BVFRSKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUJhY2tncm91bmRDb2xvcigpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIENTU1ZhbHVlSUQgaWQgPSBtX3ZhbHVlTGlz
dC0+Y3VycmVudCgpLT5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IGlz
VmFsaWRTeXN0ZW1Db2xvclZhbHVlKGlkKSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUgfHwgaWQgPT0g
Q1NTVmFsdWVDdXJyZW50Y29sb3IKQEAgLTQyMjIsNyArNDIyMiw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUZpbGxJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENT
U1ZhbHVlPiYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCitS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVM
aXN0JiB2YWx1ZUxpc3QpCiB7CiAgICAgaW50IGlkID0gdmFsdWVMaXN0LmN1cnJlbnQoKS0+aWQ7
CiAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlk
ID09IENTU1ZhbHVlQ2VudGVyKSB7CkBAIC00MjM5LDcgKzQyMzksNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlUG9zaXRpb25YKENTU1BhcnNlclZhbHVlTGlzdCYgdmFs
dWVMaXN0KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlUG9zaXRpb25ZKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0KQor
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlUG9zaXRpb25ZKENTU1BhcnNlclZhbHVl
TGlzdCYgdmFsdWVMaXN0KQogewogICAgIGludCBpZCA9IHZhbHVlTGlzdC5jdXJyZW50KCktPmlk
OwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBp
ZCA9PSBDU1NWYWx1ZUNlbnRlcikgewpAQCAtNDI1Niw3ICs0MjU2LDcgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVBvc2l0aW9uWShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmlsbFBvc2l0
aW9uRmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlIHBhcnNpbmdN
b2RlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFBvc2l0
aW9uQ29tcG9uZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCB1bnNpZ25lZCYgY3Vt
dWxhdGl2ZUZsYWdzLCBGaWxsUG9zaXRpb25GbGFnJiBpbmRpdmlkdWFsRmxhZywgRmlsbFBvc2l0
aW9uUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVl
TGlzdC5jdXJyZW50KCktPmlkOwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0g
Q1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRv
bSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlcikgewpAQCAtNDYxNCw3ICs0NjE0LDcgQEAgdm9pZCBD
U1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0
cjxDU1NWYWx1ZT4mIHZhbHUKICAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZTEpLmdldFZhbHVl
SUQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6
ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKK1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sJiBh
bGxvd0NvbW1hKQogewogICAgIGFsbG93Q29tbWEgPSB0cnVlOwogICAgIENTU1BhcnNlclZhbHVl
KiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CkBAIC00ODQ0LDcgKzQ4NDQsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VGaWxsUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENT
U1Byb3BlcnR5SUQmIHByb3BJZDEsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkoKQorUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkoKQogewogICAgIFZhbHVlV2l0aENh
bGN1bGF0aW9uIHZhbHVlV2l0aENhbGN1bGF0aW9uKCptX3ZhbHVlTGlzdC0+Y3VycmVudCgpKTsK
ICAgICBpZiAodmFsaWRhdGVVbml0KHZhbHVlV2l0aENhbGN1bGF0aW9uLCBGVGltZSkpCkBAIC00
ODUyLDcgKzQ4NTIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5p
bWF0aW9uRGVsYXkoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCkKK1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkRpcmVjdGlvbigpCiB7CiAgICAgQ1NTUGFyc2Vy
VmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUtPmlk
ID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSB8fCB2
YWx1ZS0+aWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUFsdGVy
bmF0ZVJldmVyc2UpCkBAIC00ODYwLDcgKzQ4NjAsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0
aW9uKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0aW9u
KCkKIHsKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiB2YWx1ZVdpdGhDYWxjdWxhdGlvbigqbV92
YWx1ZUxpc3QtPmN1cnJlbnQoKSk7CiAgICAgaWYgKHZhbGlkYXRlVW5pdCh2YWx1ZVdpdGhDYWxj
dWxhdGlvbiwgRlRpbWUgfCBGTm9uTmVnKSkKQEAgLTQ4NjgsNyArNDg2OCw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25EdXJhdGlvbigpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25GaWxsTW9kZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmlt
YXRpb25GaWxsTW9kZSgpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxp
c3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVCYWNrd2Fy
ZHMgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlQm90aCkKQEAgLTQ4NzYsNyArNDg3Niw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25GaWxsTW9kZSgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUm
IHZhbHVlID0gKm1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAgICAgaWYgKHZhbHVlLmlkID09IENT
U1ZhbHVlSW5maW5pdGUpCkBAIC00ODg3LDcgKzQ4ODcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0
aW9uTmFtZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25OYW1l
KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KTsKICAgICBpZiAodmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyB8
fCB2YWx1ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKQEAgLTQ4OTks
NyArNDg5OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25OYW1lKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblBsYXlTdGF0ZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VBbmltYXRpb25QbGF5U3RhdGUoKQogewogICAgIENTU1BhcnNlclZhbHVl
JiB2YWx1ZSA9ICptX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIGlmICh2YWx1ZS5pZCA9PSBD
U1NWYWx1ZVJ1bm5pbmcgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVQYXVzZWQpCkBAIC00OTA4LDcg
KzQ5MDgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9u
UGxheVN0YXRlKCkKIH0KIAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRyaWdnZXIoKQorUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVHJpZ2dlcigpCiB7CiAgICAg
Q1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlQXV0bykKQEAgLTQ5NDgsMTEgKzQ5NDgsMTEgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRyaWdnZXIoKQogICAgICAg
ICByZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoc3RhcnRWYWx1
ZS5yZWxlYXNlKCksIGVuZFZhbHVlLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvblBhcnNlQ29udGV4dCYg
Y29udGV4dCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3Bl
cnR5KEFuaW1hdGlvblBhcnNlQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDU1NQYXJzZXJWYWx1
ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUudW5pdCAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQpAQCAtNTAzNyw3ICs1MDM3LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNl
clZhbHVlTGlzdCYgYXJncywgZG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKK1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKIHsK
ICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAg
ICBpZiAodmFsdWUuaWQgPT0gQ1NTVmFsdWVFYXNlIHx8IHZhbHVlLmlkID09IENTU1ZhbHVlTGlu
ZWFyIHx8IHZhbHVlLmlkID09IENTU1ZhbHVlRWFzZUluIHx8IHZhbHVlLmlkID09IENTU1ZhbHVl
RWFzZU91dApAQCAtNTI2OSw3ICs1MjY5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSW50ZWdl
ck9yQ3VzdG9tSWRlbnRGcm9tR3JpZFBvc2l0aW9uKFJlZlB0cjxDU1NQcmltaXRpdmVWYWwKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VHcmlkUG9zaXRpb24oKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFBv
c2l0aW9uKCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpOwogICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVBdXRvKSB7CkBAIC01Mjg1LDcg
KzUyODUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFBvc2l0
aW9uKCkKICAgICAgICAgaGFzU2VlblNwYW5LZXl3b3JkID0gdHJ1ZTsKICAgICAgICAgaWYgKGF1
dG8qIG5leHRWYWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCkpIHsKICAgICAgICAgICAgIGlmICgh
aXNGb3J3YXJkU2xhc2hPcGVyYXRvcigqbmV4dFZhbHVlKSAmJiAhcGFyc2VJbnRlZ2VyT3JDdXN0
b21JZGVudEZyb21HcmlkUG9zaXRpb24obnVtZXJpY1ZhbHVlLCBncmlkTGluZU5hbWUpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAocGFyc2VJbnRlZ2VyT3JDdXN0b21J
ZGVudEZyb21HcmlkUG9zaXRpb24obnVtZXJpY1ZhbHVlLCBncmlkTGluZU5hbWUpKSB7CiAgICAg
ICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTUzMjAsMTAgKzUzMjAsMTAg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRQb3NpdGlvbigpCiAg
ICAgaWYgKGdyaWRMaW5lTmFtZSkKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoZ3JpZExpbmVOYW1l
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIEFTU0VSVCh2YWx1ZXMtPmxlbmd0aCgpKTsKLSAgICBy
ZXR1cm4gdmFsdWVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdmFsdWVzOwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ3JpZE1pc3NpbmdHcmlkUG9zaXRpb25WYWx1ZShDU1NWYWx1
ZSYgdmFsdWUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBncmlkTWlzc2luZ0dyaWRQb3NpdGlv
blZhbHVlKENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmlzU3RyaW5nKCkp
CiAgICAgICAgIHJldHVybiAmdmFsdWU7CkBAIC01NjA0LDcgKzU2MDQsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VHcmlkTGluZU5hbWVzKENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0LCBD
U1NWYWx1ZUxpc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tMaXN0KCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUdyaWRUcmFja0xpc3QoKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9
IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZU5v
bmUpIHsKQEAgLTU2NDIsNyArNTY0Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VHcmlkVHJhY2tMaXN0KCkKICAgICBpZiAoIXNlZW5UcmFja1NpemVPclJlcGVhdEZ1
bmN0aW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB2YWx1ZXMucmVs
ZWFzZSgpOworICAgIHJldHVybiB2YWx1ZXM7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdy
aWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1ZhbHVlTGlzdCYgbGlzdCkKQEAgLTU3MDAsNyArNTcw
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1Zh
bHVlTGlzdCYgbGlzdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1
dExpc3QpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tTaXplKENT
U1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQogewogICAgIENTU1BhcnNlclZhbHVlJiBjdXJy
ZW50VmFsdWUgPSAqaW5wdXRMaXN0LmN1cnJlbnQoKTsKICAgICBpbnB1dExpc3QubmV4dCgpOwpA
QCAtNTczMSw3ICs1NzMxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1dExpc3QKICAgICByZXR1cm4g
cGFyc2VHcmlkQnJlYWR0aChjdXJyZW50VmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEJyZWFkdGgoQ1NTUGFyc2VyVmFsdWUmIHZh
bHVlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEJyZWFk
dGgoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pZCA9PSBDU1NWYWx1
ZVdlYmtpdE1pbkNvbnRlbnQgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50
KQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZh
bHVlLmlkKTsKQEAgLTU3NTgsNyArNTc1OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlk
R3JpZEF1dG9GbG93SWQoQ1NTVmFsdWVJRCBpZCkKICAgICByZXR1cm4gKGlkID09IENTU1ZhbHVl
Um93IHx8IGlkID09IENTU1ZhbHVlQ29sdW1uIHx8IGlkID09IENTU1ZhbHVlRGVuc2UpOwogfQog
Ci1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEF1dG9GbG93KENTU1Bh
cnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBh
cnNlR3JpZEF1dG9GbG93KENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQogewogICAgIC8v
IFsgcm93IHwgY29sdW1uIF0gfHwgZGVuc2UKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBp
bnB1dExpc3QuY3VycmVudCgpOwpAQCAtNjAzOSw3ICs2MDM5LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlR3JpZFRlbXBsYXRlQXJlYXNSb3coTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAs
IGNvbnN0IHUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzKCkKIHsKICAgICBpZiAobV92YWx1ZUxpc3QtPmN1
cnJlbnQoKSAmJiBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZCA9PSBDU1NWYWx1ZU5vbmUpIHsK
ICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKQEAgLTYwNjMsNyArNjA2Myw3IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVBcmVhcygpCiB9CiAj
ZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KIAotUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJn
cywgYm9vbCBjb3VudGVycykKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvdW50
ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgYm9vbCBjb3VudGVycykKIHsKICAg
ICB1bnNpZ25lZCBudW1BcmdzID0gYXJncy5zaXplKCk7CiAgICAgaWYgKGNvdW50ZXJzICYmIG51
bUFyZ3MgIT0gMyAmJiBudW1BcmdzICE9IDUpCkBAIC02MTc3LDcgKzYxNzcsNyBAQCBzdGF0aWMg
dm9pZCBjb21wbGV0ZUJvcmRlclJhZGlpKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaWlb
NF0pCiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZWZhY3RvcmVkIHdpdGggQ1NTUGFyc2Vy
OjpwYXJzZUJvcmRlclJhZGl1cy4KIC8vIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMgY29u
dGFpbnMgc3VwcG9ydCBmb3Igc29tZSBsZWdhY3kgcmFkaXVzIGNvbnN0cnVjdGlvbi4KLVBhc3NS
ZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMo
UGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJWYWx1ZUxpc3Qm
IGFyZ3MpCitSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRl
ZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJW
YWx1ZUxpc3QmIGFyZ3MpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJncy5u
ZXh0KCk7CiAKQEAgLTYyNDEsNyArNjI0MSw3IEBAIFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4g
Q1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpCiAg
ICAgcmV0dXJuIHNoYXBlOwogfQogCi1QYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+IENTU1BhcnNl
cjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQorUmVmUHRy
PENTU0Jhc2ljU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2Vy
VmFsdWVMaXN0JiBhcmdzKQogewogICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBl
ID0gQ1NTQmFzaWNTaGFwZUluc2V0OjpjcmVhdGUoKTsKIApAQCAtNjI4OSw3ICs2Mjg5LDcgQEAg
UGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUluc2V0
KENTU1BhcnNlclZhbHVlTGlzdCYgYXIKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTaGFwZVJhZGl1cyhDU1NQYXJz
ZXJWYWx1ZSYgdmFsdWUpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VTaGFwZVJhZGl1cyhDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlk
ID09IENTU1ZhbHVlQ2xvc2VzdFNpZGUgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVGYXJ0aGVzdFNp
ZGUpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
dmFsdWUuaWQpOwpAQCAtNjMwMSw3ICs2MzAxLDcgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNoYXBlUmFkaXVzKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkK
ICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKHZhbHVlV2l0aENhbGN1bGF0
aW9uKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFz
aWNTaGFwZUNpcmNsZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCitSZWZQdHI8Q1NTQmFzaWNT
aGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVDaXJjbGUoQ1NTUGFyc2VyVmFsdWVMaXN0
JiBhcmdzKQogewogICAgIC8vIGNpcmNsZShyYWRpdXMpCiAgICAgLy8gY2lyY2xlKHJhZGl1cyBh
dCA8cG9zaXRpb24+KQpAQCAtNjM0MSw3ICs2MzQxLDcgQEAgUGFzc1JlZlB0cjxDU1NCYXNpY1No
YXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJWYWx1ZUxpc3Qm
IGEKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NT
UGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVFbGxpcHNlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykK
K1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUVsbGlwc2Uo
Q1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogewogICAgIC8vIGVsbGlwc2UocmFkaXVzWCkKICAg
ICAvLyBlbGxpcHNlKHJhZGl1c1ggYXQgPHBvc2l0aW9uPikKQEAgLTYzODYsNyArNjM4Niw3IEBA
IFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVFbGxp
cHNlKENTU1BhcnNlclZhbHVlTGlzdCYKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQ
dHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVQb2x5Z29uKENTU1Bh
cnNlclZhbHVlTGlzdCYgYXJncykKK1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBh
cnNlQmFzaWNTaGFwZVBvbHlnb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogewogICAgIHVu
c2lnbmVkIHNpemUgPSBhcmdzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCkBAIC02NDU3LDcgKzY0
NTcsNyBAQCBzdGF0aWMgYm9vbCBpc0JveFZhbHVlKENTU1ZhbHVlSUQgdmFsdWVJZCwgQ1NTUHJv
cGVydHlJRCBwcm9wSWQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1Byb3BlcnR5SUQgcHJv
cElkKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUFuZE9yQm94
KENTU1Byb3BlcnR5SUQgcHJvcElkKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1f
dmFsdWVMaXN0LT5jdXJyZW50KCk7CiAKQEAgLTY0ODksMTEgKzY0ODksMTEgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVBbmRPckJveChDU1NQcm9wZXJ0
eUlEIHByb3BJZCkKIAogICAgIGlmIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxp
c3Q7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VTaGFwZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkKQorUmVmUHRy
PENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU2hhcGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BJZCkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuY3NzU2hhcGVzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY1MDks
MTQgKzY1MDksMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNoYXBl
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQpCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBpbWFn
ZVZhbHVlOwogICAgIGlmICh2YWx1ZUlkICE9IENTU1ZhbHVlTm9uZSAmJiBwYXJzZUZpbGxJbWFn
ZSgqbV92YWx1ZUxpc3QsIGltYWdlVmFsdWUpKSB7CiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0
KCk7Ci0gICAgICAgIHJldHVybiBpbWFnZVZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJu
IGltYWdlVmFsdWU7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94
KHByb3BJZCk7CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZUNsaXBQYXRoKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNsaXBQYXRo
KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KTsKICAgICBDU1NWYWx1ZUlEIHZhbHVlSWQgPSB2YWx1ZS5pZDsKQEAgLTY1MzMsNyArNjUzMyw3
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDbGlwUGF0aCgpCiAgICAg
cmV0dXJuIHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGgp
OwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFz
aWNTaGFwZSgpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VCYXNp
Y1NoYXBlKCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1
cnJlbnQoKTsKICAgICBBU1NFUlQodmFsdWUudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b24pOwpAQCAtNjY5MSw3ICs2NjkxLDcgQEAgcHJpdmF0ZToKICAgICBDU1NWYWx1ZUxpc3QmIG1f
bGlzdDsKIH07CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9u
dEZhbWlseSgpCitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhbWls
eSgpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVl
TGlzdC0+Y3VycmVudCgpOwpAQCAtNjc2Miw3ICs2NzYyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5KCkKIAogICAgIGlmICghbGlzdC0+bGVu
Z3RoKCkpCiAgICAgICAgIGxpc3QgPSBudWxscHRyOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZUhlaWdo
dChib29sIGltcG9ydGFudCkKQEAgLTc1MDAsNyArNzUwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJy
YXksIGJvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSog
dmFsdWUpCiB7CiAgICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgaWYgKCFw
YXJzZUNvbG9yRnJvbVZhbHVlKHZhbHVlID8gKnZhbHVlIDogKm1fdmFsdWVMaXN0LT5jdXJyZW50
KCksIGMpKQpAQCAtNzY4Miw3ICs3NjgyLDcgQEAgc3RydWN0IFNoYWRvd1BhcnNlQ29udGV4dCB7
CiAgICAgYm9vbCBhbGxvd0JyZWFrOwogfTsKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENT
U1BhcnNlcjo6cGFyc2VTaGFkb3coQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIENTU1By
b3BlcnR5SUQgcHJvcElkKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVNo
YWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgQ1NTUHJvcGVydHlJRCBwcm9wSWQp
CiB7CiAgICAgU2hhZG93UGFyc2VDb250ZXh0IGNvbnRleHQocHJvcElkLCAqdGhpcyk7CiAgICAg
Q1NTUGFyc2VyVmFsdWUqIHZhbHVlOwpAQCAtOTM0OSw3ICs5MzQ5LDcgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUltYWdlUmVzb2x1dGlvbigpCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDU1NfSU1BR0VfU0VUKQotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZUltYWdlU2V0KCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUltYWdlU2V0
KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KTsKICAgICBBU1NFUlQodmFsdWUudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pOwpA
QCAtOTM5OCw3ICs5Mzk4LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZUltYWdlU2V0KCkKICAgICAgICAgYXJnID0gZnVuY3Rpb25BcmdzLT5uZXh0KCk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGltYWdlU2V0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaW1hZ2VTZXQ7CiB9
CiAjZW5kaWYKIApAQCAtOTY2MSw3ICs5NjYxLDcgQEAgcHJpdmF0ZToKICAgICBDU1NQYXJzZXI6
OlVuaXRzIG1fdW5pdDsKIH07CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6
OnBhcnNlVHJhbnNmb3JtKCkKK1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VU
cmFuc2Zvcm0oKQogewogICAgIGlmICghbV92YWx1ZUxpc3QpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtOTY3NSwxMCArOTY3NSwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NT
UGFyc2VyOjpwYXJzZVRyYW5zZm9ybSgpCiAgICAgICAgIGxpc3QtPmFwcGVuZChwYXJzZWRUcmFu
c2Zvcm1WYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gbGlzdC5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCitSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1WYWx1ZShDU1NQYXJzZXJWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0
aW9uIHx8ICF2YWx1ZS5mdW5jdGlvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05Nzgz
LDcgKzk3ODMsNyBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJJbmZvRm9yTmFtZShjb25zdCBDU1NQYXJz
ZXJTdHJpbmcmIG5hbWUsIFdlYktpdENTU0ZpbHRlclZhbHVlOgogICAgIH0KIH0KIAotUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUJ1aWx0aW5GaWx0ZXJB
cmd1bWVudHMoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzLCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6
RmlsdGVyT3BlcmF0aW9uVHlwZSBmaWx0ZXJUeXBlKQorUmVmUHRyPFdlYktpdENTU0ZpbHRlclZh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZpbHRlckFyZ3VtZW50cyhDU1NQYXJzZXJWYWx1
ZUxpc3QmIGFyZ3MsIFdlYktpdENTU0ZpbHRlclZhbHVlOjpGaWx0ZXJPcGVyYXRpb25UeXBlIGZp
bHRlclR5cGUpCiB7CiAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBmaWx0ZXJWYWx1
ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUoZmlsdGVyVHlwZSk7CiAKQEAgLTEwMjc3
LDcgKzEwMjc3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVGV4dEVtcGhhc2lzUG9zaXRpb24o
Ym9vbCBpbXBvcnRhbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VUZXh0SW5kZW50KCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZVRleHRJbmRlbnQoKQogewogICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+
IHwgaW5oZXJpdCAgd2hlbiBDU1MzX1RFWFQgaXMgZGlzYWJsZWQuCiAgICAgLy8gWyA8bGVuZ3Ro
PiB8IDxwZXJjZW50YWdlPiBdICYmIFsgLXdlYmtpdC1oYW5naW5nIHx8IC13ZWJraXQtZWFjaC1s
aW5lIF0/IHwgaW5oZXJpdCAgd2hlbiBDU1MzX1RFWFQgaXMgZW5hYmxlZC4KQEAgLTEyMDUxLDcg
KzEyMDUxLDcgQEAgcmVzdGFydEFmdGVyQ29tbWVudDoKICAgICByZXR1cm4gdG9rZW4oKTsKIH0K
IAotUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUo
Y29uc3QgQ1NTUGFyc2VyU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVk
aWEpCitSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNv
bnN0IENTU1BhcnNlclN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlh
KQogewogICAgIGlmICghbWVkaWEgfHwgIW1fYWxsb3dJbXBvcnRSdWxlcykgewogICAgICAgICBw
b3BSdWxlRGF0YSgpOwpAQCAtMTIwNTksMTAgKzEyMDU5LDEwIEBAIFBhc3NSZWZQdHI8U3R5bGVS
dWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmlu
ZyYgdXJsCiAgICAgfQogICAgIFJlZlB0cjxTdHlsZVJ1bGVJbXBvcnQ+IHJ1bGUgPSBTdHlsZVJ1
bGVJbXBvcnQ6OmNyZWF0ZSh1cmwsIG1lZGlhKTsKICAgICBwcm9jZXNzQW5kQWRkTmV3UnVsZVRv
U291cmNlVHJlZUlmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgpOworICAgIHJl
dHVybiBydWxlOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3Jl
YXRlTWVkaWFSdWxlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFJ1bGVMaXN0KiBy
dWxlcykKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZU1lZGlhUnVsZShQ
YXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBSdWxlTGlzdCogcnVsZXMpCiB7CiAgICAg
bV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNl
OwogICAgIFJlZlB0cjxTdHlsZVJ1bGVNZWRpYT4gcnVsZTsKQEAgLTEyMDc0LDE1ICsxMjA3NCwx
NSBAQCBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxl
KFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbQogICAgIH0gZWxzZQogICAgICAgICBydWxlID0g
U3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShtZWRpYSwgcnVsZXMgPyAqcnVsZXMgOiBlbXB0eVJ1bGVz
KTsKICAgICBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7Ci0gICAg
cmV0dXJuIHJ1bGUucmVsZWFzZSgpOworICAgIHJldHVybiBydWxlOwogfQogCi1QYXNzUmVmUHRy
PFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlRW1wdHlNZWRpYVJ1bGUoUnVsZUxpc3Qq
IHJ1bGVzKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlRW1wdHlNZWRp
YVJ1bGUoUnVsZUxpc3QqIHJ1bGVzKQogewogICAgIHJldHVybiBjcmVhdGVNZWRpYVJ1bGUoTWVk
aWFRdWVyeVNldDo6Y3JlYXRlKCksIHJ1bGVzKTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVN1cHBvcnRzUnVsZShib29sIGNvbmRpdGlvbklzU3VwcG9y
dGVkLCBSdWxlTGlzdCogcnVsZXMpCitSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpj
cmVhdGVTdXBwb3J0c1J1bGUoYm9vbCBjb25kaXRpb25Jc1N1cHBvcnRlZCwgUnVsZUxpc3QqIHJ1
bGVzKQogewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJh
dGlvbnMgPSBmYWxzZTsKIApAQCAtMTIxMDYsNyArMTIxMDYsNyBAQCBQYXNzUmVmUHRyPFN0eWxl
UnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlU3VwcG9ydHNSdWxlKGJvb2wgY29uZGl0aW9uSXNT
dXBwb3J0ZQogCiAgICAgcHJvY2Vzc0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRlZCgp
OwogCi0gICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgpOworICAgIHJldHVybiBydWxlOwogfQogCiB2
b2lkIENTU1BhcnNlcjo6bWFya1N1cHBvcnRzUnVsZUhlYWRlclN0YXJ0KCkKQEAgLTEyMTI5LDEy
ICsxMjEyOSwxMiBAQCB2b2lkIENTU1BhcnNlcjo6bWFya1N1cHBvcnRzUnVsZUhlYWRlckVuZCgp
CiAgICAgICAgIG1fc3VwcG9ydHNSdWxlRGF0YVN0YWNrLT5sYXN0KCktPnJ1bGVIZWFkZXJSYW5n
ZS5lbmQgPSB0b2tlblN0YXJ0PFVDaGFyPigpIC0gbV9kYXRhU3RhcnQxNi5nZXQoKTsKIH0KIAot
UGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gQ1NTUGFyc2VyOjpwb3BTdXBwb3J0c1J1bGVE
YXRhKCkKK1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gQ1NTUGFyc2VyOjpwb3BTdXBwb3J0c1J1
bGVEYXRhKCkKIHsKICAgICBBU1NFUlQobV9zdXBwb3J0c1J1bGVEYXRhU3RhY2sgJiYgIW1fc3Vw
cG9ydHNSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkpOwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNl
RGF0YT4gZGF0YSA9IG1fc3VwcG9ydHNSdWxlRGF0YVN0YWNrLT5sYXN0KCk7CiAgICAgbV9zdXBw
b3J0c1J1bGVEYXRhU3RhY2stPnJlbW92ZUxhc3QoKTsKLSAgICByZXR1cm4gZGF0YS5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpwcm9jZXNzQW5kQWRk
TmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCkKQEAgLTEyMjA2LDcgKzEyMjA2LDcgQEAgdm9p
ZCBDU1NQYXJzZXI6OmxvZ0Vycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIKICAgICBjb25zb2xlLmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6Q1NTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UsIG1fc3R5bGVTaGVldC0+YmFz
ZVVSTCgpLnN0cmluZygpLCBsaW5lTnVtYmVyICsgMSwgY29sdW1uTnVtYmVyICsgMSk7CiB9CiAK
LVBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1l
c1J1bGUoY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZlB0cjxT
dHlsZUtleWZyYW1lPj4+IHBvcEtleWZyYW1lcykKK1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+
IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+Pj4gcG9wS2V5ZnJhbWVzKQog
ewogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+Pj4ga2V5
ZnJhbWVzID0gV1RGOjptb3ZlKHBvcEtleWZyYW1lcyk7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVz
ID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwpAQCAtMTIyMTUsMTAgKzEy
MjE1LDEwIEBAIFBhc3NSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXI6OmNyZWF0
ZUtleWZyYW1lc1J1bGUoY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgICAgIHJ1bGUtPnBhcnNlckFw
cGVuZEtleWZyYW1lKGtleWZyYW1lcy0+YXQoaSkpOwogICAgIHJ1bGUtPnNldE5hbWUobmFtZSk7
CiAgICAgcHJvY2Vzc0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRlZCgpOwotICAgIHJl
dHVybiBydWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcnVsZTsKIH0KIAotUGFzc1JlZlB0cjxT
dHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9ycykKK1JlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9ycykKIHsKICAgICBSZWZQdHI8U3R5bGVSdWxlPiBy
dWxlOwogICAgIGlmIChzZWxlY3RvcnMpIHsKQEAgLTEyMjMyLDEwICsxMjIzMiwxMCBAQCBQYXNz
UmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUAogICAgIH0gZWxzZQogICAgICAgICBwb3BSdWxlRGF0YSgpOwog
ICAgIGNsZWFyUHJvcGVydGllcygpOwotICAgIHJldHVybiBydWxlLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gcnVsZTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNy
ZWF0ZUZvbnRGYWNlUnVsZSgpCitSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVh
dGVGb250RmFjZVJ1bGUoKQogewogICAgIG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1l
c3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CkBAIC0xMjI1NSw3ICsxMjI1NSw3IEBA
IFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUo
KQogICAgIFJlZlB0cjxTdHlsZVJ1bGVGb250RmFjZT4gcnVsZSA9IFN0eWxlUnVsZUZvbnRGYWNl
OjpjcmVhdGUoY3JlYXRlU3R5bGVQcm9wZXJ0aWVzKCkpOwogICAgIGNsZWFyUHJvcGVydGllcygp
OwogICAgIHByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKLSAgICBy
ZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIHZvaWQgQ1NTUGFy
c2VyOjphZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdXJpKQpAQCAtMTIzMzAsNyArMTIzMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMoc3RkOjp1bmlxdWVf
cHRyPAogICAgIHJldHVybiBzcGVjaWZpZXJzOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPiBwYWdlU2VsZWN0b3IpCitSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpj
cmVhdGVQYWdlUnVsZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxl
Y3RvcikKIHsKICAgICAvLyBGSVhNRTogTWFyZ2luIGF0LXJ1bGVzIGFyZSBpZ25vcmVkLgogICAg
IG1fYWxsb3dJbXBvcnRSdWxlcyA9IG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxz
ZTsKQEAgLTEyMzQ0LDcgKzEyMzQ0LDcgQEAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQ
YXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWwKICAgICB9
IGVsc2UKICAgICAgICAgcG9wUnVsZURhdGEoKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKLSAg
ICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+IENTU1Bh
cnNlcjo6Y3JlYXRlU2VsZWN0b3JWZWN0b3IoKQpAQCAtMTIzNjIsNyArMTIzNjIsNyBAQCB2b2lk
IENTU1BhcnNlcjo6cmVjeWNsZVNlbGVjdG9yVmVjdG9yKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENTUwogICAgICAgICBtX3JlY3ljbGVkU2VsZWN0b3JWZWN0b3IgPSBX
VEY6Om1vdmUodmVjdG9yKTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJz
ZXI6OmNyZWF0ZVJlZ2lvblJ1bGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4+KiByZWdpb25TZWxlY3RvciwgUnVsZUxpc3QqIHJ1bGVzKQorUmVmUHRyPFN0eWxlUnVs
ZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlUmVnaW9uUnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclNlbGVjdG9yPj4qIHJlZ2lvblNlbGVjdG9yLCBSdWxlTGlzdCogcnVsZXMpCiB7
CiAgICAgaWYgKCFjc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZWdpb25TZWxlY3RvciB8fCAhcnVs
ZXMpIHsKICAgICAgICAgcG9wUnVsZURhdGEoKTsKQEAgLTEyMzc2LDcgKzEyMzc2LDcgQEAgUGFz
c1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUoVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDU1MKICAgICBpZiAoaXNFeHRyYWN0aW5nU291cmNlRGF0YSgpKQog
ICAgICAgICBhZGROZXdSdWxlVG9Tb3VyY2VUcmVlKENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGVV
bmtub3duKCkpOwogCi0gICAgcmV0dXJuIHJlZ2lvblJ1bGUucmVsZWFzZSgpOworICAgIHJldHVy
biByZWdpb25SdWxlOwogfQogCiB2b2lkIENTU1BhcnNlcjo6Y3JlYXRlTWFyZ2luQXRSdWxlKENT
U1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAqLykKQEAgLTEyNDA4LDcgKzEy
NDA4LDcgQEAgdm9pZCBDU1NQYXJzZXI6OmRlbGV0ZUZvbnRGYWNlT25seVZhbHVlcygpCiAgICAg
fSk7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gQ1NTUGFyc2VyOjpjcmVhdGVLZXlm
cmFtZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGtleXMpCitSZWZQdHI8U3R5bGVLZXlmcmFtZT4gQ1NT
UGFyc2VyOjpjcmVhdGVLZXlmcmFtZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGtleXMpCiB7CiAgICAg
Ly8gQ3JlYXRlIGEga2V5IHN0cmluZyBmcm9tIHRoZSBwYXNzZWQga2V5cwogICAgIFN0cmluZ0J1
aWxkZXIga2V5U3RyaW5nOwpAQCAtMTI0NDEsNyArMTI0NDEsNyBAQCBQYXNzUmVmUHRyPFN0eWxl
S2V5ZnJhbWU+IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBr
ZXlzKQogCiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKLSAgICByZXR1cm4ga2V5ZnJhbWUucmVs
ZWFzZSgpOworICAgIHJldHVybiBrZXlmcmFtZTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmludmFs
aWRCbG9ja0hpdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggOGUxZmMwNjExYzI4ZjJjYTFk
ZjRmZmRjZjI2NTJiMWQxZjE3NjdiZS4uYzkxOGVmOTU3YTMxMTNhMGRmMjU1NWJhYTViMGE3MmQ1
ZDk1M2EyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMTE0LDggKzExNCw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB+Q1NTUGFyc2VyKCk7CiAKICAgICB2b2lkIHBhcnNlU2hl
ZXQoU3R5bGVTaGVldENvbnRlbnRzKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVGV4dFBvc2l0aW9u
JiwgUnVsZVNvdXJjZURhdGFMaXN0KiwgYm9vbCBsb2dFcnJvcnMpOwotICAgIFBhc3NSZWZQdHI8
U3R5bGVSdWxlQmFzZT4gcGFyc2VSdWxlKFN0eWxlU2hlZXRDb250ZW50cyosIGNvbnN0IFN0cmlu
ZyYpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gcGFyc2VLZXlmcmFtZVJ1bGUoU3R5
bGVTaGVldENvbnRlbnRzKiwgY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IHBhcnNlUnVsZShTdHlsZVNoZWV0Q29udGVudHMqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBS
ZWZQdHI8U3R5bGVLZXlmcmFtZT4gcGFyc2VLZXlmcmFtZVJ1bGUoU3R5bGVTaGVldENvbnRlbnRz
KiwgY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBwYXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgc3RhdGljIFBhcnNlUmVzdWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0
eWxlUHJvcGVydGllcyosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0
YW50LCBDU1NQYXJzZXJNb2RlLCBTdHlsZVNoZWV0Q29udGVudHMqKTsKQEAgLTEyMyw4ICsxMjMs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBj
b25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkU3lzdGVtQ29sb3JWYWx1ZShDU1NWYWx1ZUlEKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVN5
c3RlbUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIERvY3VtZW50Kik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VW
YWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50LCBWYWx1ZVdpdGhDYWxjdWxhdGlvbiYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJik7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVZhbGlk
UHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRlbnQsIFZhbHVlV2l0aENhbGN1bGF0aW9uJik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHBhcnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyosIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+LCBTdHls
ZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBzdGF0aWMgUmVmPEltbXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9uKGNvbnN0IFN0
cmluZyYsIEVsZW1lbnQqKTsKQEAgLTE0Myw5ICsxNDMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBw
YXJzZVF1b3RlcyhDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJz
ZUFsdChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgCi0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VBdHRyKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncyk7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUF0dHIoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKTsKIAotICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQmFja2dyb3VuZENvbG9yKCk7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiBwYXJzZUJhY2tncm91bmRDb2xvcigpOwogCiAgICAgc3RydWN0IFNvdXJjZVNp
emUgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeUV4cD4gZXhwcmVzc2lvbjsK
QEAgLTE2MSw5ICsxNjEsOSBAQCBwdWJsaWM6CiAKICAgICBlbnVtIEZpbGxQb3NpdGlvbkZsYWcg
eyBJbnZhbGlkRmlsbFBvc2l0aW9uID0gMCwgQW1iaWd1b3VzRmlsbFBvc2l0aW9uID0gMSwgWEZp
bGxQb3NpdGlvbiA9IDIsIFlGaWxsUG9zaXRpb24gPSA0IH07CiAgICAgZW51bSBGaWxsUG9zaXRp
b25QYXJzaW5nTW9kZSB7IFJlc29sdmVWYWx1ZXNBc1BlcmNlbnQgPSAwLCBSZXNvbHZlVmFsdWVz
QXNLZXl3b3JkID0gMSB9OwotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNl
RmlsbFBvc2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclZhbHVlTGlzdCYsIHVuc2lnbmVkJiBjdW11
bGF0aXZlRmxhZ3MsIEZpbGxQb3NpdGlvbkZsYWcmIGluZGl2aWR1YWxGbGFnLCBGaWxsUG9zaXRp
b25QYXJzaW5nTW9kZSA9IFJlc29sdmVWYWx1ZXNBc1BlcmNlbnQpOwotICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlUG9zaXRpb25YKENTU1BhcnNlclZhbHVlTGlzdCYpOwotICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlUG9zaXRpb25ZKENTU1BhcnNlclZhbHVlTGlzdCYpOworICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VGaWxsUG9zaXRpb25Db21wb25lbnQoQ1NT
UGFyc2VyVmFsdWVMaXN0JiwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmlsbFBvc2l0aW9u
RmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlID0gUmVzb2x2ZVZh
bHVlc0FzUGVyY2VudCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVBvc2l0aW9uWChDU1NQ
YXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlUG9zaXRpb25ZKENT
U1BhcnNlclZhbHVlTGlzdCYpOwogICAgIHZvaWQgcGFyc2UyVmFsdWVzRmlsbFBvc2l0aW9uKENT
U1BhcnNlclZhbHVlTGlzdCYsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7
CiAgICAgYm9vbCBpc1BvdGVudGlhbFBvc2l0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsKICAg
ICB2b2lkIHBhcnNlRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCYsIFJlZlB0cjxDU1NW
YWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFyc2U0VmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCYsIFJl
ZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiYmLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYpOwogCiAgICAgdm9pZCBwYXJzZUZp
bGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKENTU1Byb3BlcnR5SUQsIGJvb2wgJmFsbG93
Q29tbWEpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VGaWxsU2l6ZShDU1NQcm9wZXJ0eUlE
LCBib29sICZhbGxvd0NvbW1hKTsKIAogICAgIGJvb2wgcGFyc2VGaWxsUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3BJZDEsIENTU1Byb3BlcnR5SUQmIHBy
b3BJZDIsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAgICAgYm9vbCBw
YXJzZUZpbGxTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJv
cGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKQEAgLTE3OSwxNyAr
MTc5LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEZpbGxWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+
JiBsdmFsLCBSZWY8Q1NTVmFsdWU+JiYgcnZhbCk7CiAgICAgdm9pZCBhZGRBbmltYXRpb25WYWx1
ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBSZWY8Q1NTVmFsdWU+JiYgcnZhbCk7CiAKLSAgICBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvbkRlbGF5KCk7Ci0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25EaXJlY3Rpb24oKTsKLSAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZUFuaW1hdGlvbkR1cmF0aW9uKCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VBbmltYXRpb25GaWxsTW9kZSgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBw
YXJzZUFuaW1hdGlvbk5hbWUoKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1h
dGlvblBsYXlTdGF0ZSgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9u
UHJvcGVydHkoQW5pbWF0aW9uUGFyc2VDb250ZXh0Jik7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VBbmltYXRpb25EZWxheSgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRp
b25EaXJlY3Rpb24oKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uRHVyYXRp
b24oKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uRmlsbE1vZGUoKTsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKTsKKyAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uTmFtZSgpOworICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VBbmltYXRpb25QbGF5U3RhdGUoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
QW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uUGFyc2VDb250ZXh0Jik7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCk7CiAjaWYgRU5BQkxFKENTU19B
TklNQVRJT05TX0xFVkVMXzIpCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRp
b25UcmlnZ2VyKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvblRyaWdnZXIo
KTsKICNlbmRpZgogICAgIHN0YXRpYyBWZWN0b3I8ZG91YmxlPiBwYXJzZUtleWZyYW1lU2VsZWN0
b3IoY29uc3QgU3RyaW5nJik7CiAKQEAgLTIwNCwyMSArMjA0LDIxIEBAIHB1YmxpYzoKICAgICBi
b29sIHBhcnNlQ29sdW1uc1Nob3J0aGFuZChib29sIGltcG9ydGFudCk7CiAKICNpZiBFTkFCTEUo
Q1NTX0dSSURfTEFZT1VUKQotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFBvc2l0
aW9uKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRQb3NpdGlvbigpOwogICAgIGJv
b2wgcGFyc2VHcmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1w
b3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzKFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUdyaWRUZW1wbGF0
ZVNob3J0aGFuZChib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUdyaWRTaG9ydGhhbmQo
Ym9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VHcmlkQXJlYVNob3J0aGFuZChib29sIGlt
cG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVNpbmdsZUdyaWRBcmVhTG9uZ2hhbmQoUmVmUHRyPENT
U1ZhbHVlPiYpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFRyYWNrTGlzdCgp
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVHJhY2tMaXN0KCk7CiAgICAgYm9vbCBw
YXJzZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1ZhbHVlTGlzdCYpOwotICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFRyYWNrU2l6ZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGlucHV0
TGlzdCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VHcmlkQnJlYWR0
aChDU1NQYXJzZXJWYWx1ZSYpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVHJhY2tT
aXplKENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHBhcnNlR3JpZEJyZWFkdGgoQ1NTUGFyc2VyVmFsdWUmKTsKICAgICBib29sIHBh
cnNlR3JpZFRlbXBsYXRlQXJlYXNSb3coTmFtZWRHcmlkQXJlYU1hcCYsIGNvbnN0IHVuc2lnbmVk
LCB1bnNpZ25lZCYpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFRlbXBsYXRl
QXJlYXMoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFRlbXBsYXRlQXJlYXMoKTsK
ICAgICBib29sIHBhcnNlR3JpZExpbmVOYW1lcyhDU1NQYXJzZXJWYWx1ZUxpc3QmLCBDU1NWYWx1
ZUxpc3QmLCBDU1NHcmlkTGluZU5hbWVzVmFsdWUqID0gbnVsbHB0cik7Ci0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VHcmlkQXV0b0Zsb3coQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CisgICAg
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRBdXRvRmxvdyhDU1NQYXJzZXJWYWx1ZUxpc3QmKTsK
ICNlbmRpZgogCiAgICAgYm9vbCBwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCwg
Ym9vbCBpbXBvcnRhbnQpOwpAQCAtMjI3LDMwICsyMjcsMzAgQEAgcHVibGljOgogCiAgICAgYm9v
bCBwYXJzZUxlZ2FjeVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAg
ICBib29sIHBhcnNlSXRlbVBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VDb250ZW50RGlz
dHJpYnV0aW9uT3ZlcmZsb3dQb3NpdGlvbigpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VD
b250ZW50RGlzdHJpYnV0aW9uT3ZlcmZsb3dQb3NpdGlvbigpOwogCiAjaWYgRU5BQkxFKENTU19T
SEFQRVMpCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTaGFwZVByb3BlcnR5KENTU1By
b3BlcnR5SUQpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTaGFwZVByb3BlcnR5KENTU1By
b3BlcnR5SUQpOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUJhc2lj
U2hhcGVBbmRPckJveChDU1NQcm9wZXJ0eUlEIHByb3BJZCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcGFyc2VCYXNpY1NoYXBlKCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcGFyc2VTaGFwZVJhZGl1cyhDU1NQYXJzZXJWYWx1ZSYpOwotICAgIFBhc3NS
ZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VCYXNpY1NoYXBlQ2lyY2xlKENTU1BhcnNlclZhbHVl
TGlzdCYpOwotICAgIFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VCYXNpY1NoYXBlRWxs
aXBzZShDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKLSAgICBQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+
IHBhcnNlQmFzaWNTaGFwZVBvbHlnb24oQ1NTUGFyc2VyVmFsdWVMaXN0Jik7Ci0gICAgUGFzc1Jl
ZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJzZUJhc2ljU2hhcGVJbnNldChDU1NQYXJzZXJWYWx1ZUxp
c3QmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1By
b3BlcnR5SUQgcHJvcElkKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlQmFz
aWNTaGFwZSgpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VTaGFwZVJhZGl1
cyhDU1NQYXJzZXJWYWx1ZSYpOworICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJzZUJhc2lj
U2hhcGVDaXJjbGUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CisgICAgUmVmUHRyPENTU0Jhc2ljU2hh
cGU+IHBhcnNlQmFzaWNTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CisgICAgUmVm
UHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlQmFzaWNTaGFwZVBvbHlnb24oQ1NTUGFyc2VyVmFsdWVM
aXN0Jik7CisgICAgUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlQmFzaWNTaGFwZUluc2V0KENT
U1BhcnNlclZhbHVlTGlzdCYpOwogCiAgICAgYm9vbCBwYXJzZUZvbnQoYm9vbCBpbXBvcnRhbnQp
OwogICAgIHZvaWQgcGFyc2VTeXN0ZW1Gb250KGJvb2wgaW1wb3J0YW50KTsKLSAgICBQYXNzUmVm
UHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFtaWx5KCk7CisgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gcGFyc2VGb250RmFtaWx5KCk7CiAKICAgICBib29sIHBhcnNlQ291bnRlcihDU1NQcm9w
ZXJ0eUlELCBpbnQgZGVmYXVsdFZhbHVlLCBib29sIGltcG9ydGFudCk7Ci0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VDb3VudGVyQ29udGVudChDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3Ms
IGJvb2wgY291bnRlcnMpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VDb3VudGVyQ29udGVu
dChDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MsIGJvb2wgY291bnRlcnMpOwogCiAgICAgYm9vbCBw
YXJzZUNvbG9yUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYsIGludCogY29sb3JWYWx1ZXMsIGJv
b2wgcGFyc2VBbHBoYSk7CiAgICAgYm9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFs
dWUmLCBkb3VibGUqIGNvbG9yVmFsdWVzLCBib29sIHBhcnNlQWxwaGEpOwotICAgIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlQ29sb3IoQ1NTUGFyc2VyVmFsdWUqID0gbnVsbHB0
cik7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUNvbG9yKENTU1BhcnNlclZh
bHVlKiA9IG51bGxwdHIpOwogICAgIGJvb2wgcGFyc2VDb2xvckZyb21WYWx1ZShDU1NQYXJzZXJW
YWx1ZSYsIFJHQkEzMiYpOwogICAgIHZvaWQgcGFyc2VTZWxlY3Rvcihjb25zdCBTdHJpbmcmLCBD
U1NTZWxlY3Rvckxpc3QmKTsKIApAQCAtMjY2LDEzICsyNjYsMTMgQEAgcHVibGljOgogICAgIGJv
b2wgcGFyc2VGb250RmFjZVVuaWNvZGVSYW5nZSgpOwogCiAgICAgYm9vbCBwYXJzZVNWR1ZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gcGFyc2VTVkdQYWludCgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
U1ZHQ29sb3IoKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR1N0cm9rZURhc2hh
cnJheSgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlUGFpbnRPcmRlcigpOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdQYWludCgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VTVkdDb2xvcigpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdTdHJva2VEYXNo
YXJyYXkoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlUGFpbnRPcmRlcigpOwogCiAgICAg
Ly8gQ1NTMyBQYXJzaW5nIFJvdXRpbmVzIChmb3IgcHJvcGVydGllcyBzcGVjaWZpYyB0byBDU1Mz
KQotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1
ZUxpc3QmLCBDU1NQcm9wZXJ0eUlEKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZVNo
YWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QmLCBDU1NQcm9wZXJ0eUlEKTsKICAgICBib29sIHBhcnNl
Qm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiYsIGJvb2wgaW1wb3J0
YW50ID0gZmFsc2UpOwogICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZVJlcGVhdChSZWZQdHI8Q1NT
VmFsdWU+Jik7CiAgICAgYm9vbCBwYXJzZUJvcmRlckltYWdlU2xpY2UoQ1NTUHJvcGVydHlJRCwg
UmVmUHRyPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4mKTsKQEAgLTMwMCwyNSArMzAwLDI1IEBA
IHB1YmxpYzoKICAgICBib29sIHBhcnNlQ3Jvc3NmYWRlKENTU1BhcnNlclZhbHVlTGlzdCYsIFJl
ZlB0cjxDU1NWYWx1ZT4mKTsKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLSAg
ICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUltYWdlUmVzb2x1dGlvbigpOworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VJbWFnZVJlc29sdXRpb24oKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENTU19JTUFHRV9TRVQpCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VJbWFnZVNldCgp
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VJbWFnZVNldCgpOwogI2VuZGlmCiAKICAgICBi
b29sIHBhcnNlRmlsdGVySW1hZ2UoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1ZhbHVl
PiYpOwogCiAgICAgYm9vbCBwYXJzZUZpbHRlcihDU1NQYXJzZXJWYWx1ZUxpc3QmLCBSZWZQdHI8
Q1NTVmFsdWU+Jik7Ci0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gcGFyc2VC
dWlsdGluRmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbHVlTGlzdCYsIFdlYktpdENTU0ZpbHRl
clZhbHVlOjpGaWx0ZXJPcGVyYXRpb25UeXBlKTsKKyAgICBSZWZQdHI8V2ViS2l0Q1NTRmlsdGVy
VmFsdWU+IHBhcnNlQnVpbHRpbkZpbHRlckFyZ3VtZW50cyhDU1NQYXJzZXJWYWx1ZUxpc3QmLCBX
ZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6RmlsdGVyT3BlcmF0aW9uVHlwZSk7CiAKLSAgICBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUNsaXBQYXRoKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUNsaXBQYXRoKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0JsZW5kTW9kZShDU1NWYWx1ZUlEKTsK
ICAgICBzdGF0aWMgYm9vbCBpc0NvbXBvc2l0ZU9wZXJhdG9yKENTU1ZhbHVlSUQpOwogCi0gICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlVHJhbnNmb3JtKCk7Ci0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlVHJhbnNmb3JtKCk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclZhbHVlJik7CiAgICAgYm9vbCBwYXJzZVRy
YW5zZm9ybU9yaWdpbihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcElk
MSwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMiwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMywgUmVmUHRy
PENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAgICAg
Ym9vbCBwYXJzZVBlcnNwZWN0aXZlT3JpZ2luKENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9w
ZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQyLCAgUmVmUHRyPENTU1ZhbHVl
PiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKIApAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHBhcnNlVGV4dERlY29yYXRpb25Ta2lwKGJvb2wgaW1wb3J0YW50KTsKICAgICBib29s
IHBhcnNlVGV4dFVuZGVybGluZVBvc2l0aW9uKGJvb2wgaW1wb3J0YW50KTsKIAotICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlVGV4dEluZGVudCgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VUZXh0SW5kZW50KCk7CiAgICAgCiAgICAgYm9vbCBwYXJzZUxpbmVCb3hDb250YWluKGJv
b2wgaW1wb3J0YW50KTsKICAgICBSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiBwYXJzZUNhbGN1bGF0aW9u
KENTU1BhcnNlclZhbHVlJiwgQ2FsY3VsYXRpb25QZXJtaXR0ZWRWYWx1ZVJhbmdlKTsKQEAgLTM0
OSwyMiArMzQ5LDIyIEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+PiBjcmVhdGVTZWxlY3RvclZlY3RvcigpOwog
ICAgIHZvaWQgcmVjeWNsZVNlbGVjdG9yVmVjdG9yKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+KTsKIAotICAgIFBhc3NSZWZQdHI8U3R5
bGVSdWxlQmFzZT4gY3JlYXRlSW1wb3J0UnVsZShjb25zdCBDU1NQYXJzZXJTdHJpbmcmLCBQYXNz
UmVmUHRyPE1lZGlhUXVlcnlTZXQ+KTsKLSAgICBQYXNzUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IGNy
ZWF0ZUtleWZyYW1lKENTU1BhcnNlclZhbHVlTGlzdCYpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPiBjcmVhdGVLZXlmcmFtZXNSdWxlKGNvbnN0IFN0cmluZyYsIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+Pj4pOworICAgIFJlZlB0cjxTdHls
ZVJ1bGVCYXNlPiBjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmluZyYsIFBhc3NS
ZWZQdHI8TWVkaWFRdWVyeVNldD4pOworICAgIFJlZlB0cjxTdHlsZUtleWZyYW1lPiBjcmVhdGVL
ZXlmcmFtZShDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJh
bWVzPiBjcmVhdGVLZXlmcmFtZXNSdWxlKGNvbnN0IFN0cmluZyYsIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+Pj4pOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2U+PiBSdWxlTGlzdDsKLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IGNyZWF0ZU1lZGlhUnVsZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+LCBSdWxlTGlzdCop
OwotICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlRW1wdHlNZWRpYVJ1bGUoUnVs
ZUxpc3QqKTsKLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZVN0eWxlUnVsZShW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9ycyk7Ci0g
ICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVGb250RmFjZVJ1bGUoKTsKLSAgICBQ
YXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZVBhZ2VSdWxlKHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKTsKLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVs
ZUJhc2U+IGNyZWF0ZVJlZ2lvblJ1bGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4+KiByZWdpb25TZWxlY3RvciwgUnVsZUxpc3QqIHJ1bGVzKTsKKyAgICBSZWZQdHI8
U3R5bGVSdWxlQmFzZT4gY3JlYXRlTWVkaWFSdWxlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4s
IFJ1bGVMaXN0Kik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZUVtcHR5TWVkaWFS
dWxlKFJ1bGVMaXN0Kik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZVN0eWxlUnVs
ZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9ycyk7
CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZUZvbnRGYWNlUnVsZSgpOworICAgIFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVQYWdlUnVsZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+IHBhZ2VTZWxlY3Rvcik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNy
ZWF0ZVJlZ2lvblJ1bGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+
KiByZWdpb25TZWxlY3RvciwgUnVsZUxpc3QqIHJ1bGVzKTsKICAgICB2b2lkIGNyZWF0ZU1hcmdp
bkF0UnVsZShDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSk7Ci0gICAgUGFzc1JlZlB0cjxTdHls
ZVJ1bGVCYXNlPiBjcmVhdGVTdXBwb3J0c1J1bGUoYm9vbCBjb25kaXRpb25Jc1N1cHBvcnRlZCwg
UnVsZUxpc3QqKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlU3VwcG9ydHNSdWxl
KGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFJ1bGVMaXN0Kik7CiAgICAgdm9pZCBtYXJrU3Vw
cG9ydHNSdWxlSGVhZGVyU3RhcnQoKTsKICAgICB2b2lkIG1hcmtTdXBwb3J0c1J1bGVIZWFkZXJF
bmQoKTsKLSAgICBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBwb3BTdXBwb3J0c1J1bGVE
YXRhKCk7CisgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBwb3BTdXBwb3J0c1J1bGVEYXRh
KCk7CiAKICAgICB2b2lkIHN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCk7CiAgICAgdm9p
ZCBlbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBwcml2
YXRlOgogICAgIFBhcnNlUmVzdWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyos
IENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBTdHlsZVNoZWV0
Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBSZWY8SW1tdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPiBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIFN0eWxlU2hlZXRDb250ZW50
cyogY29udGV4dFN0eWxlU2hlZXQpOwogCi0gICAgUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBw
YXJzZUluc2V0Um91bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+LCBD
U1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VJbnNl
dFJvdW5kZWRDb3JuZXJzKFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZUluc2V0PiwgQ1NTUGFyc2Vy
VmFsdWVMaXN0Jik7CiAKICAgICBlbnVtIFNpemVQYXJhbWV0ZXJUeXBlIHsKICAgICAgICAgTm9u
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDI0NzVjMTcx
ZjM3NDRjMjYzNmJmYzg3OWUxYjlkYzFhY2IxZGI3YzguLjQ4ZmZmMmFhOGFkN2IyZjYyMzM3Mjdk
ZjM0ZGI5YTdjYmEwYmUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRp
b24uaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENzc1Rl
eHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CisgICAgdmly
dHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJv
cGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgPSAwOwogICAgIHZpcnR1
YWwgU3RyaW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
KSA9IDA7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAvLyBDU1NQcm9wZXJ0eUlEIHZl
cnNpb25zIG9mIHRoZSBDU1NPTSBmdW5jdGlvbnMgdG8gc3VwcG9ydCBiaW5kaW5ncyBhbmQgZWRp
dGluZy4KICAgICAvLyBVc2UgdGhlIG5vbi12aXJ0dWFsIG1ldGhvZHMgaW4gdGhlIGNvbmNyZXRl
IHN1YmNsYXNzZXMgd2hlbiBwb3NzaWJsZS4KICAgICAvLyBUaGUgQ1NTVmFsdWUgcmV0dXJuZWQg
YnkgdGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGV4cG9zZWQgdG8gdGhlIHdlYiBhcyBpdCBt
YXkgYmUgdXNlZCBieSBtdWx0aXBsZSBkb2N1bWVudHMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUlEKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDZiMWI0Yzg4NzMyMzNhODE3NGQ3YWZlZTFjY2Rm
YTYyZTdlNmQyYmMuLjBkMmI4MmZkNDFmY2VhOGFlNTk3YTIwNDA5YjhiNDgxZWM4ODAyNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI3MSwxMCArMjcxLDEwIEBAIGJv
b2wgQ1NTU3R5bGVTaGVldDo6Y2FuQWNjZXNzUnVsZXMoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6cnVsZXMoKQor
UmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCiB7CiAgICAgaWYgKCFj
YW5BY2Nlc3NSdWxlcygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgLy8gSUUgYmVoYXZpb3IuCiAgICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBu
b25DaGFyc2V0UnVsZXMgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWdu
ZWQgcnVsZUNvdW50ID0gbGVuZ3RoKCk7CkBAIC0yODQsNyArMjg0LDcgQEAgUGFzc1JlZlB0cjxD
U1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6cnVsZXMoKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIG5vbkNoYXJzZXRSdWxlcy0+cnVsZXMoKS5hcHBlbmQocnVsZSk7CiAgICAgfQot
ICAgIHJldHVybiBub25DaGFyc2V0UnVsZXMucmVsZWFzZSgpOworICAgIHJldHVybiBub25DaGFy
c2V0UnVsZXM7CiB9CiAKIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3Qg
U3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0zNTgsMTAgKzM1OCwxMCBAQCBpbnQgQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJp
bmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBFeGNlcHRpbwogfQogCiAKLVBhc3NS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKCkKK1JlZlB0cjxDU1NS
dWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQogewogICAgIGlmICghY2FuQWNjZXNz
UnVsZXMoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKICAgICAgICAgbV9ydWxlTGlzdENTU09NV3Jh
cHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlzKTsKICAg
ICByZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5oCmluZGV4IGQzMTJlZWNiMWFmYzdmOTljNDFkMTJhYjQ1ZTBjYjk2NGI0YzA5NmQu
LjE3NGNkNGM5NTVlNGZlM2Y4NWI0MWVmODg0MDljZTJmNjJjNDkxZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuaApAQCAtNjMsMTIgKzYzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgZGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRGlzYWJsZWQ7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgCi0gICAg
UGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVsZXMoKTsKKyAgICBSZWZQdHI8Q1NTUnVsZUxp
c3Q+IGNzc1J1bGVzKCk7CiAgICAgdW5zaWduZWQgaW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1
bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVSdWxl
KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgCiAgICAgLy8gSUUgRXh0ZW5z
aW9ucwotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKCk7CisgICAgUmVmUHRyPENT
U1J1bGVMaXN0PiBydWxlcygpOwogICAgIGludCBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IGludCBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IGRlbGV0ZVJ1bGUoaW5kZXgsIGVjKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RvU3R5bGVNYXAuY3BwCmluZGV4IDI3ZDUzMDUxMDAzZjIyYTI0N2VkNDFmYTNlNjI4NzA5
ZTE4MzI3ZDkuLmUxZDQ5MjUwMDJiZjExMzM0ZjA0ODM4ZjRiNzk2MjVhMmU5MDE2NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBDU1NU
b1N0eWxlTWFwOjp1c2VTVkdab29tUnVsZXMoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc29sdmVy
LT51c2VTVkdab29tUnVsZXMoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NUb1N0
eWxlTWFwOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWUmIHZh
bHVlKQorUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1RvU3R5bGVNYXA6OnN0eWxlSW1hZ2UoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlkLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIG1fcmVz
b2x2ZXItPnN0eWxlSW1hZ2UocHJvcGVydHlJZCwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
b1N0eWxlTWFwLmgKaW5kZXggMjU5ZWIyNjE2ZWJjODhmNzI4YmU4MDU2YTkyY2IzYWYyMmE5OGIz
ZS4uMTE4NzgxOTUyNmIyNTcxZTZjNjAzNDM5NDU3YjkwZGM2NTg4MDg4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVG9TdHlsZU1hcC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2Ygc29tZSBzb3J0IG9mIFN0eWxlSW1hZ2VDYWNoZSBv
YmplY3Qgd2hpY2gKICAgICAvLyBpcyBoZWxkIGJ5IHRoZSBTdHlsZVJlc29sdmVyLCBhbmQgbGlr
ZWx5IHByb3ZpZGVkIHRvIHRoaXMgb2JqZWN0CiAgICAgLy8gZHVyaW5nIHRoZSByZXNvbHZlLgot
ICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlELCBDU1NW
YWx1ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlJik7CiAKICAgICBTdHlsZVJlc29sdmVyKiBtX3Jlc29sdmVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuY3BwCmluZGV4IDQ1NWU3ODFhNmJiYjAzY2NlODA0MzVmZjgxOTcxODFlMTUw
ZjVlMzEuLjlkYjZlYmU5OGJkZDBlODI3NDY1NDhiYWI3Mzc4ZDUwZTJhY2NmZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ry
b3koKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IENTU1Zh
bHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7
CiAgICAgY2FzZSBQcmltaXRpdmVDbGFzczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggNTZmZDI4
N2NlMDA0ZDZiNzM5YjkwZWE2ODgxYTY2NDUxYzA1ODRhNy4uMWFhOWFhMjVkNjkwNWFkNGMyNjI4
NzQ0MGExYTNlMTgxNjEwOWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTExOSw3ICsxMTks
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB8fCBpc1ZhbHVlTGlzdCgpOwogICAgIH0KIAotICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKKyAgICBSZWZQdHI8
Q1NTVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAogICAgIHZvaWQgYWRkU3VicmVzb3Vy
Y2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyop
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKaW5kZXggMDRlMDkzZWEyNDMyOWEzYTgzMmY2
M2JiZmE1YjVlYzRmOTE3OTYwOC4uNzMxMDM0MDBiNDY3Y2JiNGVmNWE4MDVlNDJjOTAyMmEwZmU5
MDczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgU3RyaW5nIG1lZGlhVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhUXVlcnlT
ZXQoKnRoaXMpKTsgfQorICAgIFJlZjxNZWRpYVF1ZXJ5U2V0PiBjb3B5KCkgY29uc3QgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVF1ZXJ5U2V0KCp0aGlzKSk7IH0KIAogcHJpdmF0ZToKICAg
ICBNZWRpYVF1ZXJ5U2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeU1hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmNw
cAppbmRleCBlZGExZDJmNTBlNDBlNDVkNDVlZTJjMjNmMmEzZWRjZGI0ODg2YTQyLi40ZGU5NjBi
ZjMwMTAzYWNmMDU3YjFiYTQzYjJjN2I4ZGRiZjk0MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKQEAgLTk5LDEwICs5OSwxMCBAQCBib29sIE1lZGlhUXVlcnlN
YXRjaGVyOjpldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5U2V0KiBtZWRpYSkKICAgICByZXR1cm4g
ZXZhbHVhdG9yICYmIGV2YWx1YXRvci0+ZXZhbChtZWRpYSk7CiB9CiAKLVBhc3NSZWZQdHI8TWVk
aWFRdWVyeUxpc3Q+IE1lZGlhUXVlcnlNYXRjaGVyOjptYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYg
cXVlcnkpCitSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IE1lZGlhUXVlcnlNYXRjaGVyOjptYXRjaE1l
ZGlhKGNvbnN0IFN0cmluZyYgcXVlcnkpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8TWVkaWFR
dWVyeVNldD4gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUocXVlcnkpOwogI2lmIEVOQUJM
RShSRVNPTFVUSU9OX01FRElBX1FVRVJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlNYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNo
ZXIuaAppbmRleCA5OGZiOWNmNWEyODUzNmI4ZjgzNTE2MjI3OGM3ZjBiMmU5OWU5YjEwLi44ZGFj
MTcyNmFlY2IyZDQ4MWUzYzEyMTQzNGQyYmY5NmUzYzU4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeU1hdGNoZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZGRMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+LCBQYXNzUmVmUHRy
PE1lZGlhUXVlcnlMaXN0Pik7CiAgICAgdm9pZCByZW1vdmVMaXN0ZW5lcihNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyKiwgTWVkaWFRdWVyeUxpc3QqKTsKIAotICAgIFBhc3NSZWZQdHI8TWVkaWFRdWVy
eUxpc3Q+IG1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPE1lZGlhUXVlcnlM
aXN0PiBtYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdW5zaWduZWQgZXZhbHVhdGlv
blJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsdWF0aW9uUm91bmQ7IH0KICAgICB2b2lkIHN0
eWxlUmVzb2x2ZXJDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGM3Mjg1MWYwMDBhMmI1Y2I5MTlk
ZGVjMmUyMTZmODQ0OWI2Yjk5MDEuLjdmZThjMDQyNzk5YjJjNjcwNmIzZWQwNGIwOWRiNmFjNjlk
MGYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCB2b2lkIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2Vw
dGlvbkNvZAogICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7ICAgIAog
fQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCitSZWZQdHI8
Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0
eUlEKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0
dXJuIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShtX3Byb3BlcnR5U2V0LT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKHByb3BlcnR5SUQpLmdldCgpKTsKIH0KIApAQCAtMjQ1LDcgKzI0NSw3IEBAIFN0cmluZyBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQorUmVmUHRyPENTU1ZhbHVlPiBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPmdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggMzNhMDM4NmNkYjIw
NTYwMDBkZTIxOGUxNDkwMzM3NDk1ZmMwMzhiYS4uNjA4NzgwZjhjMjkxOGE0ZWE1ZDNhM2U3YWEx
YWFkOWQwYzgyOGUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OwogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NW
YWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmly
dHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3Bl
cnR5VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5U2hv
cnRoYW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZSBmaW5hbDsKQEAgLTYz
LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyByZW1vdmVQcm9wZXJ0eShj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFs
OwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUlEKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVh
bCBib29sIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKICAg
ICAKQEAgLTgzLDkgKzgzLDkgQEAgcHJvdGVjdGVkOgogY2xhc3MgU3R5bGVSdWxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24K
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJ1bGVDU1NTdHlsZURlY2xh
cmF0aW9uPiBjcmVhdGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgcHJvcGVydHlTZXQsIENTU1J1
bGUmIHBhcmVudFJ1bGUpCisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0
aW9uPiBjcmVhdGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgcHJvcGVydHlTZXQsIENTU1J1bGUm
IHBhcmVudFJ1bGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVs
ZUNTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQsIHBhcmVudFJ1bGUpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbihwcm9wZXJ0
eVNldCwgcGFyZW50UnVsZSkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5TdHlsZVJ1bGVDU1NTdHls
ZURlY2xhcmF0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuY3BwCmluZGV4IGExODgzMGUxZmMx
ZThmMzkzY2JkZGM5MzllZDE2NzkwYjk1NjAwMzQuLjE5NzczMzAyNTVjZDI4Yjc3NTQwOGMwY2Zl
OTM5NTM2MjFjNzJjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcApAQCAtMzUsMzYgKzM1LDM2
IEBAIFJlZjxSR0JDb2xvcj4gUkdCQ29sb3I6OmNyZWF0ZSh1bnNpZ25lZCByZ2JDb2xvcikKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSR0JDb2xvcihyZ2JDb2xvcikpOwogfQogCi1QYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6cmVkKCkKK1JlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gUkdCQ29sb3I6OnJlZCgpCiB7CiAgICAgdW5zaWduZWQgdmFsdWUgPSAobV9yZ2JDb2xv
ciA+PiAxNikgJiAweEZGOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAg
IHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBSR0JDb2xvcjo6Z3JlZW4oKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xv
cjo6Z3JlZW4oKQogewogICAgIHVuc2lnbmVkIHZhbHVlID0gKG1fcmdiQ29sb3IgPj4gOCkgJiAw
eEZGOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgIHJlc3VsdC0+c2V0
Q1NTT01TYWZlKCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdU
Rjo6bW92ZShyZXN1bHQpOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JD
b2xvcjo6Ymx1ZSgpCitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IFJHQkNvbG9yOjpibHVlKCkKIHsK
ICAgICB1bnNpZ25lZCB2YWx1ZSA9IG1fcmdiQ29sb3IgJiAweEZGOwotICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOwogICAgIHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOwogfQog
Ci1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6YWxwaGEoKQorUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6YWxwaGEoKQogewogICAgIGZsb2F0IHZhbHVlID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KChtX3JnYkNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMHhGRjsKLSAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUs
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICByZXN1bHQtPnNldENTU09NU2Fm
ZSgpOwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiBXVEY6Om1vdmUo
cmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1JHQkNvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaApp
bmRleCAxYWY3ZWI3NWQxY2YwYzQwYWU0ODIzYjE5NGRhYTViOTY4ZTQyNmIzLi43M2ZiZmFmNDNk
MGY0MGMxMDYzZWEwMTgxNWQ1M2I2OTJiMTRkNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUkdCQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuaApAQCAt
MzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8UkdCQ29sb3I+IGNyZWF0ZSh1bnNpZ25lZCByZ2JDb2xvcik7CiAKLSAgICAg
ICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVkKCk7Ci0gICAgICAgIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdyZWVuKCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGJsdWUoKTsKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gYWxwaGEoKTsKKyAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiByZWQoKTsKKyAgICAg
ICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBncmVlbigpOworICAgICAgICBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IGJsdWUoKTsKKyAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBhbHBoYSgp
OwogCiAgICAgICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9yZ2JDb2xv
cik7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAppbmRleCBkYzZjYzViOTM0NWNjMzlhODAxYWRhMDJhMTQyZDEyMzI2
YmRkZmNmLi5iODAxZDcwYWZkNjliZjVlODczNzQ1YzRkMTdlN2Y0MDc0YWRlMTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBwYWludE9yZGVyKFBh
aW50T3JkZXIgcGFpbnRPcmRlcikKICAgICByZXR1cm4gV1RGOjptb3ZlKHBhaW50T3JkZXJMaXN0
KTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50
YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKEVHbHlwaE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQor
c3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJp
bWl0aXZlVmFsdWUoRUdseXBoT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgc3dpdGNo
IChvcmllbnRhdGlvbikgewogICAgICAgICBjYXNlIEdPXzBERUc6CkBAIC03NiwxMSArNzYsMTEg
QEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdseXBoT3JpZW50YXRpb25U
b0NTU1ByaW1pdGl2ZVZhbHVlKEVHbHlwaE8KICAgICAgICAgY2FzZSBHT18yNzBERUc6CiAgICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgyNzAuMGYsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfREVHKTsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29uc3QgVmVj
dG9yPFNWR0xlbmd0aD4mIGRhc2hlcykKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURh
c2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGg+JiBkYXNoZXMpCiB7
CiAgICAgaWYgKGRhc2hlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOwpAQCAtOTAsMjIgKzkwLDIyIEBA
IHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlz
dChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoCiAgICAgZm9yIChWZWN0b3I8U1ZHTGVuZ3RoPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBkYXNoZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAg
ICBsaXN0LT5hcHBlbmQoU1ZHTGVuZ3RoOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKCppdCkpOwogCi0g
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBsaXN0OwogfQogCi1QYXNzUmVm
UHRyPFNWR1BhaW50PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWludEZvckN1
cnJlbnRDb2xvcihQYXNzUmVmUHRyPFNWR1BhaW50PiBuZXdQYWludCwgUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAorUmVmUHRyPFNWR1BhaW50PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1
c3RTVkdQYWludEZvckN1cnJlbnRDb2xvcihQYXNzUmVmUHRyPFNWR1BhaW50PiBuZXdQYWludCwg
UmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIFJlZlB0cjxTVkdQYWludD4gcGFpbnQg
PSBuZXdQYWludDsKICAgICBpZiAocGFpbnQtPnBhaW50VHlwZSgpID09IFNWR1BhaW50OjpTVkdf
UEFJTlRUWVBFX0NVUlJFTlRDT0xPUiB8fCBwYWludC0+cGFpbnRUeXBlKCkgPT0gU1ZHUGFpbnQ6
OlNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUikKICAgICAgICAgcGFpbnQtPnNldENvbG9y
KHN0eWxlLT5jb2xvcigpKTsKLSAgICByZXR1cm4gcGFpbnQucmVsZWFzZSgpOworICAgIHJldHVy
biBwYWludDsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6c3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlv
dXQgdXBkYXRlTGF5b3V0KSBjb25zdAorUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpzdmdQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0
ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fbm9kZS5n
ZXQoKTsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIE1ha2Ugc3VyZSBvdXIgbGF5b3V0IGlzIHVwIHRvIGRhdGUgYmVm
b3JlIHdlIGFsbG93IGEgcXVlcnkgb24gdGhlc2UgYXR0cmlidXRlcy4KICAgICBpZiAodXBkYXRl
TGF5b3V0KQpAQCAtMTEzLDcgKzExMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wCiAKICAg
ICBSZW5kZXJTdHlsZSogc3R5bGUgPSBub2RlLT5jb21wdXRlZFN0eWxlKCk7CiAgICAgaWYgKCFz
dHlsZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUtPnN2Z1N0eWxlKCk7CiAKQEAg
LTIwMiw3ICsyMDIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpzdmdQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcAogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKHN2Z1N0eWxlLmJhc2Vs
aW5lU2hpZnRWYWx1ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJp
bmc6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdmdTdHls
ZS5idWZmZXJlZFJlbmRlcmluZygpKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdmdQcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcAogICAgICAgICAgICAgaWYgKHN2Z1N0eWxlLmdseXBoT3JpZW50YXRpb25WZXJ0
aWNhbCgpID09IEdPX0FVVE8pCiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CiAKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZv
clNoYWRvdyhzdmdTdHlsZS5zaGFkb3coKSwgcHJvcGVydHlJRCwgKnN0eWxlKTsKQEAgLTIzNiw3
ICsyMzYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpz
dmdQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcAogICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKDAsICJ1bmltcGxlbWVudGVkIHByb3BlcnR5SUQ6ICVkIiwgcHJvcGVydHlJRCk7CiAg
ICAgfQogICAgIExPR19FUlJPUigidW5pbXBsZW1lbnRlZCBwcm9wZXJ0eUlEOiAlZCIsIHByb3Bl
cnR5SUQpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCmluZGV4IDkwNjNhOTAzNjRhZjYzNjQwYWNlOWE1OWJh
MTZmMWFiOWI5MTQwZDAuLjYwNTAwNjk2YjUwYjAyNDA4OWU0NDEwMTVjZjY4MWU2NzMwOGI5ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlU1ZHU3Ryb2tlRGFzaGFycmF5KCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZVNWR1N0cm9rZURhc2hhcnJheSgpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gcmV0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIENTU1Bh
cnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CkBAIC0zNjEsMTAgKzM2
MSwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHU3Ryb2tlRGFz
aGFycmF5KCkKICAgICB9CiAgICAgaWYgKCF2YWxpZF9wcmltaXRpdmUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiByZXQucmVsZWFzZSgpOworICAgIHJldHVybiByZXQ7CiB9
CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTVkdQYWludCgpCitSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTVkdQYWludCgpCiB7CiAgICAgUkdCQTMyIGMg
PSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgaWYgKCFwYXJzZUNvbG9yRnJvbVZhbHVlKCptX3Zh
bHVlTGlzdC0+Y3VycmVudCgpLCBjKSkKQEAgLTM3MiwxNSArMzcyLDE1IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTVkdQYWludCgpCiAgICAgcmV0dXJuIFNWR1BhaW50
OjpjcmVhdGVDb2xvcihDb2xvcihjKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VTVkdDb2xvcigpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VT
VkdDb2xvcigpCiB7CiAgICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgaWYg
KCFwYXJzZUNvbG9yRnJvbVZhbHVlKCptX3ZhbHVlTGlzdC0+Y3VycmVudCgpLCBjKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBTVkdDb2xv
cjo6Y3JlYXRlRnJvbUNvbG9yKENvbG9yKGMpKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZVBhaW50T3JkZXIoKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlUGFpbnRPcmRlcigpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1
ZUxpc3QtPmN1cnJlbnQoKTsKIApAQCAtNDI2LDcgKzQyNiw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VQYWludE9yZGVyKCkKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgcmV0dXJuIHBhaW50T3JkZXJMaXN0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcGFpbnRPcmRlckxpc3Q7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXggMzA2NTZkMjkzM2YyZWUwYzNlMDU0M2Q5NDQx
ZjdiNDg4NjRiMWFmYS4uN2E2NTlhY2Y0NzY2ZDBlZGY5Y2M5OWRmMmE5OWMxOTRkMGI5MjIyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTg5LDI3ICs4OSwyNyBA
QCB2b2lkIFdlYktpdENTU01hdHJpeDo6c2V0TWF0cml4VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogfQogCiAvLyBQZXJmb3JtIGEgY29uY2F0ZW5hdGlvbiBv
ZiB0aGUgbWF0cmljZXMgKHRoaXMgKiBzZWNvbmRNYXRyaXgpCi1QYXNzUmVmUHRyPFdlYktpdENT
U01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29u
ZE1hdHJpeCkgY29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6
bXVsdGlwbHkoV2ViS2l0Q1NTTWF0cml4KiBzZWNvbmRNYXRyaXgpIGNvbnN0CiB7CiAgICAgaWYg
KCFzZWNvbmRNYXRyaXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgp
OwogICAgIG1hdHJpeC0+bV9tYXRyaXgubXVsdGlwbHkoc2Vjb25kTWF0cml4LT5tX21hdHJpeCk7
Ci0gICAgcmV0dXJuIG1hdHJpeC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1hdHJpeDsKIH0KIAot
UGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6aW52ZXJzZShFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01h
dHJpeDo6aW52ZXJzZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIW1fbWF0
cml4LmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBy
ZXR1cm4gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXguaW52ZXJzZSgpKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKGRv
dWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIGNvbnN0CitSZWZQdHI8V2ViS2l0Q1NTTWF0cml4
PiBXZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6
KSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKHgpKQogICAgICAgICB4ID0gMDsKQEAgLTEy
MCwxMCArMTIwLDEwIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRy
aXg6OnRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsCiAKICAgICBSZWZQdHI8V2Vi
S2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7
CiAgICAgbWF0cml4LT5tX21hdHJpeC50cmFuc2xhdGUzZCh4LCB5LCB6KTsKLSAgICByZXR1cm4g
bWF0cml4LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbWF0cml4OwogfQogCi1QYXNzUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3Vi
bGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKSBjb25zdAorUmVmUHRyPFdlYktpdENTU01hdHJpeD4g
V2ViS2l0Q1NTTWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3Vi
bGUgc2NhbGVaKSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKHNjYWxlWCkpCiAgICAgICAg
IHNjYWxlWCA9IDE7CkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01h
dHJpeD4gV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZ
LAogCiAgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4
OjpjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXguc2NhbGUzZChzY2FsZVgs
IHNjYWxlWSwgc2NhbGVaKTsKLSAgICByZXR1cm4gbWF0cml4LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gbWF0cml4OwogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0
cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZLCBkb3VibGUgcm90WikgY29uc3QK
K1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlKGRvdWJsZSBy
b3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNu
YW4ocm90WCkpCiAgICAgICAgIHJvdFggPSAwOwpAQCAtMTU1LDEwICsxNTUsMTAgQEAgUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlKGRvdWJsZSByb3RY
LCBkb3VibGUgcm90WSwgZG8KIAogICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9
IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0cml4
LnJvdGF0ZTNkKHJvdFgsIHJvdFksIHJvdFopOwotICAgIHJldHVybiBtYXRyaXgucmVsZWFzZSgp
OworICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBX
ZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJs
ZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0CitSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRD
U1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBk
b3VibGUgYW5nbGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkpCiAgICAgICAgIHgg
PSAwOwpAQCAtMTczLDI3ICsxNzMsMjcgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdl
YktpdENTU01hdHJpeDo6cm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwKIAogICAg
IFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRl
KG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0cml4LnJvdGF0ZTNkKHgsIHksIHosIGFuZ2xl
KTsKLSAgICByZXR1cm4gbWF0cml4LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbWF0cml4OwogfQog
Ci1QYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpza2V3WChkb3Vi
bGUgYW5nbGUpIGNvbnN0CitSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6
OnNrZXdYKGRvdWJsZSBhbmdsZSkgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihhbmdsZSkp
CiAgICAgICAgIGFuZ2xlID0gMDsKIAogICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJp
eCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0
cml4LnNrZXdYKGFuZ2xlKTsKLSAgICByZXR1cm4gbWF0cml4LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gbWF0cml4OwogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0
cml4Ojpza2V3WShkb3VibGUgYW5nbGUpIGNvbnN0CitSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBX
ZWJLaXRDU1NNYXRyaXg6OnNrZXdZKGRvdWJsZSBhbmdsZSkgY29uc3QKIHsKICAgICBpZiAoc3Rk
Ojppc25hbihhbmdsZSkpCiAgICAgICAgIGFuZ2xlID0gMDsKIAogICAgIFJlZlB0cjxXZWJLaXRD
U1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKICAg
ICBtYXRyaXgtPm1fbWF0cml4LnNrZXdZKGFuZ2xlKTsKLSAgICByZXR1cm4gbWF0cml4LnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gbWF0cml4OwogfQogCiBTdHJpbmcgV2ViS2l0Q1NTTWF0cml4Ojp0
b1N0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKaW5kZXggZWMx
ZGI5ZjA1NjUwZTRhZjVmMDBlNjA4MDFiOTk0ODA0MGM1MGQ3Ni4uODkyMWNlNDY2MDQyMDYxMWY3
MWFiMDVjNDY4MjFjODI5NjVhOTk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU01hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXgu
aApAQCAtMTAzLDQ4ICsxMDMsNDggQEAgcHVibGljOgogICAgIC8vIHNwZWNpZmllZCBvcGVyYXRp
b24gYXBwbGllZC4gVGhlIHRoaXMgdmFsdWUgaXMgbm90IG1vZGlmaWVkLgogCiAgICAgLy8gTXVs
dGlwbHkgdGhpcyBtYXRyaXggYnkgc2Vjb25kTWF0cml4LCBvbiB0aGUgcmlnaHQgKHJlc3VsdCA9
IHRoaXMgKiBzZWNvbmRNYXRyaXgpCi0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG11
bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdDsKKyAgICBSZWZQdHI8
V2ViS2l0Q1NTTWF0cml4PiBtdWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCkg
Y29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIGludmVyc2Ugb2YgdGhpcyBtYXRyaXguIFRocm93
IGFuIGV4Y2VwdGlvbiBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlCi0gICAgUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IGludmVyc2UoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAg
IFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IGludmVyc2UoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
CiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHRyYW5zbGF0ZWQgYnkgdGhlIHBhc3NlZCB2YWx1
ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuIFRoaXMgYWxs
b3dzIHRoZSAzRCBmb3JtIHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKICAgICAvLyBPcGVyYXRp
b24gaXMgcGVyZm9ybWVkIGFzIHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBi
eSBhIG1hdHJpeCB3aXRoCiAgICAgLy8gdGhlIHRyYW5zbGF0aW9uIHZhbHVlcyBvbiB0aGUgbGVm
dCAocmVzdWx0ID0gdHJhbnNsYXRpb24oeCx5LHopICogdGhpcykKLSAgICBQYXNzUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIGNv
bnN0OworICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHRyYW5zbGF0ZShkb3VibGUgeCwgZG91
YmxlIHksIGRvdWJsZSB6KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhpcyBtYXRyaXggc2Nh
bGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3Npbmcgc2NhbGVYIG9yIHNjYWxl
WiBhcyBOYU4gdXNlcyBhIHZhbHVlIG9mIDEsIGJ1dCBwYXNzaW5nIHNjYWxlWSBvZiBOYU4KICAg
ICAvLyBtYWtlcyBpdCB0aGUgc2FtZSBhcyBzY2FsZVguIFRoaXMgYWxsb3dzIHRoZSAzRCBmb3Jt
IHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVk
IGFzIHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRo
CiAgICAgLy8gdGhlIHNjYWxlIHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gc2NhbGUoeCx5
LHopICogdGhpcykKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gc2NhbGUoZG91Ymxl
IHNjYWxlWCwgZG91YmxlIHNjYWxlWSwgZG91YmxlIHNjYWxlWikgY29uc3Q7CisgICAgUmVmUHRy
PFdlYktpdENTU01hdHJpeD4gc2NhbGUoZG91YmxlIHNjYWxlWCwgZG91YmxlIHNjYWxlWSwgZG91
YmxlIHNjYWxlWikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoaXMgbWF0cml4IHJvdGF0ZWQg
YnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8gSWYgcm90WSBhbmQgcm90WiBhcmUgTmFOLCBy
b3RhdGUgYWJvdXQgWiAocm90WD0wLCByb3RhdGVZPTAsIHJvdGF0ZVo9cm90WCkuCiAgICAgLy8g
T3RoZXJ3aXNlIHVzZSBhIHJvdGF0aW9uIHZhbHVlIG9mIDAgZm9yIGFueSBwYXNzZWQgTmFOLgog
ICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBp
cyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAvLyB0aGUgcm90YXRpb24gdmFsdWVz
IG9uIHRoZSBsZWZ0IChyZXN1bHQgPSByb3RhdGlvbih4LHkseikgKiB0aGlzKQotICAgIFBhc3NS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZLCBk
b3VibGUgcm90WikgY29uc3Q7CisgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gcm90YXRlKGRv
dWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopIGNvbnN0OwogCiAgICAgLy8gUmV0
dXJucyB0aGlzIG1hdHJpeCByb3RhdGVkIGFib3V0IHRoZSBwYXNzZWQgYXhpcyBieSB0aGUgcGFz
c2VkIGFuZ2xlLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBJ
ZiB0aGUgYXhpcyBpcyAoMCwwLDApIHVzZSBhIHZhbHVlCiAgICAgLy8gT3BlcmF0aW9uIGlzIHBl
cmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRy
aXggd2l0aAogICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9
IHJvdGF0aW9uKHgseSx6LGFuZ2xlKSAqIHRoaXMpCi0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NN
YXRyaXg+IHJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3Vi
bGUgYW5nbGUpIGNvbnN0OworICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZUF4aXNB
bmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0Owog
CiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHNrZXdlZCBhbG9uZyB0aGUgWCBheGlzIGJ5IHRo
ZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBv
ZiAwLgogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1h
dHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAvLyB0aGUgc2tldyB2YWx1
ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHNrZXdYKGFuZ2xlKSAqIHRoaXMpCi0gICAgUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHNrZXdYKGRvdWJsZSBhbmdsZSkgY29uc3Q7CisgICAgUmVm
UHRyPFdlYktpdENTU01hdHJpeD4gc2tld1goZG91YmxlIGFuZ2xlKSBjb25zdDsKIAogICAgIC8v
IFJldHVybiB0aGlzIG1hdHJpeCBza2V3ZWQgYWxvbmcgdGhlIFkgYXhpcyBieSB0aGUgcGFzc2Vk
IHZhbHVlcy4KICAgICAvLyBQYXNzaW5nIGEgTmFOIHdpbGwgdXNlIGEgdmFsdWUgb2YgMC4KICAg
ICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFzIHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMg
bXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRoCiAgICAgLy8gdGhlIHNrZXcgdmFsdWVzIG9uIHRo
ZSBsZWZ0IChyZXN1bHQgPSBza2V3WShhbmdsZSkgKiB0aGlzKQotICAgIFBhc3NSZWZQdHI8V2Vi
S2l0Q1NTTWF0cml4PiBza2V3WShkb3VibGUgYW5nbGUpIGNvbnN0OworICAgIFJlZlB0cjxXZWJL
aXRDU1NNYXRyaXg+IHNrZXdZKGRvdWJsZSBhbmdsZSkgY29uc3Q7CiAKICAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKaW5k
ZXggOTM1MTkzZjY3N2E1ODZhM2YwMjY0ZTFiMjQ4Njg0N2RiYmYwNWUwMy4uNjc3MjEyZTQ4Yzg0
YjMyOWUwZDk5OWUzNzg0NDYwOGY5YjliMDE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCkBAIC04NCw5ICs4NCw5IEBAIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZShjb25zdCBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZSYKIHsKIH0KIAotUGFzc1JlZlB0cjxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAorUmVmPFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlPiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y2xvbmVGb3JDU1NP
TSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZSgqdGhpcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlKCp0aGlzKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmgKaW5kZXggYzFjOTFjZjdiYTNkZmE0YmU2ZjE2YThjODdhMWNlMDk5N2Yx
NzQ5Yy4uN2NlYzM1MzRiYjNiYWMzOTkyZWM2NTlhYTJmNWFmZTBkMThkMDJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogCiAgICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgCi0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlKFRyYW5zZm9ybU9wZXJhdGlvblR5cGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258610</attachid>
            <date>2015-08-09 23:03:05 -0700</date>
            <delta_ts>2015-08-10 20:29:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147821-20150810150251.patch</filename>
            <type>text/plain</type>
            <size>130339</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYxNDE5YmZkYzA5NjVl
NzAwYWJhMzgyMzZlNzMwYWMyOWUwNTUxOC4uNjVmYjc3M2ZkMGQyMmQ3ZTk1M2EwM2U2YTM0NDZk
NTNjNjJkOTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAxNS0wOC0wOSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVz
ZSBvZiBQYXNzUmVmUHRyIGluIFdlYkNvcmUvY3NzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgUmVmUHRyIHdoZW4gcmV0dXJuaW5nIG51bGxwdHIg
b3IgUmVmUHRyLCBpZiBub3QsIHVzZSBSZWYuCisKKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlQ2FsYyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVCbGVuZEhhbGYpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ1NT
KToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FudmFzVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuaDoK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uT2Zmc2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJy
aW5nS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjb3VudGVyVG9DU1NWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjp6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0Fs
aWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERp
c3RyaWJ1dGlvbldpdGhPdmVyZmxvd0FsaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUpOgorICAgICAgICAqIGNzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZCk6CisgICAgICAgICog
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgor
ICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0dy
YWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGllbnRXaXRoU3R5
bGVzUmVzb2x2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NHcmlkTGluZU5hbWVzVmFsdWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9D
U1NHcmlkTGluZU5hbWVzVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpjbG9uZUZvckNTU09NKToK
KyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNsb25lRm9yQ1NT
T00pOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWxpZFByaW1pdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlUG9zaXRpb25YKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VQ
b3NpdGlvblkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlv
bkNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkRlbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25EaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25GaWxsTW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbk5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblBsYXlTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVHJpZ2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VHcmlkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Z3JpZE1pc3NpbmdHcmlkUG9zaXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlR3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3Jp
ZEJyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRBdXRvRmxv
dyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRlQXJlYXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VJbnNldFJvdW5kZWRDb3JuZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNoYXBlUmFkaXVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlQ2lyY2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlRWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZVBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVBbmRPckJveCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlU2hhcGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQ2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhc2lj
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRGYW1pbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUltYWdlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFu
c2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1l
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUZXh0SW5kZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZUVtcHR5TWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6Y3JlYXRlU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cG9wU3VwcG9ydHNSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0
ZUtleWZyYW1lc1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHls
ZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL0NT
U1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMpOgorICAgICAgICAq
IGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6c3R5bGVJbWFnZSk6CisgICAgICAgICog
Y3NzL0NTU1RvU3R5bGVNYXAuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9DU1NW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUXVlcnlTZXQ6OmNvcHkpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5TWF0Y2hlcjo6bWF0Y2hNZWRpYSk6CisgICAg
ICAgICogY3NzL01lZGlhUXVlcnlNYXRjaGVyLmg6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50
ZXJuYWwpOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoK
KyAgICAgICAgKiBjc3MvUkdCQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQ29sb3I6
OnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSR0JDb2xvcjo6Z3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6UkdCQ29sb3I6OmJsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UkdCQ29sb3I6OmFscGhh
KToKKyAgICAgICAgKiBjc3MvUkdCQ29sb3IuaDoKKyAgICAgICAgKiBjc3MvU1ZHQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdseXBoT3JpZW50YXRp
b25Ub0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cm9rZURhc2hBcnJh
eVRvQ1NTVmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9T
VkdDU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1N0
cm9rZURhc2hhcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU1ZHUGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VQYWludE9yZGVyKToKKyAgICAgICAgKiBjc3Mv
V2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6
bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0Q1NTTWF0cml4Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4
Ojpyb3RhdGVBeGlzQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpz
a2V3WCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKToKKyAgICAg
ICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4Lmg6CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aDoKKwogMjAxNS0wOC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEVuYWJsZSBXZWJHTCBvbiBXaW5kb3dzIENNYWtlIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggYTQ2ODM4NmFkYTgzN2U1NDBmM2Mz
OTkzNTEzZTFiOTQ5NmViYTVmNy4uYjQ0MDRjMzE0NTUzZTVjY2U0NTczMGE0NWNjMjhlYjBhMGNi
MGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoY29uc3QgUGFpciYgb2Zm
c2V0LCBjb25zdCBQYWlyJiBvdGhlcikKICAgICByZXR1cm4gb2Zmc2V0LmNzc1RleHQoKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxl
UG9zaXRpb25PZmZzZXQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gb2Zmc2V0LCBDU1NW
YWx1ZUlEIGRlZmF1bHRTaWRlKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRT
ZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBv
ZmZzZXQsIENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBzaWRlID0g
ZGVmYXVsdFNpZGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbW91bnQ7CkBAIC0x
MTAsOCArMTEwLDggQEAgc3RhdGljIFN0cmluZyBidWlsZENpcmNsZVN0cmluZyhjb25zdCBTdHJp
bmcmIHJhZGl1cywgY29uc3QgU3RyaW5nJiBjZW50ZXJYLCBjb24KIAogU3RyaW5nIENTU0Jhc2lj
U2hhcGVDaXJjbGU6OmNzc1RleHQoKSBjb25zdAogewotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gbm9ybWFsaXplZENYID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2Nl
bnRlclgsIENTU1ZhbHVlTGVmdCk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBub3Jt
YWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWSwgQ1NT
VmFsdWVUb3ApOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9ybWFsaXplZENYID0gYnVp
bGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclgsIENTU1ZhbHVlTGVmdCk7Cisg
ICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJs
ZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWSwgQ1NTVmFsdWVUb3ApOwogCiAgICAgU3RyaW5nIHJh
ZGl1czsKICAgICBpZiAobV9yYWRpdXMgJiYgbV9yYWRpdXMtPmdldFZhbHVlSUQoKSAhPSBDU1NW
YWx1ZUNsb3Nlc3RTaWRlKQpAQCAtMTczLDggKzE3Myw4IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRF
bGxpcHNlU3RyaW5nKGNvbnN0IFN0cmluZyYgcmFkaXVzWCwgY29uc3QgU3RyaW5nJiByYWRpdXNZ
LCBjCiAKIFN0cmluZyBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1ggPSBidWlsZFNlcmlhbGl6
YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWCwgQ1NTVmFsdWVMZWZ0KTsKLSAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRp
b25PZmZzZXQobV9jZW50ZXJZLCBDU1NWYWx1ZVRvcCk7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBub3JtYWxpemVkQ1ggPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2Vu
dGVyWCwgQ1NTVmFsdWVMZWZ0KTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6
ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJZLCBDU1NWYWx1
ZVRvcCk7CiAKICAgICBTdHJpbmcgcmFkaXVzWDsKICAgICBTdHJpbmcgcmFkaXVzWTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggYjdiNDZkYmM0MTI3YThlMDM0NTdmODg4YmYx
YmM2OTFmY2JlYmI0My4uODE3MzNkMjFmZmRkOWEyYjQwYWIwMjRhYWViMTQwNzQxZTk2YmEyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTE5Miw4ICsxOTIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh5KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBnZXRYQXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZXMuYXQoaSAqIDIpOyB9Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2V0
WUF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmF0KGkgKiAyICsgMSk7IH0K
KyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdldFhBdCh1bnNpZ25lZCBpKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlcy5hdChpICogMik7IH0KKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGdldFlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlcy5hdChpICogMiAr
IDEpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4+JiB2YWx1
ZXMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlczsgfQogCiAgICAgdm9pZCBzZXRXaW5kUnVsZShX
aW5kUnVsZSB3KSB7IG1fd2luZFJ1bGUgPSB3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNGFlYWE3MTBiYmFlOWNlZGE1MzFhNGUxZjVkOGMyMjJh
NTg5OWNmZi4uMzYxNDJmMWJmMGJjMDI0ODA3OTNiNDA5YWNjMDdjNjlhOGMzNzU1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtNDcsOCArNDcsOCBA
QCBlbnVtIFBhcnNlU3RhdGUgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ1NTKGNvbnN0IENhbGNFeHByZXNz
aW9uTm9kZSYsIGNvbnN0IFJlbmRlclN0eWxlJik7Ci1zdGF0aWMgUGFzc1JlZlB0cjxDU1NDYWxj
RXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBMZW5ndGgmLCBjb25zdCBSZW5kZXJTdHls
ZSYpOworc3RhdGljIFJlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25z
dCBDYWxjRXhwcmVzc2lvbk5vZGUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworc3RhdGljIFJlZlB0
cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBMZW5ndGgmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogCiBzdGF0aWMgQ2FsY3VsYXRpb25DYXRlZ29yeSB1bml0Q2F0ZWdvcnko
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlKQogewpAQCAtMjAzLDcgKzIwMyw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ2FsY1ByaW1pdGl2ZVZh
bHVlKHZhbHVlLCBpc0ludGVnZXIpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMgdHlwZSwgYm9vbCBpc0ludGVnZXIpCisgICAgc3RhdGljIFJlZlB0cjxD
U1NDYWxjUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMgdHlwZSwgYm9vbCBpc0ludGVnZXIpCiAgICAgewogICAgICAgICBpZiAo
c3RkOjppc25hbih2YWx1ZSkgfHwgc3RkOjppc2luZih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnRl
Z2VyUmVzdWx0KENhbGNPcGVyYXRvciBvcCwgY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJgog
Y2xhc3MgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVz
c2lvbk5vZGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENTU0NhbGNCaW5hcnlPcGVyYXRpb24+IGNyZWF0ZShDYWxjT3BlcmF0
b3Igb3AsIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1Jl
ZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKKyAgICBzdGF0aWMgUmVmUHRy
PENTU0NhbGNCaW5hcnlPcGVyYXRpb24+IGNyZWF0ZShDYWxjT3BlcmF0b3Igb3AsIFBhc3NSZWZQ
dHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxjRXhw
cmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChsZWZ0U2lkZS0+
Y2F0ZWdvcnkoKSA8IENhbGNPdGhlcik7CiAgICAgICAgIEFTU0VSVChyaWdodFNpZGUtPmNhdGVn
b3J5KCkgPCBDYWxjT3RoZXIpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKG5ld0NhdGVnb3J5LCBv
cCwgbGVmdFNpZGUsIHJpZ2h0U2lkZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlU2ltcGxpZmllZChDYWxjT3BlcmF0b3Igb3As
IFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxD
U1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKKyAgICBzdGF0aWMgUmVmUHRyPENTU0Nh
bGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlU2ltcGxpZmllZChDYWxjT3BlcmF0b3Igb3AsIFBhc3NS
ZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxj
RXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSkKICAgICB7CiAgICAgICAgIENhbGN1bGF0aW9uQ2F0
ZWdvcnkgbGVmdENhdGVnb3J5ID0gbGVmdFNpZGUtPmNhdGVnb3J5KCk7CiAgICAgICAgIENhbGN1
bGF0aW9uQ2F0ZWdvcnkgcmlnaHRDYXRlZ29yeSA9IHJpZ2h0U2lkZS0+Y2F0ZWdvcnkoKTsKQEAg
LTU3MSw3ICs1NzEsNyBAQCBzdGF0aWMgUGFyc2VTdGF0ZSBjaGVja0RlcHRoQW5kSW5kZXgoaW50
KiBkZXB0aCwgdW5zaWduZWQgaW5kZXgsIENTU1BhcnNlclZhbHVlTAogCiBjbGFzcyBDU1NDYWxj
RXhwcmVzc2lvbk5vZGVQYXJzZXIgewogcHVibGljOgotICAgIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4
cHJlc3Npb25Ob2RlPiBwYXJzZUNhbGMoQ1NTUGFyc2VyVmFsdWVMaXN0KiB0b2tlbnMpCisgICAg
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcGFyc2VDYWxjKENTU1BhcnNlclZhbHVlTGlz
dCogdG9rZW5zKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICBW
YWx1ZSByZXN1bHQ7CkBAIC02OTQsMTMgKzY5NCwxMyBAQCBwcml2YXRlOgogICAgIH0KIH07CiAK
LXN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxDU1NDYWxjQmluYXJ5T3BlcmF0aW9uPiBjcmVhdGVC
bGVuZEhhbGYoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
ZmxvYXQgcHJvZ3Jlc3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDU1NDYWxjQmluYXJ5T3BlcmF0
aW9uPiBjcmVhdGVCbGVuZEhhbGYoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJuIENTU0NhbGNCaW5hcnlP
cGVyYXRpb246OmNyZWF0ZShDYWxjTXVsdGlwbHksIGNyZWF0ZUNTUyhsZW5ndGgsIHN0eWxlKSwK
ICAgICAgICAgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShwcm9ncmVzcywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCAhcHJvZ3Jl
c3MgfHwgcHJvZ3Jlc3MgPT0gMSkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NDYWxjRXhw
cmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBDYWxjRXhwcmVzc2lvbk5vZGUmIG5vZGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25O
b2RlPiBjcmVhdGVDU1MoY29uc3QgQ2FsY0V4cHJlc3Npb25Ob2RlJiBub2RlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChub2RlLnR5cGUoKSkgewogICAgIGNhc2Ug
Q2FsY0V4cHJlc3Npb25Ob2RlTnVtYmVyOiB7CkBAIC03MjcsNyArNzI3LDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgQ2FsY0V4cHJl
c3Npb25Ob2RlJiBub2QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0YXRpYyBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Np
b25Ob2RlPiBjcmVhdGVDU1MoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIFBlcmNl
bnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCBlYzUyMjI5YWIwZWM3
YzU2YjE1ZjMyNDU5MWUyMjY5Y2VmMmQxZDcyLi40YjIwMTkzMTMxMWViMjcyN2M5YWY2ZjJjMDA4
M2E5YjBjNzJmOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTc5
LDEyICs3OSwxMiBAQCBIVE1MQ2FudmFzRWxlbWVudCogQ1NTQ2FudmFzVmFsdWU6OmVsZW1lbnQo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBtX2VsZW1lbnQ7CiB9CiAKLVBhc3NSZWZQ
dHI8SW1hZ2U+IENTU0NhbnZhc1ZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
Y29uc3QgRmxvYXRTaXplJiAvKnNpemUqLykKK1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIC8qc2l6ZSov
KQogewogICAgIEFTU0VSVChjbGllbnRzKCkuY29udGFpbnMocmVuZGVyZXIpKTsKICAgICBIVE1M
Q2FudmFzRWxlbWVudCogZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50
KCkpOwogICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+YnVmZmVyKCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gZWxlbWVudC0+Y29w
aWVkSW1hZ2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZh
c1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCA0NWI3
OWE5ZmRmMGIyMDQ1M2M0ODk3YzQxOGMyNDllNDJiNTk4ZmYwLi5jOTY4MGE4OWFlMTNlNmRlODVm
MTE4N2MzNjExMjE0NjUxZmJhNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FudmFzVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNv
bnN0OwogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0
IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNv
bnN0IEZsb2F0U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgRmxvYXRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggZjI0NDZhM2ZhZDhiZGM1YmY4YTc5ZGIxNzY4YzY4MTc2ZjM0ZTBiZi4uYWRhNWI0
MDY4MzczNTY3YjExMDY3NGIwNmRmNTc4ZmMyODY2NmZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTY5MCw3ICs2OTAs
NyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjbwogICAgIHJldHVybiBwb3NpdGlvbkxpc3Q7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRl
clN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQorc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gcG9zaXRpb25PZmZzZXRWYWx1ZShSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBMZW5ndGggbGVuZ3RoOwogICAgIHN3aXRjaCAocHJv
cGVydHlJRCkgewpAQCAtNzI3LDcgKzcyNyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJCiAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25z
dCBDb2xvciYgY29sb3IpIGNvbnN0CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSZW5kZXJTdHlsZSogc3R5
bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGRv
ZXMgTk9UIGxvb2sgYXQgdmlzaXRlZCBpbmZvcm1hdGlvbiwgc28gdGhhdCBjb21wdXRlZCBzdHls
ZSBkb2Vzbid0IGV4cG9zZSB0aGF0LgogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQpAQCAtMTMy
OCw3ICsxMzI4LDcgQEAgdm9pZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldENzc1Rl
eHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgZWMgPSBOT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJyaW5nS2V5d29y
ZCgpIGNvbnN0CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJyaW5nS2V5d29yZCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX25vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTUyMyw3ICsxNTIzLDcg
QEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1ZhbHVlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY291bnRlclRv
Q1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQpCiB7CiAgICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogbWFwID0gc3R5bGUtPmNvdW50
ZXJEaXJlY3RpdmVzKCk7CiAgICAgaWYgKCFtYXApCkBAIC0xNjMyLDcgKzE2MzIsNyBAQCB0eXBl
ZGVmIGNvbnN0IExlbmd0aCYgKFJlbmRlclN0eWxlOjoqUmVuZGVyU3R5bGVMZW5ndGhHZXR0ZXIp
KCkgY29uc3Q7CiB0eXBlZGVmIExheW91dFVuaXQgKFJlbmRlckJveE1vZGVsT2JqZWN0OjoqUmVu
ZGVyQm94Q29tcHV0ZWRDU1NWYWx1ZUdldHRlcikoKSBjb25zdDsKIAogdGVtcGxhdGU8UmVuZGVy
U3R5bGVMZW5ndGhHZXR0ZXIgbGVuZ3RoR2V0dGVyLCBSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVl
R2V0dGVyIGNvbXB1dGVkQ1NTVmFsdWVHZXR0ZXI+Ci1pbmxpbmUgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gem9vbUFkanVzdGVkUGFkZGluZ09yTWFyZ2luUGl4ZWxWYWx1ZShSZW5kZXJTdHlsZSYgc3R5
bGUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitpbmxpbmUgUmVmUHRyPENTU1ZhbHVlPiB6b29t
QWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlKFJlbmRlclN0eWxlJiBzdHlsZSwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBMZW5ndGggdW56b29temVkTGVuZ3RoID0gKHN0
eWxlLipsZW5ndGhHZXR0ZXIpKCk7CiAgICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSB8
fCB1bnpvb216ZWRMZW5ndGguaXNGaXhlZCgpKQpAQCAtMTc1MCw3ICsxNzUwLDcgQEAgc3RhdGlj
IHZvaWQgcmVzb2x2ZUNvbnRlbnRBbGlnbm1lbnRBdXRvKENvbnRlbnRQb3NpdGlvbiYgcG9zaXRp
b24sIENvbnRlbnREaXN0cmkKICAgICAgICAgcG9zaXRpb24gPSBDb250ZW50UG9zaXRpb25TdGFy
dDsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxh
eW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIHJldHVybiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yKG1fbm9kZSwgbV9hbGxvd1Zpc2l0ZWRTdHlsZSwgbV9wc2V1ZG9F
bGVtZW50U3BlY2lmaWVyKS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQsIHVwZGF0ZUxheW91dCk7
CiB9CkBAIC0xNzg5LDcgKzE3ODksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdXBkYXRlU3R5bGVJ
Zk5lZWRlZEZvck5vZGUoY29uc3QgTm9kZSYgbm9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVG
b3JQcm9wZXJ0eShOb2RlKiBzdHlsZWROb2RlLCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lm
aWVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoTm9kZSogc3R5bGVkTm9kZSwg
UHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZWROb2RlLT5yZW5kZXJlcigp
OwogCkBAIC0xNzk5LDcgKzE3OTksNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGNvbXB1dGVSZW5kZXJTdHlsZUZvclByb3BlcnR5KE5vZGUqIHN0eWxlZAogICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxsIG9ubHkgZXhpc3Qg
aWYgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4KICAgICAgICAgICAg
IHJldHVybiBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmll
cik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICAgICAg
cmV0dXJuIHN0eWxlOwogICAgIH0KIAogICAgIHJldHVybiBzdHlsZWROb2RlLT5jb21wdXRlZFN0
eWxlKHN0eWxlZE5vZGUtPmlzUHNldWRvRWxlbWVudCgpID8gTk9QU0VVRE8gOiBwc2V1ZG9FbGVt
ZW50U3BlY2lmaWVyKTsKQEAgLTE4MzAsNyArMTgzMCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+
IHNoYXBlUHJvcGVydHlWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNoYXBl
VmFsCiB9CiAjZW5kaWYKIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZv
ckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChJdGVtUG9zaXRpb24gaXRlbVBvc2l0
aW9uLCBPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvd0FsaWdubWVudCwgSXRlbVBvc2l0aW9uVHlw
ZSBwb3NpdGlvblR5cGUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVt
UG9zaXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoSXRlbVBvc2l0aW9uIGl0ZW1Qb3NpdGlvbiwg
T3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3dBbGlnbm1lbnQsIEl0ZW1Qb3NpdGlvblR5cGUgcG9z
aXRpb25UeXBlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHJlc3VsdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBpZiAocG9zaXRpb25UeXBlID09IExl
Z2FjeVBvc2l0aW9uKQpAQCAtMTgzOSwxMCArMTgzOSwxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KEl0
ZW1QbwogICAgIGlmIChvdmVyZmxvd0FsaWdubWVudCAhPSBPdmVyZmxvd0FsaWdubWVudERlZmF1
bHQpCiAgICAgICAgIHJlc3VsdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKG92
ZXJmbG93QWxpZ25tZW50KSk7CiAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPD0gMik7Ci0g
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rh
dGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERp
c3RyaWJ1dGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChDb250ZW50UG9zaXRpb24gcG9zaXRpb24s
IENvbnRlbnREaXN0cmlidXRpb25UeXBlIGRpc3RyaWJ1dGlvbiwgT3ZlcmZsb3dBbGlnbm1lbnQg
b3ZlcmZsb3dBbGlnbm1lbnQpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JD
b250ZW50UG9zaXRpb25BbmREaXN0cmlidXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoQ29udGVu
dFBvc2l0aW9uIHBvc2l0aW9uLCBDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBkaXN0cmlidXRpb24s
IE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93QWxpZ25tZW50KQogewogICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
ICAgICBpZiAoZGlzdHJpYnV0aW9uICE9IENvbnRlbnREaXN0cmlidXRpb25EZWZhdWx0KQpAQCAt
MTg1MywxMCArMTg1MywxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVl
Rm9yQ29udGVudFBvc2l0aW9uQW5kRGlzdHJpYnV0aW9uV2l0aE92ZXJmbAogICAgICAgICByZXN1
bHQtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG92ZXJmbG93QWxpZ25tZW50KSk7
CiAgICAgQVNTRVJUKHJlc3VsdC0+bGVuZ3RoKCkgPiAwKTsKICAgICBBU1NFUlQocmVzdWx0LT5s
ZW5ndGgoKSA8PSAzKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1
cGRhdGVMYXlvdXQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0
IHVwZGF0ZUxheW91dCkgY29uc3QKIHsKICAgICBOb2RlKiBzdHlsZWROb2RlID0gdGhpcy0+c3R5
bGVkTm9kZSgpOwogICAgIGlmICghc3R5bGVkTm9kZSkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZFNpemU6CkBAIC0xOTQxLDcgKzE5NDEsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydAogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9
IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXllci0+c2l6
ZSgpLCAqc3R5bGUpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAg
ICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0OiB7CkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAg
ICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3Vyckxh
eWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoZmlsbFJlcGVhdFRvQ1NTVmFsdWUoY3VyckxheWVyLT5yZXBlYXRYKCksIGN1cnJM
YXllci0+cmVwZWF0WSgpKSk7CiAKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrU291cmNlVHlwZTogewogICAgICAgICAgICAgY29uc3QgRmlsbExheWVy
KiBsYXllcnMgPSBzdHlsZS0+bWFza0xheWVycygpOwpAQCAtMTk2OCw3ICsxOTY4LDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBj
dXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0
KCkpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1
ZShjdXJyTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxp
c3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOiB7CkBAIC0xOTgwLDcgKzE5ODAsNyBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5
ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXIt
Pm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUoY3VyckxheWVyLT5jb21wb3NpdGUoKSkpOwogCi0gICAgICAgICAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6IHsKICAgICAgICAgICAg
IGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKQEAg
LTE5OTEsNyArMTk5MSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBm
b3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJM
YXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
c3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPmF0dGFjaG1lbnQoKSkpOwogCi0g
ICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlz
dDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgpAQCAtMjAxMiw3ICsyMDEy
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoYm94KSk7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246IHsKQEAgLTIwMjMs
NyArMjAyMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsg
Y3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3JlYXRlUG9zaXRpb25MaXN0Rm9yTGF5ZXIocHJvcGVydHlJRCwgY3Vy
ckxheWVyLCAqc3R5bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewpAQCAtMjAzNSw3ICsyMDM1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnQKICAgICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7
IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+eFBv
c2l0aW9uKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAg
ICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25ZOiB7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAog
ICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3Vy
ckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoY3VyckxheWVyLT55UG9zaXRp
b24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAg
ICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
Q29sbGFwc2U6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmJvcmRlckNvbGxhcHNlKCkpCkBAIC0y
MDU3LDcgKzIwNTcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0
eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpKTsKICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNw
YWNpbmcoKSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6CiAgICAgICAgICAgICByZXR1cm4gem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSwgKnN0
eWxlKTsKQEAgLTIxODIsNyArMjE4Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICBhdXRvIHZhbHVlID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmN1
cnNvcigpKTsKICAgICAgICAgICAgIGlmIChsaXN0KSB7CiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKFdURjo6bW92ZSh2YWx1ZSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0LnJl
bGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUodmFsdWUpOwogICAgICAgICB9CkBAIC0yMjUwLDcg
KzIyNTAsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgY29tcHV0ZWRG
b250LT5zaXplID0gZm9udFNpemVGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAgICAgICAgIGNvbXB1
dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoKnN0eWxlKTsKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+ZmFtaWx5ID0gZm9udEZhbWlseUZyb21TdHlsZShzdHlsZS5n
ZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRGb250LnJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wdXRlZEZvbnQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnRGYW1pbHk6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGZv
bnRGYW1pbHlMaXN0ID0gZm9udEZhbWlseUZyb21TdHlsZShzdHlsZS5nZXQoKSk7CkBAIC0yMjU4
LDcgKzIyNTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgLy8gTk9U
RTogR2Vja28gYWx3YXlzIHJldHVybnMgdGhpcyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBDU1NQcmlt
aXRpdmVWYWx1ZSBzdHJpbmcuCiAgICAgICAgICAgICBpZiAoZm9udEZhbWlseUxpc3QtPmxlbmd0
aCgpID09IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlMaXN0LT5pdGVtKDAp
OwotICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlMaXN0LnJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIHJldHVybiBmb250RmFtaWx5TGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Rm9udFNpemU6CiAgICAgICAgICAgICByZXR1cm4gZm9udFNpemVGcm9tU3R5bGUoKnN0
eWxlKTsKQEAgLTIyNzksNyArMjI3OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICAgICAgY29uc3QgRm9udEZlYXR1cmUmIGZlYXR1cmUgPSBmZWF0dXJlU2V0dGluZ3Mt
PmF0KGkpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250RmVhdHVyZVZhbHVl
OjpjcmVhdGUoZmVhdHVyZS50YWcoKSwgZmVhdHVyZS52YWx1ZSgpKSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4g
bGlzdDsKICAgICAgICAgfQogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b0Zsb3c6IHsKQEAgLTIyOTMsNyArMjI5Myw3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmlzR3JpZEF1
dG9GbG93QWxnb3JpdGhtRGVuc2UoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3Nz
VmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRGVuc2UpKTsKIAotICAg
ICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTcGVjcyBtZW50aW9uIHRoYXQgZ2V0Q29tcHV0ZWRT
dHlsZSgpIHNob3VsZCByZXR1cm4gdGhlIHVzZWQgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluc3Rl
YWQgb2YgdGhlIGNvbXB1dGVkCkBAIC0yNTU5LDcgKzI1NTksNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydAogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT50ZXh0RW1waGFzaXNGaWxs
KCkpKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoc3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSkpOwotICAgICAgICAgICAgICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6
IHsKQEAgLTI1NzYsMTAgKzI1NzYsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShDU1NWYWx1ZVdlYmtpdEVhY2hMaW5lKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0
eWxlLT50ZXh0SW5kZW50VHlwZSgpID09IFRleHRJbmRlbnRIYW5naW5nKQogICAgICAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlV2Via2l0SGFuZ2luZykpOwotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0LnJl
bGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgICAgIH0KICNl
bmRpZgotICAgICAgICAgICAgcmV0dXJuIHRleHRJbmRlbnQucmVsZWFzZSgpOworICAgICAgICAg
ICAgcmV0dXJuIHRleHRJbmRlbnQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3c6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3R5bGUtPnRl
eHRTaGFkb3coKSwgcHJvcGVydHlJRCwgKnN0eWxlKTsKQEAgLTI3NTIsNyArMjc1Miw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uOgogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246CkBAIC0yNzgwLDcgKzI3ODAsNyBAQCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDogewpAQCAtMjc5Niw3ICsyNzk2LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRl
VmFsdWUoQW5pbWF0aW9uOjppbml0aWFsSXRlcmF0aW9uQ291bnQoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlBbmltYXRpb25OYW1lOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
TmFtZTogewpAQCAtMjgwNyw3ICsyODA3LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHQtPmFuaW1hdGlvbihpKS5uYW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7
CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwotICAgICAgICAg
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZToKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZTogewpAQCAtMjgyMyw3
ICsyODIzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVubmluZykpOwotICAgICAgICAg
ICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb246CkBA
IC0yOTA3LDcgKzI5MDcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5w
ZXJzcGVjdGl2ZU9yaWdpblkoKSwgKnN0eWxlKSk7CiAKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUt
PnJ0bE9yZGVyaW5nKCkgPyBDU1NWYWx1ZVZpc3VhbCA6IENTU1ZhbHVlTG9naWNhbCk7CkBAIC0y
OTYyLDcgKzI5NjIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAg
IGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1Pcmln
aW5aKCksICpzdHlsZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtU3R5bGU6CkBAIC0yOTkzLDcgKzI5OTMsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydAogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUoYW5pbWF0aW9uLmRlbGF5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UykpOwogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc0xpc3QtPmFwcGVuZChsaXN0LnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJhbnNpdGlvbnNMaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJh
bnNpdGlvbnNMaXN0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwpAQCAt
MzAwMiw3ICszMDAyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxE
dXJhdGlvbigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpKTsKICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjcmVhdGVUaW1pbmdGdW5jdGlvblZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbFRpbWlu
Z0Z1bmN0aW9uKCkuZ2V0KCkpKTsKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxEZWxheSgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1MpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQ
b2ludGVyRXZlbnRzOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZh
bHVlKHN0eWxlLT5wb2ludGVyRXZlbnRzKCkpOwpAQCAtMzA1MSw3ICszMDUxLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBib3hPcGVyYXRp
b24gPSBkb3duY2FzdDxCb3hDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CiAgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGJveE9wZXJh
dGlvbi5yZWZlcmVuY2VCb3goKSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbG93
SW50bzoKQEAgLTMxMDUsNyArMzEwNSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICAgICAgaWYgKCFjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+KHZhbHVlLCBwcm9w
ZXJ0eVZhbHVlKHByb3BlcnR5LCBEb05vdFVwZGF0ZUxheW91dCkpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKICAgICAgICAgICAgIHJldHVybiBn
ZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3BlcnRpZXMoYm9yZGVyQm90dG9tU2hv
cnRoYW5kKCkpOwpAQCAtMzM3MiwxNyArMzM3MiwxNyBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3BlcnRpZXMoKSBjb25zdAogICAg
IHJldHVybiBjb3B5UHJvcGVydGllc0luU2V0KGNvbXB1dGVkUHJvcGVydGllcywgbnVtQ29tcHV0
ZWRQcm9wZXJ0aWVzKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CitSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
ID0gcHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxh
eW91dCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9Ci0gICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBsaXN0OwogfQogCi1Q
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiBzaG9ydGhhbmQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
IC8vIEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFsIG9yZGVyIHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdC4KQEAgLTM0MDcsMTcgKzM0MDcsMTcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9y
U2lkZXNTaG8KICAgICBpZiAoc2hvd0xlZnQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChsZWZ0VmFs
dWUucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKSBjb25zdAorUmVmUHRyPENTU1ZhbHVlTGlz
dD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hv
cnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFz
aFNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5VmFs
dWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgICAg
ICBsaXN0LT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQotICAgIHJldHVy
biBsaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmNvcHlQcm9wZXJ0aWVzSW5TZXQo
Y29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CkBAIC0zNDM3
LDcgKzM0MzcsNyBAQCBDU1NSdWxlKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnBhcmVu
dFJ1bGUoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCitSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHBy
b3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQpAQCAtMzQ4MSw3ICszNDgxLDcgQEAg
U3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAgICAgCi1Q
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICByZXR1cm4gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKIH0KQEAgLTM0OTcsNyArMzQ5Nyw3IEBAIGJvb2wgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5
SUQsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNob3J0aGFuZFZh
bHVlKCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yWzVdID0geyBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEF0dGFjaG1lbnQsICAKQEAgLTM1MDgsNyArMzUwOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUo
KSBjCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
U2xhc2hTZXBhcmF0ZWQoKTsKICAgICBsaXN0LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5
QmFja2dyb3VuZCwgcHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkpOwogICAgIGxpc3Qt
PmFwcGVuZCgqZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQWZ0ZXJT
bGFzaFNlcGVyYXRvcikpKTsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGxpc3Q7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBlOTY2ZDI0M2FmMmJhODAz
Y2VkOGRlZmQ2YWJhMDkwMjQ0NTY3NDM2Li42ZTkxYzkzZGI0MzgyNDZhYTkxZGEyMWMxNTNkZGY0
MDNhZjg1OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCkBAIC00OSwxMiArNDksMTIgQEAgY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJh
Y3RvciB7CiBwdWJsaWM6CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihQYXNzUmVmUHRyPE5v
ZGU+LCBib29sIGFsbG93VmlzaXRlZFN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gTk9QU0VVRE8p
OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
LCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFs
dWU+IHByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxh
eW91dCkgY29uc3Q7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9kcyBmb3IgSFRNTCBlZGl0aW5nLgog
ICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0
IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICAgICBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdv
cmQoKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdldEZvbnRTaXplQ1NT
VmFsdWVQcmVmZXJyaW5nS2V5d29yZCgpIGNvbnN0OwogICAgIGJvb2wgdXNlRml4ZWRGb250RGVm
YXVsdFNpemUoKSBjb25zdDsKICAgICBib29sIHByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlE
LCBjb25zdCBDU1NWYWx1ZSopIGNvbnN0OwogCkBAIC02NywxNiArNjcsMTYgQEAgcHJpdmF0ZToK
ICAgICAvLyBvbiBFbGVtZW50cywgYnV0IHJpZ2h0IG5vdyBlZGl0aW5nIGNyZWF0ZXMgdGhlc2Ug
Zm9yIHRleHQgbm9kZXMuIFdlIHNob3VsZCBmaXggdGhhdC4KICAgICBOb2RlKiBzdHlsZWROb2Rl
KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBzdmdQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8U1ZHUGFp
bnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBS
ZW5kZXJTdHlsZSopIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3ZnUHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKKyAgICBSZWZQdHI8U1ZHUGFp
bnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBS
ZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JT
aGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFJlbmRlclN0eWxl
JiwgQWRqdXN0UGl4ZWxWYWx1ZXNGb3JDb21wdXRlZFN0eWxlID0gQWRqdXN0UGl4ZWxWYWx1ZXMp
OwotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRD
b2xvcihSZW5kZXJTdHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5bGUqLCBjb25z
dCBDb2xvciYpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYp
IGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRo
YW5kVmFsdWUoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
KSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0Zv
clNob3J0aGFuZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0
OworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNT
aG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0OworICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpIGNvbnN0OworICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFu
ZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7CiAKICAgICBSZWZQdHI8Tm9k
ZT4gbV9ub2RlOwogICAgIFBzZXVkb0lkIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcjsKQEAgLTEw
Myw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgQ1NTUnVsZSogcGFyZW50UnVsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
UHJvcGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpIG92ZXJyaWRlOwpAQCAtMTEyLDEyICsxMTIsMTIgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFN0cmluZyByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKKyAgICBSZWZQdHI8
Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91
dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAg
IFBzZXVkb0lkIG1fcHNldWRvRWxlbWVudFNwZWNpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGQwNjlkMmUxMmI4ZTBjN2NkMTc5YmZhMmM4N2E3OTQx
OGEyMzNkYjIuLjNjNzE3Y2IxNWM4OThhM2M1MDRlZDY0NjI3NzM1NzQ5MjVkNzc5OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBA
IHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImIGNhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgbV9jcm9zc2ZhZGVTdWJpbWFnZU9ic2VydmVy
LnNldFJlYWR5KHRydWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
K1JlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBQYXNzUmVmUHRy
PEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IEZsb2F0UwogCiAgICAgbV9nZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpjcmVhdGUoZnJvbUltYWdlLCB0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0
RmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVuZGVyZXIpLCBzaXplKTsKIAotICAgIHJldHVybiBt
X2dlbmVyYXRlZEltYWdlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZTsK
IH0KIAogdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jvc3NmYWRlQ2hhbmdlZChjb25zdCBJbnRS
ZWN0JikKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjp0cmF2ZXJz
ZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhYwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gQ1NTQ3Jvc3Nm
YWRlVmFsdWU6OmJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MpIGNvbnN0CitSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IENTU0Nyb3NzZmFkZVZhbHVl
OjpibGVuZChjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBj
b25zdAogewogICAgIEFTU0VSVChlcXVhbElucHV0SW1hZ2VzKGZyb20pKTsKICAgICBSZWZQdHI8
U3R5bGVDYWNoZWRJbWFnZT4gdG9TdHlsZWRJbWFnZSA9IFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0
ZShtX2NhY2hlZFRvSW1hZ2UuZ2V0KCkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIFBhc3NSZWZQdHI8
Q1NTQ3Jvc3NmYWRlVmFsdWU+IENTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZChjb25zdCBDU1NDcm9z
c2ZhZGVWYWx1ZSYKICAgICBpZiAobV9wZXJjZW50YWdlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQog
ICAgICAgICB0b1BlcmNlbnRhZ2UgLz0gMTAwLjA7CiAgICAgY3Jvc3NmYWRlVmFsdWUtPnNldFBl
cmNlbnRhZ2UoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShibGVuZEZ1bmMoZnJvbVBlcmNlbnRh
Z2UsIHRvUGVyY2VudGFnZSwgcHJvZ3Jlc3MpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikpOwotICAgIHJldHVybiBjcm9zc2ZhZGVWYWx1ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNy
b3NzZmFkZVZhbHVlOwogfQogCiBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTQ3Jvc3NmYWRlVmFsdWUmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3Nm
YWRlVmFsdWUuaAppbmRleCAxZWQ4YjZmM2UwZWQ2ZTMxOWYyNGI4M2M1NTc4YWVlNGFmN2YyYTJh
Li5mYTAzYmQ5NzY4NjgzMTNhYTYwNDM1MTRkOGIwMWIyYWJjNTliOWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFn
ZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIGJvb2wgaXNG
aXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgRmxvYXRTaXplIGZpeGVkU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNv
bnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8
Q1NTQ3Jvc3NmYWRlVmFsdWU+IGJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiwgZG91Ymxl
KSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGJsZW5kKGNvbnN0IENTU0Ny
b3NzZmFkZVZhbHVlJiwgZG91YmxlKSBjb25zdDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Nyb3NzZmFkZVZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmNwcAppbmRleCBjNmIzZGUyMzljMDI0YTgxNTlkNzkwZTViMzg3YzllNmNhN2Ri
MDVkLi42OWM4NGRmYjExNWExOTEzZDI1Yjc5ZmU5MmZiMGFlOWZmZjMzNjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRl
ciYgY2FjaGVkUmVzb3VyY2VMb2FkCiAgICAgbV9maWx0ZXJTdWJpbWFnZU9ic2VydmVyLnNldFJl
YWR5KHRydWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpp
bWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVm
UHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuaAppbmRleCA5Mzk1OWI2YTdmMzZlNTYxMTIxOTcwNDhmZTRlY2Q1OWNlYTE2YTUzLi4x
Mjk3MjRmZGUzNWU1ZGNhYWQ3NTcyYjg1MGViYTRlMDkwMGFjYTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+
IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKTsKICAgICBib29sIGlz
Rml4ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEZsb2F0U2l6ZSBmaXhlZFNp
emUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHAKaW5kZXggNWI0MzFlZmFlMDNiNWZlYWI4MWMwMWM3ZTk3NDY2YmZkOGU2YzE4MS4u
MWExMDYyYTYwYmVkOGIyMzM4MzE4NjU3OTUxZjY4YTA0N2Q5Mzc4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitSZWZQdHI8SW1h
Z2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTY5LDcgKzY5LDcgQEAgUGFzc1JlZlB0cjxJbWFnZT4gQ1NTR3Jh
ZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2kK
ICAgICBpZiAoY2FjaGVhYmxlKQogICAgICAgICBzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKHNpemUs
IG5ld0ltYWdlKTsKIAotICAgIHJldHVybiBuZXdJbWFnZS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IG5ld0ltYWdlOwogfQogCiAvLyBTaG91bGQgb25seSBldmVyIGJlIGNhbGxlZCBmb3IgZGVwcmVj
YXRlZCBncmFkaWVudHMuCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IEdyYWRpZW50U3RvcCB7
CiAgICAgeyB9CiB9OwogCi1QYXNzUmVmUHRyPENTU0dyYWRpZW50VmFsdWU+IENTU0dyYWRpZW50
VmFsdWU6OmdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVz
b2x2ZXIpCitSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gQ1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGll
bnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKIHsKICAg
ICBib29sIGRlcml2ZWQgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7
CkBAIC0xMzIsNyArMTMyLDcgQEAgUGFzc1JlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiBDU1NHcmFk
aWVudFZhbHVlOjpncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZVIKICAgICAgICAgICAg
IHN0b3AubV9yZXNvbHZlZENvbG9yID0gc3R5bGVSZXNvbHZlci0+Y29sb3JGcm9tUHJpbWl0aXZl
VmFsdWUoKnN0b3AubV9jb2xvcik7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgaW50ZXJwb2xh
dGUoaW50IG1pbiwgaW50IG1heCwgZmxvYXQgcG9zaXRpb24pCkBAIC03NDUsNyArNzQ1LDcgQEAg
c3RhdGljIHZvaWQgZW5kUG9pbnRzRnJvbUFuZ2xlKGZsb2F0IGFuZ2xlRGVnLCBjb25zdCBGbG9h
dFNpemUmIHNpemUsIEZsb2F0UG9pbnQKICAgICBmaXJzdFBvaW50LnNldChoYWxmV2lkdGggLSBl
bmRYLCBoYWxmSGVpZ2h0ICsgZW5kWSk7CiB9CiAKLVBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitSZWY8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9h
dFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7CiAKQEAgLTgwMywx
MiArODAzLDEyIEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6
OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlCiAKICAgICB9CiAKLSAgICBSZWZQ
dHI8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShmaXJzdFBvaW50LCBzZWNv
bmRQb2ludCk7CisgICAgUmVmPEdyYWRpZW50PiBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
Zmlyc3RQb2ludCwgc2Vjb25kUG9pbnQpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgc3RvcHMuCi0g
ICAgYWRkU3RvcHMoKmdyYWRpZW50LCBjb252ZXJzaW9uRGF0YSwgMSk7CisgICAgYWRkU3RvcHMo
Z3JhZGllbnQsIGNvbnZlcnNpb25EYXRhLCAxKTsKIAotICAgIHJldHVybiBncmFkaWVudC5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIGdyYWRpZW50OwogfQogCiBib29sIENTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmVxdWFscyhjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlJiBvdGhlcikgY29uc3QK
QEAgLTEwODUsNyArMTA4NSw3IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVsbGlw
c2VSYWRpdXMoY29uc3QgRmxvYXRTaXplJiBwLCBmbG9hdCBhc3BlY3RSYXRpCiB9CiAKIC8vIEZJ
WE1FOiBzaGFyZSBjb2RlIHdpdGggdGhlIGxpbmVhciB2ZXJzaW9uCi1QYXNzUmVmUHRyPEdyYWRp
ZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJiBzaXplKQorUmVmPEdyYWRpZW50PiBDU1NSYWRp
YWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogewogICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOwog
CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFk
aWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZQogICAgICAgICB9
CiAgICAgfQogCi0gICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVh
dGUoZmlyc3RQb2ludCwgZmlyc3RSYWRpdXMsIHNlY29uZFBvaW50LCBzZWNvbmRSYWRpdXMsIGFz
cGVjdFJhdGlvKTsKKyAgICBSZWY8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0
ZShmaXJzdFBvaW50LCBmaXJzdFJhZGl1cywgc2Vjb25kUG9pbnQsIHNlY29uZFJhZGl1cywgYXNw
ZWN0UmF0aW8pOwogCiAgICAgLy8gYWRkU3RvcHMoKSBvbmx5IHVzZXMgbWF4RXh0ZW50IGZvciBy
ZXBlYXRpbmcgZ3JhZGllbnRzLgogICAgIGZsb2F0IG1heEV4dGVudCA9IDA7CkBAIC0xMjIyLDkg
KzEyMjIsOSBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpj
cmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZQogICAgIH0KIAogICAgIC8vIE5vdyBh
ZGQgdGhlIHN0b3BzLgotICAgIGFkZFN0b3BzKCpncmFkaWVudCwgY29udmVyc2lvbkRhdGEsIG1h
eEV4dGVudCk7CisgICAgYWRkU3RvcHMoZ3JhZGllbnQsIGNvbnZlcnNpb25EYXRhLCBtYXhFeHRl
bnQpOwogCi0gICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZ3JhZGll
bnQ7CiB9CiAKIGJvb2wgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWUmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVu
dFZhbHVlLmgKaW5kZXggZGE5MTFhMjIwMzhkNjQ1YzM5ZDcyNjZjM2UzNDc2ZWJlYzU0ZjY0OS4u
M2FkNzA2NWUzZDVhMzg1M2ZhMjJlMGM3YmI1ZTMxYmNhNDg1MzlmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBDU1NHcmFkaWVu
dENvbG9yU3RvcCB7CiAKIGNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVu
ZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Uo
UmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgdm9pZCBzZXRGaXJzdFgo
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFsOyB9CiAg
ICAgdm9pZCBzZXRGaXJzdFkoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1f
Zmlyc3RZID0gdmFsOyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGtub3du
VG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRT
dWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmKSB7IH0KLSAgICBQYXNzUmVmUHRyPENTU0dyYWRpZW50VmFsdWU+IGdyYWRpZW50V2l0aFN0
eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqKTsKKyAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1
ZT4gZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwogCiBwcm90ZWN0
ZWQ6CiAgICAgQ1NTR3JhZGllbnRWYWx1ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBDU1NHcmFkaWVu
dFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAg
ICAvLyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0
cjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6
ZSYpOworICAgIFJlZjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYsIGNv
bnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgUmVmPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNsb25l
KCkgY29uc3QKICAgICB7CkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
RW5kVmVydGljYWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2Vu
ZFZlcnRpY2FsU2l6ZSA9IHZhbDsgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3Ig
YSBnaXZlbiBzaXplLgotICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJl
bmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKKyAgICBSZWY8R3JhZGllbnQ+IGNyZWF0
ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAogICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRMaW5lTmFtZXNWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmNwcAppbmRleCBlMDhhMDdlOTQ1OTlk
NjdhZWZlNGU5YTU4YjBhZTU4MmE4N2EwNDQxLi5jNzQyYWZhZDYwODdhNGUyNjMxMDAwNzAyMDVj
MmJhMmU0NzRlOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1Zh
bHVlLmNwcApAQCAtNDQsOSArNDQsOSBAQCBDU1NHcmlkTGluZU5hbWVzVmFsdWU6OkNTU0dyaWRM
aW5lTmFtZXNWYWx1ZSgpCiB7CiB9CiAKLVJlZjxDU1NHcmlkTGluZU5hbWVzVmFsdWU+IENTU0dy
aWRMaW5lTmFtZXNWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWZQdHI8Q1NTR3JpZExp
bmVOYW1lc1ZhbHVlPiBDU1NHcmlkTGluZU5hbWVzVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25z
dAogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0dyaWRMaW5lTmFtZXNWYWx1ZSgqdGhp
cykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKCp0aGlz
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkTGluZU5h
bWVzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkTGluZU5hbWVzVmFsdWUuaApp
bmRleCAyZmRkYmY4OTZjNzg1Y2MxMTM0N2IzZDdjMzA5ZDA4ZjU5NDZlNWUzLi40MGVhZjZjNGI1
NzlkYTY3MWYzNTBmMTYzNThmNTk5ZGI2NzRhZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyaWRMaW5lTmFtZXNWYWx1ZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBSZWY8Q1NTR3JpZExpbmVOYW1lc1Zh
bHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisgICAgUmVmUHRyPENTU0dyaWRMaW5lTmFtZXNW
YWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU0dyaWRMaW5l
TmFtZXNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4
IDc2MzFiZWVhYjNhOWYyZTkwZjRkN2QwYWVjNWY3Yjg4YmE2MzFkN2IuLmMwM2EzOWYyY2E3ZjA1
NmIyMDZhNTJmYzBmNzQwNGRjYjgxZjBkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBDU1NJbWFnZVNldFZhbHVlOjpDU1NJbWFn
ZVNldFZhbHVlKGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNsb25lRnJvbSkKICAgICAvLyBOb24t
Q1NTVmFsdWVMaXN0IGRhdGEgaXMgbm90IGFjY2Vzc2libGUgdGhyb3VnaCBDU1MgT00sIG5vIG5l
ZWQgdG8gY2xvbmUuCiB9CiAKLVBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gQ1NTSW1hZ2VT
ZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4g
Q1NTSW1hZ2VTZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDU1NJbWFnZVNldFZhbHVlKCp0aGlzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlU2V0VmFsdWUuaAppbmRleCBmMDg4ODYzYmQ3ZjU0ZjRkYWQ4ODFjNTZhZWRkYmQ2ZjEw
YTgwYTQ2Li4xNjdlZGI3MTMzYzFjMjY3ZTQ4YTg2MTU2YjgzYmRhYzUzN2U1NTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wg
KGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKIAotICAgIFBhc3NSZWZQ
dHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZlB0cjxD
U1NJbWFnZVNldFZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAg
ICBJbWFnZVdpdGhTY2FsZSBiZXN0SW1hZ2VGb3JTY2FsZUZhY3RvcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGUxMjU0ZjBhODFhMzhlYzlhODYwYWU4MTZhNzQ1NDRl
ZTk2NTIxNjIuLjAyZWY3YjVkYTYyZmU3NTVjMTQxNDYwZWZiNzE5NGYxODE3ZjhkY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTExMywxMiArMTEzLDEyIEBAIFN0cmlu
ZyBDU1NJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gInVybCgi
ICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3VybCkgKyAnKSc7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0ltYWdlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAorUmVmUHRyPENTU1Zh
bHVlPiBDU1NJbWFnZVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKIHsKICAgICAvLyBOT1RF
OiBXZSBleHBvc2UgQ1NTSW1hZ2VWYWx1ZXMgYXMgVVJJIHByaW1pdGl2ZSB2YWx1ZXMgaW4gQ1NT
T00gdG8gbWFpbnRhaW4gb2xkIGJlaGF2aW9yLgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gdXJpVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdXJsLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1VSSSk7CiAgICAgdXJpVmFsdWUtPnNldENTU09NU2FmZSgpOwotICAgIHJl
dHVybiB1cmlWYWx1ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHVyaVZhbHVlOwogfQogCiBib29s
IENTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDdlYTUwOTBjMWZk
MDMyYTBkNGUxMTIyYTQ4MTgyOWE4NzcyM2IzYWUuLmY1MzBlZDc1OTJlODZlNDY2NmJlNjg4N2Jl
NmEwZjUwMjM1YzZmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgYm9vbCB0cmF2ZXJzZVN1
YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNl
Jik+JiBoYW5kbGVyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBmYjFk
ZmI1NGFmMWVjYjcyNjZhYzcxNzRmZGVkNjEwZjdhMTQ5MmMwLi5jZGU5ZmRhZDQ4NzlkMmVkZmE2
YjQ5NzA1ZDE1MmI3YjQ3OTY4Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDYx
LDIxICs0NjEsMjEgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2hlZXQoU3R5bGVTaGVldENvbnRl
bnRzKiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnMKICAgICBtX2xvZ0Vycm9ycyA9
IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6cGFyc2VS
dWxlKFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVm
UHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6cGFyc2VSdWxlKFN0eWxlU2hlZXRDb250ZW50
cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHNldFN0eWxlU2hlZXQoc2hl
ZXQpOwogICAgIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICBzZXR1
cFBhcnNlcigiQC13ZWJraXQtcnVsZXsiLCBzdHJpbmcsICJ9ICIpOwogICAgIGNzc3l5cGFyc2Uo
dGhpcyk7Ci0gICAgcmV0dXJuIG1fcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1fcnVsZTsK
IH0KIAotUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVS
dWxlKFN0eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVm
UHRyPFN0eWxlS2V5ZnJhbWU+IENTU1BhcnNlcjo6cGFyc2VLZXlmcmFtZVJ1bGUoU3R5bGVTaGVl
dENvbnRlbnRzKiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgc2V0U3R5bGVT
aGVldChzaGVldCk7CiAgICAgc2V0dXBQYXJzZXIoIkAtd2Via2l0LWtleWZyYW1lLXJ1bGV7ICIs
IHN0cmluZywgIn0gIik7CiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKLSAgICByZXR1cm4gbV9rZXlm
cmFtZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1fa2V5ZnJhbWU7CiB9CiAKIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTI3
OSw3ICsxMjc5LDcgQEAgc3RhdGljIENTU1BhcnNlcjo6UGFyc2VSZXN1bHQgcGFyc2VUcmFuc2xh
dGVUcmFuc2Zvcm1WYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWUKICAgICByZXR1cm4gcHJvcGVy
dGllcy0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0s
IHJlc3VsdC5yZWxlYXNlKCksIGltcG9ydGFudCkpID8gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6
Q2hhbmdlZCA6IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OlVuY2hhbmdlZDsKIH0KIAotUGFzc1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0
b21pY1N0cmluZyYgc3RyaW5nKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJz
ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0
cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgyMyw3ICsxODIz
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OmlzVmFsaWRTaXplKFZhbHVlV2l0aENhbGN1bGF0aW9uJiB2
YWx1ZVdpdGhDYWxjdWxhdGlvbikKICAgICByZXR1cm4gIWlkICYmIHZhbGlkYXRlVW5pdCh2YWx1
ZVdpdGhDYWxjdWxhdGlvbiwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZyk7CiB9CiAKLWlu
bGluZSBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsaWRQ
cmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBWYWx1ZVdpdGhDYWxjdWxhdGlvbiYgdmFs
dWVXaXRoQ2FsY3VsYXRpb24pCitpbmxpbmUgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlVmFsaWRQcmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBWYWx1ZVdp
dGhDYWxjdWxhdGlvbiYgdmFsdWVXaXRoQ2FsY3VsYXRpb24pCiB7CiAgICAgaWYgKGlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
aWRlbnRpZmllcik7CkBAIC0zMjc0LDcgKzMyNzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VM
ZWdhY3lQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
cmV0dXJuICFtX3ZhbHVlTGlzdC0+bmV4dCgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24oKQorUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93
UG9zaXRpb24oKQogewogICAgIC8vIGF1dG8gfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPGNvbnRl
bnQtZGlzdHJpYnV0aW9uPiB8fCBbIDxvdmVyZmxvdy1wb3NpdGlvbj4/ICYmIDxjb250ZW50LXBv
c2l0aW9uPiBdCiAgICAgLy8gPGJhc2VsaW5lLXBvc2l0aW9uPiA9IGJhc2VsaW5lIHwgbGFzdC1i
YXNlbGluZTsKQEAgLTQxNjUsNyArNDE2NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbnRl
bnQoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHIoQ1NTUGFy
c2VyVmFsdWVMaXN0JiBhcmdzKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0
cihDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDE4OCw3ICs0MTg4LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHIoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdz
KQogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShhdHRyTmFtZSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19BVFRSKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUJhY2tncm91bmRDb2xvcigpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIENTU1ZhbHVlSUQgaWQgPSBtX3ZhbHVlTGlz
dC0+Y3VycmVudCgpLT5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IGlz
VmFsaWRTeXN0ZW1Db2xvclZhbHVlKGlkKSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUgfHwgaWQgPT0g
Q1NTVmFsdWVDdXJyZW50Y29sb3IKQEAgLTQyMjIsNyArNDIyMiw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUZpbGxJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENT
U1ZhbHVlPiYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCitS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVM
aXN0JiB2YWx1ZUxpc3QpCiB7CiAgICAgaW50IGlkID0gdmFsdWVMaXN0LmN1cnJlbnQoKS0+aWQ7
CiAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlk
ID09IENTU1ZhbHVlQ2VudGVyKSB7CkBAIC00MjM5LDcgKzQyMzksNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlUG9zaXRpb25YKENTU1BhcnNlclZhbHVlTGlzdCYgdmFs
dWVMaXN0KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlUG9zaXRpb25ZKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0KQor
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlUG9zaXRpb25ZKENTU1BhcnNlclZhbHVl
TGlzdCYgdmFsdWVMaXN0KQogewogICAgIGludCBpZCA9IHZhbHVlTGlzdC5jdXJyZW50KCktPmlk
OwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBp
ZCA9PSBDU1NWYWx1ZUNlbnRlcikgewpAQCAtNDI1Niw3ICs0MjU2LDcgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVBvc2l0aW9uWShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZh
bHVlTGlzdCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmlsbFBvc2l0
aW9uRmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlIHBhcnNpbmdN
b2RlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFBvc2l0
aW9uQ29tcG9uZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCB1bnNpZ25lZCYgY3Vt
dWxhdGl2ZUZsYWdzLCBGaWxsUG9zaXRpb25GbGFnJiBpbmRpdmlkdWFsRmxhZywgRmlsbFBvc2l0
aW9uUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVl
TGlzdC5jdXJyZW50KCktPmlkOwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0g
Q1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRv
bSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlcikgewpAQCAtNDYxNCw3ICs0NjE0LDcgQEAgdm9pZCBD
U1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0
cjxDU1NWYWx1ZT4mIHZhbHUKICAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZTEpLmdldFZhbHVl
SUQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6
ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKK1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sJiBh
bGxvd0NvbW1hKQogewogICAgIGFsbG93Q29tbWEgPSB0cnVlOwogICAgIENTU1BhcnNlclZhbHVl
KiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CkBAIC00ODQ0LDcgKzQ4NDQsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VGaWxsUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENT
U1Byb3BlcnR5SUQmIHByb3BJZDEsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkoKQorUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkoKQogewogICAgIFZhbHVlV2l0aENh
bGN1bGF0aW9uIHZhbHVlV2l0aENhbGN1bGF0aW9uKCptX3ZhbHVlTGlzdC0+Y3VycmVudCgpKTsK
ICAgICBpZiAodmFsaWRhdGVVbml0KHZhbHVlV2l0aENhbGN1bGF0aW9uLCBGVGltZSkpCkBAIC00
ODUyLDcgKzQ4NTIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5p
bWF0aW9uRGVsYXkoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCkKK1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkRpcmVjdGlvbigpCiB7CiAgICAgQ1NTUGFyc2Vy
VmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUtPmlk
ID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSB8fCB2
YWx1ZS0+aWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUFsdGVy
bmF0ZVJldmVyc2UpCkBAIC00ODYwLDcgKzQ4NjAsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0
aW9uKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0aW9u
KCkKIHsKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiB2YWx1ZVdpdGhDYWxjdWxhdGlvbigqbV92
YWx1ZUxpc3QtPmN1cnJlbnQoKSk7CiAgICAgaWYgKHZhbGlkYXRlVW5pdCh2YWx1ZVdpdGhDYWxj
dWxhdGlvbiwgRlRpbWUgfCBGTm9uTmVnKSkKQEAgLTQ4NjgsNyArNDg2OCw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25EdXJhdGlvbigpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25GaWxsTW9kZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmlt
YXRpb25GaWxsTW9kZSgpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxp
c3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVCYWNrd2Fy
ZHMgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlQm90aCkKQEAgLTQ4NzYsNyArNDg3Niw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25GaWxsTW9kZSgpCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUm
IHZhbHVlID0gKm1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAgICAgaWYgKHZhbHVlLmlkID09IENT
U1ZhbHVlSW5maW5pdGUpCkBAIC00ODg3LDcgKzQ4ODcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKQogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0
aW9uTmFtZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25OYW1l
KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KTsKICAgICBpZiAodmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyB8
fCB2YWx1ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKQEAgLTQ4OTks
NyArNDg5OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25OYW1lKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblBsYXlTdGF0ZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VBbmltYXRpb25QbGF5U3RhdGUoKQogewogICAgIENTU1BhcnNlclZhbHVl
JiB2YWx1ZSA9ICptX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIGlmICh2YWx1ZS5pZCA9PSBD
U1NWYWx1ZVJ1bm5pbmcgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVQYXVzZWQpCkBAIC00OTA4LDcg
KzQ5MDgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9u
UGxheVN0YXRlKCkKIH0KIAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRyaWdnZXIoKQorUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVHJpZ2dlcigpCiB7CiAgICAg
Q1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlQXV0bykKQEAgLTQ5NDgsMTEgKzQ5NDgsMTEgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRyaWdnZXIoKQogICAgICAg
ICByZXR1cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoc3RhcnRWYWx1
ZS5yZWxlYXNlKCksIGVuZFZhbHVlLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvblBhcnNlQ29udGV4dCYg
Y29udGV4dCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3Bl
cnR5KEFuaW1hdGlvblBhcnNlQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDU1NQYXJzZXJWYWx1
ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUudW5pdCAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQpAQCAtNTAzNyw3ICs1MDM3LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNl
clZhbHVlTGlzdCYgYXJncywgZG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKK1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKIHsK
ICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAg
ICBpZiAodmFsdWUuaWQgPT0gQ1NTVmFsdWVFYXNlIHx8IHZhbHVlLmlkID09IENTU1ZhbHVlTGlu
ZWFyIHx8IHZhbHVlLmlkID09IENTU1ZhbHVlRWFzZUluIHx8IHZhbHVlLmlkID09IENTU1ZhbHVl
RWFzZU91dApAQCAtNTI2OSw3ICs1MjY5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSW50ZWdl
ck9yQ3VzdG9tSWRlbnRGcm9tR3JpZFBvc2l0aW9uKFJlZlB0cjxDU1NQcmltaXRpdmVWYWwKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VHcmlkUG9zaXRpb24oKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFBv
c2l0aW9uKCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpOwogICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVBdXRvKSB7CkBAIC01Mjg1LDcg
KzUyODUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFBvc2l0
aW9uKCkKICAgICAgICAgaGFzU2VlblNwYW5LZXl3b3JkID0gdHJ1ZTsKICAgICAgICAgaWYgKGF1
dG8qIG5leHRWYWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCkpIHsKICAgICAgICAgICAgIGlmICgh
aXNGb3J3YXJkU2xhc2hPcGVyYXRvcigqbmV4dFZhbHVlKSAmJiAhcGFyc2VJbnRlZ2VyT3JDdXN0
b21JZGVudEZyb21HcmlkUG9zaXRpb24obnVtZXJpY1ZhbHVlLCBncmlkTGluZU5hbWUpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAocGFyc2VJbnRlZ2VyT3JDdXN0b21J
ZGVudEZyb21HcmlkUG9zaXRpb24obnVtZXJpY1ZhbHVlLCBncmlkTGluZU5hbWUpKSB7CiAgICAg
ICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTUzMjAsMTAgKzUzMjAsMTAg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRQb3NpdGlvbigpCiAg
ICAgaWYgKGdyaWRMaW5lTmFtZSkKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoZ3JpZExpbmVOYW1l
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIEFTU0VSVCh2YWx1ZXMtPmxlbmd0aCgpKTsKLSAgICBy
ZXR1cm4gdmFsdWVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdmFsdWVzOwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ3JpZE1pc3NpbmdHcmlkUG9zaXRpb25WYWx1ZShDU1NWYWx1
ZSYgdmFsdWUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBncmlkTWlzc2luZ0dyaWRQb3NpdGlv
blZhbHVlKENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmlzU3RyaW5nKCkp
CiAgICAgICAgIHJldHVybiAmdmFsdWU7CkBAIC01NjA0LDcgKzU2MDQsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VHcmlkTGluZU5hbWVzKENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0LCBD
U1NWYWx1ZUxpc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tMaXN0KCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUdyaWRUcmFja0xpc3QoKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9
IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZU5v
bmUpIHsKQEAgLTU2NDIsNyArNTY0Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VHcmlkVHJhY2tMaXN0KCkKICAgICBpZiAoIXNlZW5UcmFja1NpemVPclJlcGVhdEZ1
bmN0aW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB2YWx1ZXMucmVs
ZWFzZSgpOworICAgIHJldHVybiB2YWx1ZXM7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdy
aWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1ZhbHVlTGlzdCYgbGlzdCkKQEAgLTU3MDAsNyArNTcw
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1Zh
bHVlTGlzdCYgbGlzdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1
dExpc3QpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tTaXplKENT
U1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQogewogICAgIENTU1BhcnNlclZhbHVlJiBjdXJy
ZW50VmFsdWUgPSAqaW5wdXRMaXN0LmN1cnJlbnQoKTsKICAgICBpbnB1dExpc3QubmV4dCgpOwpA
QCAtNTczMSw3ICs1NzMxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1dExpc3QKICAgICByZXR1cm4g
cGFyc2VHcmlkQnJlYWR0aChjdXJyZW50VmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEJyZWFkdGgoQ1NTUGFyc2VyVmFsdWUmIHZh
bHVlKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEJyZWFk
dGgoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pZCA9PSBDU1NWYWx1
ZVdlYmtpdE1pbkNvbnRlbnQgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50
KQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZh
bHVlLmlkKTsKQEAgLTU3NTgsNyArNTc1OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlk
R3JpZEF1dG9GbG93SWQoQ1NTVmFsdWVJRCBpZCkKICAgICByZXR1cm4gKGlkID09IENTU1ZhbHVl
Um93IHx8IGlkID09IENTU1ZhbHVlQ29sdW1uIHx8IGlkID09IENTU1ZhbHVlRGVuc2UpOwogfQog
Ci1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEF1dG9GbG93KENTU1Bh
cnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBh
cnNlR3JpZEF1dG9GbG93KENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQogewogICAgIC8v
IFsgcm93IHwgY29sdW1uIF0gfHwgZGVuc2UKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBp
bnB1dExpc3QuY3VycmVudCgpOwpAQCAtNjAzOSw3ICs2MDM5LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlR3JpZFRlbXBsYXRlQXJlYXNSb3coTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAs
IGNvbnN0IHUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzKCkKIHsKICAgICBpZiAobV92YWx1ZUxpc3QtPmN1
cnJlbnQoKSAmJiBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZCA9PSBDU1NWYWx1ZU5vbmUpIHsK
ICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKQEAgLTYwNjMsNyArNjA2Myw3IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVBcmVhcygpCiB9CiAj
ZW5kaWYgLyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KIAotUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJn
cywgYm9vbCBjb3VudGVycykKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvdW50
ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgYm9vbCBjb3VudGVycykKIHsKICAg
ICB1bnNpZ25lZCBudW1BcmdzID0gYXJncy5zaXplKCk7CiAgICAgaWYgKGNvdW50ZXJzICYmIG51
bUFyZ3MgIT0gMyAmJiBudW1BcmdzICE9IDUpCkBAIC02MTc3LDcgKzYxNzcsNyBAQCBzdGF0aWMg
dm9pZCBjb21wbGV0ZUJvcmRlclJhZGlpKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaWlb
NF0pCiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZWZhY3RvcmVkIHdpdGggQ1NTUGFyc2Vy
OjpwYXJzZUJvcmRlclJhZGl1cy4KIC8vIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMgY29u
dGFpbnMgc3VwcG9ydCBmb3Igc29tZSBsZWdhY3kgcmFkaXVzIGNvbnN0cnVjdGlvbi4KLVBhc3NS
ZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMo
UGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJWYWx1ZUxpc3Qm
IGFyZ3MpCitSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRl
ZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJW
YWx1ZUxpc3QmIGFyZ3MpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJncy5u
ZXh0KCk7CiAKQEAgLTYyNDEsNyArNjI0MSw3IEBAIFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4g
Q1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpCiAg
ICAgcmV0dXJuIHNoYXBlOwogfQogCi1QYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+IENTU1BhcnNl
cjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQorUmVmUHRy
PENTU0Jhc2ljU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2Vy
VmFsdWVMaXN0JiBhcmdzKQogewogICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBl
ID0gQ1NTQmFzaWNTaGFwZUluc2V0OjpjcmVhdGUoKTsKIApAQCAtNjI4OSw3ICs2Mjg5LDcgQEAg
UGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUluc2V0
KENTU1BhcnNlclZhbHVlTGlzdCYgYXIKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTaGFwZVJhZGl1cyhDU1NQYXJz
ZXJWYWx1ZSYgdmFsdWUpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VTaGFwZVJhZGl1cyhDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlk
ID09IENTU1ZhbHVlQ2xvc2VzdFNpZGUgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVGYXJ0aGVzdFNp
ZGUpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
dmFsdWUuaWQpOwpAQCAtNjMwMSw3ICs2MzAxLDcgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNoYXBlUmFkaXVzKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkK
ICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKHZhbHVlV2l0aENhbGN1bGF0
aW9uKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFz
aWNTaGFwZUNpcmNsZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCitSZWZQdHI8Q1NTQmFzaWNT
aGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVDaXJjbGUoQ1NTUGFyc2VyVmFsdWVMaXN0
JiBhcmdzKQogewogICAgIC8vIGNpcmNsZShyYWRpdXMpCiAgICAgLy8gY2lyY2xlKHJhZGl1cyBh
dCA8cG9zaXRpb24+KQpAQCAtNjM0MSw3ICs2MzQxLDcgQEAgUGFzc1JlZlB0cjxDU1NCYXNpY1No
YXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJWYWx1ZUxpc3Qm
IGEKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NT
UGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVFbGxpcHNlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykK
K1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUVsbGlwc2Uo
Q1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogewogICAgIC8vIGVsbGlwc2UocmFkaXVzWCkKICAg
ICAvLyBlbGxpcHNlKHJhZGl1c1ggYXQgPHBvc2l0aW9uPikKQEAgLTYzODYsNyArNjM4Niw3IEBA
IFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVFbGxp
cHNlKENTU1BhcnNlclZhbHVlTGlzdCYKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQ
dHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVQb2x5Z29uKENTU1Bh
cnNlclZhbHVlTGlzdCYgYXJncykKK1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBh
cnNlQmFzaWNTaGFwZVBvbHlnb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogewogICAgIHVu
c2lnbmVkIHNpemUgPSBhcmdzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCkBAIC02NDU3LDcgKzY0
NTcsNyBAQCBzdGF0aWMgYm9vbCBpc0JveFZhbHVlKENTU1ZhbHVlSUQgdmFsdWVJZCwgQ1NTUHJv
cGVydHlJRCBwcm9wSWQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1Byb3BlcnR5SUQgcHJv
cElkKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUFuZE9yQm94
KENTU1Byb3BlcnR5SUQgcHJvcElkKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1f
dmFsdWVMaXN0LT5jdXJyZW50KCk7CiAKQEAgLTY0ODksMTEgKzY0ODksMTEgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVBbmRPckJveChDU1NQcm9wZXJ0
eUlEIHByb3BJZCkKIAogICAgIGlmIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxp
c3Q7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VTaGFwZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkKQorUmVmUHRy
PENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU2hhcGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BJZCkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuY3NzU2hhcGVzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY1MDks
MTQgKzY1MDksMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNoYXBl
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQpCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBpbWFn
ZVZhbHVlOwogICAgIGlmICh2YWx1ZUlkICE9IENTU1ZhbHVlTm9uZSAmJiBwYXJzZUZpbGxJbWFn
ZSgqbV92YWx1ZUxpc3QsIGltYWdlVmFsdWUpKSB7CiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0
KCk7Ci0gICAgICAgIHJldHVybiBpbWFnZVZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJu
IGltYWdlVmFsdWU7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94
KHByb3BJZCk7CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZUNsaXBQYXRoKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNsaXBQYXRo
KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KTsKICAgICBDU1NWYWx1ZUlEIHZhbHVlSWQgPSB2YWx1ZS5pZDsKQEAgLTY1MzMsNyArNjUzMyw3
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDbGlwUGF0aCgpCiAgICAg
cmV0dXJuIHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGgp
OwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFz
aWNTaGFwZSgpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VCYXNp
Y1NoYXBlKCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1
cnJlbnQoKTsKICAgICBBU1NFUlQodmFsdWUudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b24pOwpAQCAtNjY5MSw3ICs2NjkxLDcgQEAgcHJpdmF0ZToKICAgICBDU1NWYWx1ZUxpc3QmIG1f
bGlzdDsKIH07CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9u
dEZhbWlseSgpCitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhbWls
eSgpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVl
TGlzdC0+Y3VycmVudCgpOwpAQCAtNjc2Miw3ICs2NzYyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5KCkKIAogICAgIGlmICghbGlzdC0+bGVu
Z3RoKCkpCiAgICAgICAgIGxpc3QgPSBudWxscHRyOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZUhlaWdo
dChib29sIGltcG9ydGFudCkKQEAgLTc1MDAsNyArNzUwMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJy
YXksIGJvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSog
dmFsdWUpCiB7CiAgICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgaWYgKCFw
YXJzZUNvbG9yRnJvbVZhbHVlKHZhbHVlID8gKnZhbHVlIDogKm1fdmFsdWVMaXN0LT5jdXJyZW50
KCksIGMpKQpAQCAtNzY4Miw3ICs3NjgyLDcgQEAgc3RydWN0IFNoYWRvd1BhcnNlQ29udGV4dCB7
CiAgICAgYm9vbCBhbGxvd0JyZWFrOwogfTsKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENT
U1BhcnNlcjo6cGFyc2VTaGFkb3coQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIENTU1By
b3BlcnR5SUQgcHJvcElkKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVNo
YWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgQ1NTUHJvcGVydHlJRCBwcm9wSWQp
CiB7CiAgICAgU2hhZG93UGFyc2VDb250ZXh0IGNvbnRleHQocHJvcElkLCAqdGhpcyk7CiAgICAg
Q1NTUGFyc2VyVmFsdWUqIHZhbHVlOwpAQCAtOTMxNyw3ICs5MzE3LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlTmFtZWRJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRy
PENTU1ZhbHVlPiYKIH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VJbWFnZVJlc29sdXRpb24oKQorUmVmUHRy
PENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VSZXNvbHV0aW9uKCkKIHsKICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgIGJvb2wgaGF2ZVJlc29sdXRpb24gPSBmYWxzZTsKQEAgLTkzNDQsMTIgKzkzNDQs
MTIgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUltYWdlUmVzb2x1dGlv
bigpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghaGF2ZUZyb21JbWFnZSAmJiAh
aGF2ZVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBsaXN0
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENT
U19JTUFHRV9TRVQpCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VT
ZXQoKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VTZXQoKQogewogICAg
IENTU1BhcnNlclZhbHVlJiB2YWx1ZSA9ICptX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIEFT
U0VSVCh2YWx1ZS51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbik7CkBAIC05Mzk4LDcg
KzkzOTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VTZXQo
KQogICAgICAgICBhcmcgPSBmdW5jdGlvbkFyZ3MtPm5leHQoKTsKICAgICB9CiAKLSAgICByZXR1
cm4gaW1hZ2VTZXQucmVsZWFzZSgpOworICAgIHJldHVybiBpbWFnZVNldDsKIH0KICNlbmRpZgog
CkBAIC05NjYxLDcgKzk2NjEsNyBAQCBwcml2YXRlOgogICAgIENTU1BhcnNlcjo6VW5pdHMgbV91
bml0OwogfTsKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VUcmFu
c2Zvcm0oKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybSgp
CiB7CiAgICAgaWYgKCFtX3ZhbHVlTGlzdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05
Njc1LDEwICs5Njc1LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBh
cnNlVHJhbnNmb3JtKCkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBhcnNlZFRyYW5zZm9ybVZhbHVl
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gbGlzdDsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAodmFsdWUudW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwgIXZh
bHVlLmZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk3ODMsNyArOTc4Myw3
IEBAIHN0YXRpYyB2b2lkIGZpbHRlckluZm9Gb3JOYW1lKGNvbnN0IENTU1BhcnNlclN0cmluZyYg
bmFtZSwgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFdlYktp
dENTU0ZpbHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZpbHRlckFyZ3VtZW50cyhD
U1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MsIFdlYktpdENTU0ZpbHRlclZhbHVlOjpGaWx0ZXJPcGVy
YXRpb25UeXBlIGZpbHRlclR5cGUpCitSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbHVlTGlzdCYgYXJn
cywgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkZpbHRlck9wZXJhdGlvblR5cGUgZmlsdGVyVHlwZSkK
IHsKICAgICBSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGZpbHRlclZhbHVlID0gV2ViS2l0
Q1NTRmlsdGVyVmFsdWU6OmNyZWF0ZShmaWx0ZXJUeXBlKTsKIApAQCAtMTAyNzcsNyArMTAyNzcs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUZXh0RW1waGFzaXNQb3NpdGlvbihib29sIGltcG9y
dGFudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZVRleHRJbmRlbnQoKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNl
VGV4dEluZGVudCgpCiB7CiAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0
ICB3aGVuIENTUzNfVEVYVCBpcyBkaXNhYmxlZC4KICAgICAvLyBbIDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+IF0gJiYgWyAtd2Via2l0LWhhbmdpbmcgfHwgLXdlYmtpdC1lYWNoLWxpbmUgXT8gfCBp
bmhlcml0ICB3aGVuIENTUzNfVEVYVCBpcyBlbmFibGVkLgpAQCAtMTIwNTEsNyArMTIwNTEsNyBA
QCByZXN0YXJ0QWZ0ZXJDb21tZW50OgogICAgIHJldHVybiB0b2tlbigpOwogfQogCi1QYXNzUmVm
UHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25zdCBDU1NQ
YXJzZXJTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSkKK1JlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFy
c2VyU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEpCiB7CiAgICAg
aWYgKCFtZWRpYSB8fCAhbV9hbGxvd0ltcG9ydFJ1bGVzKSB7CiAgICAgICAgIHBvcFJ1bGVEYXRh
KCk7CkBAIC0xMjA1OSwxMCArMTIwNTksMTAgQEAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBD
U1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiB1cmwKICAg
ICB9CiAgICAgUmVmUHRyPFN0eWxlUnVsZUltcG9ydD4gcnVsZSA9IFN0eWxlUnVsZUltcG9ydDo6
Y3JlYXRlKHVybCwgbWVkaWEpOwogICAgIHByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVl
SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7
CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYVJ1
bGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgUnVsZUxpc3QqIHJ1bGVzKQorUmVm
UHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxlKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeVNldD4gbWVkaWEsIFJ1bGVMaXN0KiBydWxlcykKIHsKICAgICBtX2FsbG93SW1w
b3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgUmVm
UHRyPFN0eWxlUnVsZU1lZGlhPiBydWxlOwpAQCAtMTIwNzQsMTUgKzEyMDc0LDE1IEBAIFBhc3NS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYVJ1bGUoUGFzc1JlZlB0
cjxNZWRpYVF1ZXJ5U2V0PiBtCiAgICAgfSBlbHNlCiAgICAgICAgIHJ1bGUgPSBTdHlsZVJ1bGVN
ZWRpYTo6Y3JlYXRlKG1lZGlhLCBydWxlcyA/ICpydWxlcyA6IGVtcHR5UnVsZXMpOwogICAgIHBy
b2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gcnVs
ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVSdWxl
QmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVFbXB0eU1lZGlhUnVsZShSdWxlTGlzdCogcnVsZXMpCitS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVFbXB0eU1lZGlhUnVsZShSdWxl
TGlzdCogcnVsZXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZU1lZGlhUnVsZShNZWRpYVF1ZXJ5U2V0
OjpjcmVhdGUoKSwgcnVsZXMpOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1Bh
cnNlcjo6Y3JlYXRlU3VwcG9ydHNSdWxlKGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFJ1bGVM
aXN0KiBydWxlcykKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVN1cHBv
cnRzUnVsZShib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBSdWxlTGlzdCogcnVsZXMpCiB7CiAg
ICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZh
bHNlOwogCkBAIC0xMjEwNiw3ICsxMjEwNiw3IEBAIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4g
Q1NTUGFyc2VyOjpjcmVhdGVTdXBwb3J0c1J1bGUoYm9vbCBjb25kaXRpb25Jc1N1cHBvcnRlCiAK
ICAgICBwcm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAKLSAgICBy
ZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIHZvaWQgQ1NTUGFy
c2VyOjptYXJrU3VwcG9ydHNSdWxlSGVhZGVyU3RhcnQoKQpAQCAtMTIxMjksMTIgKzEyMTI5LDEy
IEBAIHZvaWQgQ1NTUGFyc2VyOjptYXJrU3VwcG9ydHNSdWxlSGVhZGVyRW5kKCkKICAgICAgICAg
bV9zdXBwb3J0c1J1bGVEYXRhU3RhY2stPmxhc3QoKS0+cnVsZUhlYWRlclJhbmdlLmVuZCA9IHRv
a2VuU3RhcnQ8VUNoYXI+KCkgLSBtX2RhdGFTdGFydDE2LmdldCgpOwogfQogCi1QYXNzUmVmUHRy
PENTU1J1bGVTb3VyY2VEYXRhPiBDU1NQYXJzZXI6OnBvcFN1cHBvcnRzUnVsZURhdGEoKQorUmVm
UHRyPENTU1J1bGVTb3VyY2VEYXRhPiBDU1NQYXJzZXI6OnBvcFN1cHBvcnRzUnVsZURhdGEoKQog
ewogICAgIEFTU0VSVChtX3N1cHBvcnRzUnVsZURhdGFTdGFjayAmJiAhbV9zdXBwb3J0c1J1bGVE
YXRhU3RhY2stPmlzRW1wdHkoKSk7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBkYXRh
ID0gbV9zdXBwb3J0c1J1bGVEYXRhU3RhY2stPmxhc3QoKTsKICAgICBtX3N1cHBvcnRzUnVsZURh
dGFTdGFjay0+cmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gZGF0YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnByb2Nlc3NBbmRBZGROZXdSdWxlVG9T
b3VyY2VUcmVlSWZOZWVkZWQoKQpAQCAtMTIyMDYsNyArMTIyMDYsNyBAQCB2b2lkIENTU1BhcnNl
cjo6bG9nRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcgogICAgIGNvbnNvbGUuYWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpDU1MsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSwgbV9zdHlsZVNoZWV0LT5iYXNlVVJMKCkuc3Ry
aW5nKCksIGxpbmVOdW1iZXIgKyAxLCBjb2x1bW5OdW1iZXIgKyAxKTsKIH0KIAotUGFzc1JlZlB0
cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShjb25z
dCBTdHJpbmcmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJh
bWU+Pj4gcG9wS2V5ZnJhbWVzKQorUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2Vy
OjpjcmVhdGVLZXlmcmFtZXNSdWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+PiBwb3BLZXlmcmFtZXMpCiB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+PiBrZXlmcmFtZXMgPSBX
VEY6Om1vdmUocG9wS2V5ZnJhbWVzKTsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93
TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CkBAIC0xMjIxNSwxMCArMTIyMTUsMTAgQEAg
UGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVz
UnVsZShjb25zdCBTdHJpbmcmIG5hbWUKICAgICAgICAgcnVsZS0+cGFyc2VyQXBwZW5kS2V5ZnJh
bWUoa2V5ZnJhbWVzLT5hdChpKSk7CiAgICAgcnVsZS0+c2V0TmFtZShuYW1lKTsKICAgICBwcm9j
ZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHJ1bGUu
cmVsZWFzZSgpOworICAgIHJldHVybiBydWxlOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1Bh
cnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+Piogc2VsZWN0b3JzKQogewogICAgIFJlZlB0cjxTdHlsZVJ1bGU+IHJ1bGU7CiAgICAg
aWYgKHNlbGVjdG9ycykgewpAQCAtMTIyMzIsMTAgKzEyMjMyLDEwIEBAIFBhc3NSZWZQdHI8U3R5
bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxDU1NQCiAgICAgfSBlbHNlCiAgICAgICAgIHBvcFJ1bGVEYXRhKCk7CiAgICAgY2xlYXJQ
cm9wZXJ0aWVzKCk7Ci0gICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgpOworICAgIHJldHVybiBydWxl
OwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlRm9udEZh
Y2VSdWxlKCkKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNl
UnVsZSgpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xh
cmF0aW9ucyA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFBy
b3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEyMjU1LDcgKzEyMjU1LDcgQEAgUGFzc1JlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgUmVm
UHRyPFN0eWxlUnVsZUZvbnRGYWNlPiBydWxlID0gU3R5bGVSdWxlRm9udEZhY2U6OmNyZWF0ZShj
cmVhdGVTdHlsZVByb3BlcnRpZXMoKSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgcHJv
Y2Vzc0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRlZCgpOwotICAgIHJldHVybiBydWxl
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcnVsZTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmFkZE5h
bWVzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1
cmkpCkBAIC0xMjMzMCw3ICsxMjMzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyhzdGQ6OnVuaXF1ZV9wdHI8CiAgICAg
cmV0dXJuIHNwZWNpZmllcnM7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFy
c2VyOjpjcmVhdGVQYWdlUnVsZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBh
Z2VTZWxlY3RvcikKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VS
dWxlKHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogewog
ICAgIC8vIEZJWE1FOiBNYXJnaW4gYXQtcnVsZXMgYXJlIGlnbm9yZWQuCiAgICAgbV9hbGxvd0lt
cG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwpAQCAtMTIz
NDQsNyArMTIzNDQsNyBAQCBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3Jl
YXRlUGFnZVJ1bGUoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbAogICAgIH0gZWxzZQogICAg
ICAgICBwb3BSdWxlRGF0YSgpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwotICAgIHJldHVybiBy
dWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcnVsZTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4gQ1NTUGFyc2VyOjpjcmVh
dGVTZWxlY3RvclZlY3RvcigpCkBAIC0xMjM2Miw3ICsxMjM2Miw3IEBAIHZvaWQgQ1NTUGFyc2Vy
OjpyZWN5Y2xlU2VsZWN0b3JWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q1NTCiAgICAgICAgIG1fcmVjeWNsZWRTZWxlY3RvclZlY3RvciA9IFdURjo6bW92ZSh2
ZWN0b3IpOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRl
UmVnaW9uUnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHJl
Z2lvblNlbGVjdG9yLCBSdWxlTGlzdCogcnVsZXMpCitSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NT
UGFyc2VyOjpjcmVhdGVSZWdpb25SdWxlKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+PiogcmVnaW9uU2VsZWN0b3IsIFJ1bGVMaXN0KiBydWxlcykKIHsKICAgICBpZiAo
IWNzc1JlZ2lvbnNFbmFibGVkKCkgfHwgIXJlZ2lvblNlbGVjdG9yIHx8ICFydWxlcykgewogICAg
ICAgICBwb3BSdWxlRGF0YSgpOwpAQCAtMTIzNzYsNyArMTIzNzYsNyBAQCBQYXNzUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlUmVnaW9uUnVsZShWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENTUwogICAgIGlmIChpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkpCiAgICAgICAgIGFk
ZE5ld1J1bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7
CiAKLSAgICByZXR1cm4gcmVnaW9uUnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlZ2lvblJ1
bGU7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6
Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICovKQpAQCAtMTI0MDgsNyArMTI0MDgsNyBAQCB2
b2lkIENTU1BhcnNlcjo6ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCkKICAgICB9KTsKIH0KIAot
UGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lKENTU1Bh
cnNlclZhbHVlTGlzdCYga2V5cykKK1JlZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQYXJzZXI6OmNy
ZWF0ZUtleWZyYW1lKENTU1BhcnNlclZhbHVlTGlzdCYga2V5cykKIHsKICAgICAvLyBDcmVhdGUg
YSBrZXkgc3RyaW5nIGZyb20gdGhlIHBhc3NlZCBrZXlzCiAgICAgU3RyaW5nQnVpbGRlciBrZXlT
dHJpbmc7CkBAIC0xMjQ0MSw3ICsxMjQ0MSw3IEBAIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4g
Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGtleXMpCiAKICAg
ICBjbGVhclByb3BlcnRpZXMoKTsKIAotICAgIHJldHVybiBrZXlmcmFtZS5yZWxlYXNlKCk7Cisg
ICAgcmV0dXJuIGtleWZyYW1lOwogfQogCiB2b2lkIENTU1BhcnNlcjo6aW52YWxpZEJsb2NrSGl0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA4ZTFmYzA2MTFjMjhmMmNhMWRmNGZmZGNmMjY1
MmIxZDFmMTc2N2JlLi5jOTE4ZWY5NTdhMzExM2EwZGYyNTU1YmFhNWIwYTcyZDVkOTUzYTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0xMTQsOCArMTE0LDggQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIH5DU1NQYXJzZXIoKTsKIAogICAgIHZvaWQgcGFyc2VTaGVldChTdHlsZVNo
ZWV0Q29udGVudHMqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0UG9zaXRpb24mLCBSdWxlU291
cmNlRGF0YUxpc3QqLCBib29sIGxvZ0Vycm9ycyk7Ci0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBwYXJzZVJ1bGUoU3R5bGVTaGVldENvbnRlbnRzKiwgY29uc3QgU3RyaW5nJik7Ci0gICAg
UGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBwYXJzZUtleWZyYW1lUnVsZShTdHlsZVNoZWV0Q29u
dGVudHMqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcGFyc2VS
dWxlKFN0eWxlU2hlZXRDb250ZW50cyosIGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxTdHls
ZUtleWZyYW1lPiBwYXJzZUtleWZyYW1lUnVsZShTdHlsZVNoZWV0Q29udGVudHMqLCBjb25zdCBT
dHJpbmcmKTsKICAgICBib29sIHBhcnNlU3VwcG9ydHNDb25kaXRpb24oY29uc3QgU3RyaW5nJik7
CiAKICAgICBzdGF0aWMgUGFyc2VSZXN1bHQgcGFyc2VWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzKiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIENTU1Bh
cnNlck1vZGUsIFN0eWxlU2hlZXRDb250ZW50cyopOwpAQCAtMTIzLDggKzEyMyw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRTeXN0ZW1D
b2xvclZhbHVlKENTU1ZhbHVlSUQpOwogICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29sb3Io
UkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJp
bmcmKTsKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVZhbGlkUHJpbWl0
aXZlKENTU1ZhbHVlSUQgaWRlbnQsIFZhbHVlV2l0aENhbGN1bGF0aW9uJik7CisgICAgc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJp
bmcmKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlVmFsaWRQcmltaXRpdmUo
Q1NTVmFsdWVJRCBpZGVudCwgVmFsdWVXaXRoQ2FsY3VsYXRpb24mKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgcGFyc2VEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwgY29u
c3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4sIFN0eWxlU2hlZXRDb250
ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRpYyBSZWY8SW1tdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgRWxl
bWVudCopOwpAQCAtMTQzLDkgKzE0Myw5IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlUXVvdGVz
KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQWx0KENTU1By
b3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZUF0dHIoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKTsKKyAgICBSZWZQdHI8Q1NTVmFs
dWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpOwogCi0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IHBhcnNlQmFja2dyb3VuZENvbG9yKCk7CiAKICAgICBzdHJ1Y3QgU291cmNlU2l6ZSB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5RXhwPiBleHByZXNzaW9uOwpAQCAtMTYxLDkg
KzE2MSw5IEBAIHB1YmxpYzoKIAogICAgIGVudW0gRmlsbFBvc2l0aW9uRmxhZyB7IEludmFsaWRG
aWxsUG9zaXRpb24gPSAwLCBBbWJpZ3VvdXNGaWxsUG9zaXRpb24gPSAxLCBYRmlsbFBvc2l0aW9u
ID0gMiwgWUZpbGxQb3NpdGlvbiA9IDQgfTsKICAgICBlbnVtIEZpbGxQb3NpdGlvblBhcnNpbmdN
b2RlIHsgUmVzb2x2ZVZhbHVlc0FzUGVyY2VudCA9IDAsIFJlc29sdmVWYWx1ZXNBc0tleXdvcmQg
PSAxIH07Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VGaWxsUG9zaXRp
b25Db21wb25lbnQoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFn
cywgRmlsbFBvc2l0aW9uRmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdN
b2RlID0gUmVzb2x2ZVZhbHVlc0FzUGVyY2VudCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gcGFyc2VQb3NpdGlvblkoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CisgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJWYWx1
ZUxpc3QmLCB1bnNpZ25lZCYgY3VtdWxhdGl2ZUZsYWdzLCBGaWxsUG9zaXRpb25GbGFnJiBpbmRp
dmlkdWFsRmxhZywgRmlsbFBvc2l0aW9uUGFyc2luZ01vZGUgPSBSZXNvbHZlVmFsdWVzQXNQZXJj
ZW50KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlUG9zaXRpb25YKENTU1BhcnNlclZhbHVl
TGlzdCYpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VQb3NpdGlvblkoQ1NTUGFyc2VyVmFs
dWVMaXN0Jik7CiAgICAgdm9pZCBwYXJzZTJWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFs
dWVMaXN0JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29s
IGlzUG90ZW50aWFsUG9zaXRpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOwogICAgIHZvaWQgcGFy
c2VGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJl
ZlB0cjxDU1NWYWx1ZT4mKTsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
YXJzZTRWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1Zh
bHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYsIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJik7CiAKICAgICB2b2lkIHBhcnNlRmlsbFJlcGVhdChS
ZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgYm9vbCAmYWxsb3dDb21tYSk7Cisg
ICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKENTU1Byb3BlcnR5SUQsIGJvb2wgJmFs
bG93Q29tbWEpOwogCiAgICAgYm9vbCBwYXJzZUZpbGxQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMSwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMiwgUmVm
UHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlRmlsbFNo
b3J0aGFuZChDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBp
bnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOwpAQCAtMTc5LDE3ICsxNzksMTcgQEAg
cHVibGljOgogICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFJl
ZjxDU1NWYWx1ZT4mJiBydmFsKTsKICAgICB2b2lkIGFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxD
U1NWYWx1ZT4mIGx2YWwsIFJlZjxDU1NWYWx1ZT4mJiBydmFsKTsKIAotICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uRGVsYXkoKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZUFuaW1hdGlvbkRpcmVjdGlvbigpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlQW5pbWF0aW9uRHVyYXRpb24oKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFu
aW1hdGlvbkZpbGxNb2RlKCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRp
b25JdGVyYXRpb25Db3VudCgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0
aW9uTmFtZSgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uUGxheVN0
YXRlKCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25Qcm9wZXJ0eShB
bmltYXRpb25QYXJzZUNvbnRleHQmKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1h
dGlvbkRlbGF5KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvbkRpcmVjdGlv
bigpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25EdXJhdGlvbigpOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25GaWxsTW9kZSgpOworICAgIFJlZlB0cjxD
U1NWYWx1ZT4gcGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpOworICAgIFJlZlB0cjxDU1NW
YWx1ZT4gcGFyc2VBbmltYXRpb25OYW1lKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFu
aW1hdGlvblBsYXlTdGF0ZSgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25Q
cm9wZXJ0eShBbmltYXRpb25QYXJzZUNvbnRleHQmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKTsKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNf
TEVWRUxfMikKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvblRyaWdnZXIo
KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uVHJpZ2dlcigpOwogI2VuZGlm
CiAgICAgc3RhdGljIFZlY3Rvcjxkb3VibGU+IHBhcnNlS2V5ZnJhbWVTZWxlY3Rvcihjb25zdCBT
dHJpbmcmKTsKIApAQCAtMjA0LDIxICsyMDQsMjEgQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VD
b2x1bW5zU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9M
QVlPVVQpCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkUG9zaXRpb24oKTsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFBvc2l0aW9uKCk7CiAgICAgYm9vbCBwYXJzZUdy
aWRJdGVtUG9zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwog
ICAgIGJvb2wgcGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4sIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZFRlbXBsYXRlU2hvcnRoYW5k
KGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZFNob3J0aGFuZChib29sIGltcG9y
dGFudCk7CiAgICAgYm9vbCBwYXJzZUdyaWRBcmVhU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsK
ICAgICBib29sIHBhcnNlU2luZ2xlR3JpZEFyZWFMb25naGFuZChSZWZQdHI8Q1NTVmFsdWU+Jik7
Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVHJhY2tMaXN0KCk7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRUcmFja0xpc3QoKTsKICAgICBib29sIHBhcnNlR3JpZFRy
YWNrUmVwZWF0RnVuY3Rpb24oQ1NTVmFsdWVMaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VHcmlkVHJhY2tTaXplKENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KTsKLSAg
ICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUdyaWRCcmVhZHRoKENTU1BhcnNl
clZhbHVlJik7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRUcmFja1NpemUoQ1NTUGFy
c2VyVmFsdWVMaXN0JiBpbnB1dExpc3QpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
cGFyc2VHcmlkQnJlYWR0aChDU1NQYXJzZXJWYWx1ZSYpOwogICAgIGJvb2wgcGFyc2VHcmlkVGVt
cGxhdGVBcmVhc1JvdyhOYW1lZEdyaWRBcmVhTWFwJiwgY29uc3QgdW5zaWduZWQsIHVuc2lnbmVk
Jik7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVGVtcGxhdGVBcmVhcygpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVGVtcGxhdGVBcmVhcygpOwogICAgIGJvb2wg
cGFyc2VHcmlkTGluZU5hbWVzKENTU1BhcnNlclZhbHVlTGlzdCYsIENTU1ZhbHVlTGlzdCYsIENT
U0dyaWRMaW5lTmFtZXNWYWx1ZSogPSBudWxscHRyKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZUdyaWRBdXRvRmxvdyhDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlR3JpZEF1dG9GbG93KENTU1BhcnNlclZhbHVlTGlzdCYpOwogI2VuZGlmCiAK
ICAgICBib29sIHBhcnNlRGFzaGJvYXJkUmVnaW9ucyhDU1NQcm9wZXJ0eUlELCBib29sIGltcG9y
dGFudCk7CkBAIC0yMjcsMzAgKzIyNywzMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHBhcnNlTGVn
YWN5UG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFy
c2VJdGVtUG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0
YW50KTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvbnRlbnREaXN0cmlidXRpb25P
dmVyZmxvd1Bvc2l0aW9uKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvbnRlbnREaXN0
cmlidXRpb25PdmVyZmxvd1Bvc2l0aW9uKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAg
ICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNoYXBlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7
CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNoYXBlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7
CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQmFzaWNTaGFwZUFuZE9y
Qm94KENTU1Byb3BlcnR5SUQgcHJvcElkKTsKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBwYXJzZUJhc2ljU2hhcGUoKTsKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBwYXJzZVNoYXBlUmFkaXVzKENTU1BhcnNlclZhbHVlJik7Ci0gICAgUGFzc1JlZlB0cjxDU1NC
YXNpY1NoYXBlPiBwYXJzZUJhc2ljU2hhcGVDaXJjbGUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7Ci0g
ICAgUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJzZUJhc2ljU2hhcGVFbGxpcHNlKENTU1Bh
cnNlclZhbHVlTGlzdCYpOwotICAgIFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VCYXNp
Y1NoYXBlUG9seWdvbihDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKLSAgICBQYXNzUmVmUHRyPENTU0Jh
c2ljU2hhcGU+IHBhcnNlQmFzaWNTaGFwZUluc2V0KENTU1BhcnNlclZhbHVlTGlzdCYpOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VCYXNpY1NoYXBlQW5kT3JCb3goQ1NTUHJvcGVydHlJRCBw
cm9wSWQpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VCYXNpY1NoYXBlKCk7
CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVNoYXBlUmFkaXVzKENTU1BhcnNl
clZhbHVlJik7CisgICAgUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlQmFzaWNTaGFwZUNpcmNs
ZShDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VC
YXNpY1NoYXBlRWxsaXBzZShDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NTQmFz
aWNTaGFwZT4gcGFyc2VCYXNpY1NoYXBlUG9seWdvbihDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAg
ICBSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVmFs
dWVMaXN0Jik7CiAKICAgICBib29sIHBhcnNlRm9udChib29sIGltcG9ydGFudCk7CiAgICAgdm9p
ZCBwYXJzZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRhbnQpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBwYXJzZUZvbnRGYW1pbHkoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJz
ZUZvbnRGYW1pbHkoKTsKIAogICAgIGJvb2wgcGFyc2VDb3VudGVyKENTU1Byb3BlcnR5SUQsIGlu
dCBkZWZhdWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgYm9vbCBjb3Vu
dGVycyk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNl
clZhbHVlTGlzdCYgYXJncywgYm9vbCBjb3VudGVycyk7CiAKICAgICBib29sIHBhcnNlQ29sb3JQ
YXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBwYXJzZUFs
cGhhKTsKICAgICBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYsIGRvdWJs
ZSogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogPSBudWxscHRyKTsKKyAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlQ29sb3IoQ1NTUGFyc2VyVmFsdWUqID0gbnVs
bHB0cik7CiAgICAgYm9vbCBwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlJiwgUkdC
QTMyJik7CiAgICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYsIENTU1NlbGVjdG9y
TGlzdCYpOwogCkBAIC0yNjYsMTMgKzI2NiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZUZv
bnRGYWNlVW5pY29kZVJhbmdlKCk7CiAKICAgICBib29sIHBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBw
YXJzZVNWR1BhaW50KCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdDb2xvcigp
OwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU1ZHU3Ryb2tlRGFzaGFycmF5KCk7Ci0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VQYWludE9yZGVyKCk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZVNWR1BhaW50KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR0Nv
bG9yKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR1N0cm9rZURhc2hhcnJheSgpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VQYWludE9yZGVyKCk7CiAKICAgICAvLyBDU1MzIFBh
cnNpbmcgUm91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENTUzMpCi0gICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlU2hhZG93KENTU1BhcnNlclZhbHVlTGlzdCYsIENT
U1Byb3BlcnR5SUQpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlU2hhZG93KENTU1Bh
cnNlclZhbHVlTGlzdCYsIENTU1Byb3BlcnR5SUQpOwogICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFn
ZShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+JiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxz
ZSk7CiAgICAgYm9vbCBwYXJzZUJvcmRlckltYWdlUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mKTsK
ICAgICBib29sIHBhcnNlQm9yZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlPiYpOwpAQCAtMzAwLDI1ICszMDAsMjUgQEAgcHVibGljOgog
ICAgIGJvb2wgcGFyc2VDcm9zc2ZhZGUoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1Zh
bHVlPiYpOwogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlSW1hZ2VSZXNvbHV0aW9uKCk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZUltYWdlUmVzb2x1dGlvbigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdF
X1NFVCkKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUltYWdlU2V0KCk7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUltYWdlU2V0KCk7CiAjZW5kaWYKIAogICAgIGJvb2wgcGFyc2VG
aWx0ZXJJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKICAg
ICBib29sIHBhcnNlRmlsdGVyKENTU1BhcnNlclZhbHVlTGlzdCYsIFJlZlB0cjxDU1NWYWx1ZT4m
KTsKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBwYXJzZUJ1aWx0aW5GaWx0
ZXJBcmd1bWVudHMoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkZp
bHRlck9wZXJhdGlvblR5cGUpOworICAgIFJlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gcGFy
c2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbHVlTGlzdCYsIFdlYktpdENTU0Zp
bHRlclZhbHVlOjpGaWx0ZXJPcGVyYXRpb25UeXBlKTsKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHBhcnNlQ2xpcFBhdGgoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQ2xpcFBhdGgo
KTsKIAogICAgIHN0YXRpYyBib29sIGlzQmxlbmRNb2RlKENTU1ZhbHVlSUQpOwogICAgIHN0YXRp
YyBib29sIGlzQ29tcG9zaXRlT3BlcmF0b3IoQ1NTVmFsdWVJRCk7CiAKLSAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gcGFyc2VUcmFuc2Zvcm0oKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclZhbHVlJik7CisgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gcGFyc2VUcmFuc2Zvcm0oKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlVHJh
bnNmb3JtVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsKICAgICBib29sIHBhcnNlVHJhbnNmb3JtT3Jp
Z2luKENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9w
ZXJ0eUlEJiBwcm9wSWQyLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQzLCBSZWZQdHI8Q1NTVmFsdWU+
JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIHBhcnNl
UGVyc3BlY3RpdmVPcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHBy
b3BJZDEsIENTU1Byb3BlcnR5SUQmIHByb3BJZDIsICBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRy
PENTU1ZhbHVlPiYpOwogCkBAIC0zMzAsNyArMzMwLDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFy
c2VUZXh0RGVjb3JhdGlvblNraXAoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0
VW5kZXJsaW5lUG9zaXRpb24oYm9vbCBpbXBvcnRhbnQpOwogCi0gICAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gcGFyc2VUZXh0SW5kZW50KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVRleHRJ
bmRlbnQoKTsKICAgICAKICAgICBib29sIHBhcnNlTGluZUJveENvbnRhaW4oYm9vbCBpbXBvcnRh
bnQpOwogICAgIFJlZlB0cjxDU1NDYWxjVmFsdWU+IHBhcnNlQ2FsY3VsYXRpb24oQ1NTUGFyc2Vy
VmFsdWUmLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOwpAQCAtMzQ5LDIyICszNDks
MjIgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclNlbGVjdG9yPj4+IGNyZWF0ZVNlbGVjdG9yVmVjdG9yKCk7CiAgICAgdm9pZCBy
ZWN5Y2xlU2VsZWN0b3JWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4pOwogCi0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNl
PiBjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmluZyYsIFBhc3NSZWZQdHI8TWVk
aWFRdWVyeVNldD4pOwotICAgIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gY3JlYXRlS2V5ZnJh
bWUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFt
ZXM+IGNyZWF0ZUtleWZyYW1lc1J1bGUoY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+Pik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+
IGNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0Pik7CisgICAgUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IGNyZWF0ZUtleWZyYW1lKENT
U1BhcnNlclZhbHVlTGlzdCYpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNyZWF0
ZUtleWZyYW1lc1J1bGUoY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZWZQ
dHI8U3R5bGVLZXlmcmFtZT4+Pik7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U3R5bGVS
dWxlQmFzZT4+IFJ1bGVMaXN0OwotICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRl
TWVkaWFSdWxlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4sIFJ1bGVMaXN0Kik7Ci0gICAgUGFz
c1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVFbXB0eU1lZGlhUnVsZShSdWxlTGlzdCopOwot
ICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzKTsKLSAgICBQYXNzUmVm
UHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0ZUZvbnRGYWNlUnVsZSgpOwotICAgIFBhc3NSZWZQdHI8
U3R5bGVSdWxlQmFzZT4gY3JlYXRlUGFnZVJ1bGUoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPiBwYWdlU2VsZWN0b3IpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3Jl
YXRlUmVnaW9uUnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4q
IHJlZ2lvblNlbGVjdG9yLCBSdWxlTGlzdCogcnVsZXMpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBjcmVhdGVNZWRpYVJ1bGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgUnVsZUxpc3Qq
KTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlRW1wdHlNZWRpYVJ1bGUoUnVsZUxp
c3QqKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlU3R5bGVSdWxlKFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzKTsKKyAgICBSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlRm9udEZhY2VSdWxlKCk7CisgICAgUmVmUHRyPFN0eWxl
UnVsZUJhc2U+IGNyZWF0ZVBhZ2VSdWxlKHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gcGFnZVNlbGVjdG9yKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlUmVnaW9u
UnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHJlZ2lvblNl
bGVjdG9yLCBSdWxlTGlzdCogcnVsZXMpOwogICAgIHZvaWQgY3JlYXRlTWFyZ2luQXRSdWxlKENT
U1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlKTsKLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+
IGNyZWF0ZVN1cHBvcnRzUnVsZShib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBSdWxlTGlzdCop
OworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVTdXBwb3J0c1J1bGUoYm9vbCBjb25k
aXRpb25Jc1N1cHBvcnRlZCwgUnVsZUxpc3QqKTsKICAgICB2b2lkIG1hcmtTdXBwb3J0c1J1bGVI
ZWFkZXJTdGFydCgpOwogICAgIHZvaWQgbWFya1N1cHBvcnRzUnVsZUhlYWRlckVuZCgpOwotICAg
IFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBvcFN1cHBvcnRzUnVsZURhdGEoKTsKKyAg
ICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBvcFN1cHBvcnRzUnVsZURhdGEoKTsKIAogICAg
IHZvaWQgc3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKICAgICB2b2lkIGVuZERlY2xh
cmF0aW9uc0Zvck1hcmdpbkJveCgpOwpAQCAtNTU4LDcgKzU1OCw3IEBAIHByaXZhdGU6CiAgICAg
UGFyc2VSZXN1bHQgcGFyc2VWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwgQ1NTUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIFN0eWxlU2hlZXRDb250ZW50cyog
Y29udGV4dFN0eWxlU2hlZXQpOwogICAgIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHBh
cnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0
U3R5bGVTaGVldCk7CiAKLSAgICBQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlSW5zZXRS
b3VuZGVkQ29ybmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4sIENTU1BhcnNlclZh
bHVlTGlzdCYpOworICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJzZUluc2V0Um91bmRlZENv
cm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+LCBDU1NQYXJzZXJWYWx1ZUxpc3Qm
KTsKIAogICAgIGVudW0gU2l6ZVBhcmFtZXRlclR5cGUgewogICAgICAgICBOb25lLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggMjQ3NWMxNzFmMzc0NGMyNjM2
YmZjODc5ZTFiOWRjMWFjYjFkYjdjOC4uNDhmZmYyYWE4YWQ3YjJmNjIzMzcyN2RmMzRkYjlhN2Ni
YTBiZTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NT
VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVByaW9y
aXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
Z2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpID0gMDsKQEAg
LTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIC8vIENTU1Byb3BlcnR5SUQgdmVyc2lvbnMgb2Yg
dGhlIENTU09NIGZ1bmN0aW9ucyB0byBzdXBwb3J0IGJpbmRpbmdzIGFuZCBlZGl0aW5nLgogICAg
IC8vIFVzZSB0aGUgbm9uLXZpcnR1YWwgbWV0aG9kcyBpbiB0aGUgY29uY3JldGUgc3ViY2xhc3Nl
cyB3aGVuIHBvc3NpYmxlLgogICAgIC8vIFRoZSBDU1NWYWx1ZSByZXR1cm5lZCBieSB0aGlzIGZ1
bmN0aW9uIHNob3VsZCBub3QgYmUgZXhwb3NlZCB0byB0aGUgd2ViIGFzIGl0IG1heSBiZSB1c2Vk
IGJ5IG11bHRpcGxlIGRvY3VtZW50cyBhdCB0aGUgc2FtZSB0aW1lLgotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5SUQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
ZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJv
b2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5jcHAKaW5kZXggNmIxYjRjODg3MzIzM2E4MTc0ZDdhZmVlMWNjZGZhNjJlN2U2ZDJi
Yy4uMGQyYjgyZmQ0MWZjZWE4YWU1OTdhMjA0MDliOGI0ODFlYzg4MDI2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMjcxLDEwICsyNzEsMTAgQEAgYm9vbCBDU1NTdHls
ZVNoZWV0OjpjYW5BY2Nlc3NSdWxlcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Q
YXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCitSZWZQdHI8Q1NT
UnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1J1
bGVzKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAv
LyBJRSBiZWhhdmlvci4KICAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IG5vbkNoYXJzZXRS
dWxlcyA9IFN0YXRpY0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKICAgICB1bnNpZ25lZCBydWxlQ291
bnQgPSBsZW5ndGgoKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0
PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
bm9uQ2hhcnNldFJ1bGVzLT5ydWxlcygpLmFwcGVuZChydWxlKTsKICAgICB9Ci0gICAgcmV0dXJu
IG5vbkNoYXJzZXRSdWxlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5vbkNoYXJzZXRSdWxlczsK
IH0KIAogdW5zaWduZWQgQ1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1
bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM1OCwxMCAr
MzU4LDEwIEBAIGludCBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIEV4Y2VwdGlvCiB9CiAKIAotUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQorUmVmUHRyPENTU1J1bGVMaXN0PiBD
U1NTdHlsZVNoZWV0Ojpjc3NSdWxlcygpCiB7CiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3J1
bGVMaXN0Q1NTT01XcmFwcGVyKQogICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOwogICAgIHJldHVybiBt
X3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgK
aW5kZXggZDMxMmVlY2IxYWZjN2Y5OWM0MWQxMmFiNDVlMGNiOTY0YjRjMDk2ZC4uMTc0Y2Q0Yzk1
NWU0ZmUzZjg1YjQxZWY4ODQwOWNlMmY2MmM0OTFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCkBAIC02MywxMiArNjMsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkaXNh
YmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNEaXNhYmxlZDsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXREaXNhYmxlZChib29sKSBvdmVycmlkZTsKICAgICAKLSAgICBQYXNzUmVmUHRy
PENTU1J1bGVMaXN0PiBjc3NSdWxlcygpOworICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVs
ZXMoKTsKICAgICB1bnNpZ25lZCBpbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWdu
ZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAgICAvLyBJRSBFeHRlbnNpb25zCi0gICAg
UGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMoKTsKKyAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+
IHJ1bGVzKCk7CiAgICAgaW50IGFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3Qg
U3RyaW5nJiBzdHlsZSwgaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgaW50IGFkZFJ1
bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgcmVtb3ZlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgZGVsZXRlUnVsZShpbmRleCwgZWMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHls
ZU1hcC5jcHAKaW5kZXggMjdkNTMwNTEwMDNmMjJhMjQ3ZWQ0MWZhM2U2Mjg3MDllMTgzMjdkOS4u
ZTFkNDkyNTAwMmJmMTEzMzRmMDQ4MzhmNGI3OTYyNWEyZTkwMTY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIENTU1RvU3R5bGVNYXA6
OnVzZVNWR1pvb21SdWxlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVzb2x2ZXItPnVzZVNWR1pv
b21SdWxlcygpOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1RvU3R5bGVNYXA6OnN0
eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBDU1NWYWx1ZSYgdmFsdWUpCitSZWZQ
dHI8U3R5bGVJbWFnZT4gQ1NTVG9TdHlsZU1hcDo6c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SWQsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gbV9yZXNvbHZlci0+c3R5
bGVJbWFnZShwcm9wZXJ0eUlkLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVG9TdHlsZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAu
aAppbmRleCAyNTllYjI2MTZlYmM4OGY3MjhiZTgwNTZhOTJjYjNhZjIyYTk4YjNlLi4xMTg3ODE5
NTI2YjI1NzFlNmM2MDM0Mzk0NTdiOTBkYzY1ODgwODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0
eWxlTWFwLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgcGFydCBvZiBzb21lIHNvcnQgb2YgU3R5bGVJbWFnZUNhY2hlIG9iamVjdCB3aGlj
aAogICAgIC8vIGlzIGhlbGQgYnkgdGhlIFN0eWxlUmVzb2x2ZXIsIGFuZCBsaWtlbHkgcHJvdmlk
ZWQgdG8gdGhpcyBvYmplY3QKICAgICAvLyBkdXJpbmcgdGhlIHJlc29sdmUuCi0gICAgUGFzc1Jl
ZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJik7Cisg
ICAgUmVmUHRyPFN0eWxlSW1hZ2U+IHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUm
KTsKIAogICAgIFN0eWxlUmVzb2x2ZXIqIG1fcmVzb2x2ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5jcHAKaW5kZXggNDU1ZTc4MWE2YmJiMDNjY2U4MDQzNWZmODE5NzE4MWUxNTBmNWUzMS4uOWRi
NmViZTk4YmRkMGU4Mjc0NjU0OGJhYjczNzhkNTBlMmFjY2ZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBDU1NWYWx1ZTo6ZGVzdHJveSgpCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1ZhbHVl
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTVmFsdWU6OmNsb25l
Rm9yQ1NTT00oKSBjb25zdAogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNl
IFByaW1pdGl2ZUNsYXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA1NmZkMjg3Y2UwMDRkNmI3
MzliOTBlYTY4ODFhNjY0NTFjMDU4NGE3Li4xYWE5YWEyNWQ2OTA1YWQ0YzI2Mjg3NDQwYTFhM2Ux
ODE2MTA5ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHx8IGlzVmFsdWVMaXN0KCk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYUxpc3QuaAppbmRleCAwNGUwOTNlYTI0MzI5YTNhODMyZjYzYmJmYTViNWVj
NGY5MTc5NjA4Li43MzEwMzQwMGI0NjdjYmI0ZWY1YTgwNWU0MmM5MDIyYTBmZTkwNzNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBT
dHJpbmcgbWVkaWFUZXh0KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFRdWVyeVNldCgqdGhpcykp
OyB9CisgICAgUmVmPE1lZGlhUXVlcnlTZXQ+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhUXVlcnlTZXQoKnRoaXMpKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhUXVl
cnlTZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCmluZGV4IGVk
YTFkMmY1MGU0MGU0NWQ0NWVlMmMyM2YyYTNlZGNkYjQ4ODZhNDIuLjRkZTk2MGJmMzAxMDNhY2Yw
NTdiMWJhNDNiMmM3YjhkZGJmOTQwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlN
YXRjaGVyLmNwcApAQCAtOTksMTAgKzk5LDEwIEBAIGJvb2wgTWVkaWFRdWVyeU1hdGNoZXI6OmV2
YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlTZXQqIG1lZGlhKQogICAgIHJldHVybiBldmFsdWF0b3Ig
JiYgZXZhbHVhdG9yLT5ldmFsKG1lZGlhKTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlz
dD4gTWVkaWFRdWVyeU1hdGNoZXI6Om1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJiBxdWVyeSkKK1Jl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gTWVkaWFRdWVyeU1hdGNoZXI6Om1hdGNoTWVkaWEoY29uc3Qg
U3RyaW5nJiBxdWVyeSkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBt
ZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShxdWVyeSk7CiAjaWYgRU5BQkxFKFJFU09MVVRJ
T05fTUVESUFfUVVFUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eU1hdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5oCmluZGV4
IDk4ZmI5Y2Y1YTI4NTM2YjhmODM1MTYyMjc4YzdmMGIyZTk5ZTliMTAuLjhkYWMxNzI2YWVjYjJk
NDgxZTNjMTIxNDM0ZDJiZjk2ZTNjNThhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5TWF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
TWF0Y2hlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZExpc3RlbmVy
KFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4sIFBhc3NSZWZQdHI8TWVkaWFRdWVy
eUxpc3Q+KTsKICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
LCBNZWRpYVF1ZXJ5TGlzdCopOwogCi0gICAgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0
Y2hNZWRpYShjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IG1hdGNo
TWVkaWEoY29uc3QgU3RyaW5nJik7CiAKICAgICB1bnNpZ25lZCBldmFsdWF0aW9uUm91bmQoKSBj
b25zdCB7IHJldHVybiBtX2V2YWx1YXRpb25Sb3VuZDsgfQogICAgIHZvaWQgc3R5bGVSZXNvbHZl
ckNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzcyODUxZjAwMGEyYjVjYjkxOWRkZWMyZTIxNmY4
NDQ5YjZiOTkwMS4uN2ZlOGMwNDI3OTliMmM2NzA2YjNlZDA0YjA5ZGI2YWM2OWQwZjBhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5jcHAKQEAgLTE2MCwxMSArMTYwLDExIEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kCiAg
ICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAgCiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKK1JlZlB0cjxDU1NWYWx1ZT4g
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9
IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gY2xvbmVB
bmRDYWNoZUZvckNTU09NKG1fcHJvcGVydHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dHlJRCkuZ2V0KCkpOwogfQogCkBAIC0yNDUsNyArMjQ1LDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKIHsKICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShwcm9wZXJ0eUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCAzM2EwMzg2Y2RiMjA1NjAwMGRlMjE4
ZTE0OTAzMzc0OTVmYzAzOGJhLi42MDg3ODBmOGMyOTE4YTRlYTVkM2EzZTdhYTFhYWQ5ZDBjODI4
ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDU1NS
dWxlKiBwYXJlbnRSdWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBT
dHJpbmcgZ2V0UHJvcGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlIGZpbmFsOwpAQCAtNjMsNyArNjMsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQp
IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIGJvb2wgc2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29s
IGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIApAQCAtODMs
OSArODMsOSBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9u
IGZpbmFsIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbgogewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb24+IGNy
ZWF0ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0eVNldCwgQ1NTUnVsZSYgcGFyZW50
UnVsZSkKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb24+IGNyZWF0
ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0eVNldCwgQ1NTUnVsZSYgcGFyZW50UnVs
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbihwcm9wZXJ0eVNldCwgcGFyZW50UnVsZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uKHByb3BlcnR5U2V0LCBwYXJl
bnRSdWxlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRp
b24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAKaW5kZXggYTE4ODMwZTFmYzFlOGYzOTNjYmRk
YzkzOWVkMTY3OTBiOTU2MDAzNC4uMTk3NzMzMDI1NWNkMjhiNzc1NDA4YzBjZmU5Mzk1MzYyMWM3
MmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29sb3IuY3BwCkBAIC0zNSwzNiArMzUsMzYgQEAgUmVmPFJH
QkNvbG9yPiBSR0JDb2xvcjo6Y3JlYXRlKHVuc2lnbmVkIHJnYkNvbG9yKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJHQkNvbG9yKHJnYkNvbG9yKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IFJHQkNvbG9yOjpyZWQoKQorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JD
b2xvcjo6cmVkKCkKIHsKICAgICB1bnNpZ25lZCB2YWx1ZSA9IChtX3JnYkNvbG9yID4+IDE2KSAm
IDB4RkY7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Cisg
ICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgcmVzdWx0LT5z
ZXRDU1NPTVNhZmUoKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
V1RGOjptb3ZlKHJlc3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IFJH
QkNvbG9yOjpncmVlbigpCitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IFJHQkNvbG9yOjpncmVlbigp
CiB7CiAgICAgdW5zaWduZWQgdmFsdWUgPSAobV9yZ2JDb2xvciA+PiA4KSAmIDB4RkY7Ci0gICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUo
KTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJl
c3VsdCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IFJHQkNvbG9yOjpibHVl
KCkKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gUkdCQ29sb3I6OmJsdWUoKQogewogICAgIHVuc2ln
bmVkIHZhbHVlID0gbV9yZ2JDb2xvciAmIDB4RkY7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUik7CiAgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUoKTsKLSAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CiB9CiAKLVBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IFJHQkNvbG9yOjphbHBoYSgpCitSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IFJHQkNvbG9yOjphbHBoYSgpCiB7CiAgICAgZmxvYXQgdmFsdWUgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oKG1fcmdiQ29sb3IgPj4gMjQpICYgMHhGRikgLyAweEZGOwotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgIHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7Ci0gICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUkdCQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5oCmluZGV4IDFhZjdl
Yjc1ZDFjZjBjNDBhZTQ4MjNiMTk0ZGFhNWI5NjhlNDI2YjMuLjczZmJmYWY0M2QwZjQwYzEwNjNl
YTAxODE1ZDUzYjY5MmIxNGQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JD
b2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5oCkBAIC0zOCwxMCArMzgs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJl
ZjxSR0JDb2xvcj4gY3JlYXRlKHVuc2lnbmVkIHJnYkNvbG9yKTsKIAotICAgICAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZWQoKTsKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gZ3JlZW4oKTsKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gYmx1ZSgpOwotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbHBoYSgp
OworICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlZCgpOworICAgICAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IGdyZWVuKCk7CisgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
Ymx1ZSgpOworICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGFscGhhKCk7CiAKICAgICAg
ICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcihtX3JnYkNvbG9yKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IGRjNmNjNWI5MzQ1Y2MzOWE4MDFhZGEwMmExNDJkMTIzMjZiZGRmY2YuLmI4
MDFkNzBhZmQ2OWJmNWU4NzM3NDVjNGQxN2U3ZjQwNzRhZGUxODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHBhaW50T3JkZXIoUGFpbnRPcmRlciBw
YWludE9yZGVyKQogICAgIHJldHVybiBXVEY6Om1vdmUocGFpbnRPcmRlckxpc3QpOwogfQogCi1z
dGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRhdGlvblRvQ1NT
UHJpbWl0aXZlVmFsdWUoRUdseXBoT3JpZW50YXRpb24gb3JpZW50YXRpb24pCitzdGF0aWMgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1
ZShFR2x5cGhPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBzd2l0Y2ggKG9yaWVudGF0
aW9uKSB7CiAgICAgICAgIGNhc2UgR09fMERFRzoKQEAgLTc2LDExICs3NiwxMSBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2x5cGhPcmllbnRhdGlvblRvQ1NTUHJpbWl0
aXZlVmFsdWUoRUdseXBoTwogICAgICAgICBjYXNlIEdPXzI3MERFRzoKICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDI3MC4wZiwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19ERUcpOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdChjb25zdCBWZWN0b3I8U1ZHTGVu
Z3RoPiYgZGFzaGVzKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9D
U1NWYWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xlbmd0aD4mIGRhc2hlcykKIHsKICAgICBpZiAo
ZGFzaGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CkBAIC05MCwyMiArOTAsMjIgQEAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IHN0cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZl
Y3RvcjxTVkdMZW5ndGgKICAgICBmb3IgKFZlY3RvcjxTVkdMZW5ndGg+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGRhc2hlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGxpc3QtPmFw
cGVuZChTVkdMZW5ndGg6OnRvQ1NTUHJpbWl0aXZlVmFsdWUoKml0KSk7CiAKLSAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHUGFp
bnQ+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9y
KFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IG5ld1BhaW50LCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0
CitSZWZQdHI8U1ZHUGFpbnQ+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkanVzdFNWR1BhaW50
Rm9yQ3VycmVudENvbG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IG5ld1BhaW50LCBSZW5kZXJTdHls
ZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNWR1BhaW50PiBwYWludCA9IG5ld1BhaW50
OwogICAgIGlmIChwYWludC0+cGFpbnRUeXBlKCkgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVf
Q1VSUkVOVENPTE9SIHx8IHBhaW50LT5wYWludFR5cGUoKSA9PSBTVkdQYWludDo6U1ZHX1BBSU5U
VFlQRV9VUklfQ1VSUkVOVENPTE9SKQogICAgICAgICBwYWludC0+c2V0Q29sb3Ioc3R5bGUtPmNv
bG9yKCkpOwotICAgIHJldHVybiBwYWludC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHBhaW50Owog
fQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdmdQcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVM
YXlvdXQpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2
Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVw
ZGF0ZUxheW91dCkgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0gbV9ub2RlLmdldCgpOwogICAg
IGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gTWFrZSBzdXJlIG91ciBsYXlvdXQgaXMgdXAgdG8gZGF0ZSBiZWZvcmUgd2UgYWxs
b3cgYSBxdWVyeSBvbiB0aGVzZSBhdHRyaWJ1dGVzLgogICAgIGlmICh1cGRhdGVMYXlvdXQpCkBA
IC0xMTMsNyArMTEzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6c3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3AKIAogICAgIFJlbmRlclN0
eWxlKiBzdHlsZSA9IG5vZGUtPmNvbXB1dGVkU3R5bGUoKTsKICAgICBpZiAoIXN0eWxlKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCBTVkdS
ZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS0+c3ZnU3R5bGUoKTsKIApAQCAtMjAyLDcgKzIw
Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1By
b3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBTVkdMZW5ndGg6OnRvQ1NTUHJpbWl0aXZlVmFsdWUoc3ZnU3R5bGUuYmFzZWxpbmVTaGlmdFZh
bHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZzoKICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN2Z1N0eWxlLmJ1ZmZlcmVk
UmVuZGVyaW5nKCkpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
CiAgICAgICAgICAgICBpZiAoc3ZnU3R5bGUuZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCkgPT0g
R09fQVVUTykKICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKIAotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0U3ZnU2hhZG93OgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yU2hhZG93KHN2
Z1N0eWxlLnNoYWRvdygpLCBwcm9wZXJ0eUlELCAqc3R5bGUpOwpAQCAtMjM2LDcgKzIzNiw3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wCiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwg
InVuaW1wbGVtZW50ZWQgcHJvcGVydHlJRDogJWQiLCBwcm9wZXJ0eUlEKTsKICAgICB9CiAgICAg
TE9HX0VSUk9SKCJ1bmltcGxlbWVudGVkIHByb3BlcnR5SUQ6ICVkIiwgcHJvcGVydHlJRCk7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1BhcnNlci5jcHAKaW5kZXggOTA2M2E5MDM2NGFmNjM2NDBhY2U5YTU5YmExNmYxYWI5Yjkx
NDBkMC4uNjA1MDA2OTZiNTBiMDI0MDg5ZTQ0MTAxNWNmNjgxZTY3MzA4YjlkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VTVkdWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VTVkdTdHJva2VEYXNoYXJyYXkoKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNl
U1ZHU3Ryb2tlRGFzaGFycmF5KCkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiByZXQgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgQ1NTUGFyc2VyVmFsdWUq
IHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTM2MSwxMCArMzYxLDEwIEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTVkdTdHJva2VEYXNoYXJyYXkoKQog
ICAgIH0KICAgICBpZiAoIXZhbGlkX3ByaW1pdGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAotUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNWR1BhaW50KCkKK1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZVNWR1BhaW50KCkKIHsKICAgICBSR0JBMzIgYyA9IENvbG9yOjp0
cmFuc3BhcmVudDsKICAgICBpZiAoIXBhcnNlQ29sb3JGcm9tVmFsdWUoKm1fdmFsdWVMaXN0LT5j
dXJyZW50KCksIGMpKQpAQCAtMzcyLDE1ICszNzIsMTUgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZVNWR1BhaW50KCkKICAgICByZXR1cm4gU1ZHUGFpbnQ6OmNyZWF0ZUNv
bG9yKENvbG9yKGMpKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVNWR0NvbG9yKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNWR0NvbG9yKCkK
IHsKICAgICBSR0JBMzIgYyA9IENvbG9yOjp0cmFuc3BhcmVudDsKICAgICBpZiAoIXBhcnNlQ29s
b3JGcm9tVmFsdWUoKm1fdmFsdWVMaXN0LT5jdXJyZW50KCksIGMpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFNWR0NvbG9yOjpjcmVhdGVG
cm9tQ29sb3IoQ29sb3IoYykpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlUGFpbnRPcmRlcigpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VQYWlu
dE9yZGVyKCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpOwogCkBAIC00MjYsNyArNDI2LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZVBhaW50T3JkZXIoKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KLSAgICByZXR1cm4gcGFpbnRPcmRlckxpc3QucmVsZWFzZSgpOwor
ICAgIHJldHVybiBwYWludE9yZGVyTGlzdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWF0cml4LmNwcAppbmRleCAzMDY1NmQyOTMzZjJlZTBjM2UwNTQzZDk0NDFmN2I0ODg2NGIx
YWZhLi43YTY1OWFjZjQ3NjZkMGVkZjljYzk5ZGYyYTk5YzE5NGQwYjkyMjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtODksMjcgKzg5LDI3IEBAIHZvaWQgV2Vi
S2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB9CiAKIC8vIFBlcmZvcm0gYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBtYXRy
aWNlcyAodGhpcyAqIHNlY29uZE1hdHJpeCkKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBX
ZWJLaXRDU1NNYXRyaXg6Om11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBj
b25zdAorUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShX
ZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCkgY29uc3QKIHsKICAgICBpZiAoIXNlY29uZE1h
dHJpeCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0
cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0
cml4LT5tX21hdHJpeC5tdWx0aXBseShzZWNvbmRNYXRyaXgtPm1fbWF0cml4KTsKLSAgICByZXR1
cm4gbWF0cml4LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbWF0cml4OwogfQogCi1QYXNzUmVmUHRy
PFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAorUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjppbnZl
cnNlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghbV9tYXRyaXguaXNJbnZl
cnRpYmxlKCkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHJldHVybiBXZWJL
aXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeC5pbnZlcnNlKCkpOwogfQogCi1QYXNzUmVmUHRy
PFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUoZG91YmxlIHgsIGRv
dWJsZSB5LCBkb3VibGUgeikgY29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENT
U01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIGNvbnN0CiB7
CiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkpCiAgICAgICAgIHggPSAwOwpAQCAtMTIwLDEwICsxMjAs
MTAgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6dHJhbnNs
YXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmwKIAogICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRy
aXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKICAgICBtYXRy
aXgtPm1fbWF0cml4LnRyYW5zbGF0ZTNkKHgsIHksIHopOwotICAgIHJldHVybiBtYXRyaXgucmVs
ZWFzZSgpOworICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0
cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVks
IGRvdWJsZSBzY2FsZVopIGNvbnN0CitSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NN
YXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJsZSBzY2FsZVop
IGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oc2NhbGVYKSkKICAgICAgICAgc2NhbGVYID0g
MTsKQEAgLTEzNCwxMCArMTM0LDEwIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJL
aXRDU1NNYXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksCiAKICAgICBS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZSht
X21hdHJpeCk7CiAgICAgbWF0cml4LT5tX21hdHJpeC5zY2FsZTNkKHNjYWxlWCwgc2NhbGVZLCBz
Y2FsZVopOwotICAgIHJldHVybiBtYXRyaXgucmVsZWFzZSgpOworICAgIHJldHVybiBtYXRyaXg7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0
ZShkb3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdAorUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJs
ZSByb3RZLCBkb3VibGUgcm90WikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihyb3RYKSkK
ICAgICAgICAgcm90WCA9IDA7CkBAIC0xNTUsMTAgKzE1NSwxMCBAQCBQYXNzUmVmUHRyPFdlYktp
dENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSBy
b3RZLCBkbwogCiAgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NT
TWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgucm90YXRlM2Qo
cm90WCwgcm90WSwgcm90Wik7Ci0gICAgcmV0dXJuIG1hdHJpeC5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIG1hdHJpeDsKIH0KIAotUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01h
dHJpeDo6cm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJs
ZSBhbmdsZSkgY29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6
cm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmds
ZSkgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbih4KSkKICAgICAgICAgeCA9IDA7CkBAIC0x
NzMsMjcgKzE3MywyNyBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0
cml4Ojpyb3RhdGVBeGlzQW5nbGUoZG91YmxlIHgsIGRvdWJsZSB5LAogCiAgICAgUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgp
OwogICAgIG1hdHJpeC0+bV9tYXRyaXgucm90YXRlM2QoeCwgeSwgeiwgYW5nbGUpOwotICAgIHJl
dHVybiBtYXRyaXgucmVsZWFzZSgpOworICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNrZXdYKGRvdWJsZSBhbmdsZSkg
Y29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1goZG91
YmxlIGFuZ2xlKSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAgICAg
YW5nbGUgPSAwOwogCiAgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0
Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXguc2tld1go
YW5nbGUpOwotICAgIHJldHVybiBtYXRyaXgucmVsZWFzZSgpOworICAgIHJldHVybiBtYXRyaXg7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNrZXdZ
KGRvdWJsZSBhbmdsZSkgY29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01h
dHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKGFu
Z2xlKSkKICAgICAgICAgYW5nbGUgPSAwOwogCiAgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4g
bWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+
bV9tYXRyaXguc2tld1koYW5nbGUpOwotICAgIHJldHVybiBtYXRyaXgucmVsZWFzZSgpOworICAg
IHJldHVybiBtYXRyaXg7CiB9CiAKIFN0cmluZyBXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAppbmRleCBlYzFkYjlmMDU2NTBl
NGFmNWYwMGU2MDgwMWI5OTQ4MDQwYzUwZDc2Li44OTIxY2U0NjYwNDIwNjExZjcxYWIwNWM0Njgy
MWM4Mjk2NWE5OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0
cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oCkBAIC0xMDMs
NDggKzEwMyw0OCBAQCBwdWJsaWM6CiAgICAgLy8gc3BlY2lmaWVkIG9wZXJhdGlvbiBhcHBsaWVk
LiBUaGUgdGhpcyB2YWx1ZSBpcyBub3QgbW9kaWZpZWQuCiAKICAgICAvLyBNdWx0aXBseSB0aGlz
IG1hdHJpeCBieSBzZWNvbmRNYXRyaXgsIG9uIHRoZSByaWdodCAocmVzdWx0ID0gdGhpcyAqIHNl
Y29uZE1hdHJpeCkKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbXVsdGlwbHkoV2Vi
S2l0Q1NTTWF0cml4KiBzZWNvbmRNYXRyaXgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJLaXRDU1NN
YXRyaXg+IG11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdDsKIAog
ICAgIC8vIFJldHVybiB0aGUgaW52ZXJzZSBvZiB0aGlzIG1hdHJpeC4gVGhyb3cgYW4gZXhjZXB0
aW9uIGlmIHRoZSBtYXRyaXggaXMgbm90IGludmVydGlibGUKLSAgICBQYXNzUmVmUHRyPFdlYktp
dENTU01hdHJpeD4gaW52ZXJzZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gaW52ZXJzZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICAvLyBS
ZXR1cm4gdGhpcyBtYXRyaXggdHJhbnNsYXRlZCBieSB0aGUgcGFzc2VkIHZhbHVlcy4KICAgICAv
LyBQYXNzaW5nIGEgTmFOIHdpbGwgdXNlIGEgdmFsdWUgb2YgMC4gVGhpcyBhbGxvd3MgdGhlIDNE
IGZvcm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0aW9ucwogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJm
b3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4
IHdpdGgKICAgICAvLyB0aGUgdHJhbnNsYXRpb24gdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQg
PSB0cmFuc2xhdGlvbih4LHkseikgKiB0aGlzKQotICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0
cml4PiB0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgY29uc3Q7CisgICAg
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91
YmxlIHopIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCBzY2FsZWQgYnkgdGhl
IHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBzY2FsZVggb3Igc2NhbGVaIGFzIE5hTiB1
c2VzIGEgdmFsdWUgb2YgMSwgYnV0IHBhc3Npbmcgc2NhbGVZIG9mIE5hTgogICAgIC8vIG1ha2Vz
IGl0IHRoZSBzYW1lIGFzIHNjYWxlWC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNlZCBm
b3IgMkQgb3BlcmF0aW9ucwogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdo
IHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAvLyB0
aGUgc2NhbGUgdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSBzY2FsZSh4LHkseikgKiB0aGlz
KQotICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYLCBk
b3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViS2l0Q1NT
TWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVa
KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhpcyBtYXRyaXggcm90YXRlZCBieSB0aGUgcGFz
c2VkIHZhbHVlcy4KICAgICAvLyBJZiByb3RZIGFuZCByb3RaIGFyZSBOYU4sIHJvdGF0ZSBhYm91
dCBaIChyb3RYPTAsIHJvdGF0ZVk9MCwgcm90YXRlWj1yb3RYKS4KICAgICAvLyBPdGhlcndpc2Ug
dXNlIGEgcm90YXRpb24gdmFsdWUgb2YgMCBmb3IgYW55IHBhc3NlZCBOYU4uCiAgICAgLy8gT3Bl
cmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxp
ZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMgb24gdGhlIGxl
ZnQgKHJlc3VsdCA9IHJvdGF0aW9uKHgseSx6KSAqIHRoaXMpCi0gICAgUGFzc1JlZlB0cjxXZWJL
aXRDU1NNYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3Ra
KSBjb25zdDsKKyAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZG91YmxlIHJvdFgs
IGRvdWJsZSByb3RZLCBkb3VibGUgcm90WikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoaXMg
bWF0cml4IHJvdGF0ZWQgYWJvdXQgdGhlIHBhc3NlZCBheGlzIGJ5IHRoZSBwYXNzZWQgYW5nbGUu
CiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuIElmIHRoZSBheGlz
IGlzICgwLDAsMCkgdXNlIGEgdmFsdWUKICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFz
IHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRoCiAg
ICAgLy8gdGhlIHJvdGF0aW9uIHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gcm90YXRpb24o
eCx5LHosYW5nbGUpICogdGhpcykKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gcm90
YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkg
Y29uc3Q7CisgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gcm90YXRlQXhpc0FuZ2xlKGRvdWJs
ZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3Q7CiAKICAgICAvLyBS
ZXR1cm4gdGhpcyBtYXRyaXggc2tld2VkIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIHBhc3NlZCB2
YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuCiAgICAg
Ly8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11
bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSBza2V3IHZhbHVlcyBvbiB0aGUg
bGVmdCAocmVzdWx0ID0gc2tld1goYW5nbGUpICogdGhpcykKLSAgICBQYXNzUmVmUHRyPFdlYktp
dENTU01hdHJpeD4gc2tld1goZG91YmxlIGFuZ2xlKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViS2l0
Q1NTTWF0cml4PiBza2V3WChkb3VibGUgYW5nbGUpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRo
aXMgbWF0cml4IHNrZXdlZCBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgog
ICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLgogICAgIC8vIE9wZXJh
dGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVk
IGJ5IGEgbWF0cml4IHdpdGgKICAgICAvLyB0aGUgc2tldyB2YWx1ZXMgb24gdGhlIGxlZnQgKHJl
c3VsdCA9IHNrZXdZKGFuZ2xlKSAqIHRoaXMpCi0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRy
aXg+IHNrZXdZKGRvdWJsZSBhbmdsZSkgY29uc3Q7CisgICAgUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gc2tld1koZG91YmxlIGFuZ2xlKSBjb25zdDsKIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeDsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAppbmRleCA5MzUxOTNm
Njc3YTU4NmEzZjAyNjRlMWIyNDg2ODQ3ZGJiZjA1ZTAzLi42NzcyMTJlNDhjODRiMzI5ZTBkOTk5
ZTM3ODQ0NjA4ZjliOWIwMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5jcHAKQEAgLTg0LDkgKzg0LDkgQEAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6OldlYktpdENTU1RyYW5zZm9ybVZhbHVlKGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
JgogewogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWY8V2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU+IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKCp0aGlz
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoKnRo
aXMpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuaAppbmRleCBjMWM5MWNmN2JhM2RmYTRiZTZmMTZhOGM4N2ExY2UwOTk3ZjE3NDljLi43Y2Vj
MzUzNGJiM2JhYzM5OTJlYzY1OWFhMmY1YWZlMGQxOGQwMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAKICAgICBUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KICAgICAKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisgICAgUmVmPFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258693</attachid>
            <date>2015-08-10 20:29:53 -0700</date>
            <delta_ts>2015-08-11 18:13:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147821-20150811122938.patch</filename>
            <type>text/plain</type>
            <size>133405</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBmZmQ2OGQxZTIzOTkx
YjRlODhhMzhiNjM5MWVmNWY2NmEyNGNjNy4uNWNhMzQ1ZWM5NGY3ZWFjMGM4YTY1ZmYzMzY4MDVi
ZjE1YzA0MDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAxNS0wOC0xMCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHVz
ZSBvZiBQYXNzUmVmUHRyIGluIFdlYkNvcmUvY3NzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgUmVmUHRyIHdoZW4gcmV0dXJuaW5nIG51bGxwdHIg
b3IgUmVmUHRyLCBpZiBub3QsIHVzZSBSZWYuCisKKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlQ2FsYyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVCbGVuZEhhbGYpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ1NT
KToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FudmFzVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuaDoK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uT2Zmc2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJy
aW5nS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjb3VudGVyVG9DU1NWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjp6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0Fs
aWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERp
c3RyaWJ1dGlvbldpdGhPdmVyZmxvd0FsaWdubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUpOgorICAgICAgICAqIGNzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZCk6CisgICAgICAgICog
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgor
ICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0dy
YWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGllbnRXaXRoU3R5
bGVzUmVzb2x2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
SW1hZ2VTZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0
VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUtleWZyYW1lUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9u
dEZhY2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsaWRQcmlt
aXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbnRlbnREaXN0cmli
dXRpb25PdmVyZmxvd1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVBvc2l0aW9uWCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUG9zaXRpb25ZKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VBbmltYXRpb25EZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VBbmltYXRpb25EdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlQW5pbWF0aW9uRmlsbE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJz
ZUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VBbmltYXRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25QbGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFu
aW1hdGlvblRyaWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1h
dGlvblByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3Jp
ZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdyaWRNaXNzaW5nR3JpZFBvc2l0aW9uVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja0xpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1NpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdyaWRCcmVhZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VHcmlkQXV0b0Zsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VDb3VudGVyQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlSW5zZXRSb3VuZGVkQ29ybmVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQmFzaWNTaGFwZUluc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VTaGFwZVJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQmFzaWNT
aGFwZUNpcmNsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFw
ZUVsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVQ
b2x5Z29uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlQW5k
T3JCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNoYXBlUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNsaXBQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VJbWFnZVJlc29sdXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUltYWdlU2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VUZXh0SW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3Jl
YXRlSW1wb3J0UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZU1lZGlh
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUVtcHR5TWVkaWFSdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3VwcG9ydHNSdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cG9wU3VwcG9ydHNSdWxlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lc1J1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVJl
Z2lvblJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZSk6
CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y2xvbmVGb3JD
U1NPTSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgICogY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpydWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNoZWV0Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjpzdHlsZUltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1h
cC5oOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZTo6Y2xvbmVGb3JDU1NPTSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAg
ICogY3NzL0NTU1ZhbHVlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6
OmNsb25lRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAg
KiBjc3MvTWVkaWFMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0Ojpjb3B5
KToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFRdWVyeU1hdGNoZXI6Om1hdGNoTWVkaWEpOgorICAgICAgICAqIGNzcy9NZWRpYVF1
ZXJ5TWF0Y2hlci5oOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKToKKyAgICAgICAg
KiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogY3NzL1JH
QkNvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJHQkNvbG9yOjpyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UkdCQ29sb3I6OmdyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkNvbG9yOjpi
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkNvbG9yOjphbHBoYSk6CisgICAgICAgICogY3Nz
L1JHQkNvbG9yLmg6CisgICAgICAgICogY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGp1c3RTVkdQYWlu
dEZvckN1cnJlbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpzdmdQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdTdHJva2VEYXNoYXJyYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1BhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlUGFpbnRPcmRlcik6CisgICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU0ZpbHRlclZhbHVlOjpjbG9uZUZv
ckNTU09NKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAg
KiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01h
dHJpeDo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjppbnZl
cnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NT
TWF0cml4Ojpyb3RhdGVBeGlzQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0
cml4Ojpza2V3WCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKToK
KyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4Lmg6CisgICAgICAgICogY3NzL1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaDoKKwogMjAxNS0wOC0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIFRlc3RXZWJLaXRBUEkgd2l0aCBDTWFrZSBvbiBX
aW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRleCBhNDY4Mzg2YWRh
ODM3ZTU0MGYzYzM5OTM1MTNlMWI5NDk2ZWJhNWY3Li5iNDQwNGMzMTQ1NTNlNWNjZTQ1NzMwYTQ1
Y2MyOGViMGEwY2IwYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNT
aGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChjb25z
dCBQYWlyJiBvZmZzZXQsIGNvbnN0IFBhaXImIG90aGVyKQogICAgIHJldHVybiBvZmZzZXQuY3Nz
VGV4dCgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRT
ZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBv
ZmZzZXQsIENTU1ZhbHVlSUQgZGVmYXVsdFNpZGUpCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IG9mZnNldCwgQ1NTVmFsdWVJRCBkZWZhdWx0U2lkZSkKIHsKICAgICBDU1NWYWx1
ZUlEIHNpZGUgPSBkZWZhdWx0U2lkZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGFt
b3VudDsKQEAgLTExMCw4ICsxMTAsOCBAQCBzdGF0aWMgU3RyaW5nIGJ1aWxkQ2lyY2xlU3RyaW5n
KGNvbnN0IFN0cmluZyYgcmFkaXVzLCBjb25zdCBTdHJpbmcmIGNlbnRlclgsIGNvbgogCiBTdHJp
bmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1ggPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9u
T2Zmc2V0KG1fY2VudGVyWCwgQ1NTVmFsdWVMZWZ0KTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IG5vcm1hbGl6ZWRDWSA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9j
ZW50ZXJZLCBDU1NWYWx1ZVRvcCk7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxp
emVkQ1ggPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWCwgQ1NTVmFs
dWVMZWZ0KTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWSA9IGJ1aWxk
U2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJZLCBDU1NWYWx1ZVRvcCk7CiAKICAg
ICBTdHJpbmcgcmFkaXVzOwogICAgIGlmIChtX3JhZGl1cyAmJiBtX3JhZGl1cy0+Z2V0VmFsdWVJ
RCgpICE9IENTU1ZhbHVlQ2xvc2VzdFNpZGUpCkBAIC0xNzMsOCArMTczLDggQEAgc3RhdGljIFN0
cmluZyBidWlsZEVsbGlwc2VTdHJpbmcoY29uc3QgU3RyaW5nJiByYWRpdXNYLCBjb25zdCBTdHJp
bmcmIHJhZGl1c1ksIGMKIAogU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWCA9IGJ1
aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQobV9jZW50ZXJYLCBDU1NWYWx1ZUxlZnQpOwot
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9ybWFsaXplZENZID0gYnVpbGRTZXJpYWxp
emFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclksIENTU1ZhbHVlVG9wKTsKKyAgICBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IG5vcm1hbGl6ZWRDWCA9IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25P
ZmZzZXQobV9jZW50ZXJYLCBDU1NWYWx1ZUxlZnQpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gbm9ybWFsaXplZENZID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRl
clksIENTU1ZhbHVlVG9wKTsKIAogICAgIFN0cmluZyByYWRpdXNYOwogICAgIFN0cmluZyByYWRp
dXNZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCBiN2I0NmRiYzQxMjdhOGUw
MzQ1N2Y4ODhiZjFiYzY5MWZjYmViYjQzLi44MTczM2QyMWZmZGQ5YTJiNDBhYjAyNGFhZWIxNDA3
NDFlOTZiYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMTkyLDggKzE5
Miw4IEBAIHB1YmxpYzoKICAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHkpOwogICAgIH0KIAotICAg
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdldFhBdCh1bnNpZ25lZCBpKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlcy5hdChpICogMik7IH0KLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBnZXRZQXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuYXQoaSAq
IDIgKyAxKTsgfQorICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2V0WEF0KHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmF0KGkgKiAyKTsgfQorICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gZ2V0WUF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVz
LmF0KGkgKiAyICsgMSk7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPj4mIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzOyB9CiAKICAgICB2b2lkIHNl
dFdpbmRSdWxlKFdpbmRSdWxlIHcpIHsgbV93aW5kUnVsZSA9IHc7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA0YWVhYTcxMGJiYWU5Y2VkYTUzMWE0
ZTFmNWQ4YzIyMmE1ODk5Y2ZmLi4zNjE0MmYxYmYwYmMwMjQ4MDc5M2I0MDlhY2MwN2M2OWE4YzM3
NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC00
Nyw4ICs0Nyw4IEBAIGVudW0gUGFyc2VTdGF0ZSB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVDU1MoY29uc3Qg
Q2FsY0V4cHJlc3Npb25Ob2RlJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKLXN0YXRpYyBQYXNzUmVm
UHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ1NTKGNvbnN0IExlbmd0aCYsIGNvbnN0
IFJlbmRlclN0eWxlJik7CitzdGF0aWMgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3Jl
YXRlQ1NTKGNvbnN0IENhbGNFeHByZXNzaW9uTm9kZSYsIGNvbnN0IFJlbmRlclN0eWxlJik7Citz
dGF0aWMgUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ1NTKGNvbnN0IExlbmd0
aCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKIHN0YXRpYyBDYWxjdWxhdGlvbkNhdGVnb3J5IHVu
aXRDYXRlZ29yeShDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpCiB7CkBAIC0yMDMs
NyArMjAzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDYWxj
UHJpbWl0aXZlVmFsdWUodmFsdWUsIGlzSW50ZWdlcikpOwogICAgIH0KIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU0NhbGNQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGRvdWJsZSB2YWx1ZSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlLCBib29sIGlzSW50ZWdlcikKKyAgICBzdGF0
aWMgUmVmUHRyPENTU0NhbGNQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGRvdWJsZSB2YWx1ZSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlLCBib29sIGlzSW50ZWdlcikKICAgICB7CiAg
ICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSB8fCBzdGQ6OmlzaW5mKHZhbHVlKSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0ludGVnZXJSZXN1bHQoQ2FsY09wZXJhdG9yIG9wLCBjb25zdCBDU1NDYWxjRXhwcmVz
c2lvbk5vZGUmCiBjbGFzcyBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENT
U0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gY3JlYXRl
KENhbGNPcGVyYXRvciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRT
aWRlLCBQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAgIHN0
YXRpYyBSZWZQdHI8Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gY3JlYXRlKENhbGNPcGVyYXRvciBv
cCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVmUHRy
PENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGxlZnRTaWRlLT5jYXRlZ29yeSgpIDwgQ2FsY090aGVyKTsKICAgICAgICAgQVNTRVJUKHJpZ2h0
U2lkZS0+Y2F0ZWdvcnkoKSA8IENhbGNPdGhlcik7CkBAIC0zNjEsNyArMzYxLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0NhbGNCaW5hcnlPcGVyYXRpb24obmV3
Q2F0ZWdvcnksIG9wLCBsZWZ0U2lkZSwgcmlnaHRTaWRlKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlmaWVkKENhbGNP
cGVyYXRvciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQ
YXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQorICAgIHN0YXRpYyBS
ZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBjcmVhdGVTaW1wbGlmaWVkKENhbGNPcGVyYXRv
ciBvcCwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNzUmVm
UHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlKQogICAgIHsKICAgICAgICAgQ2Fs
Y3VsYXRpb25DYXRlZ29yeSBsZWZ0Q2F0ZWdvcnkgPSBsZWZ0U2lkZS0+Y2F0ZWdvcnkoKTsKICAg
ICAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSByaWdodENhdGVnb3J5ID0gcmlnaHRTaWRlLT5jYXRl
Z29yeSgpOwpAQCAtNTcxLDcgKzU3MSw3IEBAIHN0YXRpYyBQYXJzZVN0YXRlIGNoZWNrRGVwdGhB
bmRJbmRleChpbnQqIGRlcHRoLCB1bnNpZ25lZCBpbmRleCwgQ1NTUGFyc2VyVmFsdWVMCiAKIGNs
YXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlciB7CiBwdWJsaWM6Ci0gICAgUGFzc1JlZlB0
cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHBhcnNlQ2FsYyhDU1NQYXJzZXJWYWx1ZUxpc3QqIHRv
a2VucykKKyAgICBSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBwYXJzZUNhbGMoQ1NTUGFy
c2VyVmFsdWVMaXN0KiB0b2tlbnMpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgICAgIFZhbHVlIHJlc3VsdDsKQEAgLTY5NCwxMyArNjk0LDEzIEBAIHByaXZhdGU6CiAg
ICAgfQogfTsKIAotc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPENTU0NhbGNCaW5hcnlPcGVyYXRp
b24+IGNyZWF0ZUJsZW5kSGFsZihjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBmbG9hdCBwcm9ncmVzcykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPENTU0NhbGNC
aW5hcnlPcGVyYXRpb24+IGNyZWF0ZUJsZW5kSGFsZihjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBmbG9hdCBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gQ1NT
Q2FsY0JpbmFyeU9wZXJhdGlvbjo6Y3JlYXRlKENhbGNNdWx0aXBseSwgY3JlYXRlQ1NTKGxlbmd0
aCwgc3R5bGUpLAogICAgICAgICBDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHByb2dyZXNzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UiksICFwcm9ncmVzcyB8fCBwcm9ncmVzcyA9PSAxKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRy
PENTU0NhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ1NTKGNvbnN0IENhbGNFeHByZXNzaW9uTm9k
ZSYgbm9kZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZlB0cjxDU1NDYWxj
RXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBDYWxjRXhwcmVzc2lvbk5vZGUmIG5vZGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUudHlwZSgpKSB7
CiAgICAgY2FzZSBDYWxjRXhwcmVzc2lvbk5vZGVOdW1iZXI6IHsKQEAgLTcyNyw3ICs3MjcsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25z
dCBDYWxjRXhwcmVzc2lvbk5vZGUmIG5vZAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0
aWMgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBMZW5n
dGgmIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RhdGljIFJlZlB0cjxDU1ND
YWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNTUyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewogICAg
IGNhc2UgUGVyY2VudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCmluZGV4IGVj
NTIyMjlhYjBlYzdjNTZiMTVmMzI0NTkxZTIyNjljZWYyZDFkNzIuLjRiMjAxOTMxMzExZWIyNzI3
YzlhZjZmMmMwMDgzYTliMGM3MmY5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYW52YXNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVl
LmNwcApAQCAtNzksMTIgKzc5LDEyIEBAIEhUTUxDYW52YXNFbGVtZW50KiBDU1NDYW52YXNWYWx1
ZTo6ZWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIG1fZWxlbWVudDsKIH0K
IAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIC8qc2l6ZSovKQorUmVmUHRyPEltYWdlPiBDU1ND
YW52YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6
ZSYgLypzaXplKi8pCiB7CiAgICAgQVNTRVJUKGNsaWVudHMoKS5jb250YWlucyhyZW5kZXJlcikp
OwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudChyZW5kZXJl
ci0+ZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5idWZmZXIoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBl
bGVtZW50LT5jb3BpZWRJbWFnZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FudmFzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5o
CmluZGV4IDQ1Yjc5YTlmZGYwYjIwNDUzYzQ4OTdjNDE4YzI0OWU0MmI1OThmZjAuLmM5NjgwYTg5
YWUxM2U2ZGU4NWYxMTg3YzM2MTEyMTQ2NTFmYmE0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52
YXNWYWx1ZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21D
U1NUZXh0KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVt
ZW50KiwgY29uc3QgRmxvYXRTaXplJik7CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICBGbG9hdFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVs
ZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCAyZWM0NDQyNWFjMDVjYzQ4MTkwYjY5MGQ3N2Q5NDMwYTY5OWVj
MjEwLi4wMzliODE4NGU0ZDc1NmVhMjBkYjUxY2EyNjEzYTk0ZTY0YTJkZDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAt
Njg5LDcgKzY4OSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQb3NpdGlvbkxp
c3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvCiAgICAgcmV0dXJuIHBvc2l0
aW9uTGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0
VmFsdWUoUmVuZGVyU3R5bGUmIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlJiBzdHls
ZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIExlbmd0aCBsZW5ndGg7CiAgICAg
c3dpdGNoIChwcm9wZXJ0eUlEKSB7CkBAIC03MjYsNyArNzI2LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHBvc2l0aW9uT2Zmc2V0VmFsdWUoUmVuZGVyU3R5bGUmIHN0eWxlLCBDU1NQ
cm9wZXJ0eUkKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlQXV0byk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSZW5kZXJTdHlsZSog
c3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvcikgY29uc3QKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yKSBjb25zdAogewogICAgIC8vIFRoaXMg
ZnVuY3Rpb24gZG9lcyBOT1QgbG9vayBhdCB2aXNpdGVkIGluZm9ybWF0aW9uLCBzbyB0aGF0IGNv
bXB1dGVkIHN0eWxlIGRvZXNuJ3QgZXhwb3NlIHRoYXQuCiAgICAgaWYgKCFjb2xvci5pc1ZhbGlk
KCkpCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCB2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6c2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBlYyA9
IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Rm9udFNpemVDU1NWYWx1ZVByZWZl
cnJpbmdLZXl3b3JkKCkgY29uc3QKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6Z2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3JkKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fbm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTIy
LDcgKzE1MjIsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gY29udGVudFRvQ1NTVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKIHsKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBtYXAgPSBz
dHlsZS0+Y291bnRlckRpcmVjdGl2ZXMoKTsKICAgICBpZiAoIW1hcCkKQEAgLTE2MzEsNyArMTYz
MSw3IEBAIHR5cGVkZWYgY29uc3QgTGVuZ3RoJiAoUmVuZGVyU3R5bGU6OipSZW5kZXJTdHlsZUxl
bmd0aEdldHRlcikoKSBjb25zdDsKIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyQm94TW9kZWxP
YmplY3Q6OipSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyKSgpIGNvbnN0OwogCiB0ZW1w
bGF0ZTxSZW5kZXJTdHlsZUxlbmd0aEdldHRlciBsZW5ndGhHZXR0ZXIsIFJlbmRlckJveENvbXB1
dGVkQ1NTVmFsdWVHZXR0ZXIgY29tcHV0ZWRDU1NWYWx1ZUdldHRlcj4KLWlubGluZSBQYXNzUmVm
UHRyPENTU1ZhbHVlPiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlKFJlbmRl
clN0eWxlJiBzdHlsZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2lubGluZSBSZWZQdHI8Q1NT
VmFsdWU+IHpvb21BZGp1c3RlZFBhZGRpbmdPck1hcmdpblBpeGVsVmFsdWUoUmVuZGVyU3R5bGUm
IHN0eWxlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIExlbmd0aCB1bnpvb216ZWRM
ZW5ndGggPSAoc3R5bGUuKmxlbmd0aEdldHRlcikoKTsKICAgICBpZiAoIWlzPFJlbmRlckJveD4o
cmVuZGVyZXIpIHx8IHVuem9vbXplZExlbmd0aC5pc0ZpeGVkKCkpCkBAIC0xNzQ5LDcgKzE3NDks
NyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlQ29udGVudEFsaWdubWVudEF1dG8oQ29udGVudFBvc2l0
aW9uJiBwb3NpdGlvbiwgQ29udGVudERpc3RyaQogICAgICAgICBwb3NpdGlvbiA9IENvbnRlbnRQ
b3NpdGlvblN0YXJ0OwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENvbXB1dGVkU3R5bGVFeHRyYWN0b3IobV9ub2RlLCBtX2FsbG93VmlzaXRlZFN0eWxl
LCBtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpLnByb3BlcnR5VmFsdWUocHJvcGVydHlJRCwgdXBk
YXRlTGF5b3V0KTsKIH0KQEAgLTE3ODgsNyArMTc4OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB1
cGRhdGVTdHlsZUlmTmVlZGVkRm9yTm9kZShjb25zdCBOb2RlJiBub2RlKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNvbXB1dGVS
ZW5kZXJTdHlsZUZvclByb3BlcnR5KE5vZGUqIHN0eWxlZE5vZGUsIFBzZXVkb0lkIHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3N0YXRpYyBpbmxpbmUg
UmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShOb2RlKiBz
dHlsZWROb2RlLCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyLCBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0eWxlZE5vZGUt
PnJlbmRlcmVyKCk7CiAKQEAgLTE3OTgsNyArMTc5OCw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gY29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkoTm9kZSogc3R5
bGVkCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWNoZWQgcHNldWRvIHN0eWxlIHdpbGwg
b25seSBleGlzdCBpZiB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIHJ1biBhdCBsZWFzdCBvbmNlLgog
ICAgICAgICAgICAgcmV0dXJuIHN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9FbGVt
ZW50U3BlY2lmaWVyKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgp
OworICAgICAgICByZXR1cm4gc3R5bGU7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0eWxlZE5vZGUt
PmNvbXB1dGVkU3R5bGUoc3R5bGVkTm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkgPyBOT1BTRVVETyA6
IHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOwpAQCAtMTgyOSw3ICsxODI5LDcgQEAgc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gc2hhcGVQcm9wZXJ0eVZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgU2hhcGVWYWwKIH0KICNlbmRpZgogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZUxp
c3Q+IHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KEl0ZW1Qb3NpdGlv
biBpdGVtUG9zaXRpb24sIE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93QWxpZ25tZW50LCBJdGVt
UG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2
YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChJdGVtUG9zaXRpb24gaXRl
bVBvc2l0aW9uLCBPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvd0FsaWdubWVudCwgSXRlbVBvc2l0
aW9uVHlwZSBwb3NpdGlvblR5cGUpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcmVzdWx0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGlmIChwb3NpdGlv
blR5cGUgPT0gTGVnYWN5UG9zaXRpb24pCkBAIC0xODM4LDEwICsxODM4LDEwIEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVGb3JJdGVtUG9zaXRpb25XaXRoT3ZlcmZsb3dB
bGlnbm1lbnQoSXRlbVBvCiAgICAgaWYgKG92ZXJmbG93QWxpZ25tZW50ICE9IE92ZXJmbG93QWxp
Z25tZW50RGVmYXVsdCkKICAgICAgICAgcmVzdWx0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUob3ZlcmZsb3dBbGlnbm1lbnQpKTsKICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgo
KSA8PSAyKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlRm9yQ29udGVudFBv
c2l0aW9uQW5kRGlzdHJpYnV0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KENvbnRlbnRQb3NpdGlv
biBwb3NpdGlvbiwgQ29udGVudERpc3RyaWJ1dGlvblR5cGUgZGlzdHJpYnV0aW9uLCBPdmVyZmxv
d0FsaWdubWVudCBvdmVyZmxvd0FsaWdubWVudCkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiB2YWx1ZUZvckNvbnRlbnRQb3NpdGlvbkFuZERpc3RyaWJ1dGlvbldpdGhPdmVyZmxvd0FsaWdu
bWVudChDb250ZW50UG9zaXRpb24gcG9zaXRpb24sIENvbnRlbnREaXN0cmlidXRpb25UeXBlIGRp
c3RyaWJ1dGlvbiwgT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3dBbGlnbm1lbnQpCiB7CiAgICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gcmVzdWx0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNl
cGFyYXRlZCgpOwogICAgIGlmIChkaXN0cmlidXRpb24gIT0gQ29udGVudERpc3RyaWJ1dGlvbkRl
ZmF1bHQpCkBAIC0xODUyLDEwICsxODUyLDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVGb3JDb250ZW50UG9zaXRpb25BbmREaXN0cmlidXRpb25XaXRoT3ZlcmZsCiAg
ICAgICAgIHJlc3VsdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUob3ZlcmZsb3dB
bGlnbm1lbnQpKTsKICAgICBBU1NFUlQocmVzdWx0LT5sZW5ndGgoKSA+IDApOwogICAgIEFTU0VS
VChyZXN1bHQtPmxlbmd0aCgpIDw9IDMpOwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBFVXBk
YXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVV
cGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIE5vZGUqIHN0eWxlZE5vZGUg
PSB0aGlzLT5zdHlsZWROb2RlKCk7CiAgICAgaWYgKCFzdHlsZWROb2RlKQpAQCAtMTkyNyw3ICsx
OTI3LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJv
cGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKQEAgLTE5NDAsNyArMTk0MCw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciog
Y3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4
dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChmaWxsU2l6ZVRvQ1NTVmFsdWUoY3Vy
ckxheWVyLT5zaXplKCksICpzdHlsZSkpOwogCi0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxl
YXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXQ6IHsKQEAgLTE5NTIsNyArMTk1Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5
ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChmaWxsUmVwZWF0VG9DU1NWYWx1ZShjdXJyTGF5ZXItPnJlcGVh
dFgoKSwgY3VyckxheWVyLT5yZXBlYXRZKCkpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBlOiB7CiAgICAgICAgICAgICBjb25z
dCBGaWxsTGF5ZXIqIGxheWVycyA9IHN0eWxlLT5tYXNrTGF5ZXJzKCk7CkBAIC0xOTY3LDcgKzE5
NjcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgZm9yIChjb25zdCBG
aWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJy
TGF5ZXItPm5leHQoKSkKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZmlsbFNvdXJjZVR5
cGVUb0NTU1ZhbHVlKGN1cnJMYXllci0+bWFza1NvdXJjZVR5cGUoKSkpOwogCi0gICAgICAgICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZToK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6IHsKQEAgLTE5Nzks
NyArMTk3OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9
IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2woKS5jcmVhdGVWYWx1ZShjdXJyTGF5ZXItPmNvbXBvc2l0ZSgpKSk7CiAKLSAgICAgICAg
ICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDogewog
ICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBzdHlsZS0+YmFja2dyb3VuZExh
eWVycygpOwpAQCAtMTk5MCw3ICsxOTkwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAg
ICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJM
YXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGN1cnJMYXllci0+YXR0YWNobWVu
dCgpKSk7CiAKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAg
IHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ2xpcDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW46CkBAIC0y
MDExLDcgKzIwMTEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShib3gpKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAg
cmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvbjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjog
ewpAQCAtMjAyMiw3ICsyMDIyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVy
ID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAg
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjcmVhdGVQb3NpdGlvbkxpc3RGb3JMYXllcihwcm9w
ZXJ0eUlELCBjdXJyTGF5ZXIsICpzdHlsZSkpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25YOiB7CkBAIC0yMDM0LDcgKzIwMzQsNyBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydAogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXll
ciA9IGxheWVyczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoY3Vy
ckxheWVyLT54UG9zaXRpb24oKSkpOwogCi0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblk6IHsKQEAgLTIwNDYsNyArMjA0Niw3IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0g
bGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQogICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShjdXJyTGF5
ZXItPnlQb3NpdGlvbigpKSk7CiAKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
KyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJDb2xsYXBzZToKICAgICAgICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFw
c2UoKSkKQEAgLTIwNTYsNyArMjA1Niw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUoc3R5bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCksICpzdHlsZSkpOwogICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnZlcnRp
Y2FsQm9yZGVyU3BhY2luZygpLCAqc3R5bGUpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJl
bGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZzoKICAgICAgICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3Bh
Y2luZygpLCAqc3R5bGUpOwpAQCAtMjE4MSw3ICsyMTgxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnQKICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1
ZShzdHlsZS0+Y3Vyc29yKCkpOwogICAgICAgICAgICAgaWYgKGxpc3QpIHsKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoV1RGOjptb3ZlKHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSh2YWx1ZSk7CiAgICAgICAgIH0K
QEAgLTIyNDksNyArMjI0OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAg
ICBjb21wdXRlZEZvbnQtPnNpemUgPSBmb250U2l6ZUZyb21TdHlsZSgqc3R5bGUpOwogICAgICAg
ICAgICAgY29tcHV0ZWRGb250LT5saW5lSGVpZ2h0ID0gbGluZUhlaWdodEZyb21TdHlsZSgqc3R5
bGUpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT5mYW1pbHkgPSBmb250RmFtaWx5RnJvbVN0
eWxlKHN0eWxlLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiBjb21wdXRlZEZvbnQucmVsZWFz
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkRm9udDsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewogICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gZm9udEZhbWlseUxpc3QgPSBmb250RmFtaWx5RnJvbVN0eWxlKHN0eWxlLmdldCgp
KTsKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAg
ICAgICAvLyBOT1RFOiBHZWNrbyBhbHdheXMgcmV0dXJucyB0aGlzIGFzIGEgY29tbWEtc2VwYXJh
dGVkIENTU1ByaW1pdGl2ZVZhbHVlIHN0cmluZy4KICAgICAgICAgICAgIGlmIChmb250RmFtaWx5
TGlzdC0+bGVuZ3RoKCkgPT0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUxp
c3QtPml0ZW0oMCk7Ci0gICAgICAgICAgICByZXR1cm4gZm9udEZhbWlseUxpc3QucmVsZWFzZSgp
OworICAgICAgICAgICAgcmV0dXJuIGZvbnRGYW1pbHlMaXN0OwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKICAgICAgICAgICAgIHJldHVybiBmb250U2l6ZUZy
b21TdHlsZSgqc3R5bGUpOwpAQCAtMjI3OCw3ICsyMjc4LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnQKICAgICAgICAgICAgICAgICBjb25zdCBGb250RmVhdHVyZSYgZmVhdHVyZSA9IGZlYXR1
cmVTZXR0aW5ncy0+YXQoaSk7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRG
ZWF0dXJlVmFsdWU6OmNyZWF0ZShmZWF0dXJlLnRhZygpLCBmZWF0dXJlLnZhbHVlKCkpKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRBdXRvRmxvdzogewpAQCAtMjI5Miw3
ICsyMjkyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIGlmIChzdHls
ZS0+aXNHcmlkQXV0b0Zsb3dBbGdvcml0aG1EZW5zZSgpKQogICAgICAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVEZW5z
ZSkpOwogCi0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICBy
ZXR1cm4gbGlzdDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNwZWNzIG1lbnRpb24gdGhhdCBn
ZXRDb21wdXRlZFN0eWxlKCkgc2hvdWxkIHJldHVybiB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUgcHJv
cGVydHkgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQKQEAgLTI1NTgsNyArMjU1OCw3IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRF
bXBoYXNpc0ZpbGwoKSkpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+dGV4dEVtcGhhc2lzTWFyaygpKSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBsaXN0
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dEluZGVudDogewpAQCAtMjU3NSwxMCArMjU3NSwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydAogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlV2Via2l0RWFjaExpbmUpKTsKICAgICAgICAgICAg
ICAgICBpZiAoc3R5bGUtPnRleHRJbmRlbnRUeXBlKCkgPT0gVGV4dEluZGVudEhhbmdpbmcpCiAg
ICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVXZWJraXRIYW5naW5nKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAg
ICAgICAgfQogI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gdGV4dEluZGVudC5yZWxlYXNlKCk7
CisgICAgICAgICAgICByZXR1cm4gdGV4dEluZGVudDsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dFNoYWRvdzoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvclNoYWRv
dyhzdHlsZS0+dGV4dFNoYWRvdygpLCBwcm9wZXJ0eUlELCAqc3R5bGUpOwpAQCAtMjc1MSw3ICsy
NzUxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJv
cGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uRHVyYXRpb246CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbjoKQEAgLTI3NzksNyArMjc3OSw3
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpKTsKLSAgICAgICAgICAgIHJldHVybiBs
aXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudDoKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB7CkBAIC0yNzk1LDcg
KzI3OTUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShBbmltYXRpb246OmluaXRpYWxJdGVyYXRpb25Db3VudCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25OYW1lOiB7CkBAIC0yODA2LDcgKzI4MDYsNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydAogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCku
Y3JlYXRlVmFsdWUodC0+YW5pbWF0aW9uKGkpLm5hbWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7
Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4g
bGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0
YXRlOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOiB7
CkBAIC0yODIyLDcgKzI4MjIsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSdW5uaW5nKSk7
Ci0gICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4g
bGlzdDsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uVGltaW5n
RnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdG
dW5jdGlvbjoKQEAgLTI5MDYsNyArMjkwNiw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5n
dGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCAqc3R5bGUpKTsKIAogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJu
IGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVy
aW5nOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVlVmlzdWFsIDogQ1NTVmFsdWVMb2dp
Y2FsKTsKQEAgLTI5NjEsNyArMjk2MSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAg
ICAgICAgICAgICAgaWYgKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKICAgICAgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblooKSwgKnN0eWxlKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGU6CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKQEAgLTI5OTIsNyArMjk5Miw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChj
c3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShhbmltYXRpb24uZGVsYXkoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TKSk7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zTGlzdC0+YXBw
ZW5kKGxpc3QucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cmFuc2l0aW9uc0xpc3QucmVsZWFzZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cmFuc2l0aW9uc0xpc3Q7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CkBAIC0zMDAxLDcgKzMwMDEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKEFuaW1hdGlv
bjo6aW5pdGlhbER1cmF0aW9uKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwogICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQW5pbWF0aW9uOjpp
bml0aWFsVGltaW5nRnVuY3Rpb24oKS5nZXQoKSkpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKEFuaW1hdGlvbjo6aW5pdGlhbERlbGF5KCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFz
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUoc3R5bGUtPnBvaW50ZXJFdmVudHMoKSk7CkBAIC0zMDQ4LDcgKzMwNDgs
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGJveE9wZXJhdGlvbiA9IGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9u
KTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUoYm94T3BlcmF0aW9uLnJlZmVyZW5jZUJveCgpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAg
ICAgICAgfQogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZsb3dJbnRvOgpAQCAtMzEwMiw3ICszMTAyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnQKICAgICAgICAgICAgICAgICBpZiAoIWNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZT4o
dmFsdWUsIHByb3BlcnR5VmFsdWUocHJvcGVydHksIERvTm90VXBkYXRlTGF5b3V0KSkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAgICAgICAg
ICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3Jk
ZXJCb3R0b21TaG9ydGhhbmQoKSk7CkBAIC0zMzY5LDE3ICszMzY5LDE3IEBAIFJlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjb3B5UHJvcGVydGllcygp
IGNvbnN0CiAgICAgcmV0dXJuIGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29tcHV0ZWRQcm9wZXJ0aWVz
LCBudW1Db21wdXRlZFByb3BlcnRpZXMpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QK
K1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBzaG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0sIERv
Tm90VXBkYXRlTGF5b3V0KTsKICAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgIH0KLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxp
c3Q7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
OjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKK1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkZXNTaG9ydGhhbmQo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKSBjb25zdAogewogICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAgICAgLy8gQXNzdW1lIHRoZSBwcm9wZXJ0aWVzIGFyZSBpbiB0aGUgdXN1YWwgb3Jk
ZXIgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LgpAQCAtMzQwNCwxNyArMzQwNCwxNyBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Q1NTUHJvcGVy
dHlWYWx1ZXNGb3JTaWRlc1NobwogICAgIGlmIChzaG93TGVmdCkKICAgICAgICAgbGlzdC0+YXBw
ZW5kKGxlZnRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yR3JpZFNob3J0aGFu
ZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CitSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5k
KSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG9y
dGhhbmQubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0g
cHJvcGVydHlWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBEb05vdFVwZGF0ZUxheW91
dCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9
Ci0gICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBsaXN0OwogfQogCiBSZWY8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y29weVByb3Bl
cnRpZXNJblNldChjb25zdCBDU1NQcm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29u
c3QKQEAgLTM0MzQsNyArMzQzNCw3IEBAIENTU1J1bGUqIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6cGFyZW50UnVsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lKQogewogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1By
b3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCkBAIC0zNDc4LDcg
KzM0NzgsNyBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9w
ZXJ0eShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJgogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KICAgICAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkK
K1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIHJldHVy
biBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogfQpAQCAtMzQ5NCw3ICszNDk0LDcg
QEAgYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwo
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5k
U2hvcnRoYW5kVmFsdWUoKSBjb25zdAorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCkgY29uc3QKIHsKICAgICBz
dGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0b3Jb
NV0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRJ
bWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgIApAQCAtMzUwNSw3ICszNTA1LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9y
dGhhbmRWYWx1ZSgpIGMKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOwogICAgIGxpc3QtPmFwcGVuZCgqZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBlcmF0b3IpKSk7
CiAgICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3Bl
cnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQsIHByb3Bl
cnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yKSkpOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gbGlzdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGU5NjZk
MjQzYWYyYmE4MDNjZWQ4ZGVmZDZhYmEwOTAyNDQ1Njc0MzYuLjZlOTFjOTNkYjQzODI0NmFhOTFk
YTIxYzE1M2RkZjQwM2FmODU5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTQ5LDEyICs0OSwxMiBAQCBjbGFzcyBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yIHsKIHB1YmxpYzoKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKFBh
c3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQg
PSBOT1BTRVVETyk7CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQpIGNvbnN0OworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0
ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKIAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBIVE1M
IGVkaXRpbmcuCiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVz
SW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Owog
ICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0Owot
ICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGdldEZvbnRTaXplQ1NTVmFsdWVQcmVm
ZXJyaW5nS2V5d29yZCgpIGNvbnN0OworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2V0
Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3JkKCkgY29uc3Q7CiAgICAgYm9vbCB1c2VG
aXhlZEZvbnREZWZhdWx0U2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgcHJvcGVydHlNYXRjaGVzKENT
U1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlKikgY29uc3Q7CiAKQEAgLTY3LDE2ICs2NywxNiBA
QCBwcml2YXRlOgogICAgIC8vIG9uIEVsZW1lbnRzLCBidXQgcmlnaHQgbm93IGVkaXRpbmcgY3Jl
YXRlcyB0aGVzZSBmb3IgdGV4dCBub2Rlcy4gV2Ugc2hvdWxkIGZpeCB0aGF0LgogICAgIE5vZGUq
IHN0eWxlZE5vZGUoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHN2Z1Byb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxTVkdQYWludD4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUGFzc1JlZlB0cjxT
VkdQYWludD4sIFJlbmRlclN0eWxlKikgY29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBzdmdQ
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OworICAgIFJl
ZlB0cjxTVkdQYWludD4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUGFzc1JlZlB0cjxT
VkdQYWludD4sIFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICBzdGF0aWMgUmVmPENTU1ZhbHVl
PiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBBZGp1c3RQaXhlbFZhbHVlc0ZvckNvbXB1dGVkU3R5bGUgPSBBZGp1c3RQ
aXhlbFZhbHVlcyk7Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENv
bG9yT3JWYWxpZENvbG9yKFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKKyAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSZW5kZXJT
dHlsZSosIGNvbnN0IENvbG9yJikgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldEJhY2tn
cm91bmRTaG9ydGhhbmRWYWx1ZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3Bl
cnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJikgY29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1
ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7
CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCkg
Y29uc3Q7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JH
cmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKIAogICAg
IFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1ZG9FbGVtZW50U3BlY2lm
aWVyOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBDU1NSdWxlKiBw
YXJlbnRSdWxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFBy
b3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0
eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFN0cmluZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFuZChjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGU7CkBAIC0xMTIsMTIgKzExMiwxMiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNv
bnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlE
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5n
IGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQpIGNvbnN0Owor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlELCBF
VXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKIAogICAgIFJlZlB0cjxOb2RlPiBt
X25vZGU7CiAgICAgUHNldWRvSWQgbV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKaW5kZXggZDA2OWQyZTEyYjhlMGM3Y2QxNzli
ZmEyYzg3YTc5NDE4YTIzM2RiMi4uM2M3MTdjYjE1Yzg5OGEzYzUwNGVkNjQ2Mjc3MzU3NDkyNWQ3
Nzk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCkBAIC0xNDMs
NyArMTQzLDcgQEAgdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRS
ZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICBtX2Nyb3NzZmFkZVN1Ymlt
YWdlT2JzZXJ2ZXIuc2V0UmVhZHkodHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IENTU0Ny
b3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRT
aXplJiBzaXplKQorUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY3LDcgKzE2Nyw3IEBA
IFBhc3NSZWZQdHI8SW1hZ2U+IENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgY29uc3QgRmxvYXRTCiAKICAgICBtX2dlbmVyYXRlZEltYWdlID0gQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShmcm9tSW1hZ2UsIHRvSW1hZ2UsIG1fcGVyY2VudGFn
ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShyZW5kZXJlciksIHNpemUpOwogCi0g
ICAgcmV0dXJuIG1fZ2VuZXJhdGVkSW1hZ2UucmVsZWFzZSgpOworICAgIHJldHVybiBtX2dlbmVy
YXRlZEltYWdlOwogfQogCiB2b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpjcm9zc2ZhZGVDaGFuZ2Vk
KGNvbnN0IEludFJlY3QmKQpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFs
dWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3Qg
Q2FjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU0Nyb3NzZmFkZVZhbHVl
PiBDU1NDcm9zc2ZhZGVWYWx1ZTo6YmxlbmQoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmIGZyb20s
IGRvdWJsZSBwcm9ncmVzcykgY29uc3QKK1JlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gQ1NTQ3Jv
c3NmYWRlVmFsdWU6OmJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiBmcm9tLCBkb3VibGUg
cHJvZ3Jlc3MpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVxdWFsSW5wdXRJbWFnZXMoZnJvbSkpOwog
ICAgIFJlZlB0cjxTdHlsZUNhY2hlZEltYWdlPiB0b1N0eWxlZEltYWdlID0gU3R5bGVDYWNoZWRJ
bWFnZTo6Y3JlYXRlKG1fY2FjaGVkVG9JbWFnZS5nZXQoKSk7CkBAIC0yMDksNyArMjA5LDcgQEAg
UGFzc1JlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmJsZW5kKGNv
bnN0IENTU0Nyb3NzZmFkZVZhbHVlJgogICAgIGlmIChtX3BlcmNlbnRhZ2VWYWx1ZS0+aXNQZXJj
ZW50YWdlKCkpCiAgICAgICAgIHRvUGVyY2VudGFnZSAvPSAxMDAuMDsKICAgICBjcm9zc2ZhZGVW
YWx1ZS0+c2V0UGVyY2VudGFnZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGJsZW5kRnVuYyhm
cm9tUGVyY2VudGFnZSwgdG9QZXJjZW50YWdlLCBwcm9ncmVzcyksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKSk7Ci0gICAgcmV0dXJuIGNyb3NzZmFkZVZhbHVlLnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gY3Jvc3NmYWRlVmFsdWU7CiB9CiAKIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmVx
dWFscyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDFlZDhiNmYzZTBlZDZlMzE5ZjI0YjgzYzU1Nzhh
ZWU0YWY3ZjJhMmEuLmZhMDNiZDk3Njg2ODMxM2FhNjA0MzUxNGQ4YjAxYjJhYmM1OWI5ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVm
UHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CisgICAg
UmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAg
ICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBGbG9hdFNp
emUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIApAQCAtNjUsNyArNjUsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0ZDo6ZnVuY3Rp
b248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCi0gICAg
UGFzc1JlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gYmxlbmQoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFs
dWUmLCBkb3VibGUpIGNvbnN0OworICAgIFJlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gYmxlbmQo
Y29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmLCBkb3VibGUpIGNvbnN0OwogCiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2YjNkZTIzOWMwMjRhODE1OWQ3OTBlNWIz
ODdjOWU2Y2E3ZGIwNWQuLjY5Yzg0ZGZiMTE1YTE5MTNkMjViNzlmZTkyZmIwYWU5ZmZmMzM2MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTk5LDcg
Kzk5LDcgQEAgdm9pZCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJl
c291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWQKICAgICBtX2ZpbHRlclN1YmltYWdlT2Jz
ZXJ2ZXIuc2V0UmVhZHkodHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUm
IHNpemUpCitSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5oCmluZGV4IDkzOTU5YjZhN2YzNmU1NjExMjE5NzA0OGZlNGVjZDU5
Y2VhMTZhNTMuLjEyOTcyNGZkZTM1ZTVkY2FhZDc1NzJiODUwZWJhNGUwOTAwYWNhMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaApAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1Jl
ZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOworICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpOwog
ICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgRmxvYXRT
aXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA1YjQzMWVmYWUwM2I1ZmVhYjgxYzAxYzdlOTc0NjZi
ZmQ4ZTZjMTgxLi4xYTEwNjJhNjBiZWQ4YjIzMzgzMTg2NTc5NTFmNjhhMDQ3ZDkzNzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTR3JhZGllbnRWYWx1
ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
K1JlZlB0cjxJbWFnZT4gQ1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjksNyArNjksNyBAQCBQYXNzUmVmUHRyPElt
YWdlPiBDU1NHcmFkaWVudFZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29u
c3QgRmxvYXRTaQogICAgIGlmIChjYWNoZWFibGUpCiAgICAgICAgIHNhdmVDYWNoZWRJbWFnZUZv
clNpemUoc2l6ZSwgbmV3SW1hZ2UpOwogCi0gICAgcmV0dXJuIG5ld0ltYWdlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gbmV3SW1hZ2U7CiB9CiAKIC8vIFNob3VsZCBvbmx5IGV2ZXIgYmUgY2FsbGVk
IGZvciBkZXByZWNhdGVkIGdyYWRpZW50cy4KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdHJ1Y3QgR3Jh
ZGllbnRTdG9wIHsKICAgICB7IH0KIH07CiAKLVBhc3NSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4g
Q1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlcikKK1JlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiBDU1NHcmFkaWVudFZh
bHVlOjpncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29s
dmVyKQogewogICAgIGJvb2wgZGVyaXZlZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgc3RvcCA6
IG1fc3RvcHMpIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCBQYXNzUmVmUHRyPENTU0dyYWRpZW50VmFs
dWU+IENTU0dyYWRpZW50VmFsdWU6OmdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUgog
ICAgICAgICAgICAgc3RvcC5tX3Jlc29sdmVkQ29sb3IgPSBzdHlsZVJlc29sdmVyLT5jb2xvckZy
b21QcmltaXRpdmVWYWx1ZSgqc3RvcC5tX2NvbG9yKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW5saW5lIGlu
dCBpbnRlcnBvbGF0ZShpbnQgbWluLCBpbnQgbWF4LCBmbG9hdCBwb3NpdGlvbikKQEAgLTc0NSw3
ICs3NDUsNyBAQCBzdGF0aWMgdm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5nbGVEZWcs
IGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludAogICAgIGZpcnN0UG9pbnQuc2V0KGhh
bGZXaWR0aCAtIGVuZFgsIGhhbGZIZWlnaHQgKyBlbmRZKTsKIH0KIAotUGFzc1JlZlB0cjxHcmFk
aWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK1JlZjxHcmFkaWVudD4gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKICAgICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsK
IApAQCAtODAzLDEyICs4MDMsMTIgQEAgUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYgcmVuZGUKIAogICAgIH0K
IAotICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGZpcnN0
UG9pbnQsIHNlY29uZFBvaW50KTsKKyAgICBSZWY8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShmaXJzdFBvaW50LCBzZWNvbmRQb2ludCk7CiAKICAgICAvLyBOb3cgYWRkIHRo
ZSBzdG9wcy4KLSAgICBhZGRTdG9wcygqZ3JhZGllbnQsIGNvbnZlcnNpb25EYXRhLCAxKTsKKyAg
ICBhZGRTdG9wcyhncmFkaWVudCwgY29udmVyc2lvbkRhdGEsIDEpOwogCi0gICAgcmV0dXJuIGdy
YWRpZW50LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZ3JhZGllbnQ7CiB9CiAKIGJvb2wgQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUmIG90
aGVyKSBjb25zdApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBob3Jp
em9udGFsRWxsaXBzZVJhZGl1cyhjb25zdCBGbG9hdFNpemUmIHAsIGZsb2F0IGFzcGVjdFJhdGkK
IH0KIAogLy8gRklYTUU6IHNoYXJlIGNvZGUgd2l0aCB0aGUgbGluZWFyIHZlcnNpb24KLVBhc3NS
ZWZQdHI8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCitSZWY8R3JhZGll
bnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlz
RW1wdHkoKSk7CiAKQEAgLTEyMTIsNyArMTIxMiw3IEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENT
U1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRl
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShmaXJzdFBvaW50LCBmaXJzdFJhZGl1cywgc2Vjb25kUG9pbnQsIHNlY29u
ZFJhZGl1cywgYXNwZWN0UmF0aW8pOworICAgIFJlZjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKGZpcnN0UG9pbnQsIGZpcnN0UmFkaXVzLCBzZWNvbmRQb2ludCwgc2Vjb25k
UmFkaXVzLCBhc3BlY3RSYXRpbyk7CiAKICAgICAvLyBhZGRTdG9wcygpIG9ubHkgdXNlcyBtYXhF
eHRlbnQgZm9yIHJlcGVhdGluZyBncmFkaWVudHMuCiAgICAgZmxvYXQgbWF4RXh0ZW50ID0gMDsK
QEAgLTEyMjIsOSArMTIyMiw5IEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlCiAgICAgfQogCiAg
ICAgLy8gTm93IGFkZCB0aGUgc3RvcHMuCi0gICAgYWRkU3RvcHMoKmdyYWRpZW50LCBjb252ZXJz
aW9uRGF0YSwgbWF4RXh0ZW50KTsKKyAgICBhZGRTdG9wcyhncmFkaWVudCwgY29udmVyc2lvbkRh
dGEsIG1heEV4dGVudCk7CiAKLSAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFzZSgpOworICAgIHJl
dHVybiBncmFkaWVudDsKIH0KIAogYm9vbCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjplcXVhbHMo
Y29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCBkYTkxMWEyMjAzOGQ2NDVjMzlkNzI2NmMzZTM0NzZl
YmVjNTRmNjQ5Li4zYWQ3MDY1ZTNkNWEzODUzZmEyMmUwYzdiYjVlMzFiY2E0ODUzOWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0
IENTU0dyYWRpZW50Q29sb3JTdG9wIHsKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1ZSA6IHB1Ymxp
YyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKIHB1YmxpYzoKLSAgICBQYXNzUmVmUHRyPEltYWdl
PiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CisgICAgUmVmUHRyPElt
YWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICB2b2lk
IHNldEZpcnN0WChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWwpIHsgbV9maXJzdFgg
PSB2YWw7IH0KICAgICB2b2lkIHNldEZpcnN0WShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWwpIHsgbV9maXJzdFkgPSB2YWw7IH0KQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAg
IGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKIAogICAg
IHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYpIHsgfQotICAgIFBhc3NSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gZ3Jh
ZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOworICAgIFJlZlB0cjxDU1NH
cmFkaWVudFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZVJlc29sdmVyKik7
CiAKIHByb3RlY3RlZDoKICAgICBDU1NHcmFkaWVudFZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUs
IENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkK
QEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBj
b25zdDsKIAogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KLSAg
ICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiwgY29u
c3QgRmxvYXRTaXplJik7CisgICAgUmVmPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJF
bGVtZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAKICAgICBSZWY8Q1NTTGluZWFyR3JhZGllbnRW
YWx1ZT4gY2xvbmUoKSBjb25zdAogICAgIHsKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRFbmRWZXJ0aWNhbFNpemUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsKSB7IG1fZW5kVmVydGljYWxTaXplID0gdmFsOyB9CiAKICAgICAvLyBDcmVhdGUgdGhlIGdy
YWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3JlYXRl
R3JhZGllbnQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIFJlZjxHcmFk
aWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwog
CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggNzYzMWJlZWFiM2E5
ZjJlOTBmNGQ3ZDBhZWM1ZjdiODhiYTYzMWQ3Yi4uODQ5ZDgwZmZkYmZjMWEyN2RjZmI3ZDg1Mzli
NTFiYjAzYmZhNzkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApA
QCAtMTk2LDkgKzE5Niw5IEBAIENTU0ltYWdlU2V0VmFsdWU6OkNTU0ltYWdlU2V0VmFsdWUoY29u
c3QgQ1NTSW1hZ2VTZXRWYWx1ZSYgY2xvbmVGcm9tKQogICAgIC8vIE5vbi1DU1NWYWx1ZUxpc3Qg
ZGF0YSBpcyBub3QgYWNjZXNzaWJsZSB0aHJvdWdoIENTUyBPTSwgbm8gbmVlZCB0byBjbG9uZS4K
IH0KIAotUGFzc1JlZlB0cjxDU1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVlOjpjbG9u
ZUZvckNTU09NKCkgY29uc3QKK1JlZjxDU1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVl
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0lt
YWdlU2V0VmFsdWUoKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVNl
dFZhbHVlKCp0aGlzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCmluZGV4IGYwODg4NjNiZDdmNTRmNGRhZDg4MWM1NmFlZGRi
ZDZmMTBhODBhNDYuLjZkOWYwYTcwOWZjZTlmZTAyZjc0ZWYzMGEwMWM4NTIzYjU0YmI1MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCi0gICAgUGFz
c1JlZlB0cjxDU1NJbWFnZVNldFZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CisgICAgUmVm
PENTU0ltYWdlU2V0VmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIEltYWdlV2l0aFNjYWxlIGJlc3RJbWFnZUZvclNjYWxlRmFjdG9yKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggZTEyNTRmMGE4MWEzOGVjOWE4NjBhZTgxNmE3NDU0
NGVlOTY1MjE2Mi4uYWI2NjdkMTRkMTU2NTU5NTU5YWNjZTQxZDc4NTVlM2VkY2JhYjRkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtMTEzLDEyICsxMTMsMTIgQEAgU3Ry
aW5nIENTU0ltYWdlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVybiAidXJs
KCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdXJsKSArICcpJzsKIH0KIAotUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWY8Q1NTVmFs
dWU+IENTU0ltYWdlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogewogICAgIC8vIE5PVEU6
IFdlIGV4cG9zZSBDU1NJbWFnZVZhbHVlcyBhcyBVUkkgcHJpbWl0aXZlIHZhbHVlcyBpbiBDU1NP
TSB0byBtYWludGFpbiBvbGQgYmVoYXZpb3IuCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB1cmlWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV91cmwsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHVyaVZhbHVlID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3VybCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
UkkpOwogICAgIHVyaVZhbHVlLT5zZXRDU1NPTVNhZmUoKTsKLSAgICByZXR1cm4gdXJpVmFsdWUu
cmVsZWFzZSgpOworICAgIHJldHVybiBXVEY6Om1vdmUodXJpVmFsdWUpOwogfQogCiBib29sIENT
U0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJl
cikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDdlYTUwOTBjMWZkMDMy
YTBkNGUxMTIyYTQ4MTgyOWE4NzcyM2IzYWUuLjAwYWQ0NDE1NDM1ZWUxNWNmZmQyNWM4NDU2YzM4
YzZlMzgwZWJlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZjxDU1NW
YWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291
cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBo
YW5kbGVyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBjNTdmYTAzMjMw
YWIxN2VlNTIzZmY0MWZiZjI0NzNmYTBhYmM0YTA0Li40YjFlNDhlZDM0MTlmODkwMzI4NjBiNjhi
OGZmMzNmYzI3MzMzZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDYxLDIxICs0
NjEsMjEgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzKiBz
aGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnMKICAgICBtX2xvZ0Vycm9ycyA9IGZhbHNl
OwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6cGFyc2VSdWxlKFN0
eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6cGFyc2VSdWxlKFN0eWxlU2hlZXRDb250ZW50cyogc2hl
ZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHNldFN0eWxlU2hlZXQoc2hlZXQpOwog
ICAgIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnMgPSBmYWxzZTsKICAgICBzZXR1cFBhcnNl
cigiQC13ZWJraXQtcnVsZXsiLCBzdHJpbmcsICJ9ICIpOwogICAgIGNzc3l5cGFyc2UodGhpcyk7
Ci0gICAgcmV0dXJuIG1fcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1fcnVsZTsKIH0KIAot
UGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVSdWxlKFN0
eWxlU2hlZXRDb250ZW50cyogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPFN0
eWxlS2V5ZnJhbWU+IENTU1BhcnNlcjo6cGFyc2VLZXlmcmFtZVJ1bGUoU3R5bGVTaGVldENvbnRl
bnRzKiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgc2V0U3R5bGVTaGVldChz
aGVldCk7CiAgICAgc2V0dXBQYXJzZXIoIkAtd2Via2l0LWtleWZyYW1lLXJ1bGV7ICIsIHN0cmlu
ZywgIn0gIik7CiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKLSAgICByZXR1cm4gbV9rZXlmcmFtZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIG1fa2V5ZnJhbWU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTI3NCw3ICsx
Mjc0LDcgQEAgc3RhdGljIENTU1BhcnNlcjo6UGFyc2VSZXN1bHQgcGFyc2VUcmFuc2xhdGVUcmFu
c2Zvcm1WYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWUKICAgICByZXR1cm4gcHJvcGVydGllcy0+
YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIHJlc3Vs
dC5yZWxlYXNlKCksIGltcG9ydGFudCkpID8gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hhbmdl
ZCA6IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OlVuY2hhbmdlZDsKIH0KIAotUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0
cmluZyYgc3RyaW5nKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZvbnRG
YWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgxOCw3ICsxODE4LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OmlzVmFsaWRTaXplKFZhbHVlV2l0aENhbGN1bGF0aW9uJiB2YWx1ZVdp
dGhDYWxjdWxhdGlvbikKICAgICByZXR1cm4gIWlkICYmIHZhbGlkYXRlVW5pdCh2YWx1ZVdpdGhD
YWxjdWxhdGlvbiwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZyk7CiB9CiAKLWlubGluZSBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsaWRQcmltaXRp
dmUoQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBWYWx1ZVdpdGhDYWxjdWxhdGlvbiYgdmFsdWVXaXRo
Q2FsY3VsYXRpb24pCitpbmxpbmUgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlVmFsaWRQcmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBWYWx1ZVdpdGhDYWxj
dWxhdGlvbiYgdmFsdWVXaXRoQ2FsY3VsYXRpb24pCiB7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRp
Zmllcik7CkBAIC0zMjY4LDcgKzMyNjgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMZWdhY3lQ
b3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgcmV0dXJu
ICFtX3ZhbHVlTGlzdC0+bmV4dCgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24oKQorUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRp
b24oKQogewogICAgIC8vIGF1dG8gfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPGNvbnRlbnQtZGlz
dHJpYnV0aW9uPiB8fCBbIDxvdmVyZmxvdy1wb3NpdGlvbj4/ICYmIDxjb250ZW50LXBvc2l0aW9u
PiBdCiAgICAgLy8gPGJhc2VsaW5lLXBvc2l0aW9uPiA9IGJhc2VsaW5lIHwgbGFzdC1iYXNlbGlu
ZTsKQEAgLTQxNTksNyArNDE1OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbnRlbnQoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHIoQ1NTUGFyc2VyVmFs
dWVMaXN0JiBhcmdzKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0cihDU1NQ
YXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNDE4Miw3ICs0MTgyLDcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHIoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShhdHRyTmFtZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19BVFRSKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZUJhY2tncm91bmRDb2xvcigpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VC
YWNrZ3JvdW5kQ29sb3IoKQogewogICAgIENTU1ZhbHVlSUQgaWQgPSBtX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpLT5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IGlzVmFsaWRT
eXN0ZW1Db2xvclZhbHVlKGlkKSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUgfHwgaWQgPT0gQ1NTVmFs
dWVDdXJyZW50Y29sb3IKQEAgLTQyMTYsNyArNDIxNiw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUZpbGxJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ZhbHVl
PiYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCitSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VQb3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2
YWx1ZUxpc3QpCiB7CiAgICAgaW50IGlkID0gdmFsdWVMaXN0LmN1cnJlbnQoKS0+aWQ7CiAgICAg
aWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENT
U1ZhbHVlQ2VudGVyKSB7CkBAIC00MjMzLDcgKzQyMzMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NQYXJzZXI6OnBhcnNlUG9zaXRpb25YKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlUG9zaXRpb25ZKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0KQorUmVmUHRy
PENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlUG9zaXRpb25ZKENTU1BhcnNlclZhbHVlTGlzdCYg
dmFsdWVMaXN0KQogewogICAgIGludCBpZCA9IHZhbHVlTGlzdC5jdXJyZW50KCktPmlkOwogICAg
IGlmIChpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBpZCA9PSBD
U1NWYWx1ZUNlbnRlcikgewpAQCAtNDI1MCw3ICs0MjUwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZVBvc2l0aW9uWShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlz
dCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmlsbFBvc2l0aW9uRmxh
ZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQor
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFBvc2l0aW9uQ29t
cG9uZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCB1bnNpZ25lZCYgY3VtdWxhdGl2
ZUZsYWdzLCBGaWxsUG9zaXRpb25GbGFnJiBpbmRpdmlkdWFsRmxhZywgRmlsbFBvc2l0aW9uUGFy
c2luZ01vZGUgcGFyc2luZ01vZGUpCiB7CiAgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlTGlzdC5j
dXJyZW50KCktPmlkOwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFs
dWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBp
ZCA9PSBDU1NWYWx1ZUNlbnRlcikgewpAQCAtNDYwOCw3ICs0NjA4LDcgQEAgdm9pZCBDU1NQYXJz
ZXI6OnBhcnNlRmlsbFJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0cjxDU1NW
YWx1ZT4mIHZhbHUKICAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZTEpLmdldFZhbHVlSUQoKSk7
CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShDU1NQ
cm9wZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sJiBhbGxvd0Nv
bW1hKQogewogICAgIGFsbG93Q29tbWEgPSB0cnVlOwogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1
ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CkBAIC00ODM4LDcgKzQ4MzgsNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VGaWxsUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3Bl
cnR5SUQmIHByb3BJZDEsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkoKQorUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkoKQogewogICAgIFZhbHVlV2l0aENhbGN1bGF0
aW9uIHZhbHVlV2l0aENhbGN1bGF0aW9uKCptX3ZhbHVlTGlzdC0+Y3VycmVudCgpKTsKICAgICBp
ZiAodmFsaWRhdGVVbml0KHZhbHVlV2l0aENhbGN1bGF0aW9uLCBGVGltZSkpCkBAIC00ODQ2LDcg
KzQ4NDYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9u
RGVsYXkoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUFuaW1hdGlvbkRpcmVjdGlvbigpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUq
IHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUtPmlkID09IENT
U1ZhbHVlTm9ybWFsIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSB8fCB2YWx1ZS0+
aWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZVJl
dmVyc2UpCkBAIC00ODU0LDcgKzQ4NTQsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0aW9uKCkK
K1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0aW9uKCkKIHsK
ICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiB2YWx1ZVdpdGhDYWxjdWxhdGlvbigqbV92YWx1ZUxp
c3QtPmN1cnJlbnQoKSk7CiAgICAgaWYgKHZhbGlkYXRlVW5pdCh2YWx1ZVdpdGhDYWxjdWxhdGlv
biwgRlRpbWUgfCBGTm9uTmVnKSkKQEAgLTQ4NjIsNyArNDg2Miw3IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25EdXJhdGlvbigpCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25GaWxsTW9kZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25G
aWxsTW9kZSgpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1
cnJlbnQoKTsKICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZS0+aWQg
PT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVCYWNrd2FyZHMgfHwg
dmFsdWUtPmlkID09IENTU1ZhbHVlQm90aCkKQEAgLTQ4NzAsNyArNDg3MCw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25GaWxsTW9kZSgpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25JdGVyYXRpb25Db3VudCgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUmIHZhbHVl
ID0gKm1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAgICAgaWYgKHZhbHVlLmlkID09IENTU1ZhbHVl
SW5maW5pdGUpCkBAIC00ODgxLDcgKzQ4ODEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uTmFt
ZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25OYW1lKCkKIHsK
ICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAg
ICBpZiAodmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyB8fCB2YWx1
ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKQEAgLTQ4OTMsNyArNDg5
Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25OYW1l
KCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUFuaW1hdGlvblBsYXlTdGF0ZSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VBbmltYXRpb25QbGF5U3RhdGUoKQogewogICAgIENTU1BhcnNlclZhbHVlJiB2YWx1
ZSA9ICptX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIGlmICh2YWx1ZS5pZCA9PSBDU1NWYWx1
ZVJ1bm5pbmcgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVQYXVzZWQpCkBAIC00OTAyLDcgKzQ5MDIs
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUGxheVN0
YXRlKCkKIH0KIAogI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQotUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRyaWdnZXIoKQorUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVHJpZ2dlcigpCiB7CiAgICAgQ1NTUGFy
c2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUt
PmlkID09IENTU1ZhbHVlQXV0bykKQEAgLTQ5NDIsMTEgKzQ5NDIsMTEgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRyaWdnZXIoKQogICAgICAgICByZXR1
cm4gQ1NTQW5pbWF0aW9uVHJpZ2dlclNjcm9sbFZhbHVlOjpjcmVhdGUoc3RhcnRWYWx1ZS5yZWxl
YXNlKCksIGVuZFZhbHVlLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvblBhcnNlQ29udGV4dCYgY29udGV4
dCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KEFu
aW1hdGlvblBhcnNlQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFs
dWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUudW5pdCAhPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQpAQCAtNTAzMSw3ICs1MDMxLDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVl
TGlzdCYgYXJncywgZG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKK1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKIHsKICAgICBD
U1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAo
dmFsdWUuaWQgPT0gQ1NTVmFsdWVFYXNlIHx8IHZhbHVlLmlkID09IENTU1ZhbHVlTGluZWFyIHx8
IHZhbHVlLmlkID09IENTU1ZhbHVlRWFzZUluIHx8IHZhbHVlLmlkID09IENTU1ZhbHVlRWFzZU91
dApAQCAtNTI2Myw3ICs1MjYzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlSW50ZWdlck9yQ3Vz
dG9tSWRlbnRGcm9tR3JpZFBvc2l0aW9uKFJlZlB0cjxDU1NQcmltaXRpdmVWYWwKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlk
UG9zaXRpb24oKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFBvc2l0aW9u
KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgp
OwogICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVBdXRvKSB7CkBAIC01Mjc5LDcgKzUyNzks
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFBvc2l0aW9uKCkK
ICAgICAgICAgaGFzU2VlblNwYW5LZXl3b3JkID0gdHJ1ZTsKICAgICAgICAgaWYgKGF1dG8qIG5l
eHRWYWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCkpIHsKICAgICAgICAgICAgIGlmICghaXNGb3J3
YXJkU2xhc2hPcGVyYXRvcigqbmV4dFZhbHVlKSAmJiAhcGFyc2VJbnRlZ2VyT3JDdXN0b21JZGVu
dEZyb21HcmlkUG9zaXRpb24obnVtZXJpY1ZhbHVlLCBncmlkTGluZU5hbWUpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAocGFyc2VJbnRlZ2VyT3JDdXN0b21JZGVudEZy
b21HcmlkUG9zaXRpb24obnVtZXJpY1ZhbHVlLCBncmlkTGluZU5hbWUpKSB7CiAgICAgICAgIHZh
bHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTUzMTQsMTAgKzUzMTQsMTAgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRQb3NpdGlvbigpCiAgICAgaWYg
KGdyaWRMaW5lTmFtZSkKICAgICAgICAgdmFsdWVzLT5hcHBlbmQoZ3JpZExpbmVOYW1lLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIEFTU0VSVCh2YWx1ZXMtPmxlbmd0aCgpKTsKLSAgICByZXR1cm4g
dmFsdWVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdmFsdWVzOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gZ3JpZE1pc3NpbmdHcmlkUG9zaXRpb25WYWx1ZShDU1NWYWx1ZSYgdmFs
dWUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBncmlkTWlzc2luZ0dyaWRQb3NpdGlvblZhbHVl
KENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiAmdmFsdWU7CkBAIC01NTk4LDcgKzU1OTgsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VHcmlkTGluZU5hbWVzKENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0LCBDU1NWYWx1
ZUxpc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VHcmlkVHJhY2tMaXN0KCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZUdyaWRUcmFja0xpc3QoKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFs
dWVMaXN0LT5jdXJyZW50KCk7CiAgICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZU5vbmUpIHsK
QEAgLTU2MzYsNyArNTYzNiw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VHcmlkVHJhY2tMaXN0KCkKICAgICBpZiAoIXNlZW5UcmFja1NpemVPclJlcGVhdEZ1bmN0aW9u
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB2YWx1ZXMucmVsZWFzZSgp
OworICAgIHJldHVybiB2YWx1ZXM7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFj
a1JlcGVhdEZ1bmN0aW9uKENTU1ZhbHVlTGlzdCYgbGlzdCkKQEAgLTU2OTQsNyArNTY5NCw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1ZhbHVlTGlz
dCYgbGlzdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1dExpc3Qp
CitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tTaXplKENTU1BhcnNl
clZhbHVlTGlzdCYgaW5wdXRMaXN0KQogewogICAgIENTU1BhcnNlclZhbHVlJiBjdXJyZW50VmFs
dWUgPSAqaW5wdXRMaXN0LmN1cnJlbnQoKTsKICAgICBpbnB1dExpc3QubmV4dCgpOwpAQCAtNTcy
NSw3ICs1NzI1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRU
cmFja1NpemUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1dExpc3QKICAgICByZXR1cm4gcGFyc2VH
cmlkQnJlYWR0aChjdXJyZW50VmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEJyZWFkdGgoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQor
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEJyZWFkdGgoQ1NT
UGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pZCA9PSBDU1NWYWx1ZVdlYmtp
dE1pbkNvbnRlbnQgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50KQogICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlLmlk
KTsKQEAgLTU3NTIsNyArNTc1Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkR3JpZEF1
dG9GbG93SWQoQ1NTVmFsdWVJRCBpZCkKICAgICByZXR1cm4gKGlkID09IENTU1ZhbHVlUm93IHx8
IGlkID09IENTU1ZhbHVlQ29sdW1uIHx8IGlkID09IENTU1ZhbHVlRGVuc2UpOwogfQogCi1QYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZEF1dG9GbG93KENTU1BhcnNlclZh
bHVlTGlzdCYgaW5wdXRMaXN0KQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3Jp
ZEF1dG9GbG93KENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KQogewogICAgIC8vIFsgcm93
IHwgY29sdW1uIF0gfHwgZGVuc2UKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBpbnB1dExp
c3QuY3VycmVudCgpOwpAQCAtNjAzMyw3ICs2MDMzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
R3JpZFRlbXBsYXRlQXJlYXNSb3coTmFtZWRHcmlkQXJlYU1hcCYgZ3JpZEFyZWFNYXAsIGNvbnN0
IHUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2Vy
OjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZUdyaWRUZW1wbGF0ZUFyZWFzKCkKIHsKICAgICBpZiAobV92YWx1ZUxpc3QtPmN1cnJlbnQo
KSAmJiBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZCA9PSBDU1NWYWx1ZU5vbmUpIHsKICAgICAg
ICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKQEAgLTYwNTcsNyArNjA1Nyw3IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VHcmlkVGVtcGxhdGVBcmVhcygpCiB9CiAjZW5kaWYg
LyogRU5BQkxFKENTU19HUklEX0xBWU9VVCkgKi8KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgYm9v
bCBjb3VudGVycykKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250
ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgYm9vbCBjb3VudGVycykKIHsKICAgICB1bnNp
Z25lZCBudW1BcmdzID0gYXJncy5zaXplKCk7CiAgICAgaWYgKGNvdW50ZXJzICYmIG51bUFyZ3Mg
IT0gMyAmJiBudW1BcmdzICE9IDUpCkBAIC02MTcxLDcgKzYxNzEsNyBAQCBzdGF0aWMgdm9pZCBj
b21wbGV0ZUJvcmRlclJhZGlpKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaWlbNF0pCiAK
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZWZhY3RvcmVkIHdpdGggQ1NTUGFyc2VyOjpwYXJz
ZUJvcmRlclJhZGl1cy4KIC8vIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMgY29udGFpbnMg
c3VwcG9ydCBmb3Igc29tZSBsZWdhY3kgcmFkaXVzIGNvbnN0cnVjdGlvbi4KLVBhc3NSZWZQdHI8
Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUGFzc1Jl
ZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3Mp
CitSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5l
cnMoUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlLCBDU1NQYXJzZXJWYWx1ZUxp
c3QmIGFyZ3MpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIGFyZ3VtZW50ID0gYXJncy5uZXh0KCk7
CiAKQEAgLTYyMzUsNyArNjIzNSw3IEBAIFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFy
c2VyOjpwYXJzZUluc2V0Um91bmRlZENvcm5lcnMoUGFzc1JlZlB0cjxDU1NCYXNpCiAgICAgcmV0
dXJuIHNoYXBlOwogfQogCi1QYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+IENTU1BhcnNlcjo6cGFy
c2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQorUmVmUHRyPENTU0Jh
c2ljU2hhcGU+IENTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVmFsdWVM
aXN0JiBhcmdzKQogewogICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlID0gQ1NT
QmFzaWNTaGFwZUluc2V0OjpjcmVhdGUoKTsKIApAQCAtNjI4Myw3ICs2MjgzLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUluc2V0KENTU1Bh
cnNlclZhbHVlTGlzdCYgYXIKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTaGFwZVJhZGl1cyhDU1NQYXJzZXJWYWx1
ZSYgdmFsdWUpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTaGFw
ZVJhZGl1cyhDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlkID09IENT
U1ZhbHVlQ2xvc2VzdFNpZGUgfHwgdmFsdWUuaWQgPT0gQ1NTVmFsdWVGYXJ0aGVzdFNpZGUpCiAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWUu
aWQpOwpAQCAtNjI5NSw3ICs2Mjk1LDcgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZVNoYXBlUmFkaXVzKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKICAgICBy
ZXR1cm4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKHZhbHVlV2l0aENhbGN1bGF0aW9uKTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFw
ZUNpcmNsZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCitSZWZQdHI8Q1NTQmFzaWNTaGFwZT4g
Q1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVDaXJjbGUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdz
KQogewogICAgIC8vIGNpcmNsZShyYWRpdXMpCiAgICAgLy8gY2lyY2xlKHJhZGl1cyBhdCA8cG9z
aXRpb24+KQpAQCAtNjMzNSw3ICs2MzM1LDcgQEAgUGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBD
U1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGEKICAg
ICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2Vy
OjpwYXJzZUJhc2ljU2hhcGVFbGxpcHNlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKK1JlZlB0
cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUVsbGlwc2UoQ1NTUGFy
c2VyVmFsdWVMaXN0JiBhcmdzKQogewogICAgIC8vIGVsbGlwc2UocmFkaXVzWCkKICAgICAvLyBl
bGxpcHNlKHJhZGl1c1ggYXQgPHBvc2l0aW9uPikKQEAgLTYzODAsNyArNjM4MCw3IEBAIFBhc3NS
ZWZQdHI8Q1NTQmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVFbGxpcHNlKENT
U1BhcnNlclZhbHVlTGlzdCYKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
QmFzaWNTaGFwZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVQb2x5Z29uKENTU1BhcnNlclZh
bHVlTGlzdCYgYXJncykKK1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBDU1NQYXJzZXI6OnBhcnNlQmFz
aWNTaGFwZVBvbHlnb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogewogICAgIHVuc2lnbmVk
IHNpemUgPSBhcmdzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCkBAIC02NDUxLDcgKzY0NTEsNyBA
QCBzdGF0aWMgYm9vbCBpc0JveFZhbHVlKENTU1ZhbHVlSUQgdmFsdWVJZCwgQ1NTUHJvcGVydHlJ
RCBwcm9wSWQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1Byb3BlcnR5SUQgcHJvcElkKQor
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1By
b3BlcnR5SUQgcHJvcElkKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVM
aXN0LT5jdXJyZW50KCk7CiAKQEAgLTY0ODMsMTEgKzY0ODMsMTEgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVBbmRPckJveChDU1NQcm9wZXJ0eUlEIHBy
b3BJZCkKIAogICAgIGlmIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGxpc3Q7CiB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNl
cjo6cGFyc2VTaGFwZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkKQorUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlU2hhcGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCkK
IHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3Nz
U2hhcGVzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY1MDMsMTQgKzY1
MDMsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNoYXBlUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQpCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBpbWFnZVZhbHVl
OwogICAgIGlmICh2YWx1ZUlkICE9IENTU1ZhbHVlTm9uZSAmJiBwYXJzZUZpbGxJbWFnZSgqbV92
YWx1ZUxpc3QsIGltYWdlVmFsdWUpKSB7CiAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0g
ICAgICAgIHJldHVybiBpbWFnZVZhbHVlLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGltYWdl
VmFsdWU7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KHByb3BJ
ZCk7CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNs
aXBQYXRoKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNsaXBQYXRoKCkKIHsK
ICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAg
ICBDU1NWYWx1ZUlEIHZhbHVlSWQgPSB2YWx1ZS5pZDsKQEAgLTY1MjcsNyArNjUyNyw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDbGlwUGF0aCgpCiAgICAgcmV0dXJu
IHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENTU1Byb3BlcnR5V2Via2l0Q2xpcFBhdGgpOwogfQog
Ci1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQmFzaWNTaGFw
ZSgpCitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VCYXNpY1NoYXBl
KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUgPSAqbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KTsKICAgICBBU1NFUlQodmFsdWUudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pOwpA
QCAtNjY4NSw3ICs2Njg1LDcgQEAgcHJpdmF0ZToKICAgICBDU1NWYWx1ZUxpc3QmIG1fbGlzdDsK
IH07CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhbWls
eSgpCitSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhbWlseSgpCiB7
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpOwpAQCAtNjc1Niw3ICs2NzU2LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5KCkKIAogICAgIGlmICghbGlzdC0+bGVuZ3RoKCkp
CiAgICAgICAgIGxpc3QgPSBudWxscHRyOwotICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gbGlzdDsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZUhlaWdodChib29s
IGltcG9ydGFudCkKQEAgLTc0OTQsNyArNzQ5NCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUhT
TFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBkb3VibGUqIGNvbG9yQXJyYXksIGJv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCitSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogdmFsdWUp
CiB7CiAgICAgUkdCQTMyIGMgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgaWYgKCFwYXJzZUNv
bG9yRnJvbVZhbHVlKHZhbHVlID8gKnZhbHVlIDogKm1fdmFsdWVMaXN0LT5jdXJyZW50KCksIGMp
KQpAQCAtNzY3Niw3ICs3Njc2LDcgQEAgc3RydWN0IFNoYWRvd1BhcnNlQ29udGV4dCB7CiAgICAg
Ym9vbCBhbGxvd0JyZWFrOwogfTsKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNl
cjo6cGFyc2VTaGFkb3coQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIENTU1Byb3BlcnR5
SUQgcHJvcElkKQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVNoYWRvdyhD
U1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgQ1NTUHJvcGVydHlJRCBwcm9wSWQpCiB7CiAg
ICAgU2hhZG93UGFyc2VDb250ZXh0IGNvbnRleHQocHJvcElkLCAqdGhpcyk7CiAgICAgQ1NTUGFy
c2VyVmFsdWUqIHZhbHVlOwpAQCAtOTMxMSw3ICs5MzExLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlTmFtZWRJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENTU1Zh
bHVlPiYKIH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKLVBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VJbWFnZVJlc29sdXRpb24oKQorUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VSZXNvbHV0aW9uKCkKIHsKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGJvb2wgaGF2ZVJlc29sdXRpb24gPSBmYWxzZTsKQEAgLTkzMzgsMTIgKzkzMzgsMTIgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUltYWdlUmVzb2x1dGlvbigpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghaGF2ZUZyb21JbWFnZSAmJiAhaGF2ZVJl
c29sdXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19JTUFH
RV9TRVQpCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VTZXQoKQor
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VTZXQoKQogewogICAgIENTU1Bh
cnNlclZhbHVlJiB2YWx1ZSA9ICptX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIEFTU0VSVCh2
YWx1ZS51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbik7CkBAIC05MzkyLDcgKzkzOTIs
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlSW1hZ2VTZXQoKQogICAg
ICAgICBhcmcgPSBmdW5jdGlvbkFyZ3MtPm5leHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW1h
Z2VTZXQucmVsZWFzZSgpOworICAgIHJldHVybiBpbWFnZVNldDsKIH0KICNlbmRpZgogCkBAIC05
NjU1LDcgKzk2NTUsNyBAQCBwcml2YXRlOgogICAgIENTU1BhcnNlcjo6VW5pdHMgbV91bml0Owog
fTsKIAotUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm0o
KQorUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybSgpCiB7CiAg
ICAgaWYgKCFtX3ZhbHVlTGlzdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05NjY5LDEw
ICs5NjY5LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlVHJh
bnNmb3JtKCkKICAgICAgICAgbGlzdC0+YXBwZW5kKHBhcnNlZFRyYW5zZm9ybVZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gbGlzdDsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVRy
YW5zZm9ybVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUudW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gfHwgIXZhbHVlLmZ1
bmN0aW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTk3NzcsNyArOTc3Nyw3IEBAIHN0
YXRpYyB2b2lkIGZpbHRlckluZm9Gb3JOYW1lKGNvbnN0IENTU1BhcnNlclN0cmluZyYgbmFtZSwg
V2ViS2l0Q1NTRmlsdGVyVmFsdWU6CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU0Zp
bHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZpbHRlckFyZ3VtZW50cyhDU1NQYXJz
ZXJWYWx1ZUxpc3QmIGFyZ3MsIFdlYktpdENTU0ZpbHRlclZhbHVlOjpGaWx0ZXJPcGVyYXRpb25U
eXBlIGZpbHRlclR5cGUpCitSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgV2Vi
S2l0Q1NTRmlsdGVyVmFsdWU6OkZpbHRlck9wZXJhdGlvblR5cGUgZmlsdGVyVHlwZSkKIHsKICAg
ICBSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGZpbHRlclZhbHVlID0gV2ViS2l0Q1NTRmls
dGVyVmFsdWU6OmNyZWF0ZShmaWx0ZXJUeXBlKTsKIApAQCAtMTAyNzEsNyArMTAyNzEsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VUZXh0RW1waGFzaXNQb3NpdGlvbihib29sIGltcG9ydGFudCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZVRleHRJbmRlbnQoKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVGV4dElu
ZGVudCgpCiB7CiAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0ICB3aGVu
IENTUzNfVEVYVCBpcyBkaXNhYmxlZC4KICAgICAvLyBbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+
IF0gJiYgWyAtd2Via2l0LWhhbmdpbmcgfHwgLXdlYmtpdC1lYWNoLWxpbmUgXT8gfCBpbmhlcml0
ICB3aGVuIENTUzNfVEVYVCBpcyBlbmFibGVkLgpAQCAtMTIwNDUsNyArMTIwNDUsNyBAQCByZXN0
YXJ0QWZ0ZXJDb21tZW50OgogICAgIHJldHVybiB0b2tlbigpOwogfQogCi1QYXNzUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25zdCBDU1NQYXJzZXJT
dHJpbmcmIHVybCwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSkKK1JlZlB0cjxTdHls
ZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3Ry
aW5nJiB1cmwsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEpCiB7CiAgICAgaWYgKCFt
ZWRpYSB8fCAhbV9hbGxvd0ltcG9ydFJ1bGVzKSB7CiAgICAgICAgIHBvcFJ1bGVEYXRhKCk7CkBA
IC0xMjA1MywxMCArMTIwNTMsMTAgQEAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJz
ZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiB1cmwKICAgICB9CiAg
ICAgUmVmUHRyPFN0eWxlUnVsZUltcG9ydD4gcnVsZSA9IFN0eWxlUnVsZUltcG9ydDo6Y3JlYXRl
KHVybCwgbWVkaWEpOwogICAgIHByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVk
ZWQoKTsKLSAgICByZXR1cm4gcnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAK
LVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYVJ1bGUoUGFz
c1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSwgUnVsZUxpc3QqIHJ1bGVzKQorUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlTWVkaWFSdWxlKFBhc3NSZWZQdHI8TWVkaWFR
dWVyeVNldD4gbWVkaWEsIFJ1bGVMaXN0KiBydWxlcykKIHsKICAgICBtX2FsbG93SW1wb3J0UnVs
ZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CiAgICAgUmVmUHRyPFN0
eWxlUnVsZU1lZGlhPiBydWxlOwpAQCAtMTIwNjgsMTUgKzEyMDY4LDE1IEBAIFBhc3NSZWZQdHI8
U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYVJ1bGUoUGFzc1JlZlB0cjxNZWRp
YVF1ZXJ5U2V0PiBtCiAgICAgfSBlbHNlCiAgICAgICAgIHJ1bGUgPSBTdHlsZVJ1bGVNZWRpYTo6
Y3JlYXRlKG1lZGlhLCBydWxlcyA/ICpydWxlcyA6IGVtcHR5UnVsZXMpOwogICAgIHByb2Nlc3NB
bmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVlSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gcnVsZS5yZWxl
YXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4g
Q1NTUGFyc2VyOjpjcmVhdGVFbXB0eU1lZGlhUnVsZShSdWxlTGlzdCogcnVsZXMpCitSZWZQdHI8
U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVFbXB0eU1lZGlhUnVsZShSdWxlTGlzdCog
cnVsZXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZU1lZGlhUnVsZShNZWRpYVF1ZXJ5U2V0OjpjcmVh
dGUoKSwgcnVsZXMpOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6
Y3JlYXRlU3VwcG9ydHNSdWxlKGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFJ1bGVMaXN0KiBy
dWxlcykKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVN1cHBvcnRzUnVs
ZShib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBSdWxlTGlzdCogcnVsZXMpCiB7CiAgICAgbV9h
bGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwog
CkBAIC0xMjEwMCw3ICsxMjEwMCw3IEBAIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFy
c2VyOjpjcmVhdGVTdXBwb3J0c1J1bGUoYm9vbCBjb25kaXRpb25Jc1N1cHBvcnRlCiAKICAgICBw
cm9jZXNzQW5kQWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAKLSAgICByZXR1cm4g
cnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJ1bGU7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpt
YXJrU3VwcG9ydHNSdWxlSGVhZGVyU3RhcnQoKQpAQCAtMTIxMjMsMTIgKzEyMTIzLDEyIEBAIHZv
aWQgQ1NTUGFyc2VyOjptYXJrU3VwcG9ydHNSdWxlSGVhZGVyRW5kKCkKICAgICAgICAgbV9zdXBw
b3J0c1J1bGVEYXRhU3RhY2stPmxhc3QoKS0+cnVsZUhlYWRlclJhbmdlLmVuZCA9IHRva2VuU3Rh
cnQ8VUNoYXI+KCkgLSBtX2RhdGFTdGFydDE2LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPENTU1J1
bGVTb3VyY2VEYXRhPiBDU1NQYXJzZXI6OnBvcFN1cHBvcnRzUnVsZURhdGEoKQorUmVmUHRyPENT
U1J1bGVTb3VyY2VEYXRhPiBDU1NQYXJzZXI6OnBvcFN1cHBvcnRzUnVsZURhdGEoKQogewogICAg
IEFTU0VSVChtX3N1cHBvcnRzUnVsZURhdGFTdGFjayAmJiAhbV9zdXBwb3J0c1J1bGVEYXRhU3Rh
Y2stPmlzRW1wdHkoKSk7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBkYXRhID0gbV9z
dXBwb3J0c1J1bGVEYXRhU3RhY2stPmxhc3QoKTsKICAgICBtX3N1cHBvcnRzUnVsZURhdGFTdGFj
ay0+cmVtb3ZlTGFzdCgpOwotICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
ZGF0YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VU
cmVlSWZOZWVkZWQoKQpAQCAtMTIyMDAsNyArMTIyMDAsNyBAQCB2b2lkIENTU1BhcnNlcjo6bG9n
RXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcgogICAgIGNvbnNvbGUuYWRkTWVzc2FnZShNZXNzYWdlU291cmNlOjpDU1MsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgbWVzc2FnZSwgbV9zdHlsZVNoZWV0LT5iYXNlVVJMKCkuc3RyaW5nKCks
IGxpbmVOdW1iZXIgKyAxLCBjb2x1bW5OdW1iZXIgKyAxKTsKIH0KIAotUGFzc1JlZlB0cjxTdHls
ZVJ1bGVLZXlmcmFtZXM+IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShjb25zdCBTdHJp
bmcmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+Pj4g
cG9wS2V5ZnJhbWVzKQorUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2VyOjpjcmVh
dGVLZXlmcmFtZXNSdWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+PiBwb3BLZXlmcmFtZXMpCiB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+PiBrZXlmcmFtZXMgPSBXVEY6Om1v
dmUocG9wS2V5ZnJhbWVzKTsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNw
YWNlRGVjbGFyYXRpb25zID0gZmFsc2U7CkBAIC0xMjIwOSwxMCArMTIyMDksMTAgQEAgUGFzc1Jl
ZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJhbWVzUnVsZShj
b25zdCBTdHJpbmcmIG5hbWUKICAgICAgICAgcnVsZS0+cGFyc2VyQXBwZW5kS2V5ZnJhbWUoa2V5
ZnJhbWVzLT5hdChpKSk7CiAgICAgcnVsZS0+c2V0TmFtZShuYW1lKTsKICAgICBwcm9jZXNzQW5k
QWRkTmV3UnVsZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHJ1bGUucmVsZWFz
ZSgpOworICAgIHJldHVybiBydWxlOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENT
U1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+Piogc2VsZWN0b3JzKQorUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6
Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
Piogc2VsZWN0b3JzKQogewogICAgIFJlZlB0cjxTdHlsZVJ1bGU+IHJ1bGU7CiAgICAgaWYgKHNl
bGVjdG9ycykgewpAQCAtMTIyMjYsMTAgKzEyMjI2LDEwIEBAIFBhc3NSZWZQdHI8U3R5bGVSdWxl
QmFzZT4gQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxD
U1NQCiAgICAgfSBlbHNlCiAgICAgICAgIHBvcFJ1bGVEYXRhKCk7CiAgICAgY2xlYXJQcm9wZXJ0
aWVzKCk7Ci0gICAgcmV0dXJuIHJ1bGUucmVsZWFzZSgpOworICAgIHJldHVybiBydWxlOwogfQog
Ci1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlRm9udEZhY2VSdWxl
KCkKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgp
CiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9u
cyA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRp
ZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEyMjQ5LDcgKzEyMjQ5LDcgQEAgUGFzc1JlZlB0cjxTdHls
ZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSgpCiAgICAgUmVmUHRyPFN0
eWxlUnVsZUZvbnRGYWNlPiBydWxlID0gU3R5bGVSdWxlRm9udEZhY2U6OmNyZWF0ZShjcmVhdGVT
dHlsZVByb3BlcnRpZXMoKSk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgcHJvY2Vzc0Fu
ZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRlZCgpOwotICAgIHJldHVybiBydWxlLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gcnVsZTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OmFkZE5hbWVzcGFj
ZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkpCkBA
IC0xMjMyNCw3ICsxMjMyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4g
Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyhzdGQ6OnVuaXF1ZV9wdHI8CiAgICAgcmV0dXJu
IHNwZWNpZmllcnM7CiB9CiAKLVBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpj
cmVhdGVQYWdlUnVsZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHBhZ2VTZWxl
Y3RvcikKK1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKHN0
ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFnZVNlbGVjdG9yKQogewogICAgIC8v
IEZJWE1FOiBNYXJnaW4gYXQtcnVsZXMgYXJlIGlnbm9yZWQuCiAgICAgbV9hbGxvd0ltcG9ydFJ1
bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IGZhbHNlOwpAQCAtMTIzMzgsNyAr
MTIzMzgsNyBAQCBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlUGFn
ZVJ1bGUoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbAogICAgIH0gZWxzZQogICAgICAgICBw
b3BSdWxlRGF0YSgpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwotICAgIHJldHVybiBydWxlLnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gcnVsZTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4gQ1NTUGFyc2VyOjpjcmVhdGVTZWxl
Y3RvclZlY3RvcigpCkBAIC0xMjM1Niw3ICsxMjM1Niw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpyZWN5
Y2xlU2VsZWN0b3JWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Q1NTCiAgICAgICAgIG1fcmVjeWNsZWRTZWxlY3RvclZlY3RvciA9IFdURjo6bW92ZSh2ZWN0b3Ip
OwogfQogCi1QYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlUmVnaW9u
UnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHJlZ2lvblNl
bGVjdG9yLCBSdWxlTGlzdCogcnVsZXMpCitSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2Vy
OjpjcmVhdGVSZWdpb25SdWxlKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+PiogcmVnaW9uU2VsZWN0b3IsIFJ1bGVMaXN0KiBydWxlcykKIHsKICAgICBpZiAoIWNzc1Jl
Z2lvbnNFbmFibGVkKCkgfHwgIXJlZ2lvblNlbGVjdG9yIHx8ICFydWxlcykgewogICAgICAgICBw
b3BSdWxlRGF0YSgpOwpAQCAtMTIzNzAsNyArMTIzNzAsNyBAQCBQYXNzUmVmUHRyPFN0eWxlUnVs
ZUJhc2U+IENTU1BhcnNlcjo6Y3JlYXRlUmVnaW9uUnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PENTUwogICAgIGlmIChpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkpCiAgICAgICAgIGFkZE5ld1J1
bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7CiAKLSAg
ICByZXR1cm4gcmVnaW9uUnVsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlZ2lvblJ1bGU7CiB9
CiAKIHZvaWQgQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdp
bkJveFR5cGUgLyogbWFyZ2luQm94ICovKQpAQCAtMTI0MDIsNyArMTI0MDIsNyBAQCB2b2lkIENT
U1BhcnNlcjo6ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCkKICAgICB9KTsKIH0KIAotUGFzc1Jl
ZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQYXJzZXI6OmNyZWF0ZUtleWZyYW1lKENTU1BhcnNlclZh
bHVlTGlzdCYga2V5cykKK1JlZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQYXJzZXI6OmNyZWF0ZUtl
eWZyYW1lKENTU1BhcnNlclZhbHVlTGlzdCYga2V5cykKIHsKICAgICAvLyBDcmVhdGUgYSBrZXkg
c3RyaW5nIGZyb20gdGhlIHBhc3NlZCBrZXlzCiAgICAgU3RyaW5nQnVpbGRlciBrZXlTdHJpbmc7
CkBAIC0xMjQzNSw3ICsxMjQzNSw3IEBAIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gQ1NTUGFy
c2VyOjpjcmVhdGVLZXlmcmFtZShDU1NQYXJzZXJWYWx1ZUxpc3QmIGtleXMpCiAKICAgICBjbGVh
clByb3BlcnRpZXMoKTsKIAotICAgIHJldHVybiBrZXlmcmFtZS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGtleWZyYW1lOwogfQogCiB2b2lkIENTU1BhcnNlcjo6aW52YWxpZEJsb2NrSGl0KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaAppbmRleCA4ZTFmYzA2MTFjMjhmMmNhMWRmNGZmZGNmMjY1MmIxZDFm
MTc2N2JlLi5jOTE4ZWY5NTdhMzExM2EwZGYyNTU1YmFhNWIwYTcyZDVkOTUzYTJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCkBAIC0xMTQsOCArMTE0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIH5DU1NQYXJzZXIoKTsKIAogICAgIHZvaWQgcGFyc2VTaGVldChTdHlsZVNoZWV0Q29u
dGVudHMqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0UG9zaXRpb24mLCBSdWxlU291cmNlRGF0
YUxpc3QqLCBib29sIGxvZ0Vycm9ycyk7Ci0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBw
YXJzZVJ1bGUoU3R5bGVTaGVldENvbnRlbnRzKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgUGFzc1Jl
ZlB0cjxTdHlsZUtleWZyYW1lPiBwYXJzZUtleWZyYW1lUnVsZShTdHlsZVNoZWV0Q29udGVudHMq
LCBjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcGFyc2VSdWxlKFN0
eWxlU2hlZXRDb250ZW50cyosIGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxTdHlsZUtleWZy
YW1lPiBwYXJzZUtleWZyYW1lUnVsZShTdHlsZVNoZWV0Q29udGVudHMqLCBjb25zdCBTdHJpbmcm
KTsKICAgICBib29sIHBhcnNlU3VwcG9ydHNDb25kaXRpb24oY29uc3QgU3RyaW5nJik7CiAKICAg
ICBzdGF0aWMgUGFyc2VSZXN1bHQgcGFyc2VWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwg
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1v
ZGUsIFN0eWxlU2hlZXRDb250ZW50cyopOwpAQCAtMTIzLDggKzEyMyw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIGJv
b2wgc3RyaWN0ID0gZmFsc2UpOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRTeXN0ZW1Db2xvclZh
bHVlKENTU1ZhbHVlSUQpOwogICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29sb3IoUkdCQTMy
JiBjb2xvciwgY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
LSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVZhbGlkUHJpbWl0aXZlKENT
U1ZhbHVlSUQgaWRlbnQsIFZhbHVlV2l0aENhbGN1bGF0aW9uJik7CisgICAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlVmFsaWRQcmltaXRpdmUoQ1NTVmFs
dWVJRCBpZGVudCwgVmFsdWVXaXRoQ2FsY3VsYXRpb24mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgcGFyc2VEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwgY29uc3QgU3Ry
aW5nJiwgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4sIFN0eWxlU2hlZXRDb250ZW50cyog
Y29udGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRpYyBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiwgRWxlbWVudCop
OwpAQCAtMTQzLDkgKzE0Myw5IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlUXVvdGVzKENTU1By
b3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQWx0KENTU1Byb3BlcnR5
SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUF0dHIoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpOwogCi0gICAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gcGFyc2VCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
QmFja2dyb3VuZENvbG9yKCk7CiAKICAgICBzdHJ1Y3QgU291cmNlU2l6ZSB7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5RXhwPiBleHByZXNzaW9uOwpAQCAtMTYxLDkgKzE2MSw5
IEBAIHB1YmxpYzoKIAogICAgIGVudW0gRmlsbFBvc2l0aW9uRmxhZyB7IEludmFsaWRGaWxsUG9z
aXRpb24gPSAwLCBBbWJpZ3VvdXNGaWxsUG9zaXRpb24gPSAxLCBYRmlsbFBvc2l0aW9uID0gMiwg
WUZpbGxQb3NpdGlvbiA9IDQgfTsKICAgICBlbnVtIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlIHsg
UmVzb2x2ZVZhbHVlc0FzUGVyY2VudCA9IDAsIFJlc29sdmVWYWx1ZXNBc0tleXdvcmQgPSAxIH07
Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VGaWxsUG9zaXRpb25Db21w
b25lbnQoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmls
bFBvc2l0aW9uRmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlID0g
UmVzb2x2ZVZhbHVlc0FzUGVyY2VudCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VQ
b3NpdGlvblgoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VQb3NpdGlvblkoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJWYWx1ZUxpc3Qm
LCB1bnNpZ25lZCYgY3VtdWxhdGl2ZUZsYWdzLCBGaWxsUG9zaXRpb25GbGFnJiBpbmRpdmlkdWFs
RmxhZywgRmlsbFBvc2l0aW9uUGFyc2luZ01vZGUgPSBSZXNvbHZlVmFsdWVzQXNQZXJjZW50KTsK
KyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlUG9zaXRpb25YKENTU1BhcnNlclZhbHVlTGlzdCYp
OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VQb3NpdGlvblkoQ1NTUGFyc2VyVmFsdWVMaXN0
Jik7CiAgICAgdm9pZCBwYXJzZTJWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0
JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIGlzUG90
ZW50aWFsUG9zaXRpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOwogICAgIHZvaWQgcGFyc2VGaWxs
UG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxD
U1NWYWx1ZT4mKTsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZTRW
YWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1ZhbHVlPiYs
IFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYsIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4mJik7CiAKICAgICB2b2lkIHBhcnNlRmlsbFJlcGVhdChSZWZQdHI8
Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHBhcnNlRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgYm9vbCAmYWxsb3dDb21tYSk7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKENTU1Byb3BlcnR5SUQsIGJvb2wgJmFsbG93Q29t
bWEpOwogCiAgICAgYm9vbCBwYXJzZUZpbGxQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwg
Q1NTUHJvcGVydHlJRCYgcHJvcElkMSwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMiwgUmVmUHRyPENT
U1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlRmlsbFNob3J0aGFu
ZChDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBpbnQgbnVt
UHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOwpAQCAtMTc5LDE3ICsxNzksMTcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFJlZjxDU1NW
YWx1ZT4mJiBydmFsKTsKICAgICB2b2lkIGFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1
ZT4mIGx2YWwsIFJlZjxDU1NWYWx1ZT4mJiBydmFsKTsKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHBhcnNlQW5pbWF0aW9uRGVsYXkoKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUFuaW1hdGlvbkRpcmVjdGlvbigpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5p
bWF0aW9uRHVyYXRpb24oKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlv
bkZpbGxNb2RlKCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25JdGVy
YXRpb25Db3VudCgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uTmFt
ZSgpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uUGxheVN0YXRlKCk7
Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRp
b25QYXJzZUNvbnRleHQmKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvbkRl
bGF5KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvbkRpcmVjdGlvbigpOwor
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25EdXJhdGlvbigpOworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25GaWxsTW9kZSgpOworICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VBbmltYXRpb25OYW1lKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlv
blBsYXlTdGF0ZSgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25Qcm9wZXJ0
eShBbmltYXRpb25QYXJzZUNvbnRleHQmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24oKTsKICNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxf
MikKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvblRyaWdnZXIoKTsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uVHJpZ2dlcigpOwogI2VuZGlmCiAgICAg
c3RhdGljIFZlY3Rvcjxkb3VibGU+IHBhcnNlS2V5ZnJhbWVTZWxlY3Rvcihjb25zdCBTdHJpbmcm
KTsKIApAQCAtMjA0LDIxICsyMDQsMjEgQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VDb2x1bW5z
U2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkUG9zaXRpb24oKTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlR3JpZFBvc2l0aW9uKCk7CiAgICAgYm9vbCBwYXJzZUdyaWRJdGVt
UG9zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJv
b2wgcGFyc2VHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXMoUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJv
b2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZFRlbXBsYXRlU2hvcnRoYW5kKGJvb2wg
aW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlR3JpZFNob3J0aGFuZChib29sIGltcG9ydGFudCk7
CiAgICAgYm9vbCBwYXJzZUdyaWRBcmVhU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKICAgICBi
b29sIHBhcnNlU2luZ2xlR3JpZEFyZWFMb25naGFuZChSZWZQdHI8Q1NTVmFsdWU+Jik7Ci0gICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVHJhY2tMaXN0KCk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZUdyaWRUcmFja0xpc3QoKTsKICAgICBib29sIHBhcnNlR3JpZFRyYWNrUmVw
ZWF0RnVuY3Rpb24oQ1NTVmFsdWVMaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFy
c2VHcmlkVHJhY2tTaXplKENTU1BhcnNlclZhbHVlTGlzdCYgaW5wdXRMaXN0KTsKLSAgICBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUdyaWRCcmVhZHRoKENTU1BhcnNlclZhbHVl
Jik7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVmFs
dWVMaXN0JiBpbnB1dExpc3QpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VH
cmlkQnJlYWR0aChDU1NQYXJzZXJWYWx1ZSYpOwogICAgIGJvb2wgcGFyc2VHcmlkVGVtcGxhdGVB
cmVhc1JvdyhOYW1lZEdyaWRBcmVhTWFwJiwgY29uc3QgdW5zaWduZWQsIHVuc2lnbmVkJik7Ci0g
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVGVtcGxhdGVBcmVhcygpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gcGFyc2VHcmlkVGVtcGxhdGVBcmVhcygpOwogICAgIGJvb2wgcGFyc2VH
cmlkTGluZU5hbWVzKENTU1BhcnNlclZhbHVlTGlzdCYsIENTU1ZhbHVlTGlzdCYsIENTU0dyaWRM
aW5lTmFtZXNWYWx1ZSogPSBudWxscHRyKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUdyaWRBdXRvRmxvdyhDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+
IHBhcnNlR3JpZEF1dG9GbG93KENTU1BhcnNlclZhbHVlTGlzdCYpOwogI2VuZGlmCiAKICAgICBi
b29sIHBhcnNlRGFzaGJvYXJkUmVnaW9ucyhDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7
CkBAIC0yMjcsMzAgKzIyNywzMCBAQCBwdWJsaWM6CiAKICAgICBib29sIHBhcnNlTGVnYWN5UG9z
aXRpb24oQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VJdGVt
UG9zaXRpb25PdmVyZmxvd1Bvc2l0aW9uKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsK
LSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvbnRlbnREaXN0cmlidXRpb25PdmVyZmxv
d1Bvc2l0aW9uKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvbnRlbnREaXN0cmlidXRp
b25PdmVyZmxvd1Bvc2l0aW9uKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNoYXBlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CisgICAg
UmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNoYXBlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAjZW5k
aWYKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQmFzaWNTaGFwZUFuZE9yQm94KENT
U1Byb3BlcnR5SUQgcHJvcElkKTsKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBw
YXJzZUJhc2ljU2hhcGUoKTsKLSAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJz
ZVNoYXBlUmFkaXVzKENTU1BhcnNlclZhbHVlJik7Ci0gICAgUGFzc1JlZlB0cjxDU1NCYXNpY1No
YXBlPiBwYXJzZUJhc2ljU2hhcGVDaXJjbGUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7Ci0gICAgUGFz
c1JlZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJzZUJhc2ljU2hhcGVFbGxpcHNlKENTU1BhcnNlclZh
bHVlTGlzdCYpOwotICAgIFBhc3NSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VCYXNpY1NoYXBl
UG9seWdvbihDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKLSAgICBQYXNzUmVmUHRyPENTU0Jhc2ljU2hh
cGU+IHBhcnNlQmFzaWNTaGFwZUluc2V0KENTU1BhcnNlclZhbHVlTGlzdCYpOworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VCYXNpY1NoYXBlQW5kT3JCb3goQ1NTUHJvcGVydHlJRCBwcm9wSWQp
OworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VCYXNpY1NoYXBlKCk7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVNoYXBlUmFkaXVzKENTU1BhcnNlclZhbHVl
Jik7CisgICAgUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlQmFzaWNTaGFwZUNpcmNsZShDU1NQ
YXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VCYXNpY1No
YXBlRWxsaXBzZShDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQdHI8Q1NTQmFzaWNTaGFw
ZT4gcGFyc2VCYXNpY1NoYXBlUG9seWdvbihDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBSZWZQ
dHI8Q1NTQmFzaWNTaGFwZT4gcGFyc2VCYXNpY1NoYXBlSW5zZXQoQ1NTUGFyc2VyVmFsdWVMaXN0
Jik7CiAKICAgICBib29sIHBhcnNlRm9udChib29sIGltcG9ydGFudCk7CiAgICAgdm9pZCBwYXJz
ZVN5c3RlbUZvbnQoYm9vbCBpbXBvcnRhbnQpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBwYXJzZUZvbnRGYW1pbHkoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZUZvbnRG
YW1pbHkoKTsKIAogICAgIGJvb2wgcGFyc2VDb3VudGVyKENTU1Byb3BlcnR5SUQsIGludCBkZWZh
dWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCYgYXJncywgYm9vbCBjb3VudGVycyk7
CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVl
TGlzdCYgYXJncywgYm9vbCBjb3VudGVycyk7CiAKICAgICBib29sIHBhcnNlQ29sb3JQYXJhbWV0
ZXJzKENTU1BhcnNlclZhbHVlJiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBwYXJzZUFscGhhKTsK
ICAgICBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYsIGRvdWJsZSogY29s
b3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gcGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogPSBudWxscHRyKTsKKyAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlQ29sb3IoQ1NTUGFyc2VyVmFsdWUqID0gbnVsbHB0cik7
CiAgICAgYm9vbCBwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlJiwgUkdCQTMyJik7
CiAgICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYsIENTU1NlbGVjdG9yTGlzdCYp
OwogCkBAIC0yNjYsMTMgKzI2NiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZUZvbnRGYWNl
VW5pY29kZVJhbmdlKCk7CiAKICAgICBib29sIHBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNW
R1BhaW50KCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdDb2xvcigpOwotICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU1ZHU3Ryb2tlRGFzaGFycmF5KCk7Ci0gICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VQYWludE9yZGVyKCk7CisgICAgUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZVNWR1BhaW50KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR0NvbG9yKCk7
CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR1N0cm9rZURhc2hhcnJheSgpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gcGFyc2VQYWludE9yZGVyKCk7CiAKICAgICAvLyBDU1MzIFBhcnNpbmcg
Um91dGluZXMgKGZvciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIENTUzMpCi0gICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlU2hhZG93KENTU1BhcnNlclZhbHVlTGlzdCYsIENTU1Byb3Bl
cnR5SUQpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlU2hhZG93KENTU1BhcnNlclZh
bHVlTGlzdCYsIENTU1Byb3BlcnR5SUQpOwogICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZShDU1NQ
cm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+JiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAg
ICAgYm9vbCBwYXJzZUJvcmRlckltYWdlUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBi
b29sIHBhcnNlQm9yZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlPiYpOwpAQCAtMzAwLDI1ICszMDAsMjUgQEAgcHVibGljOgogICAgIGJv
b2wgcGFyc2VDcm9zc2ZhZGUoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgUmVmUHRyPENTU1ZhbHVlPiYp
OwogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQotICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlSW1hZ2VSZXNvbHV0aW9uKCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUltYWdlUmVzb2x1dGlvbigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkK
LSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUltYWdlU2V0KCk7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZUltYWdlU2V0KCk7CiAjZW5kaWYKIAogICAgIGJvb2wgcGFyc2VGaWx0ZXJJ
bWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKICAgICBib29s
IHBhcnNlRmlsdGVyKENTU1BhcnNlclZhbHVlTGlzdCYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAg
ICBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBwYXJzZUJ1aWx0aW5GaWx0ZXJBcmd1
bWVudHMoQ1NTUGFyc2VyVmFsdWVMaXN0JiwgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkZpbHRlck9w
ZXJhdGlvblR5cGUpOworICAgIFJlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gcGFyc2VCdWls
dGluRmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbHVlTGlzdCYsIFdlYktpdENTU0ZpbHRlclZh
bHVlOjpGaWx0ZXJPcGVyYXRpb25UeXBlKTsKIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlQ2xpcFBhdGgoKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQ2xpcFBhdGgoKTsKIAog
ICAgIHN0YXRpYyBib29sIGlzQmxlbmRNb2RlKENTU1ZhbHVlSUQpOwogICAgIHN0YXRpYyBib29s
IGlzQ29tcG9zaXRlT3BlcmF0b3IoQ1NTVmFsdWVJRCk7CiAKLSAgICBQYXNzUmVmUHRyPENTU1Zh
bHVlTGlzdD4gcGFyc2VUcmFuc2Zvcm0oKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNlclZhbHVlJik7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gcGFyc2VUcmFuc2Zvcm0oKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlVHJhbnNmb3Jt
VmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsKICAgICBib29sIHBhcnNlVHJhbnNmb3JtT3JpZ2luKENT
U1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9wZXJ0eUlE
JiBwcm9wSWQyLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQzLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVm
UHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlUGVyc3Bl
Y3RpdmVPcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3BJZDEs
IENTU1Byb3BlcnR5SUQmIHByb3BJZDIsICBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1Zh
bHVlPiYpOwogCkBAIC0zMzAsNyArMzMwLDcgQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VUZXh0
RGVjb3JhdGlvblNraXAoYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VUZXh0VW5kZXJs
aW5lUG9zaXRpb24oYm9vbCBpbXBvcnRhbnQpOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VUZXh0SW5kZW50KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVRleHRJbmRlbnQo
KTsKICAgICAKICAgICBib29sIHBhcnNlTGluZUJveENvbnRhaW4oYm9vbCBpbXBvcnRhbnQpOwog
ICAgIFJlZlB0cjxDU1NDYWxjVmFsdWU+IHBhcnNlQ2FsY3VsYXRpb24oQ1NTUGFyc2VyVmFsdWUm
LCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UpOwpAQCAtMzQ5LDIyICszNDksMjIgQEAg
cHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1Bh
cnNlclNlbGVjdG9yPj4+IGNyZWF0ZVNlbGVjdG9yVmVjdG9yKCk7CiAgICAgdm9pZCByZWN5Y2xl
U2VsZWN0b3JWZWN0b3Ioc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+Pj4pOwogCi0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVh
dGVJbXBvcnRSdWxlKGNvbnN0IENTU1BhcnNlclN0cmluZyYsIFBhc3NSZWZQdHI8TWVkaWFRdWVy
eVNldD4pOwotICAgIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gY3JlYXRlS2V5ZnJhbWUoQ1NT
UGFyc2VyVmFsdWVMaXN0Jik7Ci0gICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNy
ZWF0ZUtleWZyYW1lc1J1bGUoY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxS
ZWZQdHI8U3R5bGVLZXlmcmFtZT4+Pik7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0
ZUltcG9ydFJ1bGUoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiwgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5
U2V0Pik7CisgICAgUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IGNyZWF0ZUtleWZyYW1lKENTU1BhcnNl
clZhbHVlTGlzdCYpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNyZWF0ZUtleWZy
YW1lc1J1bGUoY29uc3QgU3RyaW5nJiwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZWZQdHI8U3R5
bGVLZXlmcmFtZT4+Pik7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFz
ZT4+IFJ1bGVMaXN0OwotICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlTWVkaWFS
dWxlKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4sIFJ1bGVMaXN0Kik7Ci0gICAgUGFzc1JlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVFbXB0eU1lZGlhUnVsZShSdWxlTGlzdCopOwotICAgIFBh
c3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzKTsKLSAgICBQYXNzUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IGNyZWF0ZUZvbnRGYWNlUnVsZSgpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVS
dWxlQmFzZT4gY3JlYXRlUGFnZVJ1bGUoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
PiBwYWdlU2VsZWN0b3IpOwotICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlUmVn
aW9uUnVsZShWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHJlZ2lv
blNlbGVjdG9yLCBSdWxlTGlzdCogcnVsZXMpOworICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBj
cmVhdGVNZWRpYVJ1bGUoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgUnVsZUxpc3QqKTsKKyAg
ICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlRW1wdHlNZWRpYVJ1bGUoUnVsZUxpc3QqKTsK
KyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JzKTsKKyAgICBSZWZQdHI8U3R5
bGVSdWxlQmFzZT4gY3JlYXRlRm9udEZhY2VSdWxlKCk7CisgICAgUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IGNyZWF0ZVBhZ2VSdWxlKHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gcGFn
ZVNlbGVjdG9yKTsKKyAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gY3JlYXRlUmVnaW9uUnVsZShW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHJlZ2lvblNlbGVjdG9y
LCBSdWxlTGlzdCogcnVsZXMpOwogICAgIHZvaWQgY3JlYXRlTWFyZ2luQXRSdWxlKENTU1NlbGVj
dG9yOjpNYXJnaW5Cb3hUeXBlKTsKLSAgICBQYXNzUmVmUHRyPFN0eWxlUnVsZUJhc2U+IGNyZWF0
ZVN1cHBvcnRzUnVsZShib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBSdWxlTGlzdCopOworICAg
IFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBjcmVhdGVTdXBwb3J0c1J1bGUoYm9vbCBjb25kaXRpb25J
c1N1cHBvcnRlZCwgUnVsZUxpc3QqKTsKICAgICB2b2lkIG1hcmtTdXBwb3J0c1J1bGVIZWFkZXJT
dGFydCgpOwogICAgIHZvaWQgbWFya1N1cHBvcnRzUnVsZUhlYWRlckVuZCgpOwotICAgIFBhc3NS
ZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBvcFN1cHBvcnRzUnVsZURhdGEoKTsKKyAgICBSZWZQ
dHI8Q1NTUnVsZVNvdXJjZURhdGE+IHBvcFN1cHBvcnRzUnVsZURhdGEoKTsKIAogICAgIHZvaWQg
c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKICAgICB2b2lkIGVuZERlY2xhcmF0aW9u
c0Zvck1hcmdpbkJveCgpOwpAQCAtNTU4LDcgKzU1OCw3IEBAIHByaXZhdGU6CiAgICAgUGFyc2VS
ZXN1bHQgcGFyc2VWYWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwgQ1NTUHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4
dFN0eWxlU2hlZXQpOwogICAgIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IHBhcnNlRGVj
bGFyYXRpb24oY29uc3QgU3RyaW5nJiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVT
aGVldCk7CiAKLSAgICBQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGU+IHBhcnNlSW5zZXRSb3VuZGVk
Q29ybmVycyhQYXNzUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4sIENTU1BhcnNlclZhbHVlTGlz
dCYpOworICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlPiBwYXJzZUluc2V0Um91bmRlZENvcm5lcnMo
UGFzc1JlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+LCBDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKIAog
ICAgIGVudW0gU2l6ZVBhcmFtZXRlclR5cGUgewogICAgICAgICBOb25lLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggNGU2MTczZGIzZTg4YWJhNGZiYzI1ODNi
N2UwMmMzNTgyMjY0ZGZmYi4uNGE0NmY3MTgwYjdlMGVlMDk1N2NkMjI5MGYxMjQ5ZGEzNGQ5ZmIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0xMjEyLDcg
KzEyMTIsNyBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzLCBjb25zdCBTdAogICAgICAgICBhZGRTdWJyZXNvdXJj
ZVVSTCh1cmxzLCBzdHlsZVNoZWV0LT5jb21wbGV0ZVVSTChtX3ZhbHVlLnN0cmluZykpOwogfQog
Ci1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y2xvbmVG
b3JDU1NPTSgpIGNvbnN0CitSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZh
bHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCA2
ZjJmMTg0N2JiYTIwODgwOTk2OWY2ODk1ZjQ2NTE1M2MyMjVkMDk2Li5hMTc0MzE2N2I1NWVkOTU0
MzNiMGIyNjNkMjdkY2RkNDFiNTRmYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaApAQCAtMzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50
cyopIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2xvbmVGb3JD
U1NPTSgpIGNvbnN0OworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2xvbmVGb3JDU1NP
TSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q1NTT01TYWZlKCkgeyBtX2lzQ1NTT01TYWZlID0gdHJ1
ZTsgfQogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDI0NzVjMTcxZjM3
NDRjMjYzNmJmYzg3OWUxYjlkYzFhY2IxZGI3YzguLjQ4ZmZmMmFhOGFkN2IyZjYyMzM3MjdkZjM0
ZGI5YTdjYmEwYmUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENzc1RleHQo
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CisgICAgdmlydHVh
bCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVy
dHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9
IDA7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAvLyBDU1NQcm9wZXJ0eUlEIHZlcnNp
b25zIG9mIHRoZSBDU1NPTSBmdW5jdGlvbnMgdG8gc3VwcG9ydCBiaW5kaW5ncyBhbmQgZWRpdGlu
Zy4KICAgICAvLyBVc2UgdGhlIG5vbi12aXJ0dWFsIG1ldGhvZHMgaW4gdGhlIGNvbmNyZXRlIHN1
YmNsYXNzZXMgd2hlbiBwb3NzaWJsZS4KICAgICAvLyBUaGUgQ1NTVmFsdWUgcmV0dXJuZWQgYnkg
dGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGV4cG9zZWQgdG8gdGhlIHdlYiBhcyBpdCBtYXkg
YmUgdXNlZCBieSBtdWx0aXBsZSBkb2N1bWVudHMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUlEKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5
Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDZiMWI0Yzg4NzMyMzNhODE3NGQ3YWZlZTFjY2RmYTYy
ZTdlNmQyYmMuLjBkMmI4MmZkNDFmY2VhOGFlNTk3YTIwNDA5YjhiNDgxZWM4ODAyNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI3MSwxMCArMjcxLDEwIEBAIGJvb2wg
Q1NTU3R5bGVTaGVldDo6Y2FuQWNjZXNzUnVsZXMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6cnVsZXMoKQorUmVm
UHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCiB7CiAgICAgaWYgKCFjYW5B
Y2Nlc3NSdWxlcygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgLy8gSUUgYmVoYXZpb3IuCiAgICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBub25D
aGFyc2V0UnVsZXMgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgdW5zaWduZWQg
cnVsZUNvdW50ID0gbGVuZ3RoKCk7CkBAIC0yODQsNyArMjg0LDcgQEAgUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6cnVsZXMoKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIG5vbkNoYXJzZXRSdWxlcy0+cnVsZXMoKS5hcHBlbmQocnVsZSk7CiAgICAgfQotICAg
IHJldHVybiBub25DaGFyc2V0UnVsZXMucmVsZWFzZSgpOworICAgIHJldHVybiBub25DaGFyc2V0
UnVsZXM7CiB9CiAKIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3QgU3Ry
aW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0z
NTgsMTAgKzM1OCwxMCBAQCBpbnQgQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcm
IHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBFeGNlcHRpbwogfQogCiAKLVBhc3NSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKCkKK1JlZlB0cjxDU1NSdWxl
TGlzdD4gQ1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQogewogICAgIGlmICghY2FuQWNjZXNzUnVs
ZXMoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlm
ICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKICAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlzKTsKICAgICBy
ZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCmluZGV4IGQzMTJlZWNiMWFmYzdmOTljNDFkMTJhYjQ1ZTBjYjk2NGI0YzA5NmQuLjE3
NGNkNGM5NTVlNGZlM2Y4NWI0MWVmODg0MDljZTJmNjJjNDkxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaApAQCAtNjMsMTIgKzYzLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgZGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRGlzYWJsZWQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgUGFz
c1JlZlB0cjxDU1NSdWxlTGlzdD4gY3NzUnVsZXMoKTsKKyAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+
IGNzc1J1bGVzKCk7CiAgICAgdW5zaWduZWQgaW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUs
IHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVSdWxlKHVu
c2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgCiAgICAgLy8gSUUgRXh0ZW5zaW9u
cwotICAgIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKCk7CisgICAgUmVmUHRyPENTU1J1
bGVMaXN0PiBydWxlcygpOwogICAgIGludCBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Is
IGNvbnN0IFN0cmluZyYgc3R5bGUsIGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGlu
dCBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IGRlbGV0ZVJ1bGUoaW5kZXgsIGVjKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1RvU3R5bGVNYXAuY3BwCmluZGV4IDI3ZDUzMDUxMDAzZjIyYTI0N2VkNDFmYTNlNjI4NzA5ZTE4
MzI3ZDkuLmUxZDQ5MjUwMDJiZjExMzM0ZjA0ODM4ZjRiNzk2MjVhMmU5MDE2NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBDU1NUb1N0
eWxlTWFwOjp1c2VTVkdab29tUnVsZXMoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc29sdmVyLT51
c2VTVkdab29tUnVsZXMoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NUb1N0eWxl
TWFwOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWUmIHZhbHVl
KQorUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1RvU3R5bGVNYXA6OnN0eWxlSW1hZ2UoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlkLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIG1fcmVzb2x2
ZXItPnN0eWxlSW1hZ2UocHJvcGVydHlJZCwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0
eWxlTWFwLmgKaW5kZXggMjU5ZWIyNjE2ZWJjODhmNzI4YmU4MDU2YTkyY2IzYWYyMmE5OGIzZS4u
MTE4NzgxOTUyNmIyNTcxZTZjNjAzNDM5NDU3YjkwZGM2NTg4MDg4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVG9TdHlsZU1hcC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2Ygc29tZSBzb3J0IG9mIFN0eWxlSW1hZ2VDYWNoZSBvYmpl
Y3Qgd2hpY2gKICAgICAvLyBpcyBoZWxkIGJ5IHRoZSBTdHlsZVJlc29sdmVyLCBhbmQgbGlrZWx5
IHByb3ZpZGVkIHRvIHRoaXMgb2JqZWN0CiAgICAgLy8gZHVyaW5nIHRoZSByZXNvbHZlLgotICAg
IFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1
ZSYpOworICAgIFJlZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlJik7CiAKICAgICBTdHlsZVJlc29sdmVyKiBtX3Jlc29sdmVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCmluZGV4IDQ1NWU3ODFhNmJiYjAzY2NlODA0MzVmZjgxOTcxODFlMTUwZjVl
MzEuLjlkYjZlYmU5OGJkZDBlODI3NDY1NDhiYWI3Mzc4ZDUwZTJhY2NmZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3ko
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IENTU1ZhbHVl
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CiAg
ICAgY2FzZSBQcmltaXRpdmVDbGFzczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggNTZmZDI4N2Nl
MDA0ZDZiNzM5YjkwZWE2ODgxYTY2NDUxYzA1ODRhNy4uMWFhOWFhMjVkNjkwNWFkNGMyNjI4NzQ0
MGExYTNlMTgxNjEwOWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTExOSw3ICsxMTksNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICB8fCBpc1ZhbHVlTGlzdCgpOwogICAgIH0KIAotICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NT
VmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDQzYzFhZmU3ODM2Mjk0
OThlOGI0NTI0MTQ3ZDg3NGIwYTc2YzI2MmMuLjM1MTQ1MGNlMGEwZGNjMGM3YzcyNWEwM2FhYmJm
ZjRmZWE1OTljOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC0xNjksOSAr
MTY5LDkgQEAgQ1NTVmFsdWVMaXN0OjpDU1NWYWx1ZUxpc3QoY29uc3QgQ1NTVmFsdWVMaXN0JiBj
bG9uZUZyb20pCiAgICAgICAgIG1fdmFsdWVzLnVuY2hlY2tlZEFwcGVuZCgqY2xvbmVGcm9tLm1f
dmFsdWVzW2ldLT5jbG9uZUZvckNTU09NKCkpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlTGlz
dD4gQ1NTVmFsdWVMaXN0OjpjbG9uZUZvckNTU09NKCkgY29uc3QKK1JlZjxDU1NWYWx1ZUxpc3Q+
IENTU1ZhbHVlTGlzdDo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDU1NWYWx1ZUxpc3QoKnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NWYWx1ZUxpc3QoKnRoaXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5oCmluZGV4IDVmNWY4ZWJhOWMwOGVjZjgwZTBjYmFiNzc0Y2NkYzcx
MDJmNDk5MjguLjRhMjFkZjdkYzM0MDkxNzU2ZGUwMmI4NzFiZDMwZTQ2YzRjYjI2YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0
IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsKICAgICAKLSAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZjxDU1NWYWx1ZUxp
c3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIENTU1ZhbHVlTGlz
dChDbGFzc1R5cGUsIFZhbHVlTGlzdFNlcGFyYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKaW5k
ZXggMDRlMDkzZWEyNDMyOWEzYTgzMmY2M2JiZmE1YjVlYzRmOTE3OTYwOC4uNzMxMDM0MDBiNDY3
Y2JiNGVmNWE4MDVlNDJjOTAyMmEwZmU5MDczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaApAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgU3RyaW5nIG1lZGlhVGV4dCgpIGNvbnN0
OwogCi0gICAgUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBjb3B5KCkgY29uc3QgeyByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhUXVlcnlTZXQoKnRoaXMpKTsgfQorICAgIFJlZjxNZWRpYVF1ZXJ5
U2V0PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVF1ZXJ5U2V0KCp0
aGlzKSk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYVF1ZXJ5U2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlNYXRjaGVyLmNwcAppbmRleCBlZGExZDJmNTBlNDBlNDVkNDVlZTJjMjNm
MmEzZWRjZGI0ODg2YTQyLi40ZGU5NjBiZjMwMTAzYWNmMDU3YjFiYTQzYjJjN2I4ZGRiZjk0MGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5jcHAKQEAgLTk5LDEwICs5
OSwxMCBAQCBib29sIE1lZGlhUXVlcnlNYXRjaGVyOjpldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5
U2V0KiBtZWRpYSkKICAgICByZXR1cm4gZXZhbHVhdG9yICYmIGV2YWx1YXRvci0+ZXZhbChtZWRp
YSk7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IE1lZGlhUXVlcnlNYXRjaGVyOjpt
YXRjaE1lZGlhKGNvbnN0IFN0cmluZyYgcXVlcnkpCitSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IE1l
ZGlhUXVlcnlNYXRjaGVyOjptYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYgcXVlcnkpCiB7CiAgICAg
aWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0Ojpj
cmVhdGUocXVlcnkpOwogI2lmIEVOQUJMRShSRVNPTFVUSU9OX01FRElBX1FVRVJZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaAppbmRleCA5OGZiOWNmNWEyODUzNmI4ZjgzNTE2
MjI3OGM3ZjBiMmU5OWU5YjEwLi44ZGFjMTcyNmFlY2IyZDQ4MWUzYzEyMTQzNGQyYmY5NmUzYzU4
YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lcihQYXNzUmVmUHRyPE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI+LCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0Pik7CiAgICAgdm9pZCByZW1v
dmVMaXN0ZW5lcihNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiwgTWVkaWFRdWVyeUxpc3QqKTsKIAot
ICAgIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IG1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJik7
CisgICAgUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBtYXRjaE1lZGlhKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgdW5zaWduZWQgZXZhbHVhdGlvblJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsdWF0
aW9uUm91bmQ7IH0KICAgICB2b2lkIHN0eWxlUmVzb2x2ZXJDaGFuZ2VkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IGM3Mjg1MWYwMDBhMmI1Y2I5MTlkZGVjMmUyMTZmODQ0OWI2Yjk5MDEuLjdmZThjMDQyNzk5
YjJjNjcwNmIzZWQwNGIwOWRiNmFjNjlkMGYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNjAsMTEgKzE2
MCwxMSBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZAogICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1
ZU11dGF0aW9uUmVjb3JkKCk7ICAgIAogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpCitSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkK
IHsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5
TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShtX3Byb3Bl
cnR5U2V0LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpLmdldCgpKTsKIH0KIApAQCAt
MjQ1LDcgKzI0NSw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJl
bW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
KQorUmVmUHRyPENTU1ZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAg
cmV0dXJuIG1fcHJvcGVydHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmgKaW5kZXggMzNhMDM4NmNkYjIwNTYwMDBkZTIxOGUxNDkwMzM3NDk1ZmMwMzhiYS4uNjA4
NzgwZjhjMjkxOGE0ZWE1ZDNhM2U3YWExYWFkOWQwYzgyOGUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtNTQsNyAr
NTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5
Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5UHJpb3Jp
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1
YWwgU3RyaW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
KSBvdmVycmlkZSBmaW5hbDsKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFN0cmluZyByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJ
RCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBvdmVycmlkZSBmaW5hbDsKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBib29sIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJv
cGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZSBmaW5hbDsKICAgICAKQEAgLTgzLDkgKzgzLDkgQEAgcHJvdGVjdGVkOgog
Y2xhc3MgU3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyYgcHJvcGVydHlTZXQsIENTU1J1bGUmIHBhcmVudFJ1bGUpCisgICAgc3RhdGljIFJlZjxT
dHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYgcHJvcGVydHlTZXQsIENTU1J1bGUmIHBhcmVudFJ1bGUpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQs
IHBhcmVudFJ1bGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlQ1NT
U3R5bGVEZWNsYXJhdGlvbihwcm9wZXJ0eVNldCwgcGFyZW50UnVsZSkpOwogICAgIH0KICAgICB2
aXJ0dWFsIH5TdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUkdCQ29s
b3IuY3BwCmluZGV4IGExODgzMGUxZmMxZThmMzkzY2JkZGM5MzllZDE2NzkwYjk1NjAwMzQuLjZh
NjdhYWVjOTBkZDcxY2JhMGYxZDg5M2JiZDZiYmNkZGQ1ZjdlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9SR0JDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNv
bG9yLmNwcApAQCAtMzUsMzYgKzM1LDM2IEBAIFJlZjxSR0JDb2xvcj4gUkdCQ29sb3I6OmNyZWF0
ZSh1bnNpZ25lZCByZ2JDb2xvcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSR0JDb2xvcihy
Z2JDb2xvcikpOwogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6
cmVkKCkKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gUkdCQ29sb3I6OnJlZCgpCiB7CiAgICAgdW5z
aWduZWQgdmFsdWUgPSAobV9yZ2JDb2xvciA+PiAxNikgJiAweEZGOwotICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gcmVzdWx0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOwogICAgIHJlc3VsdC0+c2V0Q1NTT01TYWZlKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gUkdCQ29sb3I6OmdyZWVuKCkKK1JlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gUkdCQ29sb3I6OmdyZWVuKCkKIHsKICAgICB1bnNpZ25lZCB2YWx1ZSA9IChtX3JnYkNv
bG9yID4+IDgpICYgMHhGRjsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAg
ICByZXN1bHQtPnNldENTU09NU2FmZSgpOwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IFJH
QkNvbG9yOjpibHVlKCkKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gUkdCQ29sb3I6OmJsdWUoKQog
ewogICAgIHVuc2lnbmVkIHZhbHVlID0gbV9yZ2JDb2xvciAmIDB4RkY7Ci0gICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVl
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiByZXN1bHQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgcmVzdWx0LT5zZXRDU1NPTVNhZmUoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBSR0JDb2xvcjo6YWxwaGEoKQorUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiBSR0JDb2xvcjo6YWxwaGEoKQogewogICAgIGZsb2F0IHZhbHVlID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KChtX3JnYkNvbG9yID4+IDI0KSAmIDB4RkYpIC8gMHhGRjsKLSAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFs
dWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IHJlc3VsdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICByZXN1bHQtPnNldENTU09NU2FmZSgpOwotICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SR0JDb2xv
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKaW5kZXggMWFmN2ViNzVkMWNmMGM0
MGFlNDgyM2IxOTRkYWE1Yjk2OGU0MjZiMy4uNzNmYmZhZjQzZDBmNDBjMTA2M2VhMDE4MTVkNTNi
NjkyYjE0ZDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1JHQkNvbG9yLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPFJHQkNvbG9y
PiBjcmVhdGUodW5zaWduZWQgcmdiQ29sb3IpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IHJlZCgpOwotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBncmVlbigpOwotICAgICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVlKCk7
Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGFscGhhKCk7CisgICAgICAg
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVkKCk7CisgICAgICAgIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gZ3JlZW4oKTsKKyAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVlKCk7Cisg
ICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYWxwaGEoKTsKIAogICAgICAgICBDb2xvciBj
b2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fcmdiQ29sb3IpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggZGM2Y2M1YjkzNDVjYzM5YTgwMWFkYTAyYTE0MmQxMjMyNmJkZGZjZi4uYjgwMWQ3MGFmZDY5
YmY1ZTg3Mzc0NWM0ZDE3ZTdmNDA3NGFkZTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gcGFpbnRPcmRlcihQYWludE9yZGVyIHBhaW50T3JkZXIp
CiAgICAgcmV0dXJuIFdURjo6bW92ZShwYWludE9yZGVyTGlzdCk7CiB9CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVW
YWx1ZShFR2x5cGhPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3N0YXRpYyBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGdseXBoT3JpZW50YXRpb25Ub0NTU1ByaW1pdGl2ZVZhbHVlKEVHbHlwaE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKICAg
ICAgICAgY2FzZSBHT18wREVHOgpAQCAtNzYsMTEgKzc2LDExIEBAIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShF
R2x5cGhPCiAgICAgICAgIGNhc2UgR09fMjcwREVHOgogICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoMjcwLjBmLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRyk7
CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHN0
cm9rZURhc2hBcnJheVRvQ1NTVmFsdWVMaXN0KGNvbnN0IFZlY3RvcjxTVkdMZW5ndGg+JiBkYXNo
ZXMpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBzdHJva2VEYXNoQXJyYXlUb0NTU1ZhbHVlTGlz
dChjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoPiYgZGFzaGVzKQogewogICAgIGlmIChkYXNoZXMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZp
ZXIoQ1NTVmFsdWVOb25lKTsKQEAgLTkwLDIyICs5MCwyMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gc3Ryb2tlRGFzaEFycmF5VG9DU1NWYWx1ZUxpc3QoY29uc3QgVmVjdG9yPFNWR0xl
bmd0aAogICAgIGZvciAoVmVjdG9yPFNWR0xlbmd0aD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZGFz
aGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgbGlzdC0+YXBwZW5kKFNWR0xl
bmd0aDo6dG9DU1NQcmltaXRpdmVWYWx1ZSgqaXQpKTsKIAotICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gbGlzdDsKIH0KIAotUGFzc1JlZlB0cjxTVkdQYWludD4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUGFzc1JlZlB0
cjxTVkdQYWludD4gbmV3UGFpbnQsIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK1JlZlB0cjxT
VkdQYWludD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50
Q29sb3IoUGFzc1JlZlB0cjxTVkdQYWludD4gbmV3UGFpbnQsIFJlbmRlclN0eWxlKiBzdHlsZSkg
Y29uc3QKIHsKICAgICBSZWZQdHI8U1ZHUGFpbnQ+IHBhaW50ID0gbmV3UGFpbnQ7CiAgICAgaWYg
KHBhaW50LT5wYWludFR5cGUoKSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09M
T1IgfHwgcGFpbnQtPnBhaW50VHlwZSgpID09IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSV9D
VVJSRU5UQ09MT1IpCiAgICAgICAgIHBhaW50LT5zZXRDb2xvcihzdHlsZS0+Y29sb3IoKSk7Ci0g
ICAgcmV0dXJuIHBhaW50LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcGFpbnQ7CiB9CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnN2Z1Byb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29u
c3QKK1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0
KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX25vZGUuZ2V0KCk7CiAgICAgaWYgKCFub2Rl
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBN
YWtlIHN1cmUgb3VyIGxheW91dCBpcyB1cCB0byBkYXRlIGJlZm9yZSB3ZSBhbGxvdyBhIHF1ZXJ5
IG9uIHRoZXNlIGF0dHJpYnV0ZXMuCiAgICAgaWYgKHVwZGF0ZUxheW91dCkKQEAgLTExMyw3ICsx
MTMsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpzdmdQ
cm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcAogCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
ID0gbm9kZS0+Y29tcHV0ZWRTdHlsZSgpOwogICAgIGlmICghc3R5bGUpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxl
JiBzdmdTdHlsZSA9IHN0eWxlLT5zdmdTdHlsZSgpOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3AKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNWR0xlbmd0
aDo6dG9DU1NQcmltaXRpdmVWYWx1ZShzdmdTdHlsZS5iYXNlbGluZVNoaWZ0VmFsdWUoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nOgogICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3ZnU3R5bGUuYnVmZmVyZWRSZW5kZXJpbmco
KSk7CkBAIC0yMTUsNyArMjE1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3AKICAgICAgICAg
ICAgIGlmIChzdmdTdHlsZS5nbHlwaE9yaWVudGF0aW9uVmVydGljYWwoKSA9PSBHT19BVVRPKQog
ICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmll
cihDU1NWYWx1ZUF1dG8pOwogCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRT
dmdTaGFkb3c6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JTaGFkb3coc3ZnU3R5bGUuc2hh
ZG93KCksIHByb3BlcnR5SUQsICpzdHlsZSk7CkBAIC0yMzYsNyArMjM2LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6c3ZnUHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3AKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAidW5pbXBsZW1l
bnRlZCBwcm9wZXJ0eUlEOiAlZCIsIHByb3BlcnR5SUQpOwogICAgIH0KICAgICBMT0dfRVJST1Io
InVuaW1wbGVtZW50ZWQgcHJvcGVydHlJRDogJWQiLCBwcm9wZXJ0eUlEKTsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2Vy
LmNwcAppbmRleCA5MDYzYTkwMzY0YWY2MzY0MGFjZTlhNTliYTE2ZjFhYjliOTE0MGQwLi42MDUw
MDY5NmI1MGIwMjQwODllNDQxMDE1Y2Y2ODFlNjczMDhiOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTUGFyc2VyLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNW
R1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNWR1N0cm9r
ZURhc2hhcnJheSgpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VTVkdTdHJva2VE
YXNoYXJyYXkoKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHJldCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBt
X3ZhbHVlTGlzdC0+Y3VycmVudCgpOwpAQCAtMzYxLDEwICszNjEsMTAgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVNWR1N0cm9rZURhc2hhcnJheSgpCiAgICAgfQogICAg
IGlmICghdmFsaWRfcHJpbWl0aXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gcmV0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmV0OwogfQogCi1QYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHUGFpbnQoKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlU1ZHUGFpbnQoKQogewogICAgIFJHQkEzMiBjID0gQ29sb3I6OnRyYW5zcGFyZW50
OwogICAgIGlmICghcGFyc2VDb2xvckZyb21WYWx1ZSgqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSwg
YykpCkBAIC0zNzIsMTUgKzM3MiwxNSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlU1ZHUGFpbnQoKQogICAgIHJldHVybiBTVkdQYWludDo6Y3JlYXRlQ29sb3IoQ29sb3Io
YykpOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHQ29sb3Io
KQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlU1ZHQ29sb3IoKQogewogICAgIFJH
QkEzMiBjID0gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgIGlmICghcGFyc2VDb2xvckZyb21WYWx1
ZSgqbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSwgYykpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gU1ZHQ29sb3I6OmNyZWF0ZUZyb21Db2xvcihD
b2xvcihjKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VQYWlu
dE9yZGVyKCkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVBhaW50T3JkZXIoKQog
ewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAK
QEAgLTQyNiw3ICs0MjYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNl
UGFpbnRPcmRlcigpCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQotICAgIHJldHVybiBwYWludE9yZGVyTGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHBhaW50T3JkZXJMaXN0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Zp
bHRlclZhbHVlLmNwcAppbmRleCA4NmNiNGNiNmMwNjg2NzU3MTJiZTcyMmI4NmQ0NmJmZjg4NDFk
MDU0Li41YTE0YmI4YjEyMzFjMDlhNzgwMmFjYTE3Yjk2YWMzNjYyZjgwNDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKQEAgLTg4LDkgKzg4LDkgQEAg
V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OldlYktpdENTU0ZpbHRlclZhbHVlKGNvbnN0IFdlYktpdENT
U0ZpbHRlclZhbHVlJiBjbG9uZUZyb20KIHsKIH0KIAotUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0
ZXJWYWx1ZT4gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAorUmVm
PFdlYktpdENTU0ZpbHRlclZhbHVlPiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NP
TSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NGaWx0ZXJWYWx1
ZSgqdGhpcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENTU0ZpbHRlclZhbHVl
KCp0aGlzKSk7CiB9CiAKIGJvb2wgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmVxdWFscyhjb25zdCBX
ZWJLaXRDU1NGaWx0ZXJWYWx1ZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5oCmluZGV4IDk4ZmYzYzE4YjI0YmUzMjVlOGRkZjVhYzVlMzUxNTNm
NDI2N2QxMWQuLmEyNDk2ZDY3MWU0ZGE0ZGFlMzI1MGMxNGNkN2FkNDlmNTVkYTcyMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKIAogICAgIEZpbHRlck9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1
ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgV2ViS2l0Q1NT
RmlsdGVyVmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cAppbmRleCAzMDY1NmQyOTMzZjJlZTBjM2UwNTQzZDk0NDFmN2I0ODg2NGIxYWZhLi43YTY1OWFj
ZjQ3NjZkMGVkZjljYzk5ZGYyYTk5YzE5NGQwYjkyMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTTWF0cml4LmNwcApAQCAtODksMjcgKzg5LDI3IEBAIHZvaWQgV2ViS2l0Q1NTTWF0cml4
OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB9CiAKIC8vIFBlcmZvcm0gYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBtYXRyaWNlcyAodGhpcyAq
IHNlY29uZE1hdHJpeCkKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRy
aXg6Om11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdAorUmVmUHRy
PFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShXZWJLaXRDU1NNYXRy
aXgqIHNlY29uZE1hdHJpeCkgY29uc3QKIHsKICAgICBpZiAoIXNlY29uZE1hdHJpeCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXgg
PSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0cml4LT5tX21hdHJp
eC5tdWx0aXBseShzZWNvbmRNYXRyaXgtPm1fbWF0cml4KTsKLSAgICByZXR1cm4gbWF0cml4LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gbWF0cml4OwogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU01h
dHJpeD4gV2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAor
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghbV9tYXRyaXguaXNJbnZlcnRpYmxlKCkpIHsK
ICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHJldHVybiBXZWJLaXRDU1NNYXRyaXg6
OmNyZWF0ZShtX21hdHJpeC5pbnZlcnNlKCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYktpdENTU01h
dHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3Vi
bGUgeikgY29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6dHJh
bnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIGNvbnN0CiB7CiAgICAgaWYgKHN0
ZDo6aXNuYW4oeCkpCiAgICAgICAgIHggPSAwOwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4
LCBkb3VibGUgeSwgZG91YmwKIAogICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9
IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0cml4
LnRyYW5zbGF0ZTNkKHgsIHksIHopOwotICAgIHJldHVybiBtYXRyaXgucmVsZWFzZSgpOworICAg
IHJldHVybiBtYXRyaXg7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRD
U1NNYXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJsZSBzY2Fs
ZVopIGNvbnN0CitSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNjYWxl
KGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJsZSBzY2FsZVopIGNvbnN0CiB7CiAg
ICAgaWYgKHN0ZDo6aXNuYW4oc2NhbGVYKSkKICAgICAgICAgc2NhbGVYID0gMTsKQEAgLTEzNCwx
MCArMTM0LDEwIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6
OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksCiAKICAgICBSZWZQdHI8V2ViS2l0
Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CiAg
ICAgbWF0cml4LT5tX21hdHJpeC5zY2FsZTNkKHNjYWxlWCwgc2NhbGVZLCBzY2FsZVopOwotICAg
IHJldHVybiBtYXRyaXgucmVsZWFzZSgpOworICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZShkb3VibGUgcm90
WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdAorUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZLCBkb3Vi
bGUgcm90WikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihyb3RYKSkKICAgICAgICAgcm90
WCA9IDA7CkBAIC0xNTUsMTAgKzE1NSwxMCBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4g
V2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZLCBkbwogCiAg
ICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVh
dGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgucm90YXRlM2Qocm90WCwgcm90WSwg
cm90Wik7Ci0gICAgcmV0dXJuIG1hdHJpeC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1hdHJpeDsK
IH0KIAotUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRl
QXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29u
c3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0Fu
Z2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3QKIHsK
ICAgICBpZiAoc3RkOjppc25hbih4KSkKICAgICAgICAgeCA9IDA7CkBAIC0xNzMsMjcgKzE3Mywy
NyBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGVB
eGlzQW5nbGUoZG91YmxlIHgsIGRvdWJsZSB5LAogCiAgICAgUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJp
eC0+bV9tYXRyaXgucm90YXRlM2QoeCwgeSwgeiwgYW5nbGUpOwotICAgIHJldHVybiBtYXRyaXgu
cmVsZWFzZSgpOworICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0Q1NT
TWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNrZXdYKGRvdWJsZSBhbmdsZSkgY29uc3QKK1JlZlB0
cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1goZG91YmxlIGFuZ2xlKSBj
b25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAgICAgYW5nbGUgPSAwOwog
CiAgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4Ojpj
cmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXguc2tld1goYW5nbGUpOwotICAg
IHJldHVybiBtYXRyaXgucmVsZWFzZSgpOworICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKGRvdWJsZSBhbmds
ZSkgY29uc3QKK1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1ko
ZG91YmxlIGFuZ2xlKSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAg
ICAgYW5nbGUgPSAwOwogCiAgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2Vi
S2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXguc2tl
d1koYW5nbGUpOwotICAgIHJldHVybiBtYXRyaXgucmVsZWFzZSgpOworICAgIHJldHVybiBtYXRy
aXg7CiB9CiAKIFN0cmluZyBXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAppbmRleCBlYzFkYjlmMDU2NTBlNGFmNWYwMGU2MDgw
MWI5OTQ4MDQwYzUwZDc2Li44OTIxY2U0NjYwNDIwNjExZjcxYWIwNWM0NjgyMWM4Mjk2NWE5OTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oCkBAIC0xMDMsNDggKzEwMyw0OCBA
QCBwdWJsaWM6CiAgICAgLy8gc3BlY2lmaWVkIG9wZXJhdGlvbiBhcHBsaWVkLiBUaGUgdGhpcyB2
YWx1ZSBpcyBub3QgbW9kaWZpZWQuCiAKICAgICAvLyBNdWx0aXBseSB0aGlzIG1hdHJpeCBieSBz
ZWNvbmRNYXRyaXgsIG9uIHRoZSByaWdodCAocmVzdWx0ID0gdGhpcyAqIHNlY29uZE1hdHJpeCkK
LSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbXVsdGlwbHkoV2ViS2l0Q1NTTWF0cml4
KiBzZWNvbmRNYXRyaXgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG11bHRp
cGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdDsKIAogICAgIC8vIFJldHVy
biB0aGUgaW52ZXJzZSBvZiB0aGlzIG1hdHJpeC4gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSBt
YXRyaXggaXMgbm90IGludmVydGlibGUKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4g
aW52ZXJzZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gaW52ZXJzZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhpcyBt
YXRyaXggdHJhbnNsYXRlZCBieSB0aGUgcGFzc2VkIHZhbHVlcy4KICAgICAvLyBQYXNzaW5nIGEg
TmFOIHdpbGwgdXNlIGEgdmFsdWUgb2YgMC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNl
ZCBmb3IgMkQgb3BlcmF0aW9ucwogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhv
dWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAv
LyB0aGUgdHJhbnNsYXRpb24gdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSB0cmFuc2xhdGlv
bih4LHkseikgKiB0aGlzKQotICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiB0cmFuc2xh
dGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgY29uc3Q7CisgICAgUmVmUHRyPFdlYktp
dENTU01hdHJpeD4gdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIGNvbnN0
OwogCiAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCBzY2FsZWQgYnkgdGhlIHBhc3NlZCB2YWx1
ZXMuCiAgICAgLy8gUGFzc2luZyBzY2FsZVggb3Igc2NhbGVaIGFzIE5hTiB1c2VzIGEgdmFsdWUg
b2YgMSwgYnV0IHBhc3Npbmcgc2NhbGVZIG9mIE5hTgogICAgIC8vIG1ha2VzIGl0IHRoZSBzYW1l
IGFzIHNjYWxlWC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0
aW9ucwogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1h
dHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAvLyB0aGUgc2NhbGUgdmFs
dWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSBzY2FsZSh4LHkseikgKiB0aGlzKQotICAgIFBhc3NS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZ
LCBkb3VibGUgc2NhbGVaKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBzY2Fs
ZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKSBjb25zdDsKIAog
ICAgIC8vIFJldHVybnMgdGhpcyBtYXRyaXggcm90YXRlZCBieSB0aGUgcGFzc2VkIHZhbHVlcy4K
ICAgICAvLyBJZiByb3RZIGFuZCByb3RaIGFyZSBOYU4sIHJvdGF0ZSBhYm91dCBaIChyb3RYPTAs
IHJvdGF0ZVk9MCwgcm90YXRlWj1yb3RYKS4KICAgICAvLyBPdGhlcndpc2UgdXNlIGEgcm90YXRp
b24gdmFsdWUgb2YgMCBmb3IgYW55IHBhc3NlZCBOYU4uCiAgICAgLy8gT3BlcmF0aW9uIGlzIHBl
cmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRy
aXggd2l0aAogICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9
IHJvdGF0aW9uKHgseSx6KSAqIHRoaXMpCi0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+
IHJvdGF0ZShkb3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdDsKKyAg
ICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZ
LCBkb3VibGUgcm90WikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoaXMgbWF0cml4IHJvdGF0
ZWQgYWJvdXQgdGhlIHBhc3NlZCBheGlzIGJ5IHRoZSBwYXNzZWQgYW5nbGUuCiAgICAgLy8gUGFz
c2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuIElmIHRoZSBheGlzIGlzICgwLDAsMCkg
dXNlIGEgdmFsdWUKICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFzIHRob3VnaCB0aGUg
dGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRoCiAgICAgLy8gdGhlIHJv
dGF0aW9uIHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gcm90YXRpb24oeCx5LHosYW5nbGUp
ICogdGhpcykKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4gcm90YXRlQXhpc0FuZ2xl
KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3Q7CisgICAg
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gcm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUg
eSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhpcyBt
YXRyaXggc2tld2VkIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAg
Ly8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuCiAgICAgLy8gT3BlcmF0aW9u
IGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkg
YSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSBza2V3IHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0
ID0gc2tld1goYW5nbGUpICogdGhpcykKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU01hdHJpeD4g
c2tld1goZG91YmxlIGFuZ2xlKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBz
a2V3WChkb3VibGUgYW5nbGUpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHNr
ZXdlZCBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3Np
bmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLgogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJm
b3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4
IHdpdGgKICAgICAvLyB0aGUgc2tldyB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHNrZXdZ
KGFuZ2xlKSAqIHRoaXMpCi0gICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHNrZXdZKGRv
dWJsZSBhbmdsZSkgY29uc3Q7CisgICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gc2tld1koZG91
YmxlIGFuZ2xlKSBjb25zdDsKIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX21hdHJpeDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAppbmRleCA5MzUxOTNmNjc3YTU4NmEzZjAy
NjRlMWIyNDg2ODQ3ZGJiZjA1ZTAzLi42NzcyMTJlNDhjODRiMzI5ZTBkOTk5ZTM3ODQ0NjA4Zjli
OWIwMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5jcHAKQEAgLTg0LDkgKzg0LDkgQEAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OldlYktpdENT
U1RyYW5zZm9ybVZhbHVlKGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlJgogewogfQogCi1Q
YXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CitSZWY8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKCp0aGlzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoKnRoaXMpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAppbmRleCBj
MWM5MWNmN2JhM2RmYTRiZTZmMTZhOGM4N2ExY2UwOTk3ZjE3NDljLi43Y2VjMzUzNGJiM2JhYzM5
OTJlYzY1OWFhMmY1YWZlMGQxOGQwMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25UeXBlIG9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KICAgICAKLSAgICBQYXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBjbG9uZUZv
ckNTU09NKCkgY29uc3Q7CisgICAgUmVmPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBjbG9uZUZv
ckNTU09NKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUo
VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>