<?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>145112</bug_id>
          
          <creation_ts>2015-05-17 17:42:53 -0700</creation_ts>
          <short_desc>Purge PassRefPtr in WebCore/Modules</short_desc>
          <delta_ts>2015-05-21 00:27:22 -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>New Bugs</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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1095534</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-05-17 17:42:53 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095535</commentid>
    <comment_count>1</comment_count>
      <attachid>253300</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-05-17 17:44:11 -0700</bug_when>
    <thetext>Created attachment 253300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095542</commentid>
    <comment_count>2</comment_count>
      <attachid>253302</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-05-17 22:24:48 -0700</bug_when>
    <thetext>Created attachment 253302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096246</commentid>
    <comment_count>3</comment_count>
      <attachid>253302</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-20 08:51:55 -0700</bug_when>
    <thetext>Comment on attachment 253302
Patch

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

&gt; Source/WebCore/Modules/geolocation/PositionOptions.h:36
&gt; +    static Ref&lt;PositionOptions&gt; create() { return adoptRef(*new PositionOptions()); }

I like to omit the unneeded parentheses in cases like this.

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.h:51
&gt; +    static RefPtr&lt;RTCDataChannel&gt; create(ScriptExecutionContext*, RTCPeerConnectionHandler*, const String&amp; , const Dictionary&amp;, ExceptionCode&amp;);

Stray space after &quot;const String&amp;&quot;. Also, it makes no sense to omit the argument name for the string and dictionary; the types alone do not make it clear what these are!

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:159
&gt; +RefPtr&lt;WebSocket&gt; WebSocket::create(ScriptExecutionContext&amp; context)

Should be Ref, not RefPtr.

&gt; Source/WebCore/Modules/websockets/WebSocket.h:57
&gt; +    static RefPtr&lt;WebSocket&gt; create(ScriptExecutionContext&amp;);

Should be Ref, not RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096464</commentid>
    <comment_count>4</comment_count>
      <attachid>253498</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-05-20 20:02:04 -0700</bug_when>
    <thetext>Created attachment 253498
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096502</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-05-20 23:37:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 253302 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253302&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/geolocation/PositionOptions.h:36
&gt; &gt; +    static Ref&lt;PositionOptions&gt; create() { return adoptRef(*new PositionOptions()); }
&gt; 
&gt; I like to omit the unneeded parentheses in cases like this.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCDataChannel.h:51
&gt; &gt; +    static RefPtr&lt;RTCDataChannel&gt; create(ScriptExecutionContext*, RTCPeerConnectionHandler*, const String&amp; , const Dictionary&amp;, ExceptionCode&amp;);
&gt; 
&gt; Stray space after &quot;const String&amp;&quot;. Also, it makes no sense to omit the
&gt; argument name for the string and dictionary; the types alone do not make it
&gt; clear what these are!
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:159
&gt; &gt; +RefPtr&lt;WebSocket&gt; WebSocket::create(ScriptExecutionContext&amp; context)
&gt; 
&gt; Should be Ref, not RefPtr.
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.h:57
&gt; &gt; +    static RefPtr&lt;WebSocket&gt; create(ScriptExecutionContext&amp;);
&gt; 
&gt; Should be Ref, not RefPtr.

All fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096513</commentid>
    <comment_count>6</comment_count>
      <attachid>253498</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-21 00:27:18 -0700</bug_when>
    <thetext>Comment on attachment 253498
Patch for landing

Clearing flags on attachment: 253498

Committed r184709: &lt;http://trac.webkit.org/changeset/184709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096514</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-21 00:27:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253300</attachid>
            <date>2015-05-17 17:44:11 -0700</date>
            <delta_ts>2015-05-17 22:24:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145112-20150518094408.patch</filename>
            <type>text/plain</type>
            <size>86856</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRjMTRiZjRjMzVlODk3
ZmFkNzY4ODZlNmY0OTliNzgzMGJmMDIyNC4uY2Y1MGZjMTY2NzI0YzllMTRhMjRmZjE1ZDllYjU3
NWMzMjBjZTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxNS0wNS0xNyAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHVyZ2UgUGFz
c1JlZlB0ciBpbiBXZWJDb3JlL01vZHVsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NTExMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFzIGEgc3RlcCB0byByZW1vdmUgUGFzc1JlZlB0ciwgdGhpcyBw
YXRjaCByZXBsYWNlcyBQYXNzUmVmUHRyIHdpdGggUmVmIG9yIFJlZlB0cgorICAgICAgICBkZXBl
bmRzIG9uIG51bGwgb2YgcmV0dXJuIHZhbHVlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
YmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5czo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oOgorICAgICAg
ICAqIE1vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvblBvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25FcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0
aW9uT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJBbnk6OmNyZWF0ZUludmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQW55Ojpj
cmVhdGVOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6Y3JlYXRlU3RyaW5nKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkFueTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvckJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yQmFja2VuZE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckl0ZXJhdGlv
bk9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvckFkdmFuY2VPcGVy
YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0
aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcldpdGhWYWx1ZTo6ZnJvbUN1cnNvcik6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpjcmVhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5OjpjcmVhdGVJbnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleTo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlRGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJLZXk6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpD
cmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlZlcnNpb25DaGFuZ2VBYm9y
dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlB1dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNldEluZGV4
ZXNSZWFkeU9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5DdXJzb3JP
cGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudE9wZXJhdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xlYXJPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0Lmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDSWNlQ2Fu
ZGlkYXRlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2Fu
ZGlkYXRlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0Lmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpydW5UcmFuc2FjdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTEVycm9yOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTUUxSZXN1bHRTZXQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxSZXN1
bHRTZXRSb3dMaXN0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0ZW1lbnRCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
QmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2Vu
ZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmNyZWF0ZSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENvbW1hbmQ6OmNyZWF0ZSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogeG1sL1hQYXRoRXhwcmVzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aEV4cHJlc3Npb246OmNyZWF0ZUV4cHJlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhFeHByZXNzaW9uOjpldmFsdWF0ZSk6CisgICAg
ICAgICogeG1sL1hQYXRoRXhwcmVzc2lvbi5oOgorCiAyMDE1LTA1LTE2ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoU3VicGl4ZWwpOiBEYXNo
ZWQgdW5kZXJsaW5lIGlzIG1pc3Npbmcgd2hlbiBib3ggaXMgcG9zaXRpb25lZCBhdCBzdWJwaXhl
bHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZGViMWMwMzg4NjA0YmU4OGIzYTEzMmEwYmRkOTFm
ZDExMWU4NGMzZC4uMWU0Mjg2Y2Q0MmU5N2ZkOTczMTUzMzMyZWVkNmUyN2I3NGI2MTM0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtNDAsOSArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQorUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFLZXlzKiBrZXlzLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZihu
ZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIGtleXMsIGtleVN5c3RlbSkpOworICAgIGF1dG8g
c2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIGtleXMsIGtl
eVN5c3RlbSkpOwogICAgIHNlc3Npb24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBz
ZXNzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggMzRlOGU2MzM1YWIxNTZlZDk5MTk0YmRlZDhl
ZjQ0MmQwOWExZGU3ZC4uOTgyNDZjMmIxZTM0ZTEyODFhNjg3YzEzZGUyNTdjOGIyYzU2MzIyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhS2V5czsKIAogY2xh
c3MgTWVkaWFLZXlTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNz
aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QsIHB1YmxpYyBDRE1TZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
TWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIHN0YXRpYyBSZWY8TWVk
aWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhS2V5cyos
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB+TWVkaWFLZXlTZXNzaW9uKCk7CiAKICAg
ICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKaW5kZXggMDJlODQyOTgyMWQ1MWFkNGY4Nzk1ZDkzNmQ4OGIzNjUyNTdlOGQ5ZC4uY2Ez
ZGIwYjE4MzFmNDVjNjgwODAxMWI1NjJhMjYyNzExNWRhMTgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMzgsNyAr
MzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFLZXlzPiBN
ZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3Mu
dzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0
ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CiAgICAgLy8gVGhlIE1l
ZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9yIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CkBAIC00NiwxMyArNDYsMTMgQEAgUGFzc1JlZlB0cjxNZWRpYUtleXM+IE1lZGlhS2V5czo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJgogICAgIC8vIDEu
IElmIGtleVN5c3RlbSBpcyBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4gSU5WQUxJ
RF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGtl
eVN5c3RlbS5pc051bGwoKSB8fCBrZXlTeXN0ZW0uaXNFbXB0eSgpKSB7CiAgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgLy8gMi4gSWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhl
IHVzZXIgYWdlbnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRocm93IGEgTk9UX1NVUFBPUlRF
RF9FUlIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghQ0RNOjpzdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0pKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAvLyAz
LiBMZXQgY2RtIGJlIHRoZSBjb250ZW50IGRlY3J5cHRpb24gbW9kdWxlIGNvcnJlc3BvbmRpbmcg
dG8ga2V5U3lzdGVtLgpAQCAtNjIsNyArNjIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhS2V5cz4gTWVk
aWFLZXlzOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmCiAg
ICAgLy8gNS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5cyBvYmplY3QuCiAgICAgLy8gNS4xIExldCB0
aGUga2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCiAgICAgLy8gNi4gUmV0dXJuIHRo
ZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YUtleXMoa2V5U3lzdGVtLCBXVEY6Om1vdmUoY2RtKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIFdURjo6bW92ZShjZG0pKSk7CiB9CiAKIE1lZGlhS2V5
czo6TWVkaWFLZXlzKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8Q0RN
PiBjZG0pCkBAIC04Myw3ICs4Myw3IEBAIE1lZGlhS2V5czo6fk1lZGlhS2V5cygpCiAgICAgfQog
fQogCi1QYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgVWlu
dDhBcnJheSogaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPE1lZGlhS2V5U2Vz
c2lvbj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIC8vIEZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTQvV0Qt
ZW5jcnlwdGVkLW1lZGlhLTIwMTQwMjE4LyNkb20tY3JlYXRlc2Vzc2lvbj46CiAgICAgLy8gVGhl
IGNyZWF0ZVNlc3Npb24odHlwZSwgaW5pdERhdGEpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzOgpAQCAtOTIsMjAgKzkyLDIwIEBAIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9u
PiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29uCiAg
ICAgLy8gMS4gSWYgY29udGVudFR5cGUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93
IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAog
ICAgIC8vIDIuIElmIGluaXREYXRhIGlzIG51bGwgb3IgYW4gZW1wdHkgYXJyYXksIHRocm93IGFu
IElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAg
IGlmICghaW5pdERhdGEgfHwgIWluaXREYXRhLT5sZW5ndGgoKSkgewogICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIC8vIDMuIElmIHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUgdGhh
dCBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtleVN5c3RlbSwg
dGhyb3cKICAgICAvLyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCiAgICAgaWYgKCF0eXBlLmlzTnVsbCgpICYmICF0eXBlLmlzRW1wdHkoKSAmJiAh
bV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUodHlwZSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAogICAgIC8vIDQuIENyZWF0ZSBhIG5ldyBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgpAQCAt
MTE5LDcgKzExOSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNy
ZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29uCiAgICAgc2Vzc2lvbi0+Z2Vu
ZXJhdGVLZXlSZXF1ZXN0KHR5cGUsIGluaXREYXRhKTsKIAogICAgIC8vIDYuIFJldHVybiB0aGUg
bmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgotICAgIHJldHVybiBzZXNzaW9uOworICAgIHJldHVy
biBXVEY6Om1vdmUoc2Vzc2lvbik7CiB9CiAKIGJvb2wgTWVkaWFLZXlzOjppc1R5cGVTdXBwb3J0
ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRl
eCBmOGQ2ZDJlNTM4ZjcwZWYwZmQyOWNiMzdmZjY0Y2M4ZjVlZWUwNGU2Li4zNGZjYThmY2Q4YzIy
NTk1MmFkNDViOGY4OGYyMjNkZjBmNTAxMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwogCiBjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZWRpYUtleXM+LCBwdWJsaWMgQ0RNQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFLZXlzPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUtleXMo
KTsKIAotICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBzdGF0aWMg
Ym9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVw
YWQvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaApp
bmRleCA5ZGMxZmRjYjliMDA2ZGFmODAyN2U5YWY4Yzk5NGZiYmRkOWJhOTBhLi42NDYxYWJhMmIy
MzFjYmUzODhkOTY5ZjkxNDFkODVhYWMyOWQyZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmgKQEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgUGxhdGZvcm1HYW1lcGFk
OwogCiBjbGFzcyBHYW1lcGFkOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZD4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtR2Ft
ZXBhZCYgcGxhdGZvcm1HYW1lcGFkKQorICAgIHN0YXRpYyBSZWY8R2FtZXBhZD4gY3JlYXRlKGNv
bnN0IFBsYXRmb3JtR2FtZXBhZCYgcGxhdGZvcm1HYW1lcGFkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHYW1lcGFkKHBsYXRmb3JtR2FtZXBhZCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBHYW1lcGFkKHBsYXRmb3JtR2FtZXBhZCkpOwogICAgIH0KICAgICB+
R2FtZXBhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
ZGVwcmVjYXRlZC9HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvZGVw
cmVjYXRlZC9HYW1lcGFkLmgKaW5kZXggMDcwMTE4NDMxOTNhNmU0MmY2NmZhMWViZjg0YzNkODY2
M2U4MGNmZS4uNjAyNmEwNmU1YzcyNTYxMjJlNTJjOWIzMzY5MDMwODA5MDExNjU0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL2RlcHJlY2F0ZWQvR2FtZXBhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWQu
aApAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdhbWVwYWQ6
IHB1YmxpYyBSZWZDb3VudGVkPEdhbWVwYWQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxHYW1lcGFkPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8R2FtZXBhZD4gY3JlYXRlKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZCk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEdhbWVwYWQpOwogICAgIH0KICAgICB+R2FtZXBhZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25F
cnJvci5oCmluZGV4IGJmYjYxYWFiZWRhYjU5NTBiZDliZTIxMzQwM2M1YjNkZTMyMGRiODguLjA1
NTRlODdiNjdmOTVhZTZkNmE3MDA4MTE4MzU5Njg5MmQxNGIwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25FcnJvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25FcnJvci5oCkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgUG9zaXRpb25VbmF2YWlsYWJsZQogICAgIH07
CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBjcmVhdGUoRXJyb3JD
b2RlIGNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEdl
b2xvY2F0aW9uRXJyb3IoY29kZSwgbWVzc2FnZSkpOyB9CisgICAgc3RhdGljIFJlZjxHZW9sb2Nh
dGlvbkVycm9yPiBjcmVhdGUoRXJyb3JDb2RlIGNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW9sb2NhdGlvbkVycm9yKGNvZGUsIG1lc3NhZ2UpKTsg
fQogCiAgICAgRXJyb3JDb2RlIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KICAgICBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3Np
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBv
c2l0aW9uLmgKaW5kZXggN2IxNTY0OGY4OGRkMjU4ZjI2MjUyNmRlM2Q0OTY3NTc2OWQ4OWU4Ny4u
OGQxZTkzMDcwMWEyODA3MjI0NDY1YzUyNWFiZmZlMzY2OTJjZDI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBvc2l0aW9u
LmgKQEAgLTM0LDkgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9j
YXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9zaXRpb24+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBjcmVh
dGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9sb2NhdGlvblBvc2l0aW9u
KHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpKTsgfQorICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7CisgICAgfQogCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRv
dWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBib29sIHBy
b3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNj
dXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91
YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25n
aXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRp
dHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcs
IHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7IH0KKyAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9z
aXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUg
YWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVB
Y2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3Zp
ZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBh
Y2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRl
c1NwZWVkLCBzcGVlZCkpOworICAgIH0KIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3RpbWVzdGFtcDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb3Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb3Bvc2l0aW9uLmgKaW5kZXggMjcwNjRkZGRmMDY0NTY4OGZmZDY2N2E1Yzk3
ODJkYWNhYTExNzRjMi4uNzhkYzM2YTVlMTkwZmRiMzljNjc3NWE3YjQyMGNkMDU3Nzc3MjQyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24u
aApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdlb3Bvc2l0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvcG9zaXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxHZW9wb3NpdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8Q29vcmRpbmF0ZXM+
IGNvb3JkaW5hdGVzLCBET01UaW1lU3RhbXAgdGltZXN0YW1wKQorICAgIHN0YXRpYyBSZWY8R2Vv
cG9zaXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPENvb3JkaW5hdGVzPiBjb29yZGluYXRlcywgRE9N
VGltZVN0YW1wIHRpbWVzdGFtcCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2VvcG9zaXRpb24oY29vcmRpbmF0ZXMsIHRpbWVzdGFtcCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBHZW9wb3NpdGlvbihjb29yZGluYXRlcywgdGltZXN0YW1wKSk7CiAgICAgfQog
CiAgICAgUGFzc1JlZlB0cjxHZW9wb3NpdGlvbj4gaXNvbGF0ZWRDb3B5KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yLmgKaW5k
ZXggYWE1MWM2YTMzMzZjZjYxMTM2NWY1NjliMjJmYTk2NDI1YWVkYTg5My4uMTM4ZGY5NmIwNzZl
ZDNiNmYwZGY3YmUxNDY2N2Q2MTlmNWNmOTUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgICAgICBUSU1FT1VUID0gMwogICAgIH07CiAgICAgCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8UG9zaXRpb25FcnJvcj4gY3JlYXRlKEVycm9yQ29kZSBjb2RlLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3NpdGlvbkVycm9yKGNvZGUsIG1lc3Nh
Z2UpKTsgfQorICAgIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3JlYXRlKEVycm9yQ29kZSBj
b2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9zaXRp
b25FcnJvcihjb2RlLCBtZXNzYWdlKSk7IH0KIAogICAgIEVycm9yQ29kZSBjb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL1Bvc2l0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9Qb3NpdGlvbk9wdGlvbnMuaAppbmRleCA1Y2I2NmY3MzVmNWE5NDdlODBiODYxMWI0
MWRjZmU1NjkxMjE4MDE5Li5lNDU1OTIxN2YyNTBkMjJjOTVmNzIwMTM4YmNjMGEwZWFmNDU5YmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRp
b25PcHRpb25zLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
Y2xhc3MgUG9zaXRpb25PcHRpb25zIDogcHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25PcHRpb25z
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUG9zaXRpb25PcHRpb25zKCkpOyB9CisgICAgc3Rh
dGljIFJlZjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UG9zaXRpb25PcHRpb25zKCkpOyB9CiAKICAgICBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSgpIGNv
bnN0IHsgcmV0dXJuIG1faGlnaEFjY3VyYWN5OyB9CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNj
dXJhY3koYm9vbCBlbmFibGUpIHsgbV9oaWdoQWNjdXJhY3kgPSBlbmFibGU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFueS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBbnkuY3BwCmluZGV4IDgyN2E0Y2QyZmIzNWRm
NTJlNTFlYjhkZWY4MDdlOTllMWRkNDExMTAuLjhlYTM3ZjUwMWNiNDUxZGEyNDZjOTVjZGU4N2Jl
Njg2NWZmMzM5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkFueS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmNwcApAQCAtMzgsMTkgKzM4LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlSW52YWxpZCgpCitSZWY8SURCQW55PiBJREJBbnk6
OmNyZWF0ZUludmFsaWQoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KFVuZGVm
aW5lZFR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJBbnkoVW5kZWZpbmVkVHlw
ZSkpOwogfQogCi1QYXNzUmVmUHRyPElEQkFueT4gSURCQW55OjpjcmVhdGVOdWxsKCkKK1JlZjxJ
REJBbnk+IElEQkFueTo6Y3JlYXRlTnVsbCgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJBbnkoTnVsbFR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJBbnkoTnVsbFR5
cGUpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJBbnk+IElEQkFueTo6Y3JlYXRlU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCitSZWY8SURCQW55PiBJREJBbnk6OmNyZWF0ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KHZhbHVlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCQW55KHZhbHVlKSk7CiB9CiAKIElEQkFueTo6
SURCQW55KFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55
LmgKaW5kZXggZDcyODQ1NmQ2ZTgxYjU4ZjExZDI5NzE4NWZkYmM4MjVlZmE1YTkzZi4uZjIzNGRl
N2Q5NDc3ZDM3OTBiNmE3Y2VkNGUyMmU3Yzc0ZTUyNWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQW55LmgKQEAgLTUwLDI3ICs1MCwyNyBAQCBjbGFzcyBJREJUcmFu
c2FjdGlvbjsKIAogY2xhc3MgSURCQW55IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFJlZkNvdW50ZWQ8SURCQW55PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
QW55PiBjcmVhdGVJbnZhbGlkKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVh
dGVOdWxsKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55PiBjcmVhdGVTdHJpbmcoY29u
c3QgU3RyaW5nJik7CisgICAgc3RhdGljIFJlZjxJREJBbnk+IGNyZWF0ZUludmFsaWQoKTsKKyAg
ICBzdGF0aWMgUmVmPElEQkFueT4gY3JlYXRlTnVsbCgpOworICAgIHN0YXRpYyBSZWY8SURCQW55
PiBjcmVhdGVTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJBbnk+IGNyZWF0ZShUKiBpZGJPYmplY3QpCisgICAg
c3RhdGljIFJlZjxJREJBbnk+IGNyZWF0ZShUKiBpZGJPYmplY3QpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShpZGJPYmplY3QpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSURCQW55KGlkYk9iamVjdCkpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IFQmIGlk
Yk9iamVjdCkKKyAgICBzdGF0aWMgUmVmPElEQkFueT4gY3JlYXRlKGNvbnN0IFQmIGlkYk9iamVj
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQW55KGlkYk9iamVjdCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJBbnkoaWRiT2JqZWN0KSk7CiAgICAg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQW55
PiBjcmVhdGUoUGFzc1JlZlB0cjxUPiBpZGJPYmplY3QpCisgICAgc3RhdGljIFJlZjxJREJBbnk+
IGNyZWF0ZShQYXNzUmVmUHRyPFQ+IGlkYk9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCQW55KGlkYk9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJREJBbnkoaWRiT2JqZWN0KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QkFueT4gY3JlYXRlKGludDY0X3QgdmFsdWUpCisgICAgc3RhdGljIFJlZjxJREJBbnk+IGNyZWF0
ZShpbnQ2NF90IHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJB
bnkodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCQW55KHZhbHVlKSk7
CiAgICAgfQogICAgIH5JREJBbnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMmU4NDZkZDdmYzg5Y2FjYjU0MTY5ODljZTc3MGFj
Y2MwYjQ3YWY1Zi4uYTIwZTFlMWFjZTI0OTk0ODRkZjc0NTkxOThhMTExZTE4NDI5MGU2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC00
Myw5ICs0Myw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJDdXJz
b3I+IElEQkN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gYmFja2Vu
ZCwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1
ZXN0LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUmVmPElE
QkN1cnNvcj4gSURCQ3Vyc29yOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBi
YWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3Qq
IHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3IoYmFja2VuZCwgZGlyZWN0aW9uLCBy
ZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SURCQ3Vyc29yKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwgc291cmNlLCB0cmFuc2FjdGlv
bikpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kLmgKaW5kZXggOTk0MzQxZjFkNTQzNjA4NThmOWYxNDZhMGMxNmZmMDAwNWE2ZGMxMS4uNDI0
ZDFmOThmNjIwY2IxZGE0Y2MwYjZiZWYyYzdmYjcwNjQ5YWZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaApAQCAtNDAsMTMg
KzQwLDEzIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSURCQ3Vyc29yQmFja2VuZCA6
IHB1YmxpYyBSZWZDb3VudGVkPElEQkN1cnNvckJhY2tlbmQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBjcmVhdGUoaW50NjRfdCBjdXJzb3JJRCwg
SW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZCYg
dHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKKyAgICBzdGF0aWMgUmVmPElEQkN1
cnNvckJhY2tlbmQ+IGNyZWF0ZShpbnQ2NF90IGN1cnNvcklELCBJbmRleGVkREI6OkN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBvYmplY3RTdG9yZUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJD
dXJzb3JCYWNrZW5kKGN1cnNvcklELCBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmQ6Ok5v
cm1hbFRhc2ssIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlEKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IElEQkN1cnNvckJhY2tlbmQoY3Vyc29ySUQsIGN1cnNvclR5cGUsIElEQkRh
dGFiYXNlQmFja2VuZDo6Tm9ybWFsVGFzaywgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQpKTsK
ICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3JlYXRlKGlu
dDY0X3QgY3Vyc29ySUQsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRh
YmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpCisgICAgc3RhdGljIFJlZjxJREJDdXJz
b3JCYWNrZW5kPiBjcmVhdGUoaW50NjRfdCBjdXJzb3JJRCwgSW5kZXhlZERCOjpDdXJzb3JUeXBl
IGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCQ3Vyc29yQmFja2VuZChjdXJzb3JJ
RCwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlEKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQkN1cnNvckJhY2tlbmQoY3Vyc29ySUQsIGN1
cnNvclR5cGUsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCkpOwogICAgIH0K
ICAgICB+SURCQ3Vyc29yQmFja2VuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuaAppbmRl
eCA0NjdmMWRlYjRlYWIwN2JkOTcwNjc5ZTE3NTY1ODhjZmFiNjgyNTgxLi42Mjc5NzdiNGVhYjY3
ZGFjNTk5NWJiZjBlNTgyZjAyYTZlMGMzODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRPcGVyYXRpb25zLmgK
QEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3JJdGVy
YXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmQ+IGN1cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gY3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24oY3Vyc29yLCBrZXksIGNh
bGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXJzb3JJdGVyYXRpb25P
cGVyYXRpb24oY3Vyc29yLCBrZXksIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZv
aWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVy
cmlkZSBmaW5hbDsKIApAQCAtNjAsOSArNjAsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBDdXJzb3JB
ZHZhbmNlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kPiBjdXJzb3IsIHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbihjdXJzb3IsIGNvdW50LCBjYWxsYmFj
a3MpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Vyc29yQWR2YW5jZU9wZXJhdGlv
bihjdXJzb3IsIGNvdW50LCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGUg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuY3BwCmluZGV4IDkwZWM1N2FmNTUyMWU3YTBlZTc3MzlmMjM1ODUx
N2JiNDQzMDEyNDUuLmI2N2I1NzQ3NDRhNjg2MWQ3NmY5NTg5YzUxYWY0NDYwNDkwMzMwZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
V2l0aFZhbHVlLmNwcApAQCAtMzMsMTUgKzMzLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3Jl
YXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gYmFja2VuZCwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJSZXF1ZXN0KiByZXF1ZXN0LCBJREJBbnkqIHNvdXJj
ZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorUmVmPElEQkN1cnNvcldpdGhWYWx1ZT4g
SURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kPiBi
YWNrZW5kLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQlJlcXVlc3Qq
IHJlcXVlc3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JXaXRoVmFsdWUoYmFja2VuZCwgZGly
ZWN0aW9uLCByZXF1ZXN0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSURCQ3Vyc29yV2l0aFZhbHVlKGJhY2tlbmQsIGRpcmVjdGlvbiwgcmVxdWVzdCwg
c291cmNlLCB0cmFuc2FjdGlvbikpOwogfQogCi1QYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1
ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpmcm9tQ3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBw
cnBDdXJzb3IpCitSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBJREJDdXJzb3JXaXRoVmFsdWU6
OmZyb21DdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+IHBycEN1cnNvcikKIHsKICAgICBSZWZQ
dHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBjdXJzb3JXaXRoVmFsdWUoc3RhdGljX2Nhc3Q8SURCQ3Vy
c29yV2l0aFZhbHVlKj4ocHJwQ3Vyc29yLmdldCgpKSk7Ci0gICAgcmV0dXJuIGN1cnNvcldpdGhW
YWx1ZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShjdXJzb3JXaXRoVmFsdWUpOwog
fQogCiBJREJDdXJzb3JXaXRoVmFsdWU6OklEQkN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRyPElE
QkN1cnNvckJhY2tlbmQ+IGJhY2tlbmQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiwgSURCUmVxdWVzdCogcmVxdWVzdCwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmgKaW5kZXggOTZmOTZiMGUxZTI4NDY0ZTFmYjMzMDk3MjI5
ZmYxYmViNWJiOWQwZC4uZTE1YjM5YmY2ZmVkYjUzMTE1NGM5NTI0ZGIyMzkyNTI0YjNlZjJlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0
aFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
V2l0aFZhbHVlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJREJDdXJzb3JXaXRoVmFsdWUgOiBwdWJsaWMgSURCQ3Vyc29yIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IGNyZWF0ZShQYXNzUmVmUHRyPElE
QkN1cnNvckJhY2tlbmQ+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSURCUmVxdWVzdCos
IElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkN1cnNvcldpdGhWYWx1ZT4gZnJvbUN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4pOwor
ICAgIHN0YXRpYyBSZWY8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIElEQlJlcXVlc3QqLCBJ
REJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICBzdGF0aWMgUmVmUHRyPElEQkN1
cnNvcldpdGhWYWx1ZT4gZnJvbUN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvcj4pOwogICAgIHZp
cnR1YWwgfklEQkN1cnNvcldpdGhWYWx1ZSgpOwogCiAgICAgLy8gVGhlIHZhbHVlIGF0dHJpYnV0
ZSBkZWZpbmVkIGluIHRoZSBJREwgaXMgc2ltcGx5IGltcGxlbWVudGVkIGluIElEQkN1cnNvciAo
YnV0IG5vdCBleHBvc2VkIHZpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDRhMWJlODEyZDA3NjdkN2QwYTgyNGZkZWRlMGVjM2Vi
MmQ1NjE2ZGUuLmJjNjFhODNkNTJjZDhkNTlhYzIzMDFmMWUzYjQxNzFjNTczNDQyZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAg
LTUwLDExICs1MCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURC
RGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IGRhdGFiYXNlLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitSZWZQdHI8SURCRGF0YWJhc2U+IElE
QkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRh
YmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNhbGxiYWNr
cykpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKGFkb3B0UmVmKCpuZXcg
SURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNhbGxiYWNrcykpKTsKICAgICBpZGJEYXRh
YmFzZS0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGlkYkRhdGFiYXNlLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGlkYkRhdGFiYXNlKTsKIH0KIAogSURCRGF0YWJhc2U6
OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kPiBiYWNrZW5kLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaAppbmRleCA1OGUyZjZjODRlM2EwNWE1MjY0NDA3YzA4MDFmYjgwNDBkNzAzYjIx
Li5mN2E3ZDE2NzE3NTU2NWRhZmExNWRiNGNkODgxYWE3OTQ3MzIwMzQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTUxLDcgKzUxLDcg
QEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJhc2UgZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUs
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKyAgICBzdGF0aWMgUmVmUHRyPElEQkRh
dGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIH5J
REJEYXRhYmFzZSgpOwogCiAgICAgdm9pZCBzZXRNZXRhZGF0YShjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBtZXRhZGF0YSkgeyBtX21ldGFkYXRhID0gbWV0YWRhdGE7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3Bw
CmluZGV4IGM4MjkyNmFkOThlZmQyNDI2OGYwMjA2ZGI0NzdkODZlMWEwNDY3MzcuLjZhZmMzOTk3
YmNmODY0OWY1MmY1ZTlmZWM5NGUxOTQ5OWQzMzE2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcApAQCAtNDMs
MTIgKzQzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmQ+IElEQkRhdGFiYXNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZSogZmFjdG9yeSwgSURCU2VydmVyQ29ubmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbikKK1Jl
ZjxJREJEYXRhYmFzZUJhY2tlbmQ+IElEQkRhdGFiYXNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZSogZmFjdG9yeSwgSURCU2VydmVyQ29ubmVjdGlvbiYgc2VydmVyQ29ubmVj
dGlvbikKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBiYWNrZW5kID0gYWRvcHRS
ZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZChuYW1lLCB1bmlxdWVJZGVudGlmaWVyLCBmYWN0b3J5
LCBzZXJ2ZXJDb25uZWN0aW9uKSk7Ci0gICAgYmFja2VuZC0+b3BlbkludGVybmFsQXN5bmMoKTsK
LSAgICAKLSAgICByZXR1cm4gYmFja2VuZC5yZWxlYXNlKCk7CisgICAgUmVmPElEQkRhdGFiYXNl
QmFja2VuZD4gYmFja2VuZCA9IGFkb3B0UmVmKCpuZXcgSURCRGF0YWJhc2VCYWNrZW5kKG5hbWUs
IHVuaXF1ZUlkZW50aWZpZXIsIGZhY3RvcnksIHNlcnZlckNvbm5lY3Rpb24pKTsKKyAgICBiYWNr
ZW5kLm9wZW5JbnRlcm5hbEFzeW5jKCk7CisKKyAgICByZXR1cm4gYmFja2VuZDsKIH0KIAogSURC
RGF0YWJhc2VCYWNrZW5kOjpJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
KiBmYWN0b3J5LCBJREJTZXJ2ZXJDb25uZWN0aW9uJiBzZXJ2ZXJDb25uZWN0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQu
aAppbmRleCBmMjQwNDZhYTg4OGRiZDFkZmZhOTc5NzAyODVjYTAxZTA1NDg4OGYzLi4zODE5OTI2
MWQ1NWQxNDVlY2IxOWZhOTM3ZmQ2YzdlZWE1NzJjZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaApAQCAtNTksNyAr
NTksNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJREJEYXRhYmFzZUJh
Y2tlbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZUJhY2tlbmQ+IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmll
ciwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBJREJTZXJ2ZXJDb25uZWN0aW9uJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJREJEYXRhYmFzZUJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllciwgSURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBJREJTZXJ2ZXJDb25uZWN0aW9uJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgfklEQkRhdGFiYXNlQmFja2VuZCgpOwogCiAgICAgSURCU2VydmVyQ29ubmVjdGlv
biYgc2VydmVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG1fc2VydmVyQ29ubmVjdGlvbi5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggNTg3YzRhNzU2MzAxYTNjNGE4NjU2ZTM1
ZjAyNjhiYjdkZTQ1NTljMi4uZDkyYTM1MTBjZDk0YzM4NGI3MGMzYWQyNzFmNTVmY2ZlNDgxMTIy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC0zMiw5ICszMiw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCkKK1JlZjxJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGw+IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKSk7CiB9CiAKIElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsLmgKaW5kZXggMjQ4MzMyYTM1MzdmMjMwNDE5NTEzM2FiZGNkZTY1MGUxMmQ4ZWU3ZC4uZjdk
NWEyMjJlMzQxOTNkNjVlMDNjZWYyMDIyODhkZWZkZDI0OGJjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgSURCRGF0YWJhc2U7CiAKIGNsYXNzIElEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbCBmaW5hbCA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY3Jl
YXRlKCk7CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCkgb3ZlcnJpZGU7
CiAKICAgICAvLyBJREJEYXRhYmFzZUNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggZjk1NGFkNmFjYWJlNGIwNWIzYzFmY2M3MWU0ZDNj
NWRjNTVmYTk4NS4uYjE2Zjc4ZjU5ZGQxNzc3NDJmZmQ3OTU0YTVhNzdmZTM2YmZkMzI4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC00NSw5ICs0
NSw5IEBAIGNsYXNzIElEQk9iamVjdFN0b3JlOwogCiBjbGFzcyBJREJJbmRleCA6IHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPElEQkluZGV4PiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZShjb25zdCBJREJJbmRleE1ldGFk
YXRhJiBtZXRhZGF0YSwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCisgICAgc3RhdGljIFJlZjxJREJJbmRleD4gY3JlYXRlKGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCSW5kZXgobWV0YWRhdGEsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJJbmRleChtZXRhZGF0YSwgb2JqZWN0U3RvcmUs
IHRyYW5zYWN0aW9uKSk7CiAgICAgfQogICAgIH5JREJJbmRleCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCmluZGV4IDc4NTMwYjMxMGQxZjA0YWU5YzY2ODYy
YjVhOTlkZDNiZTkwM2Y0M2IuLjZkMmEyYTMyOGU5MjNmYmNkZmJkZDE2MTRhMDljOTMxMWQ3M2Ey
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCkBAIC0zOSwy
NCArMzksMjQgQEAgY2xhc3MgSURCS2V5IDogcHVibGljIFJlZkNvdW50ZWQ8SURCS2V5PiB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4+IEtleUFycmF5OwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJbnZhbGlkKCkKKyAgICBzdGF0aWMg
UmVmPElEQktleT4gY3JlYXRlSW52YWxpZCgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQktleSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCS2V5KCkp
OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlTnVtYmVyKGRv
dWJsZSBudW1iZXIpCisgICAgc3RhdGljIFJlZjxJREJLZXk+IGNyZWF0ZU51bWJlcihkb3VibGUg
bnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJLZXkoTnVtYmVy
VHlwZSwgbnVtYmVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQktleShOdW1i
ZXJUeXBlLCBudW1iZXIpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgUmVmPElEQktl
eT4gY3JlYXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJLZXkoc3RyaW5nKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IElEQktleShzdHJpbmcpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJLZXk+IGNyZWF0ZURhdGUoZG91YmxlIGRhdGUpCisgICAgc3RhdGljIFJlZjxJREJLZXk+IGNy
ZWF0ZURhdGUoZG91YmxlIGRhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IElEQktleShEYXRlVHlwZSwgZGF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
REJLZXkoRGF0ZVR5cGUsIGRhdGUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJLZXk+IGNyZWF0ZU11bHRpRW50cnlBcnJheShjb25zdCBLZXlBcnJheSYgYXJyYXkpCkBAIC04
NSwxMyArODUsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUFycmF5KGNvbnN0
IEtleUFycmF5JiBhcnJheSkKKyAgICBzdGF0aWMgUmVmPElEQktleT4gY3JlYXRlQXJyYXkoY29u
c3QgS2V5QXJyYXkmIGFycmF5KQogICAgIHsKICAgICAgICAgc2l6ZV90IHNpemVFc3RpbWF0ZSA9
IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBzaXplRXN0aW1hdGUgKz0gYXJyYXlbaV0tPm1fc2l6ZUVzdGltYXRlOwogCi0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCS2V5KGFycmF5LCBzaXplRXN0aW1hdGUpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCS2V5KGFycmF5LCBzaXplRXN0aW1hdGUp
KTsKICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SURCS2V5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVy
YXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRPcGVyYXRpb25zLmgKaW5kZXggOTY0Y2I4NWJhNWVjOTYxNzNiMmQ1Y2U0ZDZmMjE0
ZTNjZGI2ZDUzOS4uMTQxMDk3OTMwMWI3MzcxY2M4OGMyZWJkY2RhN2UyMDgyNTk4OTkxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFz
cyBJREJTZXJ2ZXJDb25uZWN0aW9uOwogCiBjbGFzcyBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlv
biA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24s
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCisgICAg
c3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRy
YW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFk
YXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcmVhdGVPYmplY3RTdG9y
ZU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbih0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZSBmaW5hbDsK
IApAQCAtNTksOSArNTksOSBAQCBwcml2YXRlOgogCiBjbGFzcyBEZWxldGVPYmplY3RTdG9yZU9w
ZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEp
CisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tl
bmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9y
ZU1ldGFkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVPYmpl
Y3RTdG9yZU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbih0cmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZSBm
aW5hbDsKIApAQCAtODEsOSArODEsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBJREJEYXRhYmFzZUJh
Y2tlbmQ6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgIHN0YXRpYyBSZWY8SURCT3BlcmF0aW9uPiBjcmVhdGUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCB2ZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVmVyc2lvbkNoYW5nZU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgdmVyc2lvbiwgY2FsbGJh
Y2tzLCBkYXRhYmFzZUNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBW
ZXJzaW9uQ2hhbmdlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCB2ZXJzaW9uLCBjYWxsYmFja3MsIGRh
dGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRlIGZpbmFsOwogCkBAIC0x
MDgsOSArMTA4LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9w
ZXJhdGlvbiA6IHB1YmxpYyBJREJTeW5jaHJvbm91c09wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCU3luY2hyb25vdXNPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAg
c3RhdGljIFJlZjxJREJTeW5jaHJvbm91c09wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9u
QmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbih0
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZUlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgb3ZlcnJpZGUgZmluYWw7
CiBwcml2YXRlOgpAQCAtMTI2LDkgKzEyNiw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIERlbGV0ZU9i
amVjdFN0b3JlQWJvcnRPcGVyYXRpb24gOiBwdWJsaWMgSURCU3luY2hyb25vdXNPcGVyYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlN5bmNocm9ub3VzT3BlcmF0aW9u
PiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUpCisgICAgc3RhdGljIFJlZjxJREJTeW5jaHJv
bm91c09wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24s
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKHRy
YW5zYWN0aW9uLCBvYmplY3RTdG9yZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
ZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZSkp
OwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIG92ZXJyaWRlIGZpbmFsOwogcHJp
dmF0ZToKQEAgLTE0NCw5ICsxNDQsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBJREJEYXRhYmFzZUJh
Y2tlbmQ6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJTeW5jaHJvbm91
c09wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCU3luY2hyb25v
dXNPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBj
b25zdCBTdHJpbmcmIHByZXZpb3VzVmVyc2lvbiwgaW50NjRfdCBwcmV2aW91c0ludFZlcnNpb24p
CisgICAgc3RhdGljIFJlZjxJREJTeW5jaHJvbm91c09wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5z
YWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgcHJldmlvdXNWZXJzaW9u
LCBpbnQ2NF90IHByZXZpb3VzSW50VmVyc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBwcmV2aW91
c1ZlcnNpb24sIHByZXZpb3VzSW50VmVyc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIHByZXZpb3VzVmVy
c2lvbiwgcHJldmlvdXNJbnRWZXJzaW9uKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtKCkgb3ZlcnJpZGUgZmluYWw7CiBwcml2YXRlOgpAQCAtMTY0LDkgKzE2NCw5IEBAIHByaXZh
dGU6CiAKIGNsYXNzIENyZWF0ZUluZGV4T3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURC
VHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQorICAgIHN0YXRpYyBSZWY8SURC
T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRh
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcmVhdGVJbmRleE9wZXJhdGlv
bih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDcmVhdGVJbmRleE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZSBmaW5h
bDsKIApAQCAtMTg4LDkgKzE4OCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIENyZWF0ZUluZGV4QWJv
cnRPcGVyYXRpb24gOiBwdWJsaWMgSURCU3luY2hyb25vdXNPcGVyYXRpb24gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlN5bmNocm9ub3VzT3BlcmF0aW9uPiBjcmVhdGUoSURC
VHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQpCisgICAgc3RhdGljIFJlZjxJREJTeW5jaHJvbm91c09wZXJhdGlvbj4g
Y3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENyZWF0ZUluZGV4QWJv
cnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKTsKICAgICB9
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBvdmVycmlkZSBmaW5hbDsKIHByaXZhdGU6CkBA
IC0yMDgsOSArMjA4LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGVsZXRlSW5kZXhPcGVyYXRpb24g
OiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRh
dGEpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERlbGV0ZUluZGV4T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkLCBpbmRl
eE1ldGFkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlbGV0ZUluZGV4T3Bl
cmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNz
Q2FsbGJhY2spIG92ZXJyaWRlIGZpbmFsOwogCkBAIC0yMzIsOSArMjMyLDkgQEAgcHJpdmF0ZToK
IAogY2xhc3MgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJTeW5jaHJvbm91
c09wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCU3luY2hyb25v
dXNPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRh
dGEpCisgICAgc3RhdGljIFJlZjxJREJTeW5jaHJvbm91c09wZXJhdGlvbj4gY3JlYXRlKElEQlRy
YW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEZWxldGVJbmRleEFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkLCBp
bmRleE1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgb3ZlcnJp
ZGUgZmluYWw7CiBwcml2YXRlOgpAQCAtMjUyLDkgKzI1Miw5IEBAIHByaXZhdGU6CiAKIGNsYXNz
IEdldE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCog
dHJhbnNhY3Rpb24sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBSZWY8SURCT3BlcmF0aW9uPiBjcmVh
dGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCRGF0YWJhc2VN
ZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JUeXBl
IGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgbWV0
YWRhdGEsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBjdXJzb3JUeXBlLCBjYWxs
YmFja3MpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2V0T3BlcmF0aW9uKHRyYW5z
YWN0aW9uLCBtZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNv
clR5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZSBmaW5hbDsKIApAQCAt
MjkyLDkgKzI5Miw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFB1dE9wZXJhdGlvbiA6IHB1YmxpYyBJ
REJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlv
bj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9k
ZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlz
KQorICAgIHN0YXRpYyBSZWY8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3Rv
cmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0
IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFB1dE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmUsIHZhbHVlLCBr
ZXksIHB1dE1vZGUsIGNhbGxiYWNrcywgaW5kZXhJZHMsIGluZGV4S2V5cykpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQdXRPcGVyYXRpb24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
LCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1
Y2Nlc3NDYWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7CiAKQEAgLTMzMCw5ICszMzAsOSBAQCBwcml2
YXRlOgogCiBjbGFzcyBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0
aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0
ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBzaXplX3QgaW5kZXhDb3VudCkK
KyAgICBzdGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCogdHJhbnNhY3Rpb24sIHNpemVfdCBpbmRleENvdW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24odHJhbnNhY3Rpb24sIGluZGV4
Q291bnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2V0SW5kZXhlc1JlYWR5T3Bl
cmF0aW9uKHRyYW5zYWN0aW9uLCBpbmRleENvdW50KSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRl
IGZpbmFsOwogcHJpdmF0ZToKQEAgLTM0OCw5ICszNDgsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBP
cGVuQ3Vyc29yT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRh
YmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQorICAgIHN0YXRpYyBSZWY8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBl
LCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBP
cGVuQ3Vyc29yT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBr
ZXlSYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJhY2tzKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wZW5DdXJzb3JPcGVyYXRpb24odHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGN1cnNvclR5
cGUsIHRhc2tUeXBlLCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7
CiAKQEAgLTM4OCw5ICszODgsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBDb3VudE9wZXJhdGlvbiA6
IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
Qk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBz
dGF0aWMgUmVmPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJh
bnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ291bnRPcGVyYXRpb24o
dHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBjYWxsYmFja3Mp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ291bnRPcGVyYXRpb24odHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKICAgICB9
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3ND
YWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7CiAKQEAgLTQxNyw5ICs0MTcsOSBAQCBwcml2YXRlOgog
CiBjbGFzcyBEZWxldGVSYW5nZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5z
YWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlv
bkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVSYW5nZU9wZXJhdGlv
bih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxldGVSYW5nZU9wZXJhdGlvbih0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0
dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBv
dmVycmlkZSBmaW5hbDsKIApAQCAtNDQzLDkgKzQ0Myw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIENs
ZWFyT2JqZWN0U3RvcmVPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlv
bkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFJlZjxJREJPcGVyYXRpb24+IGNy
ZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENsZWFyT2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDbGVhck9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlk
LCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwCmluZGV4IGMwOWI1NjQ2ZjI0YTJhMTlkODBjODUxMTk2ZjhjYTgwYzNhNTRjZjYu
LjgwNmMyZThjMjhlOGNmMzU1OTBkOGVmOTMxZGI0YzhiOWJlYjM2ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcApAQCAtNjEsOSArNjEsOSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bHNIb3N0OjphbHdheXNPbktleXdvcmQoKQogICAgIHJldHVybiBhbHdheXNPbjsKIH0KIAotUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xzSG9zdD4gTWVkaWFDb250cm9sc0hvc3Q6OmNyZWF0ZShIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFDb250cm9sc0hvc3Q+IE1lZGlh
Q29udHJvbHNIb3N0OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sc0hvc3QobWVkaWFFbGVtZW50KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFDb250cm9sc0hvc3QobWVkaWFFbGVtZW50
KSk7CiB9CiAKIE1lZGlhQ29udHJvbHNIb3N0OjpNZWRpYUNvbnRyb2xzSG9zdChIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCmluZGV4IGM2NGU0N2MwNzYwNTU1
MTBmNjhjYjc5OTAxNmUwNmVmOWE2ZmQ4NTEuLmQ4MWVlZjZlMzdlZGFiODc2ZTBlZDkxMTUwY2Uz
OTI3NDlmYmIzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFRl
eHRUcmFja0xpc3Q7CiAKIGNsYXNzIE1lZGlhQ29udHJvbHNIb3N0IDogcHVibGljIFJlZkNvdW50
ZWQ8TWVkaWFDb250cm9sc0hvc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xzSG9zdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMg
UmVmPE1lZGlhQ29udHJvbHNIb3N0PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwogICAgIH5N
ZWRpYUNvbnRyb2xzSG9zdCgpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXV0
b21hdGljS2V5d29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmNwcAppbmRleCBmMGExY2JiZjg4Zjk0NDMwNDFiZWI1Y2Q3ODIwZjI0
OWRkMzhhM2UyLi44OTQ2MDM2MTcyNTFiYjU3M2Q0MmVkNWMwYWVkZmNmNjc1ZmQ5M2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cApAQCAtNjcsMTEgKzY3LDExIEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNldFJlZ2lzdHJ5KFVSTFJl
Z2lzdHJ5KiByZWdpc3RyeSkKICAgICBzX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7CiB9CiAKLVBhc3NS
ZWZQdHI8TWVkaWFTb3VyY2U+IE1lZGlhU291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkKK1JlZjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4g
bWVkaWFTb3VyY2UoYWRvcHRSZWYobmV3IE1lZGlhU291cmNlKGNvbnRleHQpKSk7CisgICAgUmVm
PE1lZGlhU291cmNlPiBtZWRpYVNvdXJjZShhZG9wdFJlZigqbmV3IE1lZGlhU291cmNlKGNvbnRl
eHQpKSk7CiAgICAgbWVkaWFTb3VyY2UtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBt
ZWRpYVNvdXJjZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1lZGlhU291cmNlOwogfQogCiBNZWRp
YVNvdXJjZTo6TWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAppbmRl
eCA3ZmUyMzIzYzY2NmRjYTFhMjVlNzU2NDk3NjJiMDhiY2IyMTZhM2FmLi4wNTk5ZWYwMjU0MDk2
YTU4MDExYmM3ZTUwNGVlY2I5MmRmMjQ3Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjbG9zZWRLZXl3b3JkKCk7CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgZW5kZWRLZXl3b3JkKCk7CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYVNvdXJjZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAg
ICBzdGF0aWMgUmVmPE1lZGlhU291cmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OwogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlKCk7CiAKICAgICB2b2lkIGFkZGVkVG9SZWdpc3Ry
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcAppbmRleCA4MWE2ODIyNDI3OTVlNjg0NTc5ZWE1N2ZjODBlMzQ2Mzg2NjM5
MGM0Li45MGQwNmM3OWI5NzRlODM4MmUwNWQ3M2YyYmI4ZGQ0YWRiZWIxZjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNw
cApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhcnJheWJ1ZmZl
cktleXdvcmQoKQogICAgIHJldHVybiBhcnJheWJ1ZmZlcjsKIH0KIAotUGFzc1JlZlB0cjxSVENE
YXRhQ2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxl
ciwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0
aW9uQ29kZSYgZWMpCitSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyKiBwZWVyQ29ubmVjdGlvbkhhbmRsZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IERp
Y3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJUQ0RhdGFDaGFu
bmVsSW5pdCBpbml0RGF0YTsKICAgICBTdHJpbmcgbWF4UmV0cmFuc21pdHNTdHI7CkBAIC04MCwx
MyArODAsMTMgQEAgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUlRDRGF0YUNoYW5uZWwoY29udGV4dCwgV1RGOjptb3ZlKGhhbmRsZXIpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDRGF0YUNoYW5uZWwoY29udGV4dCwgV1RGOjpt
b3ZlKGhhbmRsZXIpKSk7CiB9CiAKLVBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFD
aGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgc3RkOjp1bmlx
dWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gaGFuZGxlcikKK1JlZjxSVENEYXRhQ2hhbm5l
bD4gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChoYW5kbGVyKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVs
KGNvbnRleHQsIFdURjo6bW92ZShoYW5kbGVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURjo6bW92ZShoYW5kbGVyKSkpOwogfQogCiBSVENE
YXRhQ2hhbm5lbDo6UlRDRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gaGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApp
bmRleCA1MzcyZTc4YzFhODIwZTk4Yjk2OGM2ZjdjNDlhNDVlNjUxM2E3ZjdjLi42OTUwMDFhMjFj
MzlmN2IzYjZiYmI3ODQ5YjNhMGE0OTgyNGJkMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCkBAIC00Nyw4ICs0Nyw4IEBA
IGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWwg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBzdGQ6OnVuaXF1
ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRD
RGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKiwgY29uc3QgU3RyaW5nJiAsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRp
b25Db2RlJik7CisgICAgc3RhdGljIFJlZjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPik7
CisgICAgc3RhdGljIFJlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBjb25zdCBTdHJpbmcmICwgY29u
c3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB+UlRDRGF0YUNoYW5uZWwoKTsK
IAogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCmluZGV4IDM1M2UzMDlkZDg1
NWJkNzU0NjI1Yjc0ZDYyMGE2ODRlYTE4NDg1OTQuLmIyOTE4OWY0MGMxNDA3ZmU3ODU1ODRlZDdl
YjU2YjVhYzhkYTgyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gUlRDSWNlQ2FuZGlk
YXRlOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25z
dCBEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBTdHJp
bmcgY2FuZGlkYXRlOwogICAgIGJvb2wgb2sgPSBkaWN0aW9uYXJ5LmdldCgiY2FuZGlkYXRlIiwg
Y2FuZGlkYXRlKTsKQEAgLTcxLDEyICs3MSwxMiBAQCBQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0
ZT4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgZGljdGlvbmFyeQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENJY2VDYW5kaWRh
dGUoUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6Y3JlYXRlKGNhbmRpZGF0ZSwgc2RwTWlkLCBz
ZHBNTGluZUluZGV4KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNhbmRpZGF0
ZShSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpjcmVhdGUoY2FuZGlkYXRlLCBzZHBNaWQsIHNk
cE1MaW5lSW5kZXgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VD
YW5kaWRhdGU6OmNyZWF0ZShQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+IGRl
c2NyaXB0b3IpCitSZWY8UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShQ
YXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSVENJY2VDYW5kaWRhdGUoZGVzY3JpcHRvcikpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNhbmRpZGF0ZShkZXNjcmlwdG9yKSk7CiB9CiAKIFJU
Q0ljZUNhbmRpZGF0ZTo6UlRDSWNlQ2FuZGlkYXRlKFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRl
RGVzY3JpcHRvcj4gZGVzY3JpcHRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCmluZGV4IDBkYWQyNWMyN2QxY2E1OTU1MDNk
ZDBkMGQ5ODVmY2IyN2M5MzgxY2QuLjY1ZmEzYmFjYTUzZjJjYmIzMmJiZTNiYjVhZTQ3ZDJjZjRk
ODAwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
SWNlQ2FuZGlkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENJY2VDYW5kaWRhdGUuaApAQCAtNDcsOCArNDcsOCBAQCBjbGFzcyBSVENJY2VDYW5kaWRhdGVE
ZXNjcmlwdG9yOwogCiBjbGFzcyBSVENJY2VDYW5kaWRhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxS
VENJY2VDYW5kaWRhdGU+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRhdGU+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5
JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0
ZT4gY3JlYXRlKFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pOworICAgIHN0
YXRpYyBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ0ljZUNhbmRpZGF0ZT4gY3JlYXRlKFBh
c3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pOwogICAgIHZpcnR1YWwgflJUQ0lj
ZUNhbmRpZGF0ZSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwCmluZGV4IGU5MTNjZGM5YzliZjZiNzQ4MzYyY2FjYWM2ODA0M2QwZWRlNDc0ZTku
LmU1ZWQ5NDg0ODE5NWExOTc1MmYyZjE0NjI5ZTAxMzkyNGViNjdmOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNw
cApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8
T2ZmbGluZUF1ZGlvQ29udGV4dD4gT2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitS
ZWZQdHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gT2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgogICAgIGlmICgh
aXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CkBAIC01MSw3ICs1MSw3IEBAIFBhc3NSZWZQdHI8T2Zm
bGluZUF1ZGlvQ29udGV4dD4gT2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRlCiAKICAgICBSZWZQdHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0
KGFkb3B0UmVmKG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KGRvY3VtZW50LCBudW1iZXJPZkNoYW5u
ZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSkpKTsKICAgICBhdWRpb0NvbnRleHQtPnN1
c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiBhdWRpb0NvbnRleHQucmVsZWFzZSgpOworICAg
IHJldHVybiBXVEY6Om1vdmUoYXVkaW9Db250ZXh0KTsKIH0KIAogT2ZmbGluZUF1ZGlvQ29udGV4
dDo6T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250
ZXh0LmgKaW5kZXggMzViYmM5NjYzYzFjYzc3YWU0MjE5ODgzYTlhNmJhYzc2MjY2ZGRkNy4uODQ2
NmIzYWU3MmVhNTY2YzIyMWYxYTMzZGVkNGNlN2E4MjA0ODNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmgKQEAgLTMx
LDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPZmZsaW5lQXVkaW9Db250
ZXh0IDogcHVibGljIEF1ZGlvQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8T2ZmbGluZUF1ZGlvQ29udGV4dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNh
bXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPE9mZmxpbmVBdWRp
b0NvbnRleHQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9Db250ZXh0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGViMGNhNDI2Y2JhZTUzMjdhMjRkZTg4ZGVlYTBh
ZWVjMjdkYjM2YzIuLjk1M2FlOTBlODBkOTQ2ZWY3NWYzZWYzZmYzN2ZlNDk3NGRjM2VkYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiAgICAgCiBjbGFzcyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbk5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
QXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgQXVkaW9CdWZmZXIq
IHJlbmRlclRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250
ZXh0LCByZW5kZXJUYXJnZXQpKTsgICAgIAogICAgIH0KIAogICAgIHZpcnR1YWwgfk9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCAwNzBkYzllMWZiMDUxNzMzMTBhNTQ0YTY1
NzYzMTRkNjQwMmE0N2MxLi5hNGVmOWNhOTdkOTM5MjAyNWZlNTY5ZTY2MTAyYmUwYzBiYzVmMDhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JO
b2RlLmNwcApAQCAtNDYsOSArNDYsOSBAQCBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpz
X3BlcmlvZGljV2F2ZVNxdWFyZSA9IDA7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpz
X3BlcmlvZGljV2F2ZVNhd3Rvb3RoID0gMDsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6
OnNfcGVyaW9kaWNXYXZlVHJpYW5nbGUgPSAwOwogCi1QYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2Rl
PiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK1JlZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRp
b0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQog
CiBPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5oCmluZGV4IDA1OTY5MjY2ZjlhMDI0ZDQ5NjE2ZDhkM2VmYzlmMDZjMWJh
NzUyMTYuLjcwMWRiNDIwMzg0YjgzOWIwNTdiY2QzMTU0NzMyMTlmMjNiZTk0ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBDVVNUT00gPSA0CiAgICAgfTsKIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVhbCB+T3NjaWxsYXRv
ck5vZGUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKaW5kZXggYTI2NWM3NDcwNzA5YzcxMmE5MGIwOTU5Mzc3MDcyYjlkMDY3MTMy
MS4uNWUwYTYxNmIwNmI1ZmUxMTJjYTkxMmJiM2NhM2Q5MTMzMmMwMjkxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI5Niw3ICsy
OTYsNyBAQCB2b2lkIERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rp
b25DYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVmUHRyPAogICAgIGlmICghdHJhbnNhY3Rpb25CYWNr
ZW5kICYmIGVycm9yQ2FsbGJhY2spIHsKICAgICAgICAgV1RGOjpSZWZQdHI8U1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUHJvdGVjdG9yID0gV1RGOjptb3ZlKGVycm9y
Q2FsbGJhY2spOwogICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFtl
cnJvckNhbGxiYWNrUHJvdGVjdG9yXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAg
ICAgICAgZXJyb3JDYWxsYmFja1Byb3RlY3Rvci0+aGFuZGxlRXZlbnQoU1FMRXJyb3I6OmNyZWF0
ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJkYXRhYmFzZSBoYXMgYmVlbiBjbG9zZWQiKS5nZXQo
KSk7CisgICAgICAgICAgICBlcnJvckNhbGxiYWNrUHJvdGVjdG9yLT5oYW5kbGVFdmVudChTUUxF
cnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgImRhdGFiYXNlIGhhcyBiZWVuIGNs
b3NlZCIpLnB0cigpKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDM4
YjdlOTE3MTllZjljOWFlMjU1ZWNjOGY1N2YyODMyN2M0MGUwZTMuLjY0YzYwMTQwYzBhMjkyYmM5
MDNlZjA4ZmViM2NkNTU0MDZhNzYxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY2Miw3ICs2NjIsNyBA
QCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbQogICAgICAgICBkYXRhYmFzZXMtPmFkZCgqaXQpOwog
fQogCi1QYXNzUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6b3JpZ2luTG9ja0Zv
cihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJh
Y2tlcjo6b3JpZ2luTG9ja0ZvcihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIE11dGV4
TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgIFN0cmluZyBkYXRhYmFz
ZUlkZW50aWZpZXIgPSBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOwpAQCAtNjgwLDExICs2
ODAsMTEgQEAgUGFzc1JlZlB0cjxPcmlnaW5Mb2NrPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxv
Y2tGb3IoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CiAKICAgICBTdHJpbmcgcGF0aCA9IG9yaWdpblBhdGgob3JpZ2luKTsK
LSAgICBSZWZQdHI8T3JpZ2luTG9jaz4gbG9jayA9IGFkb3B0UmVmKG5ldyBPcmlnaW5Mb2NrKHBh
dGgpKTsKKyAgICBSZWZQdHI8T3JpZ2luTG9jaz4gbG9jayA9IGFkb3B0UmVmKCpuZXcgT3JpZ2lu
TG9jayhwYXRoKSk7CiAgICAgQVNTRVJUKGxvY2spOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBsb2NrOwogCi0gICAgcmV0dXJuIGxvY2sucmVsZWFzZSgpOworICAgIHJldHVybiBX
VEY6Om1vdmUobG9jayk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW5M
b2NrRm9yKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAppbmRleCBlYWE0ZmI0NWFiMTFi
NmU1OGY0M2NmMzBkNjNkYTNjZWNiZjAzMGM3Li4xOGQxZmUzNWZkOTRjOTZjOTIyMzA1NDI3YmVm
ZGQ1OTE4OGEzYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIHZv
aWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOwotICAgIFBh
c3NSZWZQdHI8T3JpZ2luTG9jaz4gb3JpZ2luTG9ja0ZvcihTZWN1cml0eU9yaWdpbiopOworICAg
IFJlZlB0cjxPcmlnaW5Mb2NrPiBvcmlnaW5Mb2NrRm9yKFNlY3VyaXR5T3JpZ2luKik7CiAKICAg
ICB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVs
ZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3Iu
aAppbmRleCAyMmU5MmY1NTBkNGQ3ZDc4MDhiNGNiYTJhZjllNDQwNmZkMGViM2FiLi44YjVmNWI5
ZjUxMWY1YmNkODhhMjhkM2I2MGE4NzYyY2IyMzRmMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5oCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTUUxFcnJvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTUUxFcnJvcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTEVycm9y
PiBjcmVhdGUodW5zaWduZWQgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU1FMRXJyb3IoY29kZSwgbWVzc2FnZSkpOyB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1FMRXJyb3I+IGNyZWF0ZSh1bnNpZ25lZCBjb2RlLCBjb25zdCBjaGFyKiBtZXNzYWdl
LCBpbnQgc3FsaXRlQ29kZSkKKyAgICBzdGF0aWMgUmVmPFNRTEVycm9yPiBjcmVhdGUodW5zaWdu
ZWQgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNR
TEVycm9yKGNvZGUsIG1lc3NhZ2UpKTsgfQorICAgIHN0YXRpYyBSZWY8U1FMRXJyb3I+IGNyZWF0
ZSh1bnNpZ25lZCBjb2RlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBpbnQgc3FsaXRlQ29kZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoY29kZSwgU3RyaW5nOjpmb3JtYXQoIiVzICglZCki
LCBtZXNzYWdlLCBzcWxpdGVDb2RlKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNR
TEVycm9yPiBjcmVhdGUodW5zaWduZWQgY29kZSwgY29uc3QgY2hhciogbWVzc2FnZSwgaW50IHNx
bGl0ZUNvZGUsIGNvbnN0IGNoYXIqIHNxbGl0ZU1lc3NhZ2UpCisgICAgc3RhdGljIFJlZjxTUUxF
cnJvcj4gY3JlYXRlKHVuc2lnbmVkIGNvZGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGludCBzcWxp
dGVDb2RlLCBjb25zdCBjaGFyKiBzcWxpdGVNZXNzYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGNyZWF0ZShjb2RlLCBTdHJpbmc6OmZvcm1hdCgiJXMgKCVkICVzKSIsIG1lc3NhZ2UsIHNxbGl0
ZUNvZGUsIHNxbGl0ZU1lc3NhZ2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaAppbmRleCAyYzFmNTNkZDJmYTk4ODg3NzRk
MTRlZTE4MzU5OWZhYWY4MWY1Y2UzLi43NGQ4Y2Q5MWYxODRjYzlhODQzYWRhNjAwOTAxZDZmZTk0
ZjJkZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFJlc3VsdFNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
UmVzdWx0U2V0LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTUUxSZXN1bHRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMUmVzdWx0U2V0
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0PiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1FMUmVzdWx0U2V0KTsgfQorICAgIHN0YXRpYyBSZWY8
U1FMUmVzdWx0U2V0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNRTFJlc3VsdFNl
dCk7IH0KIAogICAgIFNRTFJlc3VsdFNldFJvd0xpc3QqIHJvd3MoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJv
d0xpc3QuaAppbmRleCBhZjIwZDE5NWM4ZWQ4NDIxYjdjOWQ0M2QxMzJjYjI0ZTUzZTczMjNkLi5l
ZWYxNDhkN2I2Y2ZiMWIyNDZmZDIyMGIyZjgzOTc5ZDY5NTdiOGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3Qu
aApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNRTFJlc3Vs
dFNldFJvd0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxSZXN1bHRTZXRSb3dMaXN0PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0Um93TGlzdD4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFJlc3VsdFNldFJvd0xpc3QpOyB9CisgICAgc3Rh
dGljIFJlZjxTUUxSZXN1bHRTZXRSb3dMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNRTFJlc3VsdFNldFJvd0xpc3QpOyB9CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29sdW1uTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbnM7IH0KICAgICBjb25zdCBWZWN0
b3I8U1FMVmFsdWU+JiB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
QmFja2VuZC5jcHAKaW5kZXggMDY3ZGNiYTg1Y2Q1NTdjMTIzMjNkOWQ0ZGEyZDRjYmNlOWU0MjZh
MS4uNDhmM2NiZmM3NDMxOWIxZGUxYTk4OTBjMWY1NDk2OTgxNWEzMjdlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJh
Y2tlbmQuY3BwCkBAIC03NSwxMCArNzUsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPFNRTFN0YXRlbWVudEJhY2tlbmQ+IFNRTFN0YXRlbWVudEJhY2tlbmQ6OmNyZWF0
ZShzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50PiBmcm9udGVuZCwKK1JlZjxTUUxTdGF0ZW1l
bnRCYWNrZW5kPiBTUUxTdGF0ZW1lbnRCYWNrZW5kOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFNR
TFN0YXRlbWVudD4gZnJvbnRlbmQsCiAgICAgY29uc3QgU3RyaW5nJiBzdGF0ZW1lbnQsIGNvbnN0
IFZlY3RvcjxTUUxWYWx1ZT4mIGFyZ3VtZW50cywgaW50IHBlcm1pc3Npb25zKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU1FMU3RhdGVtZW50QmFja2VuZChXVEY6Om1vdmUoZnJvbnRlbmQp
LCBzdGF0ZW1lbnQsIGFyZ3VtZW50cywgcGVybWlzc2lvbnMpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTUUxTdGF0ZW1lbnRCYWNrZW5kKFdURjo6bW92ZShmcm9udGVuZCksIHN0YXRlbWVu
dCwgYXJndW1lbnRzLCBwZXJtaXNzaW9ucykpOwogfQogCiBTUUxTdGF0ZW1lbnRCYWNrZW5kOjpT
UUxTdGF0ZW1lbnRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IGZyb250ZW5k
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnRCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudEJhY2tlbmQuaAppbmRleCAyMGQ0MzE3NmY0MTRjODgwYTg2MzZiODI0YmNlOWFjYzRh
ZTBjYjljLi40OTI4NzU4MmZjYWJjNjdjYzM4NjJmYTQwM2E3MjNkMTgzOGMwZWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVu
dEJhY2tlbmQuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7
CiAKIGNsYXNzIFNRTFN0YXRlbWVudEJhY2tlbmQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U1FMU3RhdGVtZW50QmFja2VuZD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNRTFN0YXRlbWVudEJhY2tlbmQ+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8U1FMU3RhdGVtZW50
PiwKKyAgICBzdGF0aWMgUmVmPFNRTFN0YXRlbWVudEJhY2tlbmQ+IGNyZWF0ZShzdGQ6OnVuaXF1
ZV9wdHI8U1FMU3RhdGVtZW50PiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQs
IGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIGFyZ3VtZW50cywgaW50IHBlcm1pc3Npb25zKTsKICAg
ICB2aXJ0dWFsIH5TUUxTdGF0ZW1lbnRCYWNrZW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNw
cAppbmRleCAyZDZlNzdjYTVjNTZmYjJhYmZlYTE4MDUzNDBjOGY1YzQyZGI4MDUxLi5iNWMwMmYz
ZTgyNDJjNTdkZTFhNjBjNjZiOTgyMzY2ZGIyYTAzYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQu
Y3BwCkBAIC0zNDQsOSArMzQ0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjcmVhdGUo
RGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBmcm9udGVuZCwgUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCitSZWY8
U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmNyZWF0ZShEYXRh
YmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IGZyb250ZW5kLCBQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlciwgYm9vbCByZWFkT25seSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0aW9uQmFja2VuZChkYiwgZnJvbnRlbmQsIHdy
YXBwZXIsIHJlYWRPbmx5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FMVHJhbnNhY3Rp
b25CYWNrZW5kKGRiLCBmcm9udGVuZCwgd3JhcHBlciwgcmVhZE9ubHkpKTsKIH0KIAogU1FMVHJh
bnNhY3Rpb25CYWNrZW5kOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2UqIGRiLCBQYXNz
UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBmcm9udGVuZCwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
bldyYXBwZXI+IHdyYXBwZXIsIGJvb2wgcmVhZE9ubHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaAppbmRl
eCAxMTE3ZTFjY2IzYzRhZGUxZmY0MWQwNTIzNTkzYzIxYTg0YTFiODA0Li5hOTMyMDZkMmM3NjA5
ZTM2OWM0ZDgxMDNkYzBlYzZkNjYxZjUyYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogCiBjbGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiwgcHVibGljIFNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gY3JlYXRlKERh
dGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4sIFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25XcmFwcGVyPiwgYm9vbCByZWFkT25seSk7CisgICAgc3RhdGljIFJlZjxTUUxUcmFuc2Fj
dGlvbkJhY2tlbmQ+IGNyZWF0ZShEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+
LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4sIGJvb2wgcmVhZE9ubHkpOwogCiAg
ICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rpb25CYWNrZW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggZWE3M2EwM2NjN2Ri
NDZkNmIwYTdhODc4YjBiNWYyNWEwNDYxN2JkYi4uNDc0Njg0NTc3Mzc0ZTA0ODBmY2M5MzE5MjIw
YTI4OGMxMzI3NDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIKIHsKIH0KIAotUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNs
aWVudCkKK1JlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcihjb250ZXh0LCBjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIoY29udGV4dCwgY2xpZW50KSk7CiB9CiAK
IHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpjbGVhclN5bmNN
ZXRob2REb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuaAppbmRleCBkOGNmZDk0MzQwNDUxZmIxMmQ1NTc3NTQyNDI5YTRiOTI1ZmE5YjQzLi5h
Mzg5NGM5MjQxNWYzOTQ1ZjM4NmI4MmI2NzI2ZjFlYmNhYzNmZWY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCkBAIC01MCw3ICs1MCw3IEBA
IGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CiAKIGNsYXNzIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCopOwor
ICAgIHN0YXRpYyBSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsK
IAogICAgIHZvaWQgY2xlYXJTeW5jTWV0aG9kRG9uZSgpOwogICAgIHZvaWQgc2V0U3luY01ldGhv
ZERvbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKaW5kZXggN2YwMzQ5OGFmYTRiYjlmOWIzNjc5MmNlYWFkYTE1NzgxZjc5ZGQ1ZS4uY2Ez
N2M0NGVjNjUwMzJkNjNjNDc5ZGM1NmI2MjMyN2RkZjFiMzNhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE1NiwzNyArMTU2LDM3
IEBAIFdlYlNvY2tldDo6fldlYlNvY2tldCgpCiAgICAgICAgIG1fY2hhbm5lbC0+ZGlzY29ubmVj
dCgpOwogfQogCi1QYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPFdl
YlNvY2tldD4gd2ViU29ja2V0KGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKKyAg
ICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQoYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXQoY29u
dGV4dCkpKTsKICAgICB3ZWJTb2NrZXQtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiB3
ZWJTb2NrZXQucmVsZWFzZSgpOworICAgIHJldHVybiB3ZWJTb2NrZXQ7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8V2Vi
U29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4gcHJvdG9jb2xzOwogICAgIHJldHVybiBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0LCB1
cmwsIHByb3RvY29scywgZWMpOwogfQogCi1QYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90
b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpIHsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0KGFkb3B0
UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKKyAgICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJT
b2NrZXQoYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKICAgICB3ZWJTb2NrZXQt
PnN1c3BlbmRJZk5lZWRlZCgpOwogCiAgICAgd2ViU29ja2V0LT5jb25uZWN0KGNvbnRleHQuY29t
cGxldGVVUkwodXJsKSwgcHJvdG9jb2xzLCBlYyk7CiAgICAgaWYgKGVjKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gd2ViU29ja2V0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHdlYlNvY2tldCk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0
aW9uQ29kZSYgZWMpCitSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJv
dG9jb2xzOwogICAgIHByb3RvY29scy5hcHBlbmQocHJvdG9jb2wpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDY4ZTMwODM1YTlhMDQ0MDQy
Mzc3MjQyNTFkZmM4MzFkM2JmNmIyMDQuLmRkNGRhMmMyOTcxOWEwOGVkMzFlNTFkOTg3Y2E3YTZj
NTJjNzFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKQEAgLTU0LDEwICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNB
dmFpbGFibGUoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogc3ViUHJvdG9jb2xTZXBlcmF0b3IoKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNl
cHRpb25Db2RlJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cHJvdG9jb2xzLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAK
ICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDlhN2Y4YzRlMzI3NzI2MGM5ODgxYmE3MTcz
NDk5MzQ2N2VlNTgxOTguLjA0M2RjMGZjYzg3ZDEzY2U0YjBkNGFhNmI0Zjg4N2YzZDY3YWJmY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1YmxpYyBTb2NrZXRTdHJlYQogewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tldENo
YW5uZWwoZG9jdW1lbnQsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRDaGFu
bmVsPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBj
bGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0Q2hhbm5lbChkb2N1bWVudCwg
Y2xpZW50KSk7IH0KICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKICAgICBib29s
IHNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDA3OGIxMDY4M2FmMDYyMDIyNzc0OTRlOGJiNzQwYmE0
NjM1NWRhMTcuLjYyZWQzY2Q3MjkwNGZkMjA0NThmNjgyNTIwMmZkYzA3NDljZDEwMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01NSw5ICs1NSw5IEBAIGNs
YXNzIFdvcmtlclJ1bkxvb3A7CiBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiwg
cHVibGljIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbD4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSwg
V2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQor
ICAgIHN0YXRpYyBSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShXb3JrZXJH
bG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNs
aWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwod29ya2VyR2xvYmFsU2Nv
cGUsIGNsaWVudCwgdGFza01vZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwod29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudCwg
dGFza01vZGUpKTsKICAgICB9CiAgICAgdmlydHVhbCB+V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwoKTsKIApAQCAtMTI2LDkgKzEyNiw5IEBAIHByaXZhdGU6CiAgICAgLy8gQnJpZGdl
IGZvciBQZWVyLiAgUnVubmluZyBvbiB0aGUgd29ya2VyIHRocmVhZC4KICAgICBjbGFzcyBCcmlk
Z2UgOiBwdWJsaWMgUmVmQ291bnRlZDxCcmlkZ2U+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJyaWRnZT4gY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzUmVmUHRy
PFdvcmtlckdsb2JhbFNjb3BlPiB3b3JrZXJHbG9iYWxTY29wZSwgY29uc3QgU3RyaW5nJiB0YXNr
TW9kZSkKKyAgICAgICAgc3RhdGljIFJlZjxCcmlkZ2U+IGNyZWF0ZShQYXNzUmVmUHRyPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwg
UGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gd29ya2VyR2xvYmFsU2NvcGUsIGNvbnN0IFN0
cmluZyYgdGFza01vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQnJpZGdlKHdvcmtlckNsaWVudFdyYXBwZXIsIHdvcmtlckdsb2JhbFNjb3BlLCB0YXNrTW9k
ZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnJpZGdlKHdvcmtlckNsaWVu
dFdyYXBwZXIsIHdvcmtlckdsb2JhbFNjb3BlLCB0YXNrTW9kZSkpOwogICAgICAgICB9CiAgICAg
ICAgIH5CcmlkZ2UoKTsKICAgICAgICAgdm9pZCBpbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmgKaW5kZXggNmIwZmMyOTlkMTg3YWU3ODNmYmQ0
MDVlMmMyODVmNzcwZTMxYzliZC4uZDkzOGMzNGRlZGQzOGNkNzM4MTEzZTJkMDFiZTQyMTIyZjAz
M2Q1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuaApAQCAt
MzcsOSArMzcsOSBAQCBjbGFzcyBJbnNlcnRMaXN0Q29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVF
ZGl0Q29tbWFuZCB7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsgT3JkZXJlZExpc3QsIFVub3Jk
ZXJlZExpc3QgfTsKIAotICAgIHN0YXRpYyBSZWZQdHI8SW5zZXJ0TGlzdENvbW1hbmQ+IGNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFR5cGUgbGlzdFR5cGUpCisgICAgc3RhdGljIFJlZjxJbnNl
cnRMaXN0Q29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSBsaXN0VHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zZXJ0TGlzdENvbW1hbmQoZG9j
dW1lbnQsIGxpc3RUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc2VydExp
c3RDb21tYW5kKGRvY3VtZW50LCBsaXN0VHlwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGluc2VydExpc3QoRG9jdW1lbnQmLCBUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcAppbmRleCAwMjM3OWE4ZDkzMTczYTYwOTRkYzljNzY5YWY0NWE4MTY0MWNm
ZWMxLi5jZTBmNjUxYTliZTExODQ2MDI1YTBlYTJhODA5ZWYxYmYzYjkyNDYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCkBAIC03MiwyOCArNzIsMjggQEAgaW5saW5lIFdvcmtlcjo6V29y
a2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotUGFzc1JlZlB0cjxXb3JrZXI+
IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
Ly8gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgbmVzdGVkIHdvcmtlcnMsIHNvIHdvcmtlcnMg
Y2FuIG9ubHkgYmUgY3JlYXRlZCBmcm9tIGRvY3VtZW50cy4KICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAKLSAgICBSZWZQdHI8V29y
a2VyPiB3b3JrZXIgPSBhZG9wdFJlZihuZXcgV29ya2VyKGNvbnRleHQpKTsKKyAgICBSZWY8V29y
a2VyPiB3b3JrZXIgPSBhZG9wdFJlZigqbmV3IFdvcmtlcihjb250ZXh0KSk7CiAKICAgICB3b3Jr
ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCiAgICAgVVJMIHNjcmlwdFVSTCA9IHdvcmtlci0+cmVz
b2x2ZVVSTCh1cmwsIGVjKTsKICAgICBpZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVGhlIHdvcmtlciBj
b250ZXh0IGRvZXMgbm90IGV4aXN0IHdoaWxlIGxvYWRpbmcsIHNvIHdlIG11c3QgZW5zdXJlIHRo
YXQgdGhlIHdvcmtlciBvYmplY3QgaXMgbm90IGNvbGxlY3RlZCwgbm9yIGFyZSBpdHMgZXZlbnQg
bGlzdGVuZXJzLgotICAgIHdvcmtlci0+c2V0UGVuZGluZ0FjdGl2aXR5KHdvcmtlci5nZXQoKSk7
CisgICAgd29ya2VyLT5zZXRQZW5kaW5nQWN0aXZpdHkod29ya2VyLnB0cigpKTsKIAogICAgIHdv
cmtlci0+bV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOwotICAg
IHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgmY29udGV4dCwgc2Ny
aXB0VVJMLCBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cywgd29ya2VyLmdldCgpKTsKKyAgICB3b3Jr
ZXItPm1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoJmNvbnRleHQsIHNjcmlwdFVS
TCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHdvcmtlci5wdHIoKSk7CiAKLSAgICByZXR1cm4g
d29ya2VyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHdvcmtlcik7CiB9CiAKIFdv
cmtlcjo6fldvcmtlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCA3M2IzZWFiMDVhOTQ2
ODcyMWFmMmQxNjZkNzc0N2I0MGRlNDlkNDZiLi5kOWRiYTRiOTliNTlhNjgzNWQ0ZTU5ODM2YmE1
MjI1ZDY1NGQzZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgV29ya2VyIGZpbmFsIDogcHVibGljIEFi
c3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwcml2YXRlIFdvcmtlclNjcmlw
dExvYWRlckNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
b3JrZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmws
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgc3RhdGljIFJlZlB0cjxXb3JrZXI+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAgICAgdmlydHVhbCB+V29ya2VyKCk7CiAKICAgICAgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFdvcmtlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhFeHByZXNzaW9uLmNwcAppbmRleCA3NjRhMzBmMTEzODkwMmU5OGMwMWQ2NTFlYjMyODZjZTg0
NDhmZmJiLi5mZGZiOGFlZDg2YTcwYjc3ODA5OTlhMjM1NzQyOTQzMWFlYTA5YjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcApAQCAtNDUsMjQgKzQ1LDI0IEBAIGlubGlu
ZSBYUGF0aEV4cHJlc3Npb246OlhQYXRoRXhwcmVzc2lvbihzdGQ6OnVuaXF1ZV9wdHI8WFBhdGg6
OkV4cHJlc3Npb24+IGV4cHJlCiB7CiB9CiAKLVBhc3NSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBY
UGF0aEV4cHJlc3Npb246OmNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBYUGF0aE5TUmVzb2x2ZXIqIHJlc29sdmVyLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxY
UGF0aEV4cHJlc3Npb24+IFhQYXRoRXhwcmVzc2lvbjo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBT
dHJpbmcmIGV4cHJlc3Npb24sIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGF1dG8gcGFyc2VkRXhwcmVzc2lvbiA9IFBhcnNlcjo6cGFyc2VTdGF0
ZW1lbnQoZXhwcmVzc2lvbiwgcmVzb2x2ZXIsIGVjKTsKICAgICBpZiAoIXBhcnNlZEV4cHJlc3Np
b24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBY
UGF0aEV4cHJlc3Npb24oV1RGOjptb3ZlKHBhcnNlZEV4cHJlc3Npb24pKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgWFBhdGhFeHByZXNzaW9uKFdURjo6bW92ZShwYXJzZWRFeHByZXNzaW9u
KSkpOwogfQogCiBYUGF0aEV4cHJlc3Npb246On5YUGF0aEV4cHJlc3Npb24oKQogewogfQogCi1Q
YXNzUmVmUHRyPFhQYXRoUmVzdWx0PiBYUGF0aEV4cHJlc3Npb246OmV2YWx1YXRlKE5vZGUqIGNv
bnRleHROb2RlLCB1bnNpZ25lZCBzaG9ydCB0eXBlLCBYUGF0aFJlc3VsdCosIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUmVmUHRyPFhQYXRoUmVzdWx0PiBYUGF0aEV4cHJlc3Npb246OmV2YWx1YXRlKE5v
ZGUqIGNvbnRleHROb2RlLCB1bnNpZ25lZCBzaG9ydCB0eXBlLCBYUGF0aFJlc3VsdCosIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmICghaXNWYWxpZENvbnRleHROb2RlKGNvbnRleHROb2Rl
KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgRXZhbHVhdGlvbkNvbnRleHQm
IGV2YWx1YXRpb25Db250ZXh0ID0gRXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQoKTsKQEAg
LTg3LDcgKzg3LDcgQEAgUGFzc1JlZlB0cjxYUGF0aFJlc3VsdD4gWFBhdGhFeHByZXNzaW9uOjpl
dmFsdWF0ZShOb2RlKiBjb250ZXh0Tm9kZSwgdW5zaWduZWQgc2gKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURjo6
bW92ZShyZXN1bHQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmgKaW5k
ZXggOGZkMmEzZWVkMjI2MmVkZDJhNTU3MjVkMzVmNWRkNDYyNjRlZDk5Ni4uOTBkYTY3NWM1NDRm
NDkzZWYxNmE0NWQwNzAxYTZkZTNkNzYxMjBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJl
c3Npb24uaApAQCAtNDQsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIFhQYXRoRXhwcmVzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFhQYXRoRXhwcmVzc2lvbj4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8WFBhdGhFeHByZXNzaW9u
PiBjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgWFBhdGhOU1Jlc29s
dmVyKiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBzdGF0aWMgUmVmUHRyPFhQYXRoRXhwcmVz
c2lvbj4gY3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIFhQYXRoTlNS
ZXNvbHZlciosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgflhQYXRoRXhwcmVzc2lvbigpOwog
ICAgICAgICAKLSAgICAgICAgUGFzc1JlZlB0cjxYUGF0aFJlc3VsdD4gZXZhbHVhdGUoTm9kZSog
Y29udGV4dE5vZGUsIHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0KiwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICBSZWZQdHI8WFBhdGhSZXN1bHQ+IGV2YWx1YXRlKE5vZGUqIGNvbnRl
eHROb2RlLCB1bnNpZ25lZCBzaG9ydCB0eXBlLCBYUGF0aFJlc3VsdCosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFhQYXRoRXhw
cmVzc2lvbihzdGQ6OnVuaXF1ZV9wdHI8WFBhdGg6OkV4cHJlc3Npb24+KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253302</attachid>
            <date>2015-05-17 22:24:48 -0700</date>
            <delta_ts>2015-05-20 20:01:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145112-20150518142445.patch</filename>
            <type>text/plain</type>
            <size>54553</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYyZWM0NGY0YmJlYjYz
NDM2YzExNTk1MDFjZWQwNzM3YWJhMDYzZS4uNzIxN2E2MDRhOTQxZDU3ZDVlOWM3YjBhMjUxOWEw
MTIzNTk1YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE1LTA1LTE3ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIFdlYkNvcmUvTW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHJlbW92ZSBQYXNzUmVmUHRyLCB0aGlzIHBh
dGNoIHJlcGxhY2VzIFBhc3NSZWZQdHIgd2l0aCBSZWYgb3IgUmVmUHRyCisgICAgICAgIGRlcGVu
ZHMgb24gbnVsbCBvZiByZXR1cm4gdmFsdWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBi
ZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlzOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6CisgICAgICAg
ICogTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yR2FtZXBhZDo6Z2FtZXBhZEZyb21QbGF0Zm9ybUdhbWVwYWQpOgorICAgICAg
ICAqIE1vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvblBvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25FcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0
aW9uT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENJ
Y2VDYW5kaWRhdGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJ
Y2VDYW5kaWRhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMRXJyb3I6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTFJlc3VsdFNldDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TFJlc3VsdFNldFJvd0xpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVu
dEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnRCYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5k
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5k
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNyZWF0
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB4bWwvWFBhdGhFeHBy
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbjo6Y3JlYXRlRXhw
cmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aEV4cHJlc3Npb246OmV2YWx1YXRlKToK
KyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uLmg6CisKIDIwMTUtMDUtMTcgIFhhYmllciBS
b2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQg
PHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gRGVs
ZWdhdGUgUmVhZGFibGVTdHJlYW1SZWFkZXIgcmVmZXJlbmNlIGNvdW50aW5nIHRvIFJlYWRhYmxl
U3RyZWFtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggZGViMWMwMzg4NjA0YmU4OGIzYTEzMmEwYmRk
OTFmZDExMWU4NGMzZC4uMWU0Mjg2Y2Q0MmU5N2ZkOTczMTUzMzMyZWVkNmUyN2I3NGI2MTM0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDAsOSArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKQorUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFLZXlzKiBrZXlz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJl
ZihuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIGtleXMsIGtleVN5c3RlbSkpOworICAgIGF1
dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIGtleXMs
IGtleVN5c3RlbSkpOwogICAgIHNlc3Npb24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggMzRlOGU2MzM1YWIxNTZlZDk5MTk0YmRl
ZDhlZjQ0MmQwOWExZGU3ZC4uOTgyNDZjMmIxZTM0ZTEyODFhNjg3YzEzZGUyNTdjOGIyYzU2MzIy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhS2V5czsKIAog
Y2xhc3MgTWVkaWFLZXlTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlT
ZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBDRE1TZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgTWVkaWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIHN0YXRpYyBSZWY8
TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhS2V5
cyosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB+TWVkaWFLZXlTZXNzaW9uKCk7CiAK
ICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVt
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAKaW5kZXggMDJlODQyOTgyMWQ1MWFkNGY4Nzk1ZDkzNmQ4OGIzNjUyNTdlOGQ5ZC4u
Y2EzZGIwYjE4MzFmNDVjNjgwODAxMWI1NjJhMjYyNzExNWRhMTgxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMzgs
NyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFLZXlz
PiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gRnJvbSA8aHR0cDovL2R2
Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNy
eXB0ZWQtbWVkaWEuaHRtbCNkb20tbWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CiAgICAgLy8gVGhl
IE1lZGlhS2V5cyhrZXlTeXN0ZW0pIGNvbnN0cnVjdG9yIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CkBAIC00NiwxMyArNDYsMTMgQEAgUGFzc1JlZlB0cjxNZWRpYUtleXM+IE1lZGlhS2V5
czo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJgogICAgIC8v
IDEuIElmIGtleVN5c3RlbSBpcyBudWxsIG9yIGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4gSU5W
QUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYg
KGtleVN5c3RlbS5pc051bGwoKSB8fCBrZXlTeXN0ZW0uaXNFbXB0eSgpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gMi4gSWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2Yg
dGhlIHVzZXIgYWdlbnQncyBzdXBwb3J0ZWQgS2V5IFN5c3RlbXMsIHRocm93IGEgTk9UX1NVUFBP
UlRFRF9FUlIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghQ0RNOjpzdXBwb3J0c0tl
eVN5c3RlbShrZXlTeXN0ZW0pKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAv
LyAzLiBMZXQgY2RtIGJlIHRoZSBjb250ZW50IGRlY3J5cHRpb24gbW9kdWxlIGNvcnJlc3BvbmRp
bmcgdG8ga2V5U3lzdGVtLgpAQCAtNjIsNyArNjIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhS2V5cz4g
TWVkaWFLZXlzOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUm
CiAgICAgLy8gNS4gQ3JlYXRlIGEgbmV3IE1lZGlhS2V5cyBvYmplY3QuCiAgICAgLy8gNS4xIExl
dCB0aGUga2V5U3lzdGVtIGF0dHJpYnV0ZSBiZSBrZXlTeXN0ZW0uCiAgICAgLy8gNi4gUmV0dXJu
IHRoZSBuZXcgb2JqZWN0IHRvIHRoZSBjYWxsZXIuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYUtleXMoa2V5U3lzdGVtLCBXVEY6Om1vdmUoY2RtKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIFdURjo6bW92ZShjZG0pKSk7CiB9CiAKIE1lZGlh
S2V5czo6TWVkaWFLZXlzKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8
Q0RNPiBjZG0pCkBAIC04Myw3ICs4Myw3IEBAIE1lZGlhS2V5czo6fk1lZGlhS2V5cygpCiAgICAg
fQogfQogCi1QYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwg
VWludDhBcnJheSogaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPE1lZGlhS2V5
U2Vzc2lvbj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIC8vIEZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTQv
V0QtZW5jcnlwdGVkLW1lZGlhLTIwMTQwMjE4LyNkb20tY3JlYXRlc2Vzc2lvbj46CiAgICAgLy8g
VGhlIGNyZWF0ZVNlc3Npb24odHlwZSwgaW5pdERhdGEpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgpAQCAtOTIsMjAgKzkyLDIwIEBAIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNz
aW9uPiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
CiAgICAgLy8gMS4gSWYgY29udGVudFR5cGUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRo
cm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBz
LgogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAogICAgIC8vIDIuIElmIGluaXREYXRhIGlzIG51bGwgb3IgYW4gZW1wdHkgYXJyYXksIHRocm93
IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmICghaW5pdERhdGEgfHwgIWluaXREYXRhLT5sZW5ndGgoKSkgewogICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAogICAgIC8vIDMuIElmIHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUg
dGhhdCBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtleVN5c3Rl
bSwgdGhyb3cKICAgICAvLyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCiAgICAgaWYgKCF0eXBlLmlzTnVsbCgpICYmICF0eXBlLmlzRW1wdHkoKSAm
JiAhbV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUodHlwZSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAogICAgIC8vIDQuIENyZWF0ZSBhIG5ldyBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgpA
QCAtMTE5LDcgKzExOSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6
OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29uCiAgICAgc2Vzc2lvbi0+
Z2VuZXJhdGVLZXlSZXF1ZXN0KHR5cGUsIGluaXREYXRhKTsKIAogICAgIC8vIDYuIFJldHVybiB0
aGUgbmV3IG9iamVjdCB0byB0aGUgY2FsbGVyLgotICAgIHJldHVybiBzZXNzaW9uOworICAgIHJl
dHVybiBXVEY6Om1vdmUoc2Vzc2lvbik7CiB9CiAKIGJvb2wgTWVkaWFLZXlzOjppc1R5cGVTdXBw
b3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApp
bmRleCBmOGQ2ZDJlNTM4ZjcwZWYwZmQyOWNiMzdmZjY0Y2M4ZjVlZWUwNGU2Li4zNGZjYThmY2Q4
YzIyNTk1MmFkNDViOGY4OGYyMjNkZjBmNTAxMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCiBjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUtleXM+LCBwdWJsaWMgQ0RNQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUtleXM+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFLZXlzPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUtl
eXMoKTsKIAotICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5
KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBzdGF0
aWMgYm9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQu
aAppbmRleCA5ZGMxZmRjYjliMDA2ZGFmODAyN2U5YWY4Yzk5NGZiYmRkOWJhOTBhLi42NDYxYWJh
MmIyMzFjYmUzODhkOTY5ZjkxNDFkODVhYWMyOWQyZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9HYW1lcGFkLmgKQEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgUGxhdGZvcm1HYW1l
cGFkOwogCiBjbGFzcyBHYW1lcGFkOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZD4gY3JlYXRlKGNvbnN0IFBsYXRmb3Jt
R2FtZXBhZCYgcGxhdGZvcm1HYW1lcGFkKQorICAgIHN0YXRpYyBSZWY8R2FtZXBhZD4gY3JlYXRl
KGNvbnN0IFBsYXRmb3JtR2FtZXBhZCYgcGxhdGZvcm1HYW1lcGFkKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBHYW1lcGFkKHBsYXRmb3JtR2FtZXBhZCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHYW1lcGFkKHBsYXRmb3JtR2FtZXBhZCkpOwogICAgIH0KICAg
ICB+R2FtZXBhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVw
YWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
TmF2aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggMThmMWI0ZTYzNWY2OGIxN2Y3YjAyNzljNDJlNThj
MmUxYzRiYjljZi4uOTRmNDQ1ZWVlNjAyZGI4NGUzOWZlZmZhZGU1ODk2NGY3YjYwMmI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFk
LmNwcApAQCAtNzYsNyArNzYsNyBAQCBSZWY8R2FtZXBhZD4gTmF2aWdhdG9yR2FtZXBhZDo6Z2Ft
ZXBhZEZyb21QbGF0Zm9ybUdhbWVwYWQoUGxhdGZvcm1HYW1lcGFkJiBwbGF0ZgogewogICAgIHVu
c2lnbmVkIGluZGV4ID0gcGxhdGZvcm1HYW1lcGFkLmluZGV4KCk7CiAgICAgaWYgKGluZGV4ID49
IG1fZ2FtZXBhZHMuc2l6ZSgpIHx8ICFtX2dhbWVwYWRzW2luZGV4XSkKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpHYW1lcGFkOjpjcmVhdGUocGxhdGZvcm1HYW1lcGFkKS5sZWFrUmVmKCkpOwor
ICAgICAgICByZXR1cm4gR2FtZXBhZDo6Y3JlYXRlKHBsYXRmb3JtR2FtZXBhZCk7CiAKICAgICBy
ZXR1cm4gKm1fZ2FtZXBhZHNbaW5kZXhdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkL2RlcHJlY2F0ZWQvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL2RlcHJlY2F0ZWQvR2FtZXBhZC5oCmluZGV4IDA3MDExODQzMTkzYTZlNDJm
NjZmYTFlYmY4NGMzZDg2NjNlODBjZmUuLjYwMjZhMDZlNWM3MjU2MTIyZTUyYzliMzM2OTAzMDgw
OTAxMTY1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXBy
ZWNhdGVkL0dhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvZGVw
cmVjYXRlZC9HYW1lcGFkLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHYW1lcGFkOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZD4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEdh
bWVwYWQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVw
YWQpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYW1lcGFkKTsKICAgICB9CiAgICAg
fkdhbWVwYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uRXJyb3IuaAppbmRleCBiZmI2MWFhYmVkYWI1OTUwYmQ5YmUyMTM0MDNj
NWIzZGUzMjBkYjg4Li4wNTU0ZTg3YjY3Zjk1YWU2ZDZhNzAwODExODM1OTY4OTJkMTRiMDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uRXJyb3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBvc2l0aW9uVW5h
dmFpbGFibGUKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvbG9jYXRpb25FcnJv
cj4gY3JlYXRlKEVycm9yQ29kZSBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBHZW9sb2NhdGlvbkVycm9yKGNvZGUsIG1lc3NhZ2UpKTsgfQorICAgIHN0
YXRpYyBSZWY8R2VvbG9jYXRpb25FcnJvcj4gY3JlYXRlKEVycm9yQ29kZSBjb2RlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25FcnJvcihj
b2RlLCBtZXNzYWdlKSk7IH0KIAogICAgIEVycm9yQ29kZSBjb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNzYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDdiMTU2NDhmODhkZDI1OGYyNjI1MjZkZTNk
NDk2NzU3NjlkODllODcuLjhkMWU5MzA3MDFhMjgwNzIyNDQ2NWM1MjVhYmZmZTM2NjkyY2QyNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0zNCw5ICszNCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9sb2Nh
dGlvblBvc2l0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvbG9jYXRp
b25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2Vv
bG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNyZWF0ZShkb3VibGUg
dGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0aW9uUG9z
aXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSkpOworICAgIH0K
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNyZWF0ZShkb3Vi
bGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBh
Y2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJv
dmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92
aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBz
cGVlZCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1w
LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1
ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNI
ZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCkpOyB9CisgICAgc3RhdGljIFJl
ZjxHZW9sb2NhdGlvblBvc2l0aW9uPiBjcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxh
dGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
ZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVh
ZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW9sb2NhdGlvblBvc2l0aW9uKHRpbWVzdGFtcCwgbGF0aXR1
ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92
aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywg
aGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpKTsKKyAgICB9CiAKICAgICBkb3VibGUgdGlt
ZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5oCmluZGV4IDI3MDY0ZGRkZjA2
NDU2ODhmZmQ2NjdhNWM5NzgyZGFjYWExMTc0YzIuLjc4ZGMzNmE1ZTE5MGZkYjM5YzY3NzVhN2I0
MjBjZDA1Nzc3NzI0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvcG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb3Bvc2l0aW9uLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHZW9wb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb3Bvc2l0aW9uPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZShQYXNzUmVm
UHRyPENvb3JkaW5hdGVzPiBjb29yZGluYXRlcywgRE9NVGltZVN0YW1wIHRpbWVzdGFtcCkKKyAg
ICBzdGF0aWMgUmVmPEdlb3Bvc2l0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxDb29yZGluYXRlcz4g
Y29vcmRpbmF0ZXMsIERPTVRpbWVTdGFtcCB0aW1lc3RhbXApCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdlb3Bvc2l0aW9uKGNvb3JkaW5hdGVzLCB0aW1lc3RhbXApKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvcG9zaXRpb24oY29vcmRpbmF0ZXMsIHRpbWVz
dGFtcCkpOwogICAgIH0KIAogICAgIFBhc3NSZWZQdHI8R2VvcG9zaXRpb24+IGlzb2xhdGVkQ29w
eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L1Bvc2l0aW9uRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9z
aXRpb25FcnJvci5oCmluZGV4IGFhNTFjNmEzMzM2Y2Y2MTEzNjVmNTY5YjIyZmE5NjQyNWFlZGE4
OTMuLjEzOGRmOTZiMDc2ZWQzYjZmMGRmN2JlMTQ2NjdkNjE5ZjVjZjk1MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oCkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgVElNRU9VVCA9IDMKICAgICB9OwogICAgIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGNyZWF0ZShFcnJvckNvZGUgY29k
ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUG9zaXRpb25F
cnJvcihjb2RlLCBtZXNzYWdlKSk7IH0KKyAgICBzdGF0aWMgUmVmPFBvc2l0aW9uRXJyb3I+IGNy
ZWF0ZShFcnJvckNvZGUgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFBvc2l0aW9uRXJyb3IoY29kZSwgbWVzc2FnZSkpOyB9CiAKICAgICBFcnJvckNv
ZGUgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25PcHRpb25zLmgKaW5kZXggNWNiNjZmNzM1
ZjVhOTQ3ZTgwYjg2MTFiNDFkY2ZlNTY5MTIxODAxOS4uZTQ1NTkyMTdmMjUwZDIyYzk1ZjcyMDEz
OGJjYzBhMGVhZjQ1OWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9Qb3NpdGlvbk9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL1Bvc2l0aW9uT3B0aW9ucy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKIGNsYXNzIFBvc2l0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVk
PFBvc2l0aW9uT3B0aW9ucz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0
aW9uT3B0aW9ucz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBvc2l0aW9uT3B0aW9u
cygpKTsgfQorICAgIHN0YXRpYyBSZWY8UG9zaXRpb25PcHRpb25zPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFBvc2l0aW9uT3B0aW9ucygpKTsgfQogCiAgICAgYm9vbCBlbmFibGVI
aWdoQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2hpZ2hBY2N1cmFjeTsgfQogICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlKSB7IG1faGlnaEFjY3VyYWN5ID0gZW5h
YmxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
TWVkaWFDb250cm9sc0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAppbmRleCBjMDliNTY0NmYyNGEyYTE5ZDgwYzg1MTE5
NmY4Y2E4MGMzYTU0Y2Y2Li44MDZjMmU4YzI4ZThjZjM1NTkwZDhlZjkzMWRiNGM4YjliZWIzNmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFD
b250cm9sc0hvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xzSG9zdDo6YWx3YXlzT25LZXl3b3JkKCkKICAgICByZXR1cm4gYWx3
YXlzT247CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0hvc3Q+IE1lZGlhQ29udHJvbHNI
b3N0OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUmVmPE1lZGlhQ29u
dHJvbHNIb3N0PiBNZWRpYUNvbnRyb2xzSG9zdDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNIb3N0
KG1lZGlhRWxlbWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29udHJvbHNI
b3N0KG1lZGlhRWxlbWVudCkpOwogfQogCiBNZWRpYUNvbnRyb2xzSG9zdDo6TWVkaWFDb250cm9s
c0hvc3QoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRl
eCBjNjRlNDdjMDc2MDU1NTEwZjY4Y2I3OTkwMTZlMDZlZjlhNmZkODUxLi5kODFlZWY2ZTM3ZWRh
Yjg3NmUwZWQ5MTE1MGNlMzkyNzQ5ZmJiM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaApAQCAtNDYsNyAr
NDYsNyBAQCBjbGFzcyBUZXh0VHJhY2tMaXN0OwogCiBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdCA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbHNIb3N0PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0hvc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
Kik7CisgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRyb2xzSG9zdD4gY3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqKTsKICAgICB+TWVkaWFDb250cm9sc0hvc3QoKTsKIAogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGF1dG9tYXRpY0tleXdvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZjBhMWNiYmY4OGY5NDQz
MDQxYmViNWNkNzgyMGYyNDlkZDM4YTNlMi4uODk0NjAzNjE3MjUxYmI1NzNkNDJlZDVjMGFlZGZj
ZjY3NWZkOTNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTY3LDExICs2NywxMSBAQCB2b2lkIE1lZGlhU291cmNlOjpz
ZXRSZWdpc3RyeShVUkxSZWdpc3RyeSogcmVnaXN0cnkpCiAgICAgc19yZWdpc3RyeSA9IHJlZ2lz
dHJ5OwogfQogCi1QYXNzUmVmUHRyPE1lZGlhU291cmNlPiBNZWRpYVNvdXJjZTo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitSZWY8TWVkaWFTb3VyY2U+IE1lZGlhU291
cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBSZWZQ
dHI8TWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJjZShjb250
ZXh0KSkpOworICAgIFJlZjxNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UoYWRvcHRSZWYoKm5ldyBN
ZWRpYVNvdXJjZShjb250ZXh0KSkpOwogICAgIG1lZGlhU291cmNlLT5zdXNwZW5kSWZOZWVkZWQo
KTsKLSAgICByZXR1cm4gbWVkaWFTb3VyY2UucmVsZWFzZSgpOworICAgIHJldHVybiBtZWRpYVNv
dXJjZTsKIH0KIAogTWVkaWFTb3VyY2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmgKaW5kZXggN2ZlMjMyM2M2NjZkY2ExYTI1ZTc1NjQ5NzYyYjA4YmNiMjE2YTNh
Zi4uMDU5OWVmMDI1NDA5NmE1ODAxMWJjN2U1MDRlZWNiOTJkZjI0N2NjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2xvc2VkS2V5
d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVuZGVkS2V5d29yZCgpOwog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZT4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZSgpOwogCiAgICAgdm9p
ZCBhZGRlZFRvUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggODFhNjgyMjQyNzk1ZTY4NDU3OWVh
NTdmYzgwZTM0NjM4NjYzOTBjNC4uOTBkMDZjNzliOTc0ZTgzODJlMDVkNzNmMmJiOGRkNGFkYmVi
MWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgYXJyYXlidWZmZXJLZXl3b3JkKCkKICAgICByZXR1cm4gYXJyYXlidWZmZXI7CiB9CiAK
LVBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBwZWVy
Q29ubmVjdGlvbkhhbmRsZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IERpY3Rpb25hcnkm
IG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENE
YXRhQ2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlciogcGVlckNvbm5lY3Rpb25IYW5kbGVyLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBSVENEYXRhQ2hhbm5lbEluaXQgaW5pdERhdGE7CiAgICAgU3RyaW5nIG1heFJldHJhbnNt
aXRzU3RyOwpAQCAtODAsMTMgKzgwLDEzIEBAIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJU
Q0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAg
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURjo6
bW92ZShoYW5kbGVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVs
KGNvbnRleHQsIFdURjo6bW92ZShoYW5kbGVyKSkpOwogfQogCi1QYXNzUmVmUHRyPFJUQ0RhdGFD
aGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCitS
ZWY8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4g
aGFuZGxlcikKIHsKICAgICBBU1NFUlQoaGFuZGxlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSVENEYXRhQ2hhbm5lbChjb250ZXh0LCBXVEY6Om1vdmUoaGFuZGxlcikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSVENEYXRhQ2hhbm5lbChjb250ZXh0LCBXVEY6Om1vdmUoaGFuZGxl
cikpKTsKIH0KIAogUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
IGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmgKaW5kZXggNTM3MmU3OGMxYTgyMGU5OGI5NjhjNmY3YzQ5YTQ1ZTY1MTNh
N2Y3Yy4uNjk1MDAxYTIxYzM5ZjdiM2I2YmJiNzg0OWIzYTBhNDk4MjRiZDM1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApA
QCAtNDcsOCArNDcsOCBAQCBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiAKIGNsYXNz
IFJUQ0RhdGFDaGFubmVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+
LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kiwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciosIGNvbnN0IFN0cmluZyYgLCBjb25zdCBEaWN0
aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4pOworICAgIHN0YXRpYyBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgY29u
c3QgU3RyaW5nJiAsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgflJU
Q0RhdGFDaGFubmVsKCk7CiAKICAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApp
bmRleCAzNTNlMzA5ZGQ4NTViZDc1NDYyNWI3NGQ2MjBhNjg0ZWExODQ4NTk0Li5iMjkxODlmNDBj
MTQwN2ZlNzg1NTg0ZWQ3ZWI1NmI1YWM4ZGE4MmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCkBAIC00MSw3ICs0
MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRh
dGU+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGRpY3Rpb25hcnks
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gUlRDSWNlQ2FuZGlk
YXRlOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgU3RyaW5nIGNhbmRpZGF0ZTsKICAgICBib29sIG9rID0gZGljdGlvbmFyeS5n
ZXQoImNhbmRpZGF0ZSIsIGNhbmRpZGF0ZSk7CkBAIC03MSwxMiArNzEsMTIgQEAgUGFzc1JlZlB0
cjxSVENJY2VDYW5kaWRhdGU+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGNvbnN0IERpY3Rpb25h
cnkmIGRpY3Rpb25hcnkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUlRDSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OmNyZWF0ZShjYW5k
aWRhdGUsIHNkcE1pZCwgc2RwTUxpbmVJbmRleCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSVENJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjo6Y3JlYXRlKGNhbmRp
ZGF0ZSwgc2RwTWlkLCBzZHBNTGluZUluZGV4KSkpOwogfQogCi1QYXNzUmVmUHRyPFJUQ0ljZUNh
bmRpZGF0ZT4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRh
dGVEZXNjcmlwdG9yPiBkZXNjcmlwdG9yKQorUmVmPFJUQ0ljZUNhbmRpZGF0ZT4gUlRDSWNlQ2Fu
ZGlkYXRlOjpjcmVhdGUoUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPiBkZXNj
cmlwdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDSWNlQ2FuZGlkYXRlKGRlc2Ny
aXB0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENJY2VDYW5kaWRhdGUoZGVzY3Jp
cHRvcikpOwogfQogCiBSVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRpZGF0ZShQYXNzUmVmUHRy
PFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+IGRlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaAppbmRleCAwZGFk
MjVjMjdkMWNhNTk1NTAzZGQwZDBkOTg1ZmNiMjdjOTM4MWNkLi42NWZhM2JhY2E1M2YyY2JiMzJi
YmUzYmI1YWU0N2QyY2Y0ZDgwMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgKQEAgLTQ3LDggKzQ3LDggQEAgY2xhc3Mg
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKIAogY2xhc3MgUlRDSWNlQ2FuZGlkYXRlIDogcHVi
bGljIFJlZkNvdW50ZWQ8UlRDSWNlQ2FuZGlkYXRlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiBjcmVhdGUo
Y29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSVENJY2VDYW5kaWRhdGU+IGNyZWF0ZShQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2Ny
aXB0b3I+KTsKKyAgICBzdGF0aWMgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gY3JlYXRlKGNvbnN0
IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFJlZjxSVENJY2VDYW5k
aWRhdGU+IGNyZWF0ZShQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KTsKICAg
ICB2aXJ0dWFsIH5SVENJY2VDYW5kaWRhdGUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgY2FuZGlk
YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db250ZXh0LmNwcAppbmRleCBlOTEzY2RjOWM5YmY2Yjc0ODM2MmNhY2Fj
NjgwNDNkMGVkZTQ3NGU5Li5lNWVkOTQ4NDgxOTVhMTk3NTJmMmYxNDYyOWUwMTM5MjRlYjY3Zjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPE9mZmxpbmVBdWRpb0NvbnRleHQ+IE9mZmxpbmVBdWRpb0NvbnRleHQ6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUmVmUHRyPE9mZmxpbmVBdWRpb0NvbnRleHQ+IE9mZmxpbmVBdWRpb0Nv
bnRleHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Igd29y
a2Vycy4KICAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkgewpAQCAtNTEsNyArNTEsNyBA
QCBQYXNzUmVmUHRyPE9mZmxpbmVBdWRpb0NvbnRleHQ+IE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZQogCiAgICAgUmVmUHRyPE9mZmxpbmVBdWRpb0NvbnRl
eHQ+IGF1ZGlvQ29udGV4dChhZG9wdFJlZihuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dChkb2N1bWVu
dCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpKSk7CiAgICAg
YXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gYXVkaW9Db250ZXh0
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGF1ZGlvQ29udGV4dCk7CiB9CiAKIE9m
ZmxpbmVBdWRpb0NvbnRleHQ6Ok9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0
IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5oCmluZGV4IDM1YmJjOTY2M2MxY2M3N2FlNDIxOTg4M2E5YTZi
YWM3NjI2NmRkZDcuLjg0NjZiM2FlNzJlYTU2NmMyMjFmMWEzM2RlZDRjZTdhODIwNDgzYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29udGV4dC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
T2ZmbGluZUF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBdWRpb0NvbnRleHQgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE9mZmxpbmVBdWRpb0NvbnRleHQ+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFJl
ZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQg
c2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCB+T2ZmbGluZUF1ZGlv
Q29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBlYjBjYTQyNmNiYWU1
MzI3YTI0ZGU4OGRlZWEwYWVlYzI3ZGIzNmMyLi45NTNhZTkwZTgwZDk0NmVmNzVmM2VmM2ZmMzdm
ZTQ5NzRkYzNlZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM4LDkgKzM4LDkg
QEAgY2xhc3MgQXVkaW9Db250ZXh0OwogICAgIAogY2xhc3MgT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgc3RhdGljIFJl
ZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJn
ZXQpKTsgICAgIAorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7ICAgICAKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggMDcwZGM5ZTFm
YjA1MTczMzEwYTU0NGE2NTc2MzE0ZDY0MDJhNDdjMS4uYTRlZjljYTk3ZDkzOTIwMjVmZTU2OWU2
NjEwMmJlMGMwYmM1ZjA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ2LDkgKzQ2LDkgQEAgUGVyaW9kaWNXYXZlKiBP
c2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVTcXVhcmUgPSAwOwogUGVyaW9kaWNXYXZlKiBP
c2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVTYXd0b290aCA9IDA7CiBQZXJpb2RpY1dhdmUq
IE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVRyaWFuZ2xlID0gMDsKIAotUGFzc1JlZlB0
cjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitSZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpKTsKIH0KIAogT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29u
dGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAppbmRleCAwNTk2OTI2NmY5YTAyNGQ0OTYx
NmQ4ZDNlZmM5ZjA2YzFiYTc1MjE2Li43MDFkYjQyMDM4NGI4MzliMDU3YmNkMzE1NDczMjE5ZjIz
YmU5NGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ1VTVE9NID0gNAog
ICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8T3NjaWxsYXRv
ck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZp
cnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGEyNjVjNzQ3MDcwOWM3MTJhOTBiMDk1
OTM3NzA3MmI5ZDA2NzEzMjEuLjVlMGE2MTZiMDZiNWZlMTEyY2E5MTJiYjNjYTNkOTEzMzJjMDI5
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBEYXRhYmFzZTo6cnVuVHJhbnNhY3Rpb24oUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZlB0cjwKICAgICBpZiAo
IXRyYW5zYWN0aW9uQmFja2VuZCAmJiBlcnJvckNhbGxiYWNrKSB7CiAgICAgICAgIFdURjo6UmVm
UHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1Byb3RlY3RvciA9
IFdURjo6bW92ZShlcnJvckNhbGxiYWNrKTsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhbZXJyb3JDYWxsYmFja1Byb3RlY3Rvcl0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKLSAgICAgICAgICAgIGVycm9yQ2FsbGJhY2tQcm90ZWN0b3ItPmhhbmRsZUV2ZW50
KFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAiZGF0YWJhc2UgaGFzIGJl
ZW4gY2xvc2VkIikuZ2V0KCkpOworICAgICAgICAgICAgZXJyb3JDYWxsYmFja1Byb3RlY3Rvci0+
aGFuZGxlRXZlbnQoU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJkYXRh
YmFzZSBoYXMgYmVlbiBjbG9zZWQiKS5wdHIoKSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCAzOGI3ZTkxNzE5ZWY5YzlhZTI1NWVjYzhmNTdmMjgzMjdjNDBlMGUzLi42
NGM2MDE0MGMwYTI5MmJjOTAzZWYwOGZlYjNjZDU1NDA2YTc2MWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC02NjIsNyArNjYyLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmdldE9wZW5EYXRhYmFzZXMo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW0KICAgICAgICAgZGF0YWJh
c2VzLT5hZGQoKml0KTsKIH0KIAotUGFzc1JlZlB0cjxPcmlnaW5Mb2NrPiBEYXRhYmFzZVRyYWNr
ZXI6Om9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK1JlZlB0cjxPcmlnaW5M
b2NrPiBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKIHsKICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAg
ICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KTsKQEAgLTY4MCwxMSArNjgwLDExIEBAIFBhc3NSZWZQdHI8T3JpZ2luTG9jaz4gRGF0YWJhc2VU
cmFja2VyOjpvcmlnaW5Mb2NrRm9yKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgICAgIHJl
dHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgU3RyaW5nIHBhdGggPSBvcmln
aW5QYXRoKG9yaWdpbik7Ci0gICAgUmVmUHRyPE9yaWdpbkxvY2s+IGxvY2sgPSBhZG9wdFJlZihu
ZXcgT3JpZ2luTG9jayhwYXRoKSk7CisgICAgUmVmUHRyPE9yaWdpbkxvY2s+IGxvY2sgPSBhZG9w
dFJlZigqbmV3IE9yaWdpbkxvY2socGF0aCkpOwogICAgIEFTU0VSVChsb2NrKTsKICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbG9jazsKIAotICAgIHJldHVybiBsb2NrLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKGxvY2spOwogfQogCiB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6ZGVsZXRlT3JpZ2luTG9ja0ZvcihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKaW5k
ZXggZWFhNGZiNDVhYjExYjZlNThmNDNjZjMwZDYzZGEzY2VjYmYwMzBjNy4uMThkMWZlMzVmZDk0
Yzk2YzkyMjMwNTQyN2JlZmRkNTkxODhhM2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCkBAIC05NSw3ICs5NSw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKTsKICAgICB2b2lkIHNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgdW5zaWduZWQgbG9u
ZyBsb25nKTsKLSAgICBQYXNzUmVmUHRyPE9yaWdpbkxvY2s+IG9yaWdpbkxvY2tGb3IoU2VjdXJp
dHlPcmlnaW4qKTsKKyAgICBSZWZQdHI8T3JpZ2luTG9jaz4gb3JpZ2luTG9ja0ZvcihTZWN1cml0
eU9yaWdpbiopOwogCiAgICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTEVycm9yLmgKaW5kZXggMjJlOTJmNTUwZDRkN2Q3ODA4YjRjYmEyYWY5ZTQ0MDZm
ZDBlYjNhYi4uOGI1ZjViOWY1MTFmNWJjZDg4YTI4ZDNiNjBhODc2MmNiMjM0ZjM4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaApAQCAtMzYsMTIg
KzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1FMRXJyb3IgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMRXJyb3I+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTUUxFcnJvcj4gY3JlYXRlKHVuc2lnbmVkIGNvZGUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNRTEVycm9yKGNvZGUsIG1lc3NhZ2UpKTsgfQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTEVycm9yPiBjcmVhdGUodW5zaWduZWQgY29kZSwgY29u
c3QgY2hhciogbWVzc2FnZSwgaW50IHNxbGl0ZUNvZGUpCisgICAgc3RhdGljIFJlZjxTUUxFcnJv
cj4gY3JlYXRlKHVuc2lnbmVkIGNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTUUxFcnJvcihjb2RlLCBtZXNzYWdlKSk7IH0KKyAgICBzdGF0aWMgUmVm
PFNRTEVycm9yPiBjcmVhdGUodW5zaWduZWQgY29kZSwgY29uc3QgY2hhciogbWVzc2FnZSwgaW50
IHNxbGl0ZUNvZGUpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKGNvZGUsIFN0cmluZzo6
Zm9ybWF0KCIlcyAoJWQpIiwgbWVzc2FnZSwgc3FsaXRlQ29kZSkpOwogICAgIH0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTUUxFcnJvcj4gY3JlYXRlKHVuc2lnbmVkIGNvZGUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIGludCBzcWxpdGVDb2RlLCBjb25zdCBjaGFyKiBzcWxpdGVNZXNzYWdlKQorICAg
IHN0YXRpYyBSZWY8U1FMRXJyb3I+IGNyZWF0ZSh1bnNpZ25lZCBjb2RlLCBjb25zdCBjaGFyKiBt
ZXNzYWdlLCBpbnQgc3FsaXRlQ29kZSwgY29uc3QgY2hhciogc3FsaXRlTWVzc2FnZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBjcmVhdGUoY29kZSwgU3RyaW5nOjpmb3JtYXQoIiVzICglZCAlcyki
LCBtZXNzYWdlLCBzcWxpdGVDb2RlLCBzcWxpdGVNZXNzYWdlKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgKaW5kZXggMmMx
ZjUzZGQyZmE5ODg4Nzc0ZDE0ZWUxODM1OTlmYWFmODFmNWNlMy4uNzRkOGNkOTFmMTg0Y2M5YTg0
M2FkYTYwMDkwMWQ2ZmU5NGYyZGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU1FMUmVzdWx0U2V0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNRTFJlc3VsdFNldD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFJl
c3VsdFNldD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFJlc3VsdFNldCk7IH0K
KyAgICBzdGF0aWMgUmVmPFNRTFJlc3VsdFNldD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTUUxSZXN1bHRTZXQpOyB9CiAKICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0KiByb3dzKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMUmVzdWx0U2V0Um93TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmgKaW5kZXggYWYyMGQxOTVjOGVkODQyMWI3YzlkNDNkMTMy
Y2IyNGU1M2U3MzIzZC4uZWVmMTQ4ZDdiNmNmYjFiMjQ2ZmQyMjBiMmY4Mzk3OWQ2OTU3YjhjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRT
ZXRSb3dMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxS
ZXN1bHRTZXRSb3dMaXN0LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTUUxSZXN1bHRTZXRSb3dMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U1FMUmVzdWx0
U2V0Um93TGlzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFJlc3VsdFNl
dFJvd0xpc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxSZXN1bHRTZXRSb3dM
aXN0KTsgfQorICAgIHN0YXRpYyBSZWY8U1FMUmVzdWx0U2V0Um93TGlzdD4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTUUxSZXN1bHRTZXRSb3dMaXN0KTsgfQogCiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvbHVtbk5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5zOyB9
CiAgICAgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgdmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuY3BwCmluZGV4IDA2N2RjYmE4NWNkNTU3YzEyMzIzZDlk
NGRhMmQ0Y2JjZTllNDI2YTEuLjQ4ZjNjYmZjNzQzMTliMWRlMWE5ODkwYzFmNTQ5Njk4MTVhMzI3
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3Rh
dGVtZW50QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcApAQCAtNzUsMTAgKzc1LDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnRCYWNrZW5kPiBTUUxTdGF0ZW1l
bnRCYWNrZW5kOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gZnJvbnRlbmQs
CitSZWY8U1FMU3RhdGVtZW50QmFja2VuZD4gU1FMU3RhdGVtZW50QmFja2VuZDo6Y3JlYXRlKHN0
ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IGZyb250ZW5kLAogICAgIGNvbnN0IFN0cmluZyYg
c3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIGludCBwZXJtaXNz
aW9ucykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFN0YXRlbWVudEJhY2tlbmQoV1RG
Ojptb3ZlKGZyb250ZW5kKSwgc3RhdGVtZW50LCBhcmd1bWVudHMsIHBlcm1pc3Npb25zKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FMU3RhdGVtZW50QmFja2VuZChXVEY6Om1vdmUoZnJv
bnRlbmQpLCBzdGF0ZW1lbnQsIGFyZ3VtZW50cywgcGVybWlzc2lvbnMpKTsKIH0KIAogU1FMU3Rh
dGVtZW50QmFja2VuZDo6U1FMU3RhdGVtZW50QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8U1FMU3Rh
dGVtZW50PiBmcm9udGVuZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmgKaW5kZXggMjBkNDMxNzZmNDE0Yzg4MGE4
NjM2YjgyNGJjZTlhY2M0YWUwY2I5Yy4uNDkyODc1ODJmY2FiYzY3Y2MzODYyZmE0MDNhNzIzZDE4
MzhjMGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnRCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU1FMVHJh
bnNhY3Rpb25CYWNrZW5kOwogCiBjbGFzcyBTUUxTdGF0ZW1lbnRCYWNrZW5kIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNRTFN0YXRlbWVudEJhY2tlbmQ+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnRCYWNrZW5kPiBjcmVhdGUoc3RkOjp1bmlxdWVf
cHRyPFNRTFN0YXRlbWVudD4sCisgICAgc3RhdGljIFJlZjxTUUxTdGF0ZW1lbnRCYWNrZW5kPiBj
cmVhdGUoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4sCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgc3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIGludCBw
ZXJtaXNzaW9ucyk7CiAgICAgdmlydHVhbCB+U1FMU3RhdGVtZW50QmFja2VuZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMmQ2ZTc3Y2E1YzU2ZmIyYWJmZWExODA1MzQwYzhmNWM0
MmRiODA1MS4uYjVjMDJmM2U4MjQyYzU3ZGUxYTYwYzY2Yjk4MjM2NmRiMmEwM2M1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtMzQ0LDkgKzM0NCw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IFNRTFRyYW5zYWN0aW9u
QmFja2VuZDo6Y3JlYXRlKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4g
ZnJvbnRlbmQsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29s
IHJlYWRPbmx5KQorUmVmPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kOjpjcmVhdGUoRGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBmcm9u
dGVuZCwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIGJvb2wgcmVh
ZE9ubHkpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQo
ZGIsIGZyb250ZW5kLCB3cmFwcGVyLCByZWFkT25seSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNRTFRyYW5zYWN0aW9uQmFja2VuZChkYiwgZnJvbnRlbmQsIHdyYXBwZXIsIHJlYWRPbmx5
KSk7CiB9CiAKIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kKERh
dGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gZnJvbnRlbmQsIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25CYWNrZW5kLmgKaW5kZXggMTExN2UxY2NiM2M0YWRlMWZmNDFkMDUyMzU5M2MyMWE4NGExYjgw
NC4uYTkzMjA2ZDJjNzYwOWUzNjljNGQ4MTAzZGMwZWM2ZDY2MWY1MmM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogY2xhc3MgU1FMVHJhbnNhY3Rp
b25CYWNrZW5kIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNRTFRyYW5zYWN0aW9uQmFj
a2VuZD4sIHB1YmxpYyBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZTxTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ+IGNyZWF0ZShEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+LCBQYXNz
UmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4sIGJvb2wgcmVhZE9ubHkpOworICAgIHN0YXRp
YyBSZWY8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBjcmVhdGUoRGF0YWJhc2UqLCBQYXNzUmVmUHRy
PFNRTFRyYW5zYWN0aW9uPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29s
IHJlYWRPbmx5KTsKIAogICAgIHZpcnR1YWwgflNRTFRyYW5zYWN0aW9uQmFja2VuZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCmlu
ZGV4IGVhNzNhMDNjYzdkYjQ2ZDZiMGE3YTg3OGIwYjVmMjVhMDQ2MTdiZGIuLjQ3NDY4NDU3NzM3
NGUwNDgwZmNjOTMxOTIyMGEyODhjMTMyNzQ2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC01Miw5ICs1Miw5IEBAIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyCiB7CiB9CiAKLVBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyPiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50KiBjbGllbnQpCitSZWY8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIoY29udGV4dCwgY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKGNvbnRleHQs
IGNsaWVudCkpOwogfQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6Y2xlYXJTeW5jTWV0aG9kRG9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgKaW5kZXggZDhjZmQ5NDM0MDQ1MWZiMTJkNTU3NzU0MjQy
OWE0YjkyNWZhOWI0My4uYTM4OTRjOTI0MTVmMzk0NWYzODZiODJiNjcyNmYxZWJjYWMzZmVmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaApA
QCAtNTAsNyArNTAsNyBAQCBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OwogCiBjbGFzcyBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENo
YW5uZWxDbGllbnQqKTsKKyAgICBzdGF0aWMgUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50Kik7CiAKICAgICB2b2lkIGNsZWFyU3luY01ldGhvZERvbmUoKTsKICAgICB2
b2lkIHNldFN5bmNNZXRob2REb25lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDdmMDM0OThhZmE0YmI5ZjliMzY3OTJjZWFhZGEx
NTc4MWY3OWRkNWUuLmNhMzdjNDRlYzY1MDMyZDYzYzQ3OWRjNTZiNjIzMjdkZGYxYjMzYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBA
IC0xNTYsMzcgKzE1NiwzNyBAQCBXZWJTb2NrZXQ6On5XZWJTb2NrZXQoKQogICAgICAgICBtX2No
YW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tl
dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8V2ViU29j
a2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQog
ewotICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0
KGNvbnRleHQpKSk7CisgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0KGFkb3B0UmVmKCpu
ZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7CiAgICAgd2ViU29ja2V0LT5zdXNwZW5kSWZOZWVkZWQo
KTsKLSAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gd2ViU29ja2V0
OwogfQogCi1QYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKICAgICByZXR1cm4gV2ViU29ja2V0Ojpj
cmVhdGUoY29udGV4dCwgdXJsLCBwcm90b2NvbHMsIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJT
b2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNl
cHRpb25Db2RlJiBlYykKK1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAodXJs
LmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJTb2NrZXQ+
IHdlYlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7CisgICAgUmVmUHRy
PFdlYlNvY2tldD4gd2ViU29ja2V0KGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7
CiAgICAgd2ViU29ja2V0LT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHdlYlNvY2tldC0+Y29u
bmVjdChjb250ZXh0LmNvbXBsZXRlVVJMKHVybCksIHByb3RvY29scywgZWMpOwogICAgIGlmIChl
YykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIHdlYlNvY2tldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZSh3ZWJTb2NrZXQp
OwogfQogCi1QYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFZl
Y3RvcjxTdHJpbmc+IHByb3RvY29sczsKICAgICBwcm90b2NvbHMuYXBwZW5kKHByb3RvY29sKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA2
OGUzMDgzNWE5YTA0NDA0MjM3NzI0MjUxZGZjODMxZDNiZjZiMjA0Li5kZDRkYTJjMjk3MTlhMDhl
ZDMxZTUxZDk4N2NhN2E2YzUyYzcxYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC01NCwxMCArNTQsMTAgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxh
YmxlKCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1YlByb3RvY29sU2VwZXJhdG9yKCk7Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViU29ja2V0
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vi
U29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlNvY2tldD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
fldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA5YTdmOGM0ZTMy
NzcyNjBjOTg4MWJhNzE3MzQ5OTM0NjdlZTU4MTk4Li4wNDNkYzBmY2M4N2QxM2NlNGIwZDRhYTZi
NGY4ODdmM2Q2N2FiZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgV2ViU29j
a2V0Q2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMg
U29ja2V0U3RyZWEKIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQpKTsgfQorICAgIHN0YXRpYyBS
ZWY8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldENo
YW5uZWwoZG9jdW1lbnQsIGNsaWVudCkpOyB9CiAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5l
bCgpOwogCiAgICAgYm9vbCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCAwNzhiMTA2ODNhZjA2MjAy
Mjc3NDk0ZThiYjc0MGJhNDYzNTVkYTE3Li42MmVkM2NkNzI5MDRmZDIwNDU4ZjY4MjUyMDJmZGMw
NzQ5Y2QxMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAt
NTUsOSArNTUsOSBAQCBjbGFzcyBXb3JrZXJSdW5Mb29wOwogY2xhc3MgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbD4sIHB1YmxpYyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSogd29y
a2VyR2xvYmFsU2NvcGUsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSkKKyAgICBzdGF0aWMgUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
PiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
KHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIHRhc2tNb2RlKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKHdvcmtlckdsb2Jh
bFNjb3BlLCBjbGllbnQsIHRhc2tNb2RlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfldvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCk7CiAKQEAgLTEyNiw5ICsxMjYsOSBAQCBwcml2YXRl
OgogICAgIC8vIEJyaWRnZSBmb3IgUGVlci4gIFJ1bm5pbmcgb24gdGhlIHdvcmtlciB0aHJlYWQu
CiAgICAgY2xhc3MgQnJpZGdlIDogcHVibGljIFJlZkNvdW50ZWQ8QnJpZGdlPiB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCcmlkZ2U+IGNyZWF0ZShQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gd29ya2VyR2xvYmFsU2NvcGUsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUpCisgICAgICAgIHN0YXRpYyBSZWY8QnJpZGdlPiBjcmVhdGUo
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtl
ckNsaWVudFdyYXBwZXIsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IHdvcmtlckdsb2Jh
bFNjb3BlLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEJyaWRnZSh3b3JrZXJDbGllbnRXcmFwcGVyLCB3b3JrZXJHbG9i
YWxTY29wZSwgdGFza01vZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJy
aWRnZSh3b3JrZXJDbGllbnRXcmFwcGVyLCB3b3JrZXJHbG9iYWxTY29wZSwgdGFza01vZGUpKTsK
ICAgICAgICAgfQogICAgICAgICB+QnJpZGdlKCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCmluZGV4IDZiMGZj
Mjk5ZDE4N2FlNzgzZmJkNDA1ZTJjMjg1Zjc3MGUzMWM5YmQuLmQ5MzhjMzRkZWRkMzhjZDczODEx
M2UyZDAxYmU0MjEyMmYwMzNkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGlzdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExp
c3RDb21tYW5kLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgSW5zZXJ0TGlzdENvbW1hbmQgOiBw
dWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgewogcHVibGljOgogICAgIGVudW0gVHlwZSB7IE9y
ZGVyZWRMaXN0LCBVbm9yZGVyZWRMaXN0IH07CiAKLSAgICBzdGF0aWMgUmVmUHRyPEluc2VydExp
c3RDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIGxpc3RUeXBlKQorICAg
IHN0YXRpYyBSZWY8SW5zZXJ0TGlzdENvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFR5cGUgbGlzdFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc2Vy
dExpc3RDb21tYW5kKGRvY3VtZW50LCBsaXN0VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbnNlcnRMaXN0Q29tbWFuZChkb2N1bWVudCwgbGlzdFR5cGUpKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVmUHRyPEhUTUxFbGVtZW50PiBpbnNlcnRMaXN0KERvY3VtZW50JiwgVHlw
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggMDIzNzlhOGQ5MzE3M2E2MDk0ZGM5
Yzc2OWFmNDVhODE2NDFjZmVjMS4uY2UwZjY1MWE5YmUxMTg0NjAyNWEwZWEyYTgwOWVmMWJmM2I5
MjQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNzIsMjggKzcyLDI4IEBAIGlu
bGluZSBXb3JrZXI6OldvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVBh
c3NSZWZQdHI8V29ya2VyPiBXb3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8V29y
a2VyPiBXb3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IG5lc3RlZCB3b3Jr
ZXJzLCBzbyB3b3JrZXJzIGNhbiBvbmx5IGJlIGNyZWF0ZWQgZnJvbSBkb2N1bWVudHMuCiAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGV4dC5pc0RvY3VtZW50KCkpOwog
Ci0gICAgUmVmUHRyPFdvcmtlcj4gd29ya2VyID0gYWRvcHRSZWYobmV3IFdvcmtlcihjb250ZXh0
KSk7CisgICAgUmVmPFdvcmtlcj4gd29ya2VyID0gYWRvcHRSZWYoKm5ldyBXb3JrZXIoY29udGV4
dCkpOwogCiAgICAgd29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIFVSTCBzY3JpcHRV
UkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJsLCBlYyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIFRoZSB3b3JrZXIgY29udGV4dCBkb2VzIG5vdCBleGlzdCB3aGlsZSBsb2FkaW5nLCBzbyB3
ZSBtdXN0IGVuc3VyZSB0aGF0IHRoZSB3b3JrZXIgb2JqZWN0IGlzIG5vdCBjb2xsZWN0ZWQsIG5v
ciBhcmUgaXRzIGV2ZW50IGxpc3RlbmVycy4KLSAgICB3b3JrZXItPnNldFBlbmRpbmdBY3Rpdml0
eSh3b3JrZXIuZ2V0KCkpOworICAgIHdvcmtlci0+c2V0UGVuZGluZ0FjdGl2aXR5KHdvcmtlci5w
dHIoKSk7CiAKICAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVyID0gV29ya2VyU2NyaXB0TG9hZGVy
OjpjcmVhdGUoKTsKLSAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3Vz
bHkoJmNvbnRleHQsIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHdvcmtlci5n
ZXQoKSk7CisgICAgd29ya2VyLT5tX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCZj
b250ZXh0LCBzY3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB3b3JrZXIucHRyKCkp
OwogCi0gICAgcmV0dXJuIHdvcmtlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdURjo6bW92ZSh3
b3JrZXIpOwogfQogCiBXb3JrZXI6On5Xb3JrZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5k
ZXggNzNiM2VhYjA1YTk0Njg3MjFhZjJkMTY2ZDc3NDdiNDBkZTQ5ZDQ2Yi4uZDlkYmE0Yjk5YjU5
YTY4MzVkNGU1OTgzNmJhNTIyNWQ2NTRkM2YxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFdvcmtlciBm
aW5hbCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHJp
dmF0ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V29ya2VyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHN0YXRpYyBSZWZQdHI8
V29ya2VyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZpcnR1YWwgfldvcmtlcigpOwogCiAgICAgICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBXb3JrZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKaW5kZXggNzY0YTMwZjExMzg5MDJlOThj
MDFkNjUxZWIzMjg2Y2U4NDQ4ZmZiYi4uZmRmYjhhZWQ4NmE3MGI3NzgwOTk5YTIzNTc0Mjk0MzFh
ZWEwOWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAKQEAgLTQ1LDI0
ICs0NSwyNCBAQCBpbmxpbmUgWFBhdGhFeHByZXNzaW9uOjpYUGF0aEV4cHJlc3Npb24oc3RkOjp1
bmlxdWVfcHRyPFhQYXRoOjpFeHByZXNzaW9uPiBleHByZQogewogfQogCi1QYXNzUmVmUHRyPFhQ
YXRoRXhwcmVzc2lvbj4gWFBhdGhFeHByZXNzaW9uOjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBYUGF0aEV4cHJlc3Npb246OmNyZWF0ZUV4
cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBYUGF0aE5TUmVzb2x2ZXIqIHJlc29s
dmVyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBhdXRvIHBhcnNlZEV4cHJlc3Npb24gPSBQ
YXJzZXI6OnBhcnNlU3RhdGVtZW50KGV4cHJlc3Npb24sIHJlc29sdmVyLCBlYyk7CiAgICAgaWYg
KCFwYXJzZWRFeHByZXNzaW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgWFBhdGhFeHByZXNzaW9uKFdURjo6bW92ZShwYXJzZWRFeHByZXNzaW9u
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhQYXRoRXhwcmVzc2lvbihXVEY6Om1vdmUo
cGFyc2VkRXhwcmVzc2lvbikpKTsKIH0KIAogWFBhdGhFeHByZXNzaW9uOjp+WFBhdGhFeHByZXNz
aW9uKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxYUGF0aFJlc3VsdD4gWFBhdGhFeHByZXNzaW9uOjpl
dmFsdWF0ZShOb2RlKiBjb250ZXh0Tm9kZSwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1
bHQqLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxYUGF0aFJlc3VsdD4gWFBhdGhFeHByZXNz
aW9uOjpldmFsdWF0ZShOb2RlKiBjb250ZXh0Tm9kZSwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBh
dGhSZXN1bHQqLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWlzVmFsaWRDb250ZXh0
Tm9kZShjb250ZXh0Tm9kZSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIEV2
YWx1YXRpb25Db250ZXh0JiBldmFsdWF0aW9uQ29udGV4dCA9IEV4cHJlc3Npb246OmV2YWx1YXRp
b25Db250ZXh0KCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFBhc3NSZWZQdHI8WFBhdGhSZXN1bHQ+IFhQ
YXRoRXhwcmVzc2lvbjo6ZXZhbHVhdGUoTm9kZSogY29udGV4dE5vZGUsIHVuc2lnbmVkIHNoCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
RXhwcmVzc2lvbi5oCmluZGV4IDhmZDJhM2VlZDIyNjJlZGQyYTU1NzI1ZDM1ZjVkZDQ2MjY0ZWQ5
OTYuLjkwZGE2NzVjNTQ0ZjQ5M2VmMTZhNDVkMDcwMWE2ZGUzZDc2MTIwYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhFeHByZXNzaW9uLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBYUGF0aEV4cHJlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxY
UGF0aEV4cHJlc3Npb24+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFhQYXRoRXhwcmVzc2lvbj4gY3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIFhQYXRoTlNSZXNvbHZlciosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgc3RhdGljIFJl
ZlB0cjxYUGF0aEV4cHJlc3Npb24+IGNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uLCBYUGF0aE5TUmVzb2x2ZXIqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIH5YUGF0
aEV4cHJlc3Npb24oKTsKICAgICAgICAgCi0gICAgICAgIFBhc3NSZWZQdHI8WFBhdGhSZXN1bHQ+
IGV2YWx1YXRlKE5vZGUqIGNvbnRleHROb2RlLCB1bnNpZ25lZCBzaG9ydCB0eXBlLCBYUGF0aFJl
c3VsdCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUmVmUHRyPFhQYXRoUmVzdWx0PiBldmFs
dWF0ZShOb2RlKiBjb250ZXh0Tm9kZSwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBl
eHBsaWNpdCBYUGF0aEV4cHJlc3Npb24oc3RkOjp1bmlxdWVfcHRyPFhQYXRoOjpFeHByZXNzaW9u
Pik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253498</attachid>
            <date>2015-05-20 20:02:04 -0700</date>
            <delta_ts>2015-05-21 00:27:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-145112-20150521120215.patch</filename>
            <type>text/plain</type>
            <size>54479</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE5NDA0NTUyNmIxMTQ1
NDYyM2UzZTdhMGM3MDllMmQ4NDE3YjIzNi4uZTQ2NzMxNTE3ZjUyMjU3NDcyYWEwZWUyNzZjMWE0
ODU3NTg0NTc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE1LTA1LTIwICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIFdlYkNvcmUvTW9kdWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgQXMgYSBzdGVwIHRvIHJlbW92ZSBQYXNzUmVmUHRyLCB0aGlzIHBhdGNo
IHJlcGxhY2VzIFBhc3NSZWZQdHIgd2l0aCBSZWYgb3IgUmVmUHRyCisgICAgICAgIGRlcGVuZHMg
b24gbnVsbCBvZiByZXR1cm4gdmFsdWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhh
dmlvciBjaGFuZ2VzLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlz
OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6CisgICAgICAgICog
TW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdG9yR2FtZXBhZDo6Z2FtZXBhZEZyb21QbGF0Zm9ybUdhbWVwYWQpOgorICAgICAgICAq
IE1vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b25FcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
T3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpjcmVhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VD
YW5kaWRhdGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VD
YW5kaWRhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6T3NjaWxsYXRvck5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbkxvY2tGb3IpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMRXJyb3I6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFJlc3VsdFNldDo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFJlc3VsdFNldFJvd0xpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFJl
c3VsdFNldFJvd0xpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVudEJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnRCYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OkJyaWRnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6Y3JlYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNyZWF0ZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoRXhwcmVzc2lvbjo6Y3JlYXRlRXhwcmVz
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aEV4cHJlc3Npb246OmV2YWx1YXRlKToKKyAg
ICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uLmg6CisKIDIwMTUtMDUtMjAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQ29udGVudEV4dGVu
c2lvbnNdIFByb3Blcmx5IGluaXRpYWxpemUgQWN0aW9uS2V5LnN0YXRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAKaW5kZXggZGViMWMwMzg4NjA0YmU4OGIzYTEzMmEwYmRkOTFmZDExMWU4NGMzZC4uMWU0Mjg2
Y2Q0MmU5N2ZkOTczMTUzMzMyZWVkNmUyN2I3NGI2MTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApA
QCAtNDAsOSArNDAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVk
aWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBNZWRpYUtleXMqIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQor
UmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFLZXlzKiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSkKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZihuZXcgTWVkaWFLZXlTZXNzaW9u
KGNvbnRleHQsIGtleXMsIGtleVN5c3RlbSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVm
KCpuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIGtleXMsIGtleVN5c3RlbSkpOwogICAgIHNl
c3Npb24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBzZXNzaW9uOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmgKaW5kZXggMzRlOGU2MzM1YWIxNTZlZDk5MTk0YmRlZDhlZjQ0MmQwOWExZGU3ZC4uOTgy
NDZjMmIxZTM0ZTEyODFhNjg3YzEzZGUyNTdjOGIyYzU2MzIyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhS2V5czsKIAogY2xhc3MgTWVkaWFLZXlTZXNzaW9u
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBDRE1T
ZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleVNl
c3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFLZXlzKiwgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIHN0YXRpYyBSZWY8TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhS2V5cyosIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKTsKICAgICB+TWVkaWFLZXlTZXNzaW9uKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggMDJlODQy
OTgyMWQ1MWFkNGY4Nzk1ZDkzNmQ4OGIzNjUyNTdlOGQ5ZC4uY2EzZGIwYjE4MzFmNDVjNjgwODAx
MWI1NjJhMjYyNzExNWRhMTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFLZXlzPiBNZWRpYUtleXM6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8TWVkaWFL
ZXlzPiBNZWRpYUtleXM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgLy8gRnJvbSA8aHR0cDovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVk
aWEvcmF3LWZpbGUvdGlwL2VuY3J5cHRlZC1tZWRpYS9lbmNyeXB0ZWQtbWVkaWEuaHRtbCNkb20t
bWVkaWEta2V5cy1jb25zdHJ1Y3Rvcj46CiAgICAgLy8gVGhlIE1lZGlhS2V5cyhrZXlTeXN0ZW0p
IGNvbnN0cnVjdG9yIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC00NiwxMyArNDYs
MTMgQEAgUGFzc1JlZlB0cjxNZWRpYUtleXM+IE1lZGlhS2V5czo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBFeGNlcHRpb25Db2RlJgogICAgIC8vIDEuIElmIGtleVN5c3RlbSBpcyBu
dWxsIG9yIGFuIGVtcHR5IHN0cmluZywgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2Vw
dGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGtleVN5c3RlbS5pc051bGwoKSB8
fCBrZXlTeXN0ZW0uaXNFbXB0eSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAg
ICAgLy8gMi4gSWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhlIHVzZXIgYWdlbnQncyBzdXBw
b3J0ZWQgS2V5IFN5c3RlbXMsIHRocm93IGEgTk9UX1NVUFBPUlRFRF9FUlIgYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgogICAgIGlmICghQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7
CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAvLyAzLiBMZXQgY2RtIGJlIHRoZSBj
b250ZW50IGRlY3J5cHRpb24gbW9kdWxlIGNvcnJlc3BvbmRpbmcgdG8ga2V5U3lzdGVtLgpAQCAt
NjIsNyArNjIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhS2V5cz4gTWVkaWFLZXlzOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4Y2VwdGlvbkNvZGUmCiAgICAgLy8gNS4gQ3JlYXRlIGEg
bmV3IE1lZGlhS2V5cyBvYmplY3QuCiAgICAgLy8gNS4xIExldCB0aGUga2V5U3lzdGVtIGF0dHJp
YnV0ZSBiZSBrZXlTeXN0ZW0uCiAgICAgLy8gNi4gUmV0dXJuIHRoZSBuZXcgb2JqZWN0IHRvIHRo
ZSBjYWxsZXIuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUtleXMoa2V5U3lzdGVtLCBX
VEY6Om1vdmUoY2RtKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhS2V5cyhrZXlT
eXN0ZW0sIFdURjo6bW92ZShjZG0pKSk7CiB9CiAKIE1lZGlhS2V5czo6TWVkaWFLZXlzKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNPiBjZG0pCkBAIC04Myw3ICs4
Myw3IEBAIE1lZGlhS2V5czo6fk1lZGlhS2V5cygpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPE1l
ZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgVWludDhBcnJheSogaW5pdERhdGEs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlzOjpj
cmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IC8vIEZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTQvV0QtZW5jcnlwdGVkLW1lZGlhLTIw
MTQwMjE4LyNkb20tY3JlYXRlc2Vzc2lvbj46CiAgICAgLy8gVGhlIGNyZWF0ZVNlc3Npb24odHlw
ZSwgaW5pdERhdGEpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtOTIs
MjAgKzkyLDIwIEBAIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0
ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29uCiAgICAgLy8gMS4gSWYgY29udGVu
dFR5cGUgaXMgbnVsbCBvciBhbiBlbXB0eSBzdHJpbmcsIHRocm93IGFuIElOVkFMSURfQUNDRVNT
X0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICh0eXBlLmlzRW1w
dHkoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIC8vIDIuIElmIGluaXRE
YXRhIGlzIG51bGwgb3IgYW4gZW1wdHkgYXJyYXksIHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VS
UiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghaW5pdERhdGEgfHwg
IWluaXREYXRhLT5sZW5ndGgoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAg
IC8vIDMuIElmIHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUgdGhhdCBpcyBub3Qgc3VwcG9ydGVk
IG9yIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtleVN5c3RlbSwgdGhyb3cKICAgICAvLyBhIE5P
VF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYg
KCF0eXBlLmlzTnVsbCgpICYmICF0eXBlLmlzRW1wdHkoKSAmJiAhbV9jZG0tPnN1cHBvcnRzTUlN
RVR5cGUodHlwZSkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIC8vIDQuIENy
ZWF0ZSBhIG5ldyBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgpAQCAtMTE5LDcgKzExOSw3IEBAIFBh
c3NSZWZQdHI8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29uCiAgICAgc2Vzc2lvbi0+Z2VuZXJhdGVLZXlSZXF1ZXN0KHR5
cGUsIGluaXREYXRhKTsKIAogICAgIC8vIDYuIFJldHVybiB0aGUgbmV3IG9iamVjdCB0byB0aGUg
Y2FsbGVyLgotICAgIHJldHVybiBzZXNzaW9uOworICAgIHJldHVybiBXVEY6Om1vdmUoc2Vzc2lv
bik7CiB9CiAKIGJvb2wgTWVkaWFLZXlzOjppc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCBmOGQ2ZDJlNTM4ZjcwZWYw
ZmQyOWNiMzdmZjY0Y2M4ZjVlZWUwNGU2Li4zNGZjYThmY2Q4YzIyNTk1MmFkNDViOGY4OGYyMjNk
ZjBmNTAxMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OwogCiBjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleXM+LCBwdWJs
aWMgQ0RNQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleXM+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0
YXRpYyBSZWZQdHI8TWVkaWFLZXlzPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUtleXMoKTsKIAotICAgIFBhc3NSZWZQ
dHI8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGlu
aXREYXRhLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBzdGF0aWMgYm9vbCBpc1R5cGVTdXBwb3J0
ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaAppbmRleCA5ZGMxZmRjYjliMDA2
ZGFmODAyN2U5YWY4Yzk5NGZiYmRkOWJhOTBhLi42NDYxYWJhMmIyMzFjYmUzODhkOTY5ZjkxNDFk
ODVhYWMyOWQyZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
R2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmgK
QEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgUGxhdGZvcm1HYW1lcGFkOwogCiBjbGFzcyBHYW1lcGFk
OiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8R2FtZXBhZD4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtR2FtZXBhZCYgcGxhdGZvcm1HYW1l
cGFkKQorICAgIHN0YXRpYyBSZWY8R2FtZXBhZD4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtR2FtZXBh
ZCYgcGxhdGZvcm1HYW1lcGFkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
YW1lcGFkKHBsYXRmb3JtR2FtZXBhZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
YW1lcGFkKHBsYXRmb3JtR2FtZXBhZCkpOwogICAgIH0KICAgICB+R2FtZXBhZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAK
aW5kZXggMThmMWI0ZTYzNWY2OGIxN2Y3YjAyNzljNDJlNThjMmUxYzRiYjljZi4uOTRmNDQ1ZWVl
NjAyZGI4NGUzOWZlZmZhZGU1ODk2NGY3YjYwMmI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcApAQCAtNzYsNyArNzYsNyBA
QCBSZWY8R2FtZXBhZD4gTmF2aWdhdG9yR2FtZXBhZDo6Z2FtZXBhZEZyb21QbGF0Zm9ybUdhbWVw
YWQoUGxhdGZvcm1HYW1lcGFkJiBwbGF0ZgogewogICAgIHVuc2lnbmVkIGluZGV4ID0gcGxhdGZv
cm1HYW1lcGFkLmluZGV4KCk7CiAgICAgaWYgKGluZGV4ID49IG1fZ2FtZXBhZHMuc2l6ZSgpIHx8
ICFtX2dhbWVwYWRzW2luZGV4XSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpHYW1lcGFkOjpj
cmVhdGUocGxhdGZvcm1HYW1lcGFkKS5sZWFrUmVmKCkpOworICAgICAgICByZXR1cm4gR2FtZXBh
ZDo6Y3JlYXRlKHBsYXRmb3JtR2FtZXBhZCk7CiAKICAgICByZXR1cm4gKm1fZ2FtZXBhZHNbaW5k
ZXhdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL2RlcHJl
Y2F0ZWQvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL2RlcHJlY2F0
ZWQvR2FtZXBhZC5oCmluZGV4IDA3MDExODQzMTkzYTZlNDJmNjZmYTFlYmY4NGMzZDg2NjNlODBj
ZmUuLjYwMjZhMDZlNWM3MjU2MTIyZTUyYzliMzM2OTAzMDgwOTAxMTY1NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL0dhbWVwYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvZGVwcmVjYXRlZC9HYW1lcGFkLmgKQEAg
LTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHYW1lcGFkOiBwdWJs
aWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
R2FtZXBhZD4gY3JlYXRlKCkKKyAgICBzdGF0aWMgUmVmPEdhbWVwYWQ+IGNyZWF0ZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVwYWQpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBHYW1lcGFkKTsKICAgICB9CiAgICAgfkdhbWVwYWQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uRXJyb3Iu
aAppbmRleCBiZmI2MWFhYmVkYWI1OTUwYmQ5YmUyMTM0MDNjNWIzZGUzMjBkYjg4Li4wNTU0ZTg3
YjY3Zjk1YWU2ZDZhNzAwODExODM1OTY4OTJkMTRiMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uRXJyb3IuaApAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBvc2l0aW9uVW5hdmFpbGFibGUKICAgICB9OwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gY3JlYXRlKEVycm9yQ29kZSBj
b2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9sb2Nh
dGlvbkVycm9yKGNvZGUsIG1lc3NhZ2UpKTsgfQorICAgIHN0YXRpYyBSZWY8R2VvbG9jYXRpb25F
cnJvcj4gY3JlYXRlKEVycm9yQ29kZSBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25FcnJvcihjb2RlLCBtZXNzYWdlKSk7IH0KIAog
ICAgIEVycm9yQ29kZSBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlv
bi5oCmluZGV4IDdiMTU2NDhmODhkZDI1OGYyNjI1MjZkZTNkNDk2NzU3NjlkODllODcuLjhkMWU5
MzA3MDFhMjgwNzIyNDQ2NWM1MjVhYmZmZTM2NjkyY2QyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBA
IC0zNCw5ICszNCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9sb2NhdGlvblBvc2l0aW9uPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRv
dWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91Ymxl
IGFjY3VyYWN5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1l
c3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7IH0KKyAgICBzdGF0aWMgUmVm
PEdlb2xvY2F0aW9uUG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRp
dHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSkpOworICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRl
c0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5
LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBo
ZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRl
LCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVB
Y2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92
aWRlc1NwZWVkLCBzcGVlZCkpOyB9CisgICAgc3RhdGljIFJlZjxHZW9sb2NhdGlvblBvc2l0aW9u
PiBjcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0
dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0
dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJh
Y3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1Nw
ZWVkLCBkb3VibGUgc3BlZWQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBH
ZW9sb2NhdGlvblBvc2l0aW9uKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ks
IGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVl
ZCwgc3BlZWQpKTsKKyAgICB9CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1
cm4gbV90aW1lc3RhbXA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9wb3NpdGlvbi5oCmluZGV4IDI3MDY0ZGRkZjA2NDU2ODhmZmQ2NjdhNWM5NzgyZGFj
YWExMTc0YzIuLjc4ZGMzNmE1ZTE5MGZkYjM5YzY3NzVhN2I0MjBjZDA1Nzc3NzI0MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb3Bvc2l0aW9uLmgKQEAg
LTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHZW9wb3NpdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPEdlb3Bvc2l0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPENvb3JkaW5hdGVzPiBjb29y
ZGluYXRlcywgRE9NVGltZVN0YW1wIHRpbWVzdGFtcCkKKyAgICBzdGF0aWMgUmVmPEdlb3Bvc2l0
aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxDb29yZGluYXRlcz4gY29vcmRpbmF0ZXMsIERPTVRpbWVT
dGFtcCB0aW1lc3RhbXApCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdlb3Bv
c2l0aW9uKGNvb3JkaW5hdGVzLCB0aW1lc3RhbXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR2VvcG9zaXRpb24oY29vcmRpbmF0ZXMsIHRpbWVzdGFtcCkpOwogICAgIH0KIAogICAg
IFBhc3NSZWZQdHI8R2VvcG9zaXRpb24+IGlzb2xhdGVkQ29weSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oCmluZGV4IGFh
NTFjNmEzMzM2Y2Y2MTEzNjVmNTY5YjIyZmE5NjQyNWFlZGE4OTMuLjEzOGRmOTZiMDc2ZWQzYjZm
MGRmN2JlMTQ2NjdkNjE5ZjVjZjk1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVElNRU9VVCA9IDMKICAgICB9OwogICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBvc2l0aW9uRXJyb3I+IGNyZWF0ZShFcnJvckNvZGUgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUG9zaXRpb25FcnJvcihjb2RlLCBtZXNzYWdlKSk7
IH0KKyAgICBzdGF0aWMgUmVmPFBvc2l0aW9uRXJyb3I+IGNyZWF0ZShFcnJvckNvZGUgY29kZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBvc2l0aW9uRXJy
b3IoY29kZSwgbWVzc2FnZSkpOyB9CiAKICAgICBFcnJvckNvZGUgY29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzc2FnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Qb3NpdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vUG9zaXRpb25PcHRpb25zLmgKaW5kZXggNWNiNjZmNzM1ZjVhOTQ3ZTgwYjg2MTFiNDFkY2Zl
NTY5MTIxODAxOS4uZTQ1NTkyMTdmMjUwZDIyYzk1ZjcyMDEzOGJjYzBhMGVhZjQ1OWJjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbk9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uT3B0
aW9ucy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNz
IFBvc2l0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uT3B0aW9ucz4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFBvc2l0aW9uT3B0aW9ucygpKTsgfQorICAgIHN0YXRpYyBS
ZWY8UG9zaXRpb25PcHRpb25zPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBvc2l0
aW9uT3B0aW9ucygpKTsgfQogCiAgICAgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3koKSBjb25zdCB7
IHJldHVybiBtX2hpZ2hBY2N1cmFjeTsgfQogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
KGJvb2wgZW5hYmxlKSB7IG1faGlnaEFjY3VyYWN5ID0gZW5hYmxlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmNwcAppbmRleCBlY2QzMWEyNWEwMDVjOGFjYjhkNmYwZmQ2YzU3NmIzYzk4OTU2Y2I2Li4wZjNk
NDAxYWZlMTVlY2E3ZmEzNTNkNGI4Zjc3ZThmMDg1NTdlMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5j
cHAKQEAgLTYxLDkgKzYxLDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xzSG9z
dDo6YWx3YXlzT25LZXl3b3JkKCkKICAgICByZXR1cm4gYWx3YXlzT247CiB9CiAKLVBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sc0hvc3Q+IE1lZGlhQ29udHJvbHNIb3N0OjpjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50KQorUmVmPE1lZGlhQ29udHJvbHNIb3N0PiBNZWRpYUNvbnRy
b2xzSG9zdDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNIb3N0KG1lZGlhRWxlbWVudCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhQ29udHJvbHNIb3N0KG1lZGlhRWxlbWVudCkpOwog
fQogCiBNZWRpYUNvbnRyb2xzSG9zdDo6TWVkaWFDb250cm9sc0hvc3QoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRleCBjNjRlNDdjMDc2MDU1NTEwZjY4
Y2I3OTkwMTZlMDZlZjlhNmZkODUxLi5kODFlZWY2ZTM3ZWRhYjg3NmUwZWQ5MTE1MGNlMzkyNzQ5
ZmJiM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
TWVkaWFDb250cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29u
dHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBUZXh0VHJh
Y2tMaXN0OwogCiBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhQ29udHJvbHNIb3N0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sc0hvc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFJlZjxN
ZWRpYUNvbnRyb2xzSG9zdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICB+TWVkaWFD
b250cm9sc0hvc3QoKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9tYXRp
Y0tleXdvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKaW5kZXggZjBhMWNiYmY4OGY5NDQzMDQxYmViNWNkNzgyMGYyNDlkZDM4
YTNlMi4uODk0NjAzNjE3MjUxYmI1NzNkNDJlZDVjMGFlZGZjZjY3NWZkOTNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAg
LTY3LDExICs2NywxMSBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRSZWdpc3RyeShVUkxSZWdpc3Ry
eSogcmVnaXN0cnkpCiAgICAgc19yZWdpc3RyeSA9IHJlZ2lzdHJ5OwogfQogCi1QYXNzUmVmUHRy
PE1lZGlhU291cmNlPiBNZWRpYVNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCitSZWY8TWVkaWFTb3VyY2U+IE1lZGlhU291cmNlOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBSZWZQdHI8TWVkaWFTb3VyY2U+IG1lZGlh
U291cmNlKGFkb3B0UmVmKG5ldyBNZWRpYVNvdXJjZShjb250ZXh0KSkpOworICAgIFJlZjxNZWRp
YVNvdXJjZT4gbWVkaWFTb3VyY2UoYWRvcHRSZWYoKm5ldyBNZWRpYVNvdXJjZShjb250ZXh0KSkp
OwogICAgIG1lZGlhU291cmNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gbWVkaWFT
b3VyY2UucmVsZWFzZSgpOworICAgIHJldHVybiBtZWRpYVNvdXJjZTsKIH0KIAogTWVkaWFTb3Vy
Y2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKaW5kZXggN2Zl
MjMyM2M2NjZkY2ExYTI1ZTc1NjQ5NzYyYjA4YmNiMjE2YTNhZi4uMDU5OWVmMDI1NDA5NmE1ODAx
MWJjN2U1MDRlZWNiOTJkZjI0N2NjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2xvc2VkS2V5d29yZCgpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGVuZGVkS2V5d29yZCgpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFTb3VyY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYVNvdXJjZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAg
ICB2aXJ0dWFsIH5NZWRpYVNvdXJjZSgpOwogCiAgICAgdm9pZCBhZGRlZFRvUmVnaXN0cnkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKaW5kZXggODFhNjgyMjQyNzk1ZTY4NDU3OWVhNTdmYzgwZTM0NjM4NjYzOTBjNC4u
OTBkMDZjNzliOTc0ZTgzODJlMDVkNzNmMmJiOGRkNGFkYmViMWY1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXJyYXlidWZmZXJLZXl3
b3JkKCkKICAgICByZXR1cm4gYXJyYXlidWZmZXI7CiB9CiAKLVBhc3NSZWZQdHI8UlRDRGF0YUNo
YW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBwZWVyQ29ubmVjdGlvbkhhbmRsZXIsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciog
cGVlckNvbm5lY3Rpb25IYW5kbGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBEaWN0aW9u
YXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSVENEYXRhQ2hhbm5lbElu
aXQgaW5pdERhdGE7CiAgICAgU3RyaW5nIG1heFJldHJhbnNtaXRzU3RyOwpAQCAtODAsMTMgKzgw
LDEzIEBAIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRF
RF9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURjo6bW92ZShoYW5kbGVyKSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURjo6bW92ZSho
YW5kbGVyKSkpOwogfQogCi1QYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5l
bDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0
cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCitSZWY8UlRDRGF0YUNoYW5uZWw+IFJU
Q0RhdGFDaGFubmVsOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gaGFuZGxlcikKIHsKICAgICBBU1NF
UlQoaGFuZGxlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEYXRhQ2hhbm5lbChjb250
ZXh0LCBXVEY6Om1vdmUoaGFuZGxlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENE
YXRhQ2hhbm5lbChjb250ZXh0LCBXVEY6Om1vdmUoaGFuZGxlcikpKTsKIH0KIAogUlRDRGF0YUNo
YW5uZWw6OlJUQ0RhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHN0
ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXgg
NTM3MmU3OGMxYTgyMGU5OGI5NjhjNmY3YzQ5YTQ1ZTY1MTNhN2Y3Yy4uODhlNzRhZTllZjIyODIy
NTRhMWFjNmJmNTNmYTRkNzU1NTQ0ZWU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApAQCAtNDcsOCArNDcsOCBAQCBjbGFz
cyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBwdWJsaWMgU2NyaXB0V3JhcHBh
YmxlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDRGF0
YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgc3RkOjp1bmlxdWVfcHRy
PFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFD
aGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlciosIGNvbnN0IFN0cmluZyYgLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHN0YXRpYyBSZWY8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kiwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pOworICAg
IHN0YXRpYyBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENEYXRhQ2hh
bm5lbCgpOwogCiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKaW5kZXggMzUz
ZTMwOWRkODU1YmQ3NTQ2MjViNzRkNjIwYTY4NGVhMTg0ODU5NC4uYjI5MTg5ZjQwYzE0MDdmZTc4
NTU4NGVkN2ViNTZiNWFjOGRhODJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApAQCAtNDEsNyArNDEsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiBSVENJ
Y2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5LCBFeGNlcHRp
b25Db2RlJiBlYykKK1JlZlB0cjxSVENJY2VDYW5kaWRhdGU+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3Jl
YXRlKGNvbnN0IERpY3Rpb25hcnkmIGRpY3Rpb25hcnksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIFN0cmluZyBjYW5kaWRhdGU7CiAgICAgYm9vbCBvayA9IGRpY3Rpb25hcnkuZ2V0KCJjYW5k
aWRhdGUiLCBjYW5kaWRhdGUpOwpAQCAtNzEsMTIgKzcxLDEyIEBAIFBhc3NSZWZQdHI8UlRDSWNl
Q2FuZGlkYXRlPiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBkaWN0
aW9uYXJ5CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0lj
ZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOjpjcmVhdGUoY2FuZGlkYXRlLCBz
ZHBNaWQsIHNkcE1MaW5lSW5kZXgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNl
Q2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I6OmNyZWF0ZShjYW5kaWRhdGUsIHNk
cE1pZCwgc2RwTUxpbmVJbmRleCkpKTsKIH0KIAotUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRhdGU+
IFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvcj4gZGVzY3JpcHRvcikKK1JlZjxSVENJY2VDYW5kaWRhdGU+IFJUQ0ljZUNhbmRpZGF0ZTo6
Y3JlYXRlKFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4gZGVzY3JpcHRvcikK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0ljZUNhbmRpZGF0ZShkZXNjcmlwdG9yKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlkYXRlKGRlc2NyaXB0b3IpKTsK
IH0KIAogUlRDSWNlQ2FuZGlkYXRlOjpSVENJY2VDYW5kaWRhdGUoUGFzc1JlZlB0cjxSVENJY2VD
YW5kaWRhdGVEZXNjcmlwdG9yPiBkZXNjcmlwdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgKaW5kZXggMGRhZDI1YzI3ZDFj
YTU5NTUwM2RkMGQwZDk4NWZjYjI3YzkzODFjZC4uNjVmYTNiYWNhNTNmMmNiYjMyYmJlM2JiNWFl
NDdkMmNmNGQ4MDAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIFJUQ0ljZUNh
bmRpZGF0ZURlc2NyaXB0b3I7CiAKIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJUQ0ljZUNhbmRpZGF0ZT4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4gY3JlYXRlKGNvbnN0IERp
Y3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDSWNl
Q2FuZGlkYXRlPiBjcmVhdGUoUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPik7
CisgICAgc3RhdGljIFJlZlB0cjxSVENJY2VDYW5kaWRhdGU+IGNyZWF0ZShjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWY8UlRDSWNlQ2FuZGlkYXRlPiBj
cmVhdGUoUGFzc1JlZlB0cjxSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yPik7CiAgICAgdmlydHVh
bCB+UlRDSWNlQ2FuZGlkYXRlKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggZTkxM2NkYzljOWJmNmI3NDgzNjJjYWNhYzY4MDQzZDBl
ZGU0NzRlOS4uZTVlZDk0ODQ4MTk1YTE5NzUyZjJmMTQ2MjllMDEzOTI0ZWI2N2Y5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1JlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQXVkaW9Db250ZXh0Ojpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIHdvcmtlcnMuCiAg
ICAgaWYgKCFpczxEb2N1bWVudD4oY29udGV4dCkpIHsKQEAgLTUxLDcgKzUxLDcgQEAgUGFzc1Jl
ZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGUKIAogICAgIFJlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBhdWRp
b0NvbnRleHQoYWRvcHRSZWYobmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoZG9jdW1lbnQsIG51bWJl
ck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSkpOwogICAgIGF1ZGlvQ29u
dGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGF1ZGlvQ29udGV4dC5yZWxlYXNl
KCk7CisgICAgcmV0dXJuIFdURjo6bW92ZShhdWRpb0NvbnRleHQpOwogfQogCiBPZmZsaW5lQXVk
aW9Db250ZXh0OjpPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVS
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQuaAppbmRleCAzNWJiYzk2NjNjMWNjNzdhZTQyMTk4ODNhOWE2YmFjNzYyNjZk
ZGQ3Li44NDY2YjNhZTcyZWE1NjZjMjIxZjFhMzNkZWQ0Y2U3YTgyMDQ4M2I3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9mZmxpbmVB
dWRpb0NvbnRleHQgOiBwdWJsaWMgQXVkaW9Db250ZXh0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBSZWZQdHI8T2Zm
bGluZUF1ZGlvQ29udGV4dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJh
dGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0NvbnRleHQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZWIwY2E0MjZjYmFlNTMyN2EyNGRl
ODhkZWVhMGFlZWMyN2RiMzZjMi4uOTUzYWU5MGU4MGQ5NDZlZjc1ZjNlZjNmZjM3ZmU0OTc0ZGMz
ZWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNz
IEF1ZGlvQ29udGV4dDsKICAgICAKIGNsYXNzIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSA6
IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBj
b250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIHN0YXRpYyBSZWY8T2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBBdWRp
b0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7ICAg
ICAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCiAgICAgfQogCiAgICAgdmlydHVhbCB+
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDA3MGRjOWUxZmIwNTE3MzMx
MGE1NDRhNjU3NjMxNGQ2NDAyYTQ3YzEuLmE0ZWY5Y2E5N2Q5MzkyMDI1ZmU1NjllNjYxMDJiZTBj
MGJjNWYwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuY3BwCkBAIC00Niw5ICs0Niw5IEBAIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRv
ck5vZGU6OnNfcGVyaW9kaWNXYXZlU3F1YXJlID0gMDsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRv
ck5vZGU6OnNfcGVyaW9kaWNXYXZlU2F3dG9vdGggPSAwOwogUGVyaW9kaWNXYXZlKiBPc2NpbGxh
dG9yTm9kZTo6c19wZXJpb2RpY1dhdmVUcmlhbmdsZSA9IDA7CiAKLVBhc3NSZWZQdHI8T3NjaWxs
YXRvck5vZGU+IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
KSk7CiB9CiAKIE9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggMDU5NjkyNjZmOWEwMjRkNDk2MTZkOGQzZWZj
OWYwNmMxYmE3NTIxNi4uNzAxZGI0MjAzODRiODM5YjA1N2JjZDMxNTQ3MzIxOWYyM2JlOTRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIENVU1RPTSA9IDQKICAgICB9Owog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5P
c2NpbGxhdG9yTm9kZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCBhMjY1Yzc0NzA3MDljNzEyYTkwYjA5NTkzNzcwNzJi
OWQwNjcxMzIxLi41ZTBhNjE2YjA2YjVmZTExMmNhOTEyYmIzY2EzZDkxMzMyYzAyOTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAt
Mjk2LDcgKzI5Niw3IEBAIHZvaWQgRGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9uKFJlZlB0cjxTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8CiAgICAgaWYgKCF0cmFuc2Fj
dGlvbkJhY2tlbmQgJiYgZXJyb3JDYWxsYmFjaykgewogICAgICAgICBXVEY6OlJlZlB0cjxTUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tQcm90ZWN0b3IgPSBXVEY6Om1v
dmUoZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soW2Vycm9yQ2FsbGJhY2tQcm90ZWN0b3JdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
Ci0gICAgICAgICAgICBlcnJvckNhbGxiYWNrUHJvdGVjdG9yLT5oYW5kbGVFdmVudChTUUxFcnJv
cjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgImRhdGFiYXNlIGhhcyBiZWVuIGNsb3Nl
ZCIpLmdldCgpKTsKKyAgICAgICAgICAgIGVycm9yQ2FsbGJhY2tQcm90ZWN0b3ItPmhhbmRsZUV2
ZW50KFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAiZGF0YWJhc2UgaGFz
IGJlZW4gY2xvc2VkIikucHRyKCkpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAK
aW5kZXggMzhiN2U5MTcxOWVmOWM5YWUyNTVlY2M4ZjU3ZjI4MzI3YzQwZTBlMy4uNjRjNjAxNDBj
MGEyOTJiYzkwM2VmMDhmZWIzY2Q1NTQwNmE3NjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNjYyLDcg
KzY2Miw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpnZXRPcGVuRGF0YWJhc2VzKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtCiAgICAgICAgIGRhdGFiYXNlcy0+YWRk
KCppdCk7CiB9CiAKLVBhc3NSZWZQdHI8T3JpZ2luTG9jaz4gRGF0YWJhc2VUcmFja2VyOjpvcmln
aW5Mb2NrRm9yKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCitSZWZQdHI8T3JpZ2luTG9jaz4gRGF0
YWJhc2VUcmFja2VyOjpvcmlnaW5Mb2NrRm9yKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgU3RyaW5n
IGRhdGFiYXNlSWRlbnRpZmllciA9IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7CkBAIC02
ODAsMTEgKzY4MCwxMSBAQCBQYXNzUmVmUHRyPE9yaWdpbkxvY2s+IERhdGFiYXNlVHJhY2tlcjo6
b3JpZ2luTG9ja0ZvcihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgICAgICByZXR1cm4gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIFN0cmluZyBwYXRoID0gb3JpZ2luUGF0aChv
cmlnaW4pOwotICAgIFJlZlB0cjxPcmlnaW5Mb2NrPiBsb2NrID0gYWRvcHRSZWYobmV3IE9yaWdp
bkxvY2socGF0aCkpOworICAgIFJlZlB0cjxPcmlnaW5Mb2NrPiBsb2NrID0gYWRvcHRSZWYoKm5l
dyBPcmlnaW5Mb2NrKHBhdGgpKTsKICAgICBBU1NFUlQobG9jayk7CiAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IGxvY2s7CiAKLSAgICByZXR1cm4gbG9jay5yZWxlYXNlKCk7CisgICAg
cmV0dXJuIFdURjo6bW92ZShsb2NrKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZU9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCmluZGV4IGVhYTRm
YjQ1YWIxMWI2ZTU4ZjQzY2YzMGQ2M2RhM2NlY2JmMDMwYzcuLjE4ZDFmZTM1ZmQ5NGM5NmM5MjIz
MDU0MjdiZWZkZDU5MTg4YTNhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CiAgICAgdm9pZCBzZXRRdW90YShTZWN1cml0eU9yaWdpbiosIHVuc2lnbmVkIGxvbmcgbG9uZyk7
Ci0gICAgUGFzc1JlZlB0cjxPcmlnaW5Mb2NrPiBvcmlnaW5Mb2NrRm9yKFNlY3VyaXR5T3JpZ2lu
Kik7CisgICAgUmVmUHRyPE9yaWdpbkxvY2s+IG9yaWdpbkxvY2tGb3IoU2VjdXJpdHlPcmlnaW4q
KTsKIAogICAgIHZvaWQgZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxFcnJvci5oCmluZGV4IDIyZTkyZjU1MGQ0ZDdkNzgwOGI0Y2JhMmFmOWU0NDA2ZmQwZWIzYWIu
LjhiNWY1YjlmNTExZjViY2Q4OGEyOGQzYjYwYTg3NjJjYjIzNGYzODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmgKQEAgLTM2LDEyICszNiwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNRTEVycm9yIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFNRTEVycm9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U1FMRXJyb3I+IGNyZWF0ZSh1bnNpZ25lZCBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxFcnJvcihjb2RlLCBtZXNzYWdlKSk7IH0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTUUxFcnJvcj4gY3JlYXRlKHVuc2lnbmVkIGNvZGUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UsIGludCBzcWxpdGVDb2RlKQorICAgIHN0YXRpYyBSZWY8U1FMRXJyb3I+IGNyZWF0
ZSh1bnNpZ25lZCBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU1FMRXJyb3IoY29kZSwgbWVzc2FnZSkpOyB9CisgICAgc3RhdGljIFJlZjxTUUxFcnJv
cj4gY3JlYXRlKHVuc2lnbmVkIGNvZGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGludCBzcWxpdGVD
b2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZShjb2RlLCBTdHJpbmc6OmZvcm1hdCgi
JXMgKCVkKSIsIG1lc3NhZ2UsIHNxbGl0ZUNvZGUpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1FMRXJyb3I+IGNyZWF0ZSh1bnNpZ25lZCBjb2RlLCBjb25zdCBjaGFyKiBtZXNzYWdl
LCBpbnQgc3FsaXRlQ29kZSwgY29uc3QgY2hhciogc3FsaXRlTWVzc2FnZSkKKyAgICBzdGF0aWMg
UmVmPFNRTEVycm9yPiBjcmVhdGUodW5zaWduZWQgY29kZSwgY29uc3QgY2hhciogbWVzc2FnZSwg
aW50IHNxbGl0ZUNvZGUsIGNvbnN0IGNoYXIqIHNxbGl0ZU1lc3NhZ2UpCiAgICAgewogICAgICAg
ICByZXR1cm4gY3JlYXRlKGNvZGUsIFN0cmluZzo6Zm9ybWF0KCIlcyAoJWQgJXMpIiwgbWVzc2Fn
ZSwgc3FsaXRlQ29kZSwgc3FsaXRlTWVzc2FnZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCmluZGV4IDJjMWY1M2RkMmZh
OTg4ODc3NGQxNGVlMTgzNTk5ZmFhZjgxZjVjZTMuLjc0ZDhjZDkxZjE4NGNjOWE4NDNhZGE2MDA5
MDFkNmZlOTRmMmRmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMUmVzdWx0U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxSZXN1bHRTZXQuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNRTFJlc3VsdFNldCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTUUxS
ZXN1bHRTZXQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxSZXN1bHRTZXQ+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxSZXN1bHRTZXQpOyB9CisgICAgc3Rh
dGljIFJlZjxTUUxSZXN1bHRTZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FM
UmVzdWx0U2V0KTsgfQogCiAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCogcm93cygpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3Vs
dFNldFJvd0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVz
dWx0U2V0Um93TGlzdC5oCmluZGV4IGFmMjBkMTk1YzhlZDg0MjFiN2M5ZDQzZDEzMmNiMjRlNTNl
NzMyM2QuLmVlZjE0OGQ3YjZjZmIxYjI0NmZkMjIwYjJmODM5NzlkNjk1N2I4YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0
Um93TGlzdC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1FMUmVzdWx0U2V0Um93TGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNRTFJlc3VsdFNldFJvd0xp
c3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxSZXN1bHRTZXRSb3dMaXN0
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1FMUmVzdWx0U2V0Um93TGlzdCk7IH0K
KyAgICBzdGF0aWMgUmVmPFNRTFJlc3VsdFNldFJvd0xpc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1FMUmVzdWx0U2V0Um93TGlzdCk7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjb2x1bW5OYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uczsgfQogICAgIGNv
bnN0IFZlY3RvcjxTUUxWYWx1ZT4mIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxT
dGF0ZW1lbnRCYWNrZW5kLmNwcAppbmRleCAwNjdkY2JhODVjZDU1N2MxMjMyM2Q5ZDRkYTJkNGNi
Y2U5ZTQyNmExLi40OGYzY2JmYzc0MzE5YjFkZTFhOTg5MGMxZjU0OTY5ODE1YTMyN2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3Rh
dGVtZW50QmFja2VuZC5jcHAKQEAgLTc1LDEwICs3NSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NSZWZQdHI8U1FMU3RhdGVtZW50QmFja2VuZD4gU1FMU3RhdGVtZW50QmFja2Vu
ZDo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+IGZyb250ZW5kLAorUmVmPFNR
TFN0YXRlbWVudEJhY2tlbmQ+IFNRTFN0YXRlbWVudEJhY2tlbmQ6OmNyZWF0ZShzdGQ6OnVuaXF1
ZV9wdHI8U1FMU3RhdGVtZW50PiBmcm9udGVuZCwKICAgICBjb25zdCBTdHJpbmcmIHN0YXRlbWVu
dCwgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgYXJndW1lbnRzLCBpbnQgcGVybWlzc2lvbnMpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxTdGF0ZW1lbnRCYWNrZW5kKFdURjo6bW92ZShm
cm9udGVuZCksIHN0YXRlbWVudCwgYXJndW1lbnRzLCBwZXJtaXNzaW9ucykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNRTFN0YXRlbWVudEJhY2tlbmQoV1RGOjptb3ZlKGZyb250ZW5kKSwg
c3RhdGVtZW50LCBhcmd1bWVudHMsIHBlcm1pc3Npb25zKSk7CiB9CiAKIFNRTFN0YXRlbWVudEJh
Y2tlbmQ6OlNRTFN0YXRlbWVudEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4g
ZnJvbnRlbmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFN0YXRlbWVudEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50QmFja2VuZC5oCmluZGV4IDIwZDQzMTc2ZjQxNGM4ODBhODYzNmI4MjRi
Y2U5YWNjNGFlMGNiOWMuLjQ5Mjg3NTgyZmNhYmM2N2NjMzg2MmZhNDAzYTcyM2QxODM4YzBlY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50QmFja2VuZC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFNRTFRyYW5zYWN0aW9u
QmFja2VuZDsKIAogY2xhc3MgU1FMU3RhdGVtZW50QmFja2VuZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTUUxTdGF0ZW1lbnRCYWNrZW5kPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U1FMU3RhdGVtZW50QmFja2VuZD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTUUxT
dGF0ZW1lbnQ+LAorICAgIHN0YXRpYyBSZWY8U1FMU3RhdGVtZW50QmFja2VuZD4gY3JlYXRlKHN0
ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+LAogICAgICAgICBjb25zdCBTdHJpbmcmIHNxbFN0
YXRlbWVudCwgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgYXJndW1lbnRzLCBpbnQgcGVybWlzc2lv
bnMpOwogICAgIHZpcnR1YWwgflNRTFN0YXRlbWVudEJhY2tlbmQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJh
Y2tlbmQuY3BwCmluZGV4IDJkNmU3N2NhNWM1NmZiMmFiZmVhMTgwNTM0MGM4ZjVjNDJkYjgwNTEu
LmI1YzAyZjNlODI0MmM1N2RlMWE2MGM2NmI5ODIzNjZkYjJhMDNjNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5jcHAKQEAgLTM0NCw5ICszNDQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6
OmNyZWF0ZShEYXRhYmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IGZyb250ZW5k
LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlciwgYm9vbCByZWFkT25s
eSkKK1JlZjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y3Jl
YXRlKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gZnJvbnRlbmQsIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1FMVHJhbnNhY3Rpb25CYWNrZW5kKGRiLCBmcm9u
dGVuZCwgd3JhcHBlciwgcmVhZE9ubHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTUUxU
cmFuc2FjdGlvbkJhY2tlbmQoZGIsIGZyb250ZW5kLCB3cmFwcGVyLCByZWFkT25seSkpOwogfQog
CiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OlNRTFRyYW5zYWN0aW9uQmFja2VuZChEYXRhYmFzZSog
ZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IGZyb250ZW5kLCBQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlciwgYm9vbCByZWFkT25seSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2Vu
ZC5oCmluZGV4IDExMTdlMWNjYjNjNGFkZTFmZjQxZDA1MjM1OTNjMjFhODRhMWI4MDQuLmE5MzIw
NmQyYzc2MDllMzY5YzRkODEwM2RjMGVjNmQ2NjFmNTJjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQu
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+LCBw
dWJsaWMgU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmU8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBj
cmVhdGUoRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiwgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKKyAgICBzdGF0aWMgUmVmPFNR
TFRyYW5zYWN0aW9uQmFja2VuZD4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFu
c2FjdGlvbj4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiwgYm9vbCByZWFkT25s
eSk7CiAKICAgICB2aXJ0dWFsIH5TUUxUcmFuc2FjdGlvbkJhY2tlbmQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCBlYTcz
YTAzY2M3ZGI0NmQ2YjBhN2E4NzhiMGI1ZjI1YTA0NjE3YmRiLi40NzQ2ODQ1NzczNzRlMDQ4MGZj
YzkzMTkyMjBhMjg4YzEzMjc0NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtNTIsOSArNTIsOSBAQCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcgogewogfQogCi1QYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCogY2xpZW50KQorUmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyKGNvbnRleHQsIGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcihjb250ZXh0LCBjbGllbnQp
KTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNs
ZWFyU3luY01ldGhvZERvbmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oCmluZGV4IGQ4Y2ZkOTQzNDA0NTFmYjEyZDU1Nzc1NDI0MjlhNGI5MjVm
YTliNDMuLmEzODk0YzkyNDE1ZjM5NDVmMzg2YjgyYjY3MjZmMWViY2FjM2ZlZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKQEAgLTUwLDcg
KzUwLDcgQEAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKIAogY2xhc3MgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50Kik7CisgICAgc3RhdGljIFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCopOwogCiAgICAgdm9pZCBjbGVhclN5bmNNZXRob2REb25lKCk7CiAgICAgdm9pZCBzZXRT
eW5jTWV0aG9kRG9uZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAppbmRleCA3ZjAzNDk4YWZhNGJiOWY5YjM2NzkyY2VhYWRhMTU3ODFmNzlk
ZDVlLi5lMzU5YjNiZGU1ODJmYmEwMWEwODg1NzRhODIyZTkzNjM1N2M2N2YwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTU2LDM3
ICsxNTYsMzcgQEAgV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAgbV9jaGFubmVsLT5k
aXNjb25uZWN0KCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorUmVmPFdlYlNvY2tldD4gV2ViU29j
a2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBSZWZQ
dHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQoYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSkp
OworICAgIFJlZjxXZWJTb2NrZXQ+IHdlYlNvY2tldChhZG9wdFJlZigqbmV3IFdlYlNvY2tldChj
b250ZXh0KSkpOwogICAgIHdlYlNvY2tldC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJu
IHdlYlNvY2tldC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHdlYlNvY2tldDsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxX
ZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0b3I8
U3RyaW5nPiBwcm90b2NvbHM7CiAgICAgcmV0dXJuIFdlYlNvY2tldDo6Y3JlYXRlKGNvbnRleHQs
IHVybCwgcHJvdG9jb2xzLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2Nr
ZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYgZWMp
CitSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBy
b3RvY29scywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkgewog
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQoYWRv
cHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSkpOworICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdl
YlNvY2tldChhZG9wdFJlZigqbmV3IFdlYlNvY2tldChjb250ZXh0KSkpOwogICAgIHdlYlNvY2tl
dC0+c3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICB3ZWJTb2NrZXQtPmNvbm5lY3QoY29udGV4dC5j
b21wbGV0ZVVSTCh1cmwpLCBwcm90b2NvbHMsIGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB3ZWJTb2NrZXQu
cmVsZWFzZSgpOworICAgIHJldHVybiBXVEY6Om1vdmUod2ViU29ja2V0KTsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNl
cHRpb25Db2RlJiBlYykKK1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBw
cm90b2NvbHM7CiAgICAgcHJvdG9jb2xzLmFwcGVuZChwcm90b2NvbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggNjhlMzA4MzVhOWEwNDQw
NDIzNzcyNDI1MWRmYzgzMWQzYmY2YjIwNC4uNDBlOWRkMDQzM2E2NTEzZTYwOGU1Y2E4YTc1Njgy
YWIyY2M1OWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaApAQCAtNTQsMTAgKzU0LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJ
c0F2YWlsYWJsZShib29sKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzdWJQcm90b2NvbFNlcGVyYXRvcigpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHN0YXRpYyBSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRp
b25Db2RlJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAog
ICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOWE3ZjhjNGUzMjc3MjYwYzk4ODFiYTcxNzM0
OTkzNDY3ZWU1ODE5OC4uMDQzZGMwZmNjODdkMTNjZTRiMGQ0YWE2YjRmODg3ZjNkNjdhYmZjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhCiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0Q2hh
bm5lbChkb2N1bWVudCwgY2xpZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmPFdlYlNvY2tldENoYW5u
ZWw+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNs
aWVudCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBj
bGllbnQpKTsgfQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAogICAgIGJvb2wg
c2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMDc4YjEwNjgzYWYwNjIwMjI3NzQ5NGU4YmI3NDBiYTQ2
MzU1ZGExNy4uNjJlZDNjZDcyOTA0ZmQyMDQ1OGY2ODI1MjAyZmRjMDc0OWNkMTAwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTU1LDkgKzU1LDkgQEAgY2xh
c3MgV29ya2VyUnVuTG9vcDsKIGNsYXNzIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
IDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+LCBw
dWJsaWMgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCisg
ICAgc3RhdGljIFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFdvcmtlckds
b2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xp
ZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCh3b3JrZXJHbG9iYWxTY29w
ZSwgY2xpZW50LCB0YXNrTW9kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCh3b3JrZXJHbG9iYWxTY29wZSwgY2xpZW50LCB0
YXNrTW9kZSkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbCgpOwogCkBAIC0xMjYsOSArMTI2LDkgQEAgcHJpdmF0ZToKICAgICAvLyBCcmlkZ2Ug
Zm9yIFBlZXIuICBSdW5uaW5nIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgogICAgIGNsYXNzIEJyaWRn
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJyaWRnZT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QnJpZGdlPiBjcmVhdGUoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBhc3NSZWZQdHI8
V29ya2VyR2xvYmFsU2NvcGU+IHdvcmtlckdsb2JhbFNjb3BlLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlKQorICAgICAgICBzdGF0aWMgUmVmPEJyaWRnZT4gY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQ
YXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiB3b3JrZXJHbG9iYWxTY29wZSwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCcmlkZ2Uod29ya2VyQ2xpZW50V3JhcHBlciwgd29ya2VyR2xvYmFsU2NvcGUsIHRhc2tNb2Rl
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCcmlkZ2Uod29ya2VyQ2xpZW50
V3JhcHBlciwgd29ya2VyR2xvYmFsU2NvcGUsIHRhc2tNb2RlKSk7CiAgICAgICAgIH0KICAgICAg
ICAgfkJyaWRnZSgpOwogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuaAppbmRleCA2YjBmYzI5OWQxODdhZTc4M2ZiZDQw
NWUyYzI4NWY3NzBlMzFjOWJkLi5kOTM4YzM0ZGVkZDM4Y2Q3MzgxMTNlMmQwMWJlNDIxMjJmMDMz
ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5k
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5oCkBAIC0z
Nyw5ICszNyw5IEBAIGNsYXNzIEluc2VydExpc3RDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVk
aXRDb21tYW5kIHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgeyBPcmRlcmVkTGlzdCwgVW5vcmRl
cmVkTGlzdCB9OwogCi0gICAgc3RhdGljIFJlZlB0cjxJbnNlcnRMaXN0Q29tbWFuZD4gY3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgVHlwZSBsaXN0VHlwZSkKKyAgICBzdGF0aWMgUmVmPEluc2Vy
dExpc3RDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUeXBlIGxpc3RUeXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNlcnRMaXN0Q29tbWFuZChkb2N1
bWVudCwgbGlzdFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zZXJ0TGlz
dENvbW1hbmQoZG9jdW1lbnQsIGxpc3RUeXBlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZlB0
cjxIVE1MRWxlbWVudD4gaW5zZXJ0TGlzdChEb2N1bWVudCYsIFR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCmluZGV4IDAyMzc5YThkOTMxNzNhNjA5NGRjOWM3NjlhZjQ1YTgxNjQxY2Zl
YzEuLmNlMGY2NTFhOWJlMTE4NDYwMjVhMGVhMmE4MDllZjFiZjNiOTI0NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAKQEAgLTcyLDI4ICs3MiwyOCBAQCBpbmxpbmUgV29ya2VyOjpXb3Jr
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICBBU1NFUlRfVU5VU0VEKGFk
ZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1QYXNzUmVmUHRyPFdvcmtlcj4g
V29ya2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAv
LyBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBuZXN0ZWQgd29ya2Vycywgc28gd29ya2VycyBj
YW4gb25seSBiZSBjcmVhdGVkIGZyb20gZG9jdW1lbnRzLgogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGNvbnRleHQuaXNEb2N1bWVudCgpKTsKIAotICAgIFJlZlB0cjxXb3Jr
ZXI+IHdvcmtlciA9IGFkb3B0UmVmKG5ldyBXb3JrZXIoY29udGV4dCkpOworICAgIFJlZjxXb3Jr
ZXI+IHdvcmtlciA9IGFkb3B0UmVmKCpuZXcgV29ya2VyKGNvbnRleHQpKTsKIAogICAgIHdvcmtl
ci0+c3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICBVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNv
bHZlVVJMKHVybCwgZWMpOwogICAgIGlmIChzY3JpcHRVUkwuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBUaGUgd29ya2VyIGNv
bnRleHQgZG9lcyBub3QgZXhpc3Qgd2hpbGUgbG9hZGluZywgc28gd2UgbXVzdCBlbnN1cmUgdGhh
dCB0aGUgd29ya2VyIG9iamVjdCBpcyBub3QgY29sbGVjdGVkLCBub3IgYXJlIGl0cyBldmVudCBs
aXN0ZW5lcnMuCi0gICAgd29ya2VyLT5zZXRQZW5kaW5nQWN0aXZpdHkod29ya2VyLmdldCgpKTsK
KyAgICB3b3JrZXItPnNldFBlbmRpbmdBY3Rpdml0eSh3b3JrZXIucHRyKCkpOwogCiAgICAgd29y
a2VyLT5tX3NjcmlwdExvYWRlciA9IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCk7Ci0gICAg
d29ya2VyLT5tX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KCZjb250ZXh0LCBzY3Jp
cHRVUkwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB3b3JrZXIuZ2V0KCkpOworICAgIHdvcmtl
ci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgmY29udGV4dCwgc2NyaXB0VVJM
LCBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cywgd29ya2VyLnB0cigpKTsKIAotICAgIHJldHVybiB3
b3JrZXIucmVsZWFzZSgpOworICAgIHJldHVybiBXVEY6Om1vdmUod29ya2VyKTsKIH0KIAogV29y
a2VyOjp+V29ya2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDczYjNlYWIwNWE5NDY4
NzIxYWYyZDE2NmQ3NzQ3YjQwZGU0OWQ0NmIuLmQ5ZGJhNGI5OWI1OWE2ODM1ZDRlNTk4MzZiYTUy
MjVkNjU0ZDNmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNDgsNyArNDgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXIgZmluYWwgOiBwdWJsaWMgQWJz
dHJhY3RXb3JrZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHByaXZhdGUgV29ya2VyU2NyaXB0
TG9hZGVyQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdv
cmtlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwg
RXhjZXB0aW9uQ29kZSYpOworICAgICAgICBzdGF0aWMgUmVmUHRyPFdvcmtlcj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgICAgICB2aXJ0dWFsIH5Xb3JrZXIoKTsKIAogICAgICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gV29ya2VyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aEV4cHJlc3Npb24uY3BwCmluZGV4IDc2NGEzMGYxMTM4OTAyZTk4YzAxZDY1MWViMzI4NmNlODQ0
OGZmYmIuLmZkZmI4YWVkODZhNzBiNzc4MDk5OWEyMzU3NDI5NDMxYWVhMDliMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uY3BwCkBAIC00NSwyNCArNDUsMjQgQEAgaW5saW5l
IFhQYXRoRXhwcmVzc2lvbjo6WFBhdGhFeHByZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxYUGF0aDo6
RXhwcmVzc2lvbj4gZXhwcmUKIHsKIH0KIAotUGFzc1JlZlB0cjxYUGF0aEV4cHJlc3Npb24+IFhQ
YXRoRXhwcmVzc2lvbjo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFhQ
YXRoRXhwcmVzc2lvbj4gWFBhdGhFeHByZXNzaW9uOjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0
cmluZyYgZXhwcmVzc2lvbiwgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgYXV0byBwYXJzZWRFeHByZXNzaW9uID0gUGFyc2VyOjpwYXJzZVN0YXRl
bWVudChleHByZXNzaW9uLCByZXNvbHZlciwgZWMpOwogICAgIGlmICghcGFyc2VkRXhwcmVzc2lv
bikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhQ
YXRoRXhwcmVzc2lvbihXVEY6Om1vdmUocGFyc2VkRXhwcmVzc2lvbikpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBYUGF0aEV4cHJlc3Npb24oV1RGOjptb3ZlKHBhcnNlZEV4cHJlc3Npb24p
KSk7CiB9CiAKIFhQYXRoRXhwcmVzc2lvbjo6flhQYXRoRXhwcmVzc2lvbigpCiB7CiB9CiAKLVBh
c3NSZWZQdHI8WFBhdGhSZXN1bHQ+IFhQYXRoRXhwcmVzc2lvbjo6ZXZhbHVhdGUoTm9kZSogY29u
dGV4dE5vZGUsIHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0KiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitSZWZQdHI8WFBhdGhSZXN1bHQ+IFhQYXRoRXhwcmVzc2lvbjo6ZXZhbHVhdGUoTm9k
ZSogY29udGV4dE5vZGUsIHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0KiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFpc1ZhbGlkQ29udGV4dE5vZGUoY29udGV4dE5vZGUp
KSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBFdmFsdWF0aW9uQ29udGV4dCYg
ZXZhbHVhdGlvbkNvbnRleHQgPSBFeHByZXNzaW9uOjpldmFsdWF0aW9uQ29udGV4dCgpOwpAQCAt
ODcsNyArODcsNyBAQCBQYXNzUmVmUHRyPFhQYXRoUmVzdWx0PiBYUGF0aEV4cHJlc3Npb246OmV2
YWx1YXRlKE5vZGUqIGNvbnRleHROb2RlLCB1bnNpZ25lZCBzaAogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV1RGOjpt
b3ZlKHJlc3VsdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uaAppbmRl
eCA4ZmQyYTNlZWQyMjYyZWRkMmE1NTcyNWQzNWY1ZGQ0NjI2NGVkOTk2Li45MGRhNjc1YzU0NGY0
OTNlZjE2YTQ1ZDA3MDFhNmRlM2Q3NjEyMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhwcmVz
c2lvbi5oCkBAIC00NCwxMCArNDQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgWFBhdGhFeHByZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8WFBhdGhFeHByZXNzaW9uPiB7
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxYUGF0aEV4cHJlc3Npb24+
IGNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBYUGF0aE5TUmVzb2x2
ZXIqLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHN0YXRpYyBSZWZQdHI8WFBhdGhFeHByZXNz
aW9uPiBjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgWFBhdGhOU1Jl
c29sdmVyKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB+WFBhdGhFeHByZXNzaW9uKCk7CiAg
ICAgICAgIAotICAgICAgICBQYXNzUmVmUHRyPFhQYXRoUmVzdWx0PiBldmFsdWF0ZShOb2RlKiBj
b250ZXh0Tm9kZSwgdW5zaWduZWQgc2hvcnQgdHlwZSwgWFBhdGhSZXN1bHQqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgICAgIFJlZlB0cjxYUGF0aFJlc3VsdD4gZXZhbHVhdGUoTm9kZSogY29udGV4
dE5vZGUsIHVuc2lnbmVkIHNob3J0IHR5cGUsIFhQYXRoUmVzdWx0KiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgWFBhdGhFeHBy
ZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxYUGF0aDo6RXhwcmVzc2lvbj4pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>