<?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>117481</bug_id>
          
          <creation_ts>2013-06-10 21:12:19 -0700</creation_ts>
          <short_desc>Make sure to use CSSValueID and CSSPropertyID rather than integers</short_desc>
          <delta_ts>2013-06-19 15:07:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117715</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>krit</cc>
    
    <cc>menard</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>898995</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-06-10 21:12:19 -0700</bug_when>
    <thetext>Consider merging https://chromium.googlesource.com/chromium/blink/+/cdf054eda8bdc38052421f32c62738dc7aa5e097

This will ensure that types are enforced when passing arguments in various
css functions. Having a compile time check make sure that no mistakes
will be done over the type.

The parser was also patched to directly use CSSValueID over integers.
This patch also fixes various call sites abusing the usage of integers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899003</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-06-10 21:21:20 -0700</bug_when>
    <thetext>Also https://chromium.googlesource.com/chromium/blink/+/4723596eb342119f3cab6ca04be783233c6c2e40</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901859</commentid>
    <comment_count>2</comment_count>
      <attachid>205018</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-06-19 11:01:51 -0700</bug_when>
    <thetext>Created attachment 205018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901865</commentid>
    <comment_count>3</comment_count>
      <attachid>205018</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-19 11:15:40 -0700</bug_when>
    <thetext>Comment on attachment 205018
Patch

Attachment 205018 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/945270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901868</commentid>
    <comment_count>4</comment_count>
      <attachid>205020</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-06-19 11:21:37 -0700</bug_when>
    <thetext>Created attachment 205020
attempt to fix efl build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901898</commentid>
    <comment_count>5</comment_count>
      <attachid>205020</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-19 12:55:12 -0700</bug_when>
    <thetext>Comment on attachment 205020
attempt to fix efl build

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

&gt; Source/WebCore/css/CSSParser.cpp:5646
&gt; +            addProperty(CSSPropertyFontWeight, cssValuePool().createIdentifierValue(static_cast&lt;CSSValueID&gt;(CSSValue100 + weight / 100 - 1)), important);

I reeeeaaally don&apos;t like this.

I would make it a separate function, with pre and post assertions, and a comment.

&gt; Source/WebCore/css/CSSParser.cpp:12236
&gt; -            return 0; // illegal character
&gt; +            return CSSValueInvalid; // illegal character

Fix the comment.

&gt; Source/WebCore/css/CSSValuePool.cpp:55
&gt; -    if (ident &lt;= 0 || ident &gt;= numCSSValueKeywords)
&gt; +    if (ident &lt;= 0)
&gt;          return CSSPrimitiveValue::createIdentifier(ident);

1) Why would that happen with valid CSSValueID? Shouldn&apos;t you instead have two constructors?: one taking an int, the other taking a CSSValueID.

&gt; Source/WebCore/css/CSSValuePool.cpp:57
&gt;      if (!m_identifierValueCache[ident])

2) Because of this, you should have a Release Assert for the range of ident!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901904</commentid>
    <comment_count>6</comment_count>
      <attachid>205030</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-06-19 13:19:24 -0700</bug_when>
    <thetext>Created attachment 205030
with benjamin&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901907</commentid>
    <comment_count>7</comment_count>
      <attachid>205030</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-19 13:45:20 -0700</bug_when>
    <thetext>Comment on attachment 205030
with benjamin&apos;s comments

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

LGTM

&gt; Source/WebCore/css/CSSValuePool.cpp:58
&gt; +    ASSERT(ident &lt; numCSSValueKeywords);
&gt;      if (!m_identifierValueCache[ident])

You should have a full bound checking release assert here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901909</commentid>
    <comment_count>8</comment_count>
      <attachid>205031</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2013-06-19 13:46:55 -0700</bug_when>
    <thetext>Created attachment 205031
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901919</commentid>
    <comment_count>9</comment_count>
      <attachid>205031</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-19 15:07:47 -0700</bug_when>
    <thetext>Comment on attachment 205031
Patch for landing

Clearing flags on attachment: 205031

Committed r151754: &lt;http://trac.webkit.org/changeset/151754&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901920</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-19 15:07:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205018</attachid>
            <date>2013-06-19 11:01:51 -0700</date>
            <delta_ts>2013-06-19 11:21:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117481-20130619150000.patch</filename>
            <type>text/plain</type>
            <size>49319</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I4NmRhYjZiNWQ2YTVh
ZTQ4ZmRlZjc1ZjRhMGY5MjYyZTYzYzkyNC4uNDRmODgxMjMxNjFjYzE2MTdjODEwYzMwZDI1YTQy
ZWY5NWUzZjk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTA2LTE5ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHVz
ZSBDU1NWYWx1ZUlEIGFuZCBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFuIGludGVnZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0ODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgZW5z
dXJlIHRoYXQgdHlwZXMgYXJlIGVuZm9yY2VkIHdoZW4gcGFzc2luZyBhcmd1bWVudHMgaW4gdmFy
aW91cworICAgICAgICBjc3MgZnVuY3Rpb25zLiBIYXZpbmcgYSBjb21waWxlIHRpbWUgY2hlY2sg
bWFrZSBzdXJlIHRoYXQgbm8gbWlzdGFrZXMKKyAgICAgICAgd2lsbCBiZSBkb25lIG92ZXIgdGhl
IHR5cGUuCisKKyAgICAgICAgVGhlIHBhcnNlciB3YXMgYWxzbyBwYXRjaGVkIHRvIGRpcmVjdGx5
IHVzZSBDU1NWYWx1ZUlEIG92ZXIgaW50ZWdlcnMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBm
aXhlcyB2YXJpb3VzIGNhbGwgc2l0ZXMgYWJ1c2luZyB0aGUgdXNhZ2Ugb2YgaW50ZWdlcnMuCisg
ICAgICAgIFRoaXMgaXMgcGFydCAxIG9mIDIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhp
c3Rpbmcgb25lcyBzaG91bGQgY292ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IGNvcHkgQ1NTVmFsdWVLZXl3b3Jkcy5oIGFzIGl0IGNvdWxkIGJlIHVz
ZWQgaW4gV2ViS2l0LyBmb3IgZXhhbXBsZS4KKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yUmVwZWF0UnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpjc3NJZGVudGlmaWVyRm9yRm9udFNpemVLZXl3b3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlkZW50aWZpZXJGb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6
dmFsdWVGb3JGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb25Db21w
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb3VudGVyQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXByZWNhdGVkR3Jh
ZGllbnRDb2xvclN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHcmFkaWVudENvbG9yT3JL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkUmFk
aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lm
aWVycyk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQYXJz
ZXJWYWx1ZXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6
Y3JlYXRlSWRlbnRpZmllclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmg6Cisg
ICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb250U2l6ZUVx
dWl2YWxlbnQ6OmF0dHJpYnV0ZVZhbHVlQXNDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRm9udFNpemUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRv
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0
ZVRvU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtC
b3JkZXJTdHlsZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDU1NXcml0aW5nRGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q1NTV3JpdGluZ01vZGUpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKIDIwMTMtMDYtMTkgIEFuZHJlIE1vcmVp
cmEgTWFnYWxoYWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CiAKICAgICAg
ICAgQWRqdXN0IGludGVybmFsIHNpemUgb24gZ3N0cmVhbWVyIHNvdXJjZSBlbGVtZW50IHdoZW4g
cmVjZWl2aW5nIGRhdGEgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTkxYWQyYWQ5Y2Y3MzdiODU1ZmY4YjE0
OGExZjM2NjdhYjY3Yzg4YS4uZTFiZDU0OTI2ODdlYTc4M2EwMDAyMDhlMzdlNjYyMzcwNmEzMDNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTk2OSw2ICsxOTY5LDcgQEAKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8q
IElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0
ZUxpc3QudHh0ICovOyB9OwogCQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFw
c2hvdHRpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0UzMERBNzE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0g
Ki87IH07CiAJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBE
QTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0Q3NDFCREExNzcyMjZBQTAw
ODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFE
NyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEy
NiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYg
LyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYx
NyAvKiBQdXJnZVByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MDczLDYg
KzYwNzQsNyBAQAogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE7CiAJCQlmaWxlcyA9ICgKIAkJCQk1
REY3RjVDMjBGMDFGOTJBMDA1MjZCNEIgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIENvcHkgR2Vu
ZXJhdGVkIEhlYWRlcnMgKi8sCisJCQkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1Zh
bHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLAogCQkJCTg1MzhGMDMw
MEFENzFDREIwMDZBODFEMSAvKiBET01BYnN0cmFjdFZpZXcuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovLAogCQkJCTFDMTFDQ0JDMEFBNjA5MzcwMERBREIyMCAvKiBET01BdHRyLmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQkyRTJEOTlFQjEwRTJCRDM5MDA0OTYzMzcg
LyogRE9NQmxvYi5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGI3YWRm
ODdmNmE1MmFhODY1ZDM3MDQ2OGQ0YTJjNjg5ZjIyOTU1MmYuLmIyZWQyODIxYWE3ZjQzNTlhYjc3
NmQwM2E5ZGU0ZDA1ZGYwMjE3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgc3RhdGljIGNv
bnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAKIGNvbnN0IHVuc2ln
bmVkIG51bUNvbXB1dGVkUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgoY29tcHV0ZWRQcm9w
ZXJ0aWVzKTsKIAotc3RhdGljIGludCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUpCitzdGF0
aWMgQ1NTVmFsdWVJRCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUpCiB7CiAgICAgc3dpdGNo
IChydWxlKSB7CiAgICAgICAgIGNhc2UgUmVwZWF0SW1hZ2VSdWxlOgpAQCAtMTI2MCwxMSArMTI2
MCwxMSBAQCB2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dChjb25z
dCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUjsKIH0KIAotc3RhdGljIGludCBjc3NJZGVudGlmaWVyRm9yRm9udFNpemVLZXl3
b3JkKGludCBrZXl3b3JkU2l6ZSkKK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc0lkZW50aWZpZXJGb3JG
b250U2l6ZUtleXdvcmQoaW50IGtleXdvcmRTaXplKQogewogICAgIEFTU0VSVF9BUkcoa2V5d29y
ZFNpemUsIGtleXdvcmRTaXplKTsKICAgICBBU1NFUlRfQVJHKGtleXdvcmRTaXplLCBrZXl3b3Jk
U2l6ZSA8PSA4KTsKLSAgICByZXR1cm4gQ1NTVmFsdWVYeFNtYWxsICsga2V5d29yZFNpemUgLSAx
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZVh4U21hbGwgKyBr
ZXl3b3JkU2l6ZSAtIDEpOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQo
KSBjb25zdApAQCAtMTMxNCw3ICsxMzE0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2gKICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBpbnQgaWRlbnRpZmllckZvckZh
bWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBDU1NWYWx1ZUlEIGlkZW50
aWZpZXJGb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgaWYgKGZh
bWlseSA9PSBjdXJzaXZlRmFtaWx5KQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVDdXJzaXZlOwpA
QCAtMTMyOCwxMiArMTMyOCwxMiBAQCBzdGF0aWMgaW50IGlkZW50aWZpZXJGb3JGYW1pbHkoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVNhbnNTZXJp
ZjsKICAgICBpZiAoZmFtaWx5ID09IHNlcmlmRmFtaWx5KQogICAgICAgICByZXR1cm4gQ1NTVmFs
dWVTZXJpZjsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQog
CiBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JGYW1pbHkoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7Ci0gICAgaWYgKGludCBmYW1pbHlJZGVudGlmaWVy
ID0gaWRlbnRpZmllckZvckZhbWlseShmYW1pbHkpKQorICAgIGlmIChDU1NWYWx1ZUlEIGZhbWls
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yRmFtaWx5KGZhbWlseSkpCiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmFtaWx5SWRlbnRpZmllcik7
CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGZhbWlseS5zdHJpbmcoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KaW5kZXggYTk2NjM3OWVkYzlkNDc3ZGExNTA0ZGQ0ZGEzM2UyNDU3OWIzMjUwZC4uNzM4
NTM4Nzk3ZTZkYTI1OWZlMjAyZGEwNTg2Yjg1MmMxMzAzZGFiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55LmluCkBAIC04NzQsOSArODc0LDkgQEAga2V5X2xpc3Q6CiAgICAgOwogCiBrZXk6
Ci0gICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsgJCQuaXNJ
bnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSOyB9CisgICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7
ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAk
MSAqICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KICAgICB8
IElERU5UIHsKLSAgICAgICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7CisgICAgICAgICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVI7CiAgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7CiAgICAgICAgIGlm
IChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkKICAgICAgICAgICAgICQkLmZWYWx1ZSA9
IDA7CkBAIC0xNjU0LDcgKzE2NTQsNyBAQCB2YWxpZF9leHByOgogICAgICAgICBpZiAoJCQpIHsK
ICAgICAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7
Ci0gICAgICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICAgICAgdi5pZCA9IENTU1Zh
bHVlSW52YWxpZDsKICAgICAgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3Bl
cmF0b3I7CiAgICAgICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAgICAgICAgICAgICAgICAk
JC0+YWRkVmFsdWUodik7CkBAIC0xNjgzLDIyICsxNjgzLDIyIEBAIG9wZXJhdG9yOgogdGVybToK
ICAgdW5hcnlfdGVybSBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KICAgfCB1bmFyeV9vcGVyYXRv
ciB1bmFyeV90ZXJtIG1heWJlX3NwYWNlIHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9Ci0g
IHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9CisgIHwgU1RSSU5HIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0KICAgfCBJREVOVCBtYXliZV9zcGFjZSB7
CiAgICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKICAgICAgICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwogICAgICAgJCQuc3RyaW5nID0gJDE7CiAgIH0K
ICAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZyb20gYSBk
aW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2VzICQkLnN0
cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCi0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9
IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1F
TlNJT047IH0KLSAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVO
U0lPTjsgfQotICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNPREVSQU5H
RSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KLSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJjb2xvcjog
IzsiICovCisgIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsg
JCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lP
TjsgfQorICB8IHVuYXJ5X29wZXJhdG9yIERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSBDU1NW
YWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19ESU1FTlNJT047IH0KKyAgfCBVUkkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENTU1ZhbHVl
SW52YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VSSTsgfQorICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VU5JQ09ERV9SQU5HRTsgfQorICB8IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEFSU0VSX0hFWENPTE9SOyB9CisgIHwgJyMnIG1heWJlX3NwYWNlIHsgJCQuaWQgPSBDU1NWYWx1
ZUludmFsaWQ7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6
ICJjb2xvcjogIzsiICovCiAgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgY2xvc2lu
Z19wYXJlbnRoZXNpcyBtYXliZV9zcGFjZSB7CiAjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMKLSAg
ICAgICQkLmlkID0gMDsKKyAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgJCQu
c3RyaW5nID0gJDM7CiAgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJ
QUJMRV9OQU1FOwogI2VuZGlmCkBAIC0xNzE0LDQ2ICsxNzE0LDQ2IEBAIHRlcm06CiAgICAgICAk
JCA9ICQxOwogICB9CiAgIHwgJyUnIG1heWJlX3NwYWNlIHsgLyogSGFuZGxlIHdpZHRoOiAlOyAq
LwotICAgICAgJCQuaWQgPSAwOyAkJC51bml0ID0gMDsKKyAgICAgICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC51bml0ID0gMDsKICAgfQogICA7CiAKIHVuYXJ5X3Rlcm06Ci0gIElOVEVHRVIg
eyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gdHJ1ZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICB8IEZMT0FUVE9LRU4geyAkJC5pZCA9
IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgfCBQRVJDRU5UQUdFIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsg
fQotICB8IFBYUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYOyB9Ci0gIHwgQ01TIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007IH0KLSAgfCBNTVMgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19N
TTsgfQotICB8IElOUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyB9Ci0gIHwgUFRTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ7IH0KLSAgfCBQQ1MgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QQzsgfQotICB8IERFR1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KLSAgfCBSQURTIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOyB9Ci0gIHwg
R1JBRFMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19HUkFEOyB9Ci0gIHwgVFVSTlMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOOyB9Ci0gIHwgTVNFQ1MgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19NUzsgfQotICB8IFNFQ1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9Ci0gIHwgSEVSVFogeyAkJC5pZCA9IDA7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19IWjsgfQotICB8IEtI
RVJUWiB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0tIWjsgfQotICB8IEVNUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQotICB8IFFFTVMgeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OlFfRU1TOyB9Ci0g
IHwgRVhTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRVhTOyB9CisgIElOVEVHRVIgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsg
JCQuaXNJbnQgPSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgRkxPQVRUT0tFTiB7ICQkLmlkID0gQ1NTVmFsdWVJbnZh
bGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgUEVSQ0VOVEFHRSB7ICQkLmlkID0gQ1NTVmFs
dWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRTsgfQorICB8IFBYUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0KKyAgfCBD
TVMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9CisgIHwgTU1TIHsgJCQuaWQgPSBDU1NWYWx1ZUlu
dmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19N
TTsgfQorICB8IElOUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47IH0KKyAgfCBQVFMgeyAkJC5pZCA9
IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BUOyB9CisgIHwgUENTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsgfQorICB8IERF
R1MgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQorICB8IFJBRFMgeyAkJC5pZCA9IENTU1ZhbHVl
SW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1JBRDsgfQorICB8IEdSQURTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEOyB9CisgIHwgVFVSTlMg
eyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KKyAgfCBNU0VDUyB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TVM7IH0KKyAgfCBTRUNTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9CisgIHwgSEVSVFogeyAkJC5p
ZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0haOyB9CisgIHwgS0hFUlRaIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19LSFo7IH0K
KyAgfCBFTVMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQorICB8IFFFTVMgeyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6
UV9FTVM7IH0KKyAgfCBFWFMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQogICB8IFJFTVMgewot
ICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAk
JC5mVmFsdWUgPSAkMTsKICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JF
TVM7CiAgICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQpCiAgICAgICAgICAgcGFyc2VyLT5t
X3N0eWxlU2hlZXQtPnBhcnNlclNldFVzZXNSZW1Vbml0cyh0cnVlKTsKICAgfQotICB8IENIUyB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0NIUzsgfQotICB8IFZXIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVlc7IH0KLSAgfCBWSCB7ICQkLmlkID0gMDsgJCQuZlZh
bHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZIOyB9Ci0gIHwgVk1J
TiB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZNSU47IH0KLSAgfCBWTUFYIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1BWDsgfQotICB8IERQUFggeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBY
OyB9Ci0gIHwgRFBJIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBJOyB9Ci0gIHwgRFBDTSB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KKyAgfCBDSFMg
eyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0NIUzsgfQorICB8IFZXIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFs
aWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WVzsg
fQorICB8IFZIIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQorICB8IFZNSU4geyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZNSU47IH0KKyAgfCBWTUFYIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WTUFYOyB9CisgIHwg
RFBQWCB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDsgfQorICB8IERQSSB7ICQkLmlkID0gQ1NTVmFs
dWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfRFBJOyB9CisgIHwgRFBDTSB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTTsgfQogICA7CiAKIGZ1
bmN0aW9uOgpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgZnVuY3Rpb246CiAgICAgICAgIENTU1BhcnNl
ckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CiAgICAgICAg
IGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1ZhbHVl
SW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAg
ICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0gfApAQCAtMTc3MCw3ICsxNzcwLDcgQEAgZnVu
Y3Rpb246CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0
KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CiAgICAgICAg
IGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCh2YWx1ZUxpc3QpOwotICAg
ICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAg
ICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwogICAgICAgICAkJC5mdW5jdGlv
biA9IGY7CiAgICAgfSB8CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBmdW5jdGlvbjoKICAgICAgICAg
Q1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsK
ICAgICAgICAgZi0+bmFtZSA9ICQxOwogICAgICAgICBmLT5hcmdzID0gbnVsbHB0cjsKLSAgICAg
ICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAg
JCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICAgICAgJCQuZnVuY3Rpb24g
PSBmOwogICB9CkBAIC0xNzg4LDcgKzE3ODgsNyBAQCBjYWxjX2Z1bmNfdGVybToKICAgdW5hcnlf
dGVybSB7ICQkID0gJDE7IH0KICAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCBjbG9z
aW5nX3BhcmVudGhlc2lzIHsKICNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUwotICAgICAgJCQuaWQg
PSAwOworICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAkJC5zdHJpbmcgPSAk
MzsKICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7
CiAjZW5kaWYKQEAgLTE4MjEsNyArMTgyMSw3IEBAIGNhbGNfZnVuY19wYXJlbl9leHByOgogICAg
ICAgICBpZiAoJDMpIHsKICAgICAgICAgICAgICQkID0gJDM7CiAgICAgICAgICAgICBDU1NQYXJz
ZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICB2LmlkID0gQ1NT
VmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJh
dG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7CiAgICAgICAgICAgICAkJC0+aW5zZXJ0
VmFsdWVBdCgwLCB2KTsKQEAgLTE4NDYsNyArMTg0Niw3IEBAIHZhbGlkX2NhbGNfZnVuY19leHBy
OgogICAgICAgICBpZiAoJDEgJiYgJDIpIHsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAg
ICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAg
ICB2LmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2Vy
VmFsdWU6Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAgICAgICAgICAg
ICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4NTksNyArMTg1OSw3IEBAIHZhbGlkX2NhbGNfZnVuY19l
eHByOgogICAgICAgICBpZiAoJDEgJiYgJDIgJiYgJDMpIHsKICAgICAgICAgICAgICQkID0gJDE7
CiAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Cisg
ICAgICAgICAgICB2LmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAg
ICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4NzgsNyArMTg3OCw3IEBAIGNhbGNfZnVu
Y19leHByX2xpc3Q6CiAgICAgICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgJCQgPSAk
MTsKICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0gMDsK
KyAgICAgICAgICAgIHYuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAgICAgICB2LnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CiAgICAgICAgICAgICB2LmlWYWx1ZSA9ICcsJzsK
ICAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4OTMsNyArMTg5Myw3IEBAIGNhbGNf
ZnVuY3Rpb246CiAgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ0Z1bmN0aW9uKCk7CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJn
cyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAw
OworICAgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENT
U1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0K
QEAgLTE5MTcsNyArMTkxNyw3IEBAIG1pbl9vcl9tYXhfZnVuY3Rpb246CiAgICAgICAgIENTU1Bh
cnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CiAgICAg
ICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1Zh
bHVlSW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsK
ICAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IGU1ZDRkYTQ5MDQ3NGM5YTljODIwNTZiOWYxMjYwYjAzYTU4OWM4MjAuLjY2ZmZmMzA1
YzE4YWNjNDA2ZDcyMDY3YzAyZWQ5MzQ4YzkzNGU2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKE11dGFi
bGVTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgQ1NTUGFyc2VyU3RyaW5nIGNzc1N0cmluZzsKICAgICBjc3NTdHJp
bmcuaW5pdChzdHJpbmcpOwotICAgIGludCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoY3Nz
U3RyaW5nKTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NT
dHJpbmcpOwogICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQpCiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
QEAgLTExOTQsNyArMTE5NCw3IEBAIHN0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVlKE11dGFi
bGVTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJCiAKICAgICBDU1NQ
YXJzZXJTdHJpbmcgY3NzU3RyaW5nOwogICAgIGNzc1N0cmluZy5pbml0KHN0cmluZyk7Ci0gICAg
aW50IHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworICAgIENTU1ZhbHVl
SUQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKGNzc1N0cmluZyk7CiAKICAgICBpZiAoIXZh
bHVlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3ODQsNyArMTc4NCw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjp2YWxpZEhlaWdodChDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiAgICAgcmV0dXJu
ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcpOwog
fQogCi1pbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbGlkUHJpbWl0aXZlKGludCBpZGVudGlmaWVyLCBDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCitp
bmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbGlk
UHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRlbnRpZmllciwgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlKQog
ewogICAgIGlmIChpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpOwpAQCAtMTg0Miw3ICsxODQyLDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRvIGF2b2lkIGhhdmluZyB0byBwYXNzIHBhcnNl
ZENhbGMgdG8gYWxsIHZhbGlkVW5pdCBjYWxsZXJzLgogICAgIEFTU0VSVCghbV9wYXJzZWRDYWxj
dWxhdGlvbik7CiAgICAgCi0gICAgaW50IGlkID0gdmFsdWUtPmlkOworICAgIENTU1ZhbHVlSUQg
aWQgPSB2YWx1ZS0+aWQ7CiAKICAgICBpbnQgbnVtID0gaW5TaG9ydGhhbmQoKSA/IDEgOiBtX3Zh
bHVlTGlzdC0+c2l6ZSgpOwogCkBAIC0zNzYzLDYgKzM3NjMsOCBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VDb250ZW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1h
bDoKICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZSh2YWwtPmlkKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAodmFsLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7CiAgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKHZhbCk7CkBAIC0zODA3LDcgKzM4MDks
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0cihDU1NQYXJzZXJW
YWx1ZUxpc3QqIGFyZ3MpCiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VC
YWNrZ3JvdW5kQ29sb3IoKQogewotICAgIGludCBpZCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCkt
PmlkOworICAgIENTU1ZhbHVlSUQgaWQgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZDsKICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IChpZCA+PSBDU1NWYWx1ZUFxdWEgJiYg
aWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUgfHwgaWQgPT0g
Q1NTVmFsdWVDdXJyZW50Y29sb3IgfHwKICAgICAgICAgKGlkID49IENTU1ZhbHVlR3JleSAmJiBp
ZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiBpblF1aXJrc01vZGUoKSkpCiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWQpOwpAQCAtMzg3Myw3ICsz
ODc1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlv
blkoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QKIAogUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJW
YWx1ZUxpc3QqIHZhbHVlTGlzdCwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmlsbFBvc2l0
aW9uRmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlIHBhcnNpbmdN
b2RlKQogewotICAgIGludCBpZCA9IHZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZDsKKyAgICBDU1NW
YWx1ZUlEIGlkID0gdmFsdWVMaXN0LT5jdXJyZW50KCktPmlkOwogICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBp
ZCA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAgICAgICBp
bnQgcGVyY2VudCA9IDA7CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0g
Q1NTVmFsdWVSaWdodCkgewpAQCAtMzk5NywxMiArMzk5OSwxMiBAQCB2b2lkIENTU1BhcnNlcjo6
cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBS
ZWZQdHI8QwogICAgIHZhbHVlTGlzdC0+bmV4dCgpOwogCiAgICAgYm9vbCBzd2FwTmVlZGVkID0g
ZmFsc2U7Ci0gICAgaW50IGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+Z2V0SWRlbnQoKTsKLSAgICBp
bnQgaWRlbnQyID0gcGFyc2VkVmFsdWUyLT5nZXRJZGVudCgpOwotICAgIGludCBpZGVudDMgPSB2
YWx1ZTMtPmdldElkZW50KCk7CisgICAgQ1NTVmFsdWVJRCBpZGVudDEgPSBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUlEPihwYXJzZWRWYWx1ZTEtPmdldElkZW50KCkpOworICAgIENTU1ZhbHVlSUQgaWRl
bnQyID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4ocGFyc2VkVmFsdWUyLT5nZXRJZGVudCgpKTsK
KyAgICBDU1NWYWx1ZUlEIGlkZW50MyA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHZhbHVlMy0+
Z2V0SWRlbnQoKSk7CiAKLSAgICBpbnQgZmlyc3RQb3NpdGlvbktleXdvcmQ7Ci0gICAgaW50IHNl
Y29uZFBvc2l0aW9uS2V5d29yZDsKKyAgICBDU1NWYWx1ZUlEIGZpcnN0UG9zaXRpb25LZXl3b3Jk
OworICAgIENTU1ZhbHVlSUQgc2Vjb25kUG9zaXRpb25LZXl3b3JkOwogCiAgICAgaWYgKGlkZW50
MSA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAgICAgICAvLyA8cG9zaXRpb24+IHJlcXVpcmVzIHRo
ZSBmaXJzdCAnY2VudGVyJyB0byBiZSBmb2xsb3dlZCBieSBhIGtleXdvcmQuCkBAIC00MDY4LDgg
KzQwNzAsOCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1Bh
cnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8QwogI2lmbmRlZiBOREVCVUcKICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlMS5nZXQoKSk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUyLmdldCgpKTsKLSAgICBpZGVudDEgPSBmaXJz
dC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldElkZW50KCk7Ci0gICAgaWRlbnQyID0gc2Vj
b25kLT5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKS0+Z2V0SWRlbnQoKTsKKyAgICBpZGVudDEgPSBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihmaXJzdC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdl
dElkZW50KCkpOworICAgIGlkZW50MiA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHNlY29uZC0+
Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldElkZW50KCkpOwogICAgIEFTU0VSVChpZGVudDEg
PT0gQ1NTVmFsdWVMZWZ0IHx8IGlkZW50MSA9PSBDU1NWYWx1ZVJpZ2h0KTsKICAgICBBU1NFUlQo
aWRlbnQyID09IENTU1ZhbHVlQm90dG9tIHx8IGlkZW50MiA9PSBDU1NWYWx1ZVRvcCk7CiAjZW5k
aWYKQEAgLTQxODksNyArNDE5MSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTJWYWx1ZXNGaWxs
UG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAKIHZvaWQg
Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQ
dHI8Q1NTVmFsdWU+JiB2YWx1ZTIpCiB7Ci0gICAgaW50IGlkID0gbV92YWx1ZUxpc3QtPmN1cnJl
bnQoKS0+aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCktPmlk
OwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdFgpIHsKICAgICAgICAgbV9pbXBsaWNpdFNo
b3J0aGFuZCA9IHRydWU7CiAgICAgICAgIHZhbHVlMSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJlcGVhdCk7CkBAIC00MjI1LDcgKzQyMjcsNyBAQCB2b2lk
IENTU1BhcnNlcjo6cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVm
UHRyPENTU1ZhbHVlPiYgdmFsdQogCiAgICAgLy8gSWYgb25seSBvbmUgdmFsdWUgd2FzIHNwZWNp
ZmllZCwgdmFsdWUyIGlzIHRoZSBzYW1lIGFzIHZhbHVlMS4KICAgICBtX2ltcGxpY2l0U2hvcnRo
YW5kID0gdHJ1ZTsKLSAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTEuZ2V0KCkpLT5nZXRJ
ZGVudCgpKTsKKyAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZTEuZ2V0KCkpLT5nZXRJZGVudCgpKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxs
b3dDb21tYSkKQEAgLTQ1MTksNyArNDUyMSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb25QYXJzZUNvbnRleHQmIGNvCiAg
ICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBp
ZiAodmFsdWUtPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgaW50IHJlc3VsdCA9IGNzc1Byb3BlcnR5SUQodmFsdWUtPnN0cmluZyk7
CisgICAgQ1NTUHJvcGVydHlJRCByZXN1bHQgPSBjc3NQcm9wZXJ0eUlEKHZhbHVlLT5zdHJpbmcp
OwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUocmVzdWx0KTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUs
ICJhbGwiKSkgewpAQCAtNTAxOCw3ICs1MDIwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywgYm8K
ICAgICAgICAgaWYgKGktPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKICAg
ICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGludCBsaXN0U3R5bGVJRCA9IDA7CisgICAg
ICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSUQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAgIGlm
IChpLT5pZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGktPmlkID49IENTU1ZhbHVlRGlzYyAmJiBpLT5p
ZCA8PSBDU1NWYWx1ZUthdGFrYW5hSXJvaGEpKQogICAgICAgICAgICAgbGlzdFN0eWxlSUQgPSBp
LT5pZDsKICAgICAgICAgZWxzZQpAQCAtNTU1Nyw3ICs1NTU5LDcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5KCkKIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUxpbmVIZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZh
bHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICBpbnQgaWQgPSB2YWx1ZS0+aWQ7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlLT5pZDsKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0g
ZmFsc2U7CiAgICAgLy8gbm9ybWFsIHwgPG51bWJlcj4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdl
PiB8IGluaGVyaXQKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC01NTcyLDcgKzU1
NzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMaW5lSGVpZ2h0KGJvb2wgaW1wb3J0YW50KQog
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFNpemUoYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NT
UGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICBpbnQgaWQg
PSB2YWx1ZS0+aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlLT5pZDsKICAgICBib29sIHZh
bGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgLy8gPGFic29sdXRlLXNpemU+IHwgPHJlbGF0aXZl
LXNpemU+IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgaWYgKGlkID49
IENTU1ZhbHVlWHhTbWFsbCAmJiBpZCA8PSBDU1NWYWx1ZUxhcmdlcikKQEAgLTU2NDEsNyArNTY0
Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBDU1NRdWlya3NNb2Rl
KSkgewogICAgICAgICBpbnQgd2VpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZS0+ZlZhbHVl
KTsKICAgICAgICAgaWYgKCEod2VpZ2h0ICUgMTAwKSAmJiB3ZWlnaHQgPj0gMTAwICYmIHdlaWdo
dCA8PSA5MDApIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdo
dCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlMTAwICsgd2Vp
Z2h0IC8gMTAwIC0gMSksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShz
dGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZTEwMCArIHdlaWdodCAvIDEwMCAtIDEpKSwg
aW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtNzIzOCw3ICs3MjQwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VEZXByZWNhdGVkR3JhZGllbnRD
b2xvclN0b3AoQ1NTUGFyc2VyKiBwLCBDU1NQYXJzZXJWYWx1ZSogYSwgQ1MKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogCi0gICAgICAgIGludCBpZCA9
IGFyZ3MtPmN1cnJlbnQoKS0+aWQ7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLT5jdXJy
ZW50KCktPmlkOwogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IChpZCA+
PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NW
YWx1ZU1lbnUpCiAgICAgICAgICAgICBzdG9wLm1fY29sb3IgPSBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoaWQpOwogICAgICAgICBlbHNlCkBAIC03MjY1LDcgKzcyNjcsNyBA
QCBzdGF0aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXIq
IHAsIENTU1BhcnNlclZhbHVlKiBhLCBDUwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIHN0b3BBcmcgPSBhcmdzLT5uZXh0KCk7Ci0gICAgICAgIGludCBpZCA9IHN0b3BBcmct
PmlkOworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gc3RvcEFyZy0+aWQ7CiAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQgfHwgKGlkID49IENTU1ZhbHVlQXF1YSAmJiBpZCA8PSBD
U1NWYWx1ZVdpbmRvd3RleHQpIHx8IGlkID09IENTU1ZhbHVlTWVudSkKICAgICAgICAgICAgIHN0
b3AubV9jb2xvciA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZCk7CiAg
ICAgICAgIGVsc2UKQEAgLTc0MzIsNyArNzQzNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB2YWx1ZUZyb21TaWRlS2V5d29yZChDU1NQYXJzZXJWYWx1ZSogYSwgYm9v
CiAKIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUdyYWRpZW50Q29s
b3JPcktleXdvcmQoQ1NTUGFyc2VyKiBwLCBDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiB7Ci0gICAg
aW50IGlkID0gdmFsdWUtPmlkOworICAgIENTU1ZhbHVlSUQgaWQgPSB2YWx1ZS0+aWQ7CiAgICAg
aWYgKGlkID09IENTU1ZhbHVlV2Via2l0VGV4dCB8fCAoaWQgPj0gQ1NTVmFsdWVBcXVhICYmIGlk
IDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgaWQgPT0gQ1NTVmFsdWVNZW51IHx8IGlkID09IENT
U1ZhbHVlQ3VycmVudGNvbG9yKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGlkKTsKIApAQCAtNzU3NCw2ICs3NTc2LDggQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFs
dWVMaXN0LCBSZWYKICAgICAgICAgICAgIHNpemVWYWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShhLT5pZCk7CiAgICAgICAgICAgICBmb3VuZFZhbHVlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZm91bmRWYWx1ZSkgewpAQCAtMTIyMjAsMTQgKzEy
MjI0LDE0IEBAIHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoY29uc3QgY2hhciogcHJv
cGVydHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOCiAjZW5kaWYKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW50IGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0
IENoYXJhY3RlclR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIENT
U1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdmFsdWVLZXl3
b3JkLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgY2hhciBidWZmZXJbbWF4Q1NTVmFsdWVLZXl3
b3JkTGVuZ3RoICsgMSArIDFdOyAvLyAxIHRvIHR1cm4gImFwcGxlIi8ia2h0bWwiIGludG8gIndl
YmtpdCIsIDEgZm9yIG51bGwgY2hhcmFjdGVyCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
ICE9IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIENoYXJhY3RlclR5cGUgYyA9IHZhbHVlS2V5d29y
ZFtpXTsKICAgICAgICAgaWYgKGMgPT0gMCB8fCBjID49IDB4N0YpCi0gICAgICAgICAgICByZXR1
cm4gMDsgLy8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZUlu
dmFsaWQ7IC8vIGlsbGVnYWwgY2hhcmFjdGVyCiAgICAgICAgIGJ1ZmZlcltpXSA9IFdURjo6dG9B
U0NJSUxvd2VyKGMpOwogICAgIH0KICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CkBAIC0xMjI0
MywxNiArMTIyNDcsMTYgQEAgc3RhdGljIGludCBjc3NWYWx1ZUtleXdvcmRJRChjb25zdCBDaGFy
YWN0ZXJUeXBlKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB9CiAKICAgICBj
b25zdCBWYWx1ZSogaGFzaFRhYmxlRW50cnkgPSBmaW5kVmFsdWUoYnVmZmVyLCBsZW5ndGgpOwot
ICAgIHJldHVybiBoYXNoVGFibGVFbnRyeSA/IGhhc2hUYWJsZUVudHJ5LT5pZCA6IDA7CisgICAg
cmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oaGFzaFRhYmxl
RW50cnktPmlkKSA6IENTU1ZhbHVlSW52YWxpZDsKIH0KIAotaW50IGNzc1ZhbHVlS2V5d29yZElE
KGNvbnN0IENTU1BhcnNlclN0cmluZyYgc3RyaW5nKQorQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdv
cmRJRChjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHN0cmluZykKIHsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogICAgIGlmIChsZW5ndGggPiBtYXhD
U1NWYWx1ZUtleXdvcmRMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
Q1NTVmFsdWVJbnZhbGlkOwogCiAgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKSA/IGNzc1ZhbHVl
S2V5d29yZElEKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpIDogY3NzVmFsdWVLZXl3b3Jk
SUQoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CmluZGV4IGMxMzE1MDQ3MmYzNDVhZjc3ZTc1NzdhZDg1N2VmZGMyNGMwMjcyYTYuLjU5YjBmMDc1
NDc3M2NlZTdhMTY4ZTRkNjI4MTgxZDdjMzEyYjAwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRl
ICJNZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTk2LDcgKzk3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29u
c3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VT
eXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1bWVudCopOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0
IEF0b21pY1N0cmluZyYpOwotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNl
VmFsaWRQcmltaXRpdmUoaW50IGlkZW50LCBDU1NQYXJzZXJWYWx1ZSopOworICAgIFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlVmFsaWRQcmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVu
dCwgQ1NTUGFyc2VyVmFsdWUqKTsKICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0
eWxlUHJvcGVydHlTZXQqLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gcGFyc2VJbmxpbmVTdHlsZURl
Y2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqKTsKICAgICBQYXNzT3duUHRyPE1lZGlh
UXVlcnk+IHBhcnNlTWVkaWFRdWVyeShjb25zdCBTdHJpbmcmKTsKQEAgLTY4MSw3ICs2ODIsNyBA
QCBwcml2YXRlOgogCiBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoY29uc3QgQ1NTUGFyc2Vy
U3RyaW5nJik7CiBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoY29uc3QgU3RyaW5nJik7Ci1p
bnQgY3NzVmFsdWVLZXl3b3JkSUQoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJik7CitDU1NWYWx1ZUlE
IGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENTU1BhcnNlclN0cmluZyYpOwogI2lmIFBMQVRGT1JN
KElPUykKIHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1lQWxpYXMsIHVuc2lnbmVkJiBuZXdMZW5n
dGgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggMThmNzZl
MTQ1OWY4MDQxYzk5MjBmNDA4YjU2ZjVjMWQxN2M1MDY3NS4uMWZkOTUzNGFhZDU5MzMyNjA1ZTQ5
MzhiZGQwYzM2N2E5ZmJkZDhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApA
QCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDU1NQYXJzZXJWYWx1ZXNfaAogCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMDksNyArMTEwLDcgQEAgc3RydWN0IENT
U1BhcnNlclN0cmluZyB7CiBzdHJ1Y3QgQ1NTUGFyc2VyRnVuY3Rpb247CiAKIHN0cnVjdCBDU1NQ
YXJzZXJWYWx1ZSB7Ci0gICAgaW50IGlkOworICAgIENTU1ZhbHVlSUQgaWQ7CiAgICAgYm9vbCBp
c0ludDsKICAgICB1bmlvbiB7CiAgICAgICAgIGRvdWJsZSBmVmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZVBvb2wuY3BwCmluZGV4IGZkOTgwYzRkM2VjNzlkMzE2OGJiYmEwYmY5YTgyZDQ5Yzdm
NzQ4MTAuLjEyNGFiYzdjOWZkZGE4YTIwYTkwMTM5ZjlkNjQ5NDA1YTQ0YmI2NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC00OSw5ICs0OSw5IEBAIENTU1ZhbHVlUG9vbDo6
Q1NTVmFsdWVQb29sKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NT
VmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoaW50IGlkZW50KQorUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVJRCBpZGVudCkKIHsKLSAgICBpZiAoaWRlbnQgPD0gMCB8fCBpZGVudCA+PSBudW1DU1NW
YWx1ZUtleXdvcmRzKQorICAgIGlmIChpZGVudCA8PSAwKQogICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwogCiAgICAgaWYgKCFtX2lkZW50
aWZpZXJWYWx1ZUNhY2hlW2lkZW50XSkKQEAgLTU5LDYgKzU5LDExIEBAIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBp
ZGVudCkKICAgICByZXR1cm4gbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtpZGVudF07CiB9CiAKK1Bh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1Byb3BlcnR5SUQgaWRlbnQpCit7CisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKK30KKwogUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTVmFsdWVQb29sOjpjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVl
KQogewogICAgIC8vIFRoZXNlIGFyZSB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQgdmFsdWVzIG9mIHRo
ZSBoYXNoIHRhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9v
bC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCmluZGV4IDQ1ZDYyMGZmYjJl
YTEwMzYxODEyNzE5OTViYzNiZGFmMTVkMDk5NDYuLjQyMWQ3NGQ2ZTY4ZmUwMjU2OWFjMjQyMWMw
Njk5MzhhYTBkNDdjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBv
b2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0luaXRp
YWxWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTQ2LDcgKzQ3LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTSW5oZXJpdGVkVmFs
dWU+IGNyZWF0ZUluaGVyaXRlZFZhbHVlKCkgeyByZXR1cm4gbV9pbmhlcml0ZWRWYWx1ZTsgfQog
ICAgIFBhc3NSZWZQdHI8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpIHsgcmV0dXJuIG1faW1wbGljaXRJbml0aWFsVmFsdWU7IH0KICAgICBQYXNzUmVmUHRyPENT
U0luaXRpYWxWYWx1ZT4gY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2V4
cGxpY2l0SW5pdGlhbFZhbHVlOyB9Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBpZGVudGlmaWVyKTsKKyAgICBQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJRCBpZGVudGlm
aWVyKTsKKyAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyKTsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjcmVhdGVDb2xvclZhbHVlKHVuc2lnbmVkIHJnYlZhbHVlKTsKICAgICBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNyZWF0ZVZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMgdHlwZSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZSwg
dHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCA3Mjg5
YmQ4OTIzZjA2ZGU1ZDNhMjlhZWY2N2NlNWVlMTY2ODI2ZjY3Li5kNmFhMzMxODQ4YTU2YTQ3ZTI3
MGM2YmEwZWM0ZWY2NWJiYmM0YThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwCkBAIC03MjcsNyArNzI3LDEzIEBAIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6
OnNldFByZWZpeGluZ1ZhcmlhbnRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYgcHJvCiAgICAg
ICAgICp0b1JlcGxhY2UgPSBDU1NQcm9wZXJ0eShwcmVmaXhpbmdWYXJpYW50LCBwcm9wZXJ0eS52
YWx1ZSgpLCBwcm9wZXJ0eS5pc0ltcG9ydGFudCgpLCBwcm9wZXJ0eS5zaG9ydGhhbmRJRCgpLCBw
cm9wZXJ0eS5tZXRhZGF0YSgpLm1faW1wbGljaXQpOwogfQogCi1ib29sIE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGludCBpZGVu
dGlmaWVyLCBib29sIGltcG9ydGFudCkKK2Jvb2wgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVy
LCBib29sIGltcG9ydGFudCkKK3sKKyAgICBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0
eUlELCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmllciksIGlt
cG9ydGFudCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIE11dGFibGVTdHlsZVByb3Bl
cnR5U2V0OjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1Byb3BlcnR5
SUQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgc2V0UHJvcGVydHkoQ1NTUHJv
cGVydHkocHJvcGVydHlJRCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlk
ZW50aWZpZXIpLCBpbXBvcnRhbnQpKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4IGIzMDdjNWMxM2VmMjU3ZGI4N2I4NDQ0MjMwMDQyNzk4
NzkzZjcyMzMuLjUzMDE2OWUwMmU3NTI1YzM0ZjAyY2JlNThmMjM3ZWMyNjdjOWM2YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1
ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTIwMSw3ICsyMDIsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAKICAgICAvLyBUaGVzZSBkbyBub3QuIEZJWE1F
OiBUaGlzIGlzIHRvbyBtZXNzeSwgd2UgY2FuIGRvIGJldHRlci4KLSAgICBib29sIHNldFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNl
KTsKKyAgICBib29sIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRp
ZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgYm9vbCBzZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50ID0gZmFs
c2UpOwogICAgIHZvaWQgYXBwZW5kUHJlZml4aW5nVmFyaWFudFByb3BlcnR5KGNvbnN0IENTU1By
b3BlcnR5Jik7CiAgICAgdm9pZCBzZXRQcmVmaXhpbmdWYXJpYW50UHJvcGVydHkoY29uc3QgQ1NT
UHJvcGVydHkmKTsKICAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiwgQ1NT
UHJvcGVydHkqIHNsb3QgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRl
eCBlNmE2ZGE3Y2UxZTIzM2MyMWY5OTc4MGQxMzI0NTI4MmQ5ODc4MWIxLi5lOTY5M2RkZDFkMDQx
ZjNjZjcwMzZlMTYxMTI4MTIwYWRkMzhlZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwCkBAIC0yMjcsNyArMjI3LDE0IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6aW5saW5lU3R5
bGVDaGFuZ2VkKCkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVT
dHlsZUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiB9CiAgICAgCi1ib29sIFN0eWxlZEVsZW1lbnQ6
OnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgaWRl
bnRpZmllciwgYm9vbCBpbXBvcnRhbnQpCitib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZp
ZXIsIGJvb2wgaW1wb3J0YW50KQoreworICAgIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLT5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoaWRlbnRpZmllciksIGltcG9ydGFudCk7CisgICAgaW5saW5lU3R5bGVDaGFuZ2VkKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgaWRlbnRpZmll
ciwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKCktPnNl
dFByb3BlcnR5KHByb3BlcnR5SUQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShpZGVudGlmaWVyKSwgaW1wb3J0YW50KTsKICAgICBpbmxpbmVTdHlsZUNoYW5nZWQoKTsKQEAg
LTM2Niw3ICszNzMsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSgpCiAgICAgICAgIGNhY2hlSXRlcmF0b3ItPnZhbHVlID0gbmV3RW50cnku
cmVsZWFzZSgpOwogfQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIpCit2b2lkIFN0eWxlZEVsZW1lbnQ6
OmFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9w
ZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVu
dGlmaWVyKQogewogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmllcikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKaW5kZXggNWZlMzI0NjBlMjA4NGNiNTk3ZTE3MzNiNzVhOGI4N2RlNjll
YmQ3OC4uN2EyNzIwMDFkZDNiY2ViMGI4OWRjZmRlNGY0ZDJiNjc5NDJmZDkyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqIGlubGluZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gZWxlbWVudERhdGEoKSA/IGVs
ZW1lbnREYXRhKCktPm1faW5saW5lU3R5bGUuZ2V0KCkgOiAwOyB9CiAgICAgCi0gICAgYm9vbCBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBib29s
IGltcG9ydGFudCA9IGZhbHNlKTsKKyAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNl
KTsKKyAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTUHJv
cGVydHlJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICBib29sIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgZG91YmxlIHZhbHVlLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICBib29s
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQpOwpAQCAtNzAsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGFkZFByb3BlcnR5VG9QcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3Bl
cnR5SUQsIGludCBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlSUQgaWRlbnRpZmllcik7CiAgICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlE
LCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpOwogICAgIHZvaWQg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3Bl
cnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCBhZGQ1MzQ1MDIwOWRjMzVlMDI4NTdm
MzUxOTNkZDIxODNhMGU1OGE1Li5iZmZjOTU0YWRjNjUwODE5MjQ1Mjk1YTNhYzZiZWFhYWQ5NWIz
NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0zMDUsNyAr
MzA1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gSFRNTEZvbnRTaXplRXF1aXZhbGVudDo6YXR0
cmlidXRlVmFsdWVBc0NTU1ZhbHVlKEVsZW1lbnQqIGUKICAgICBBU1NFUlQoZWxlbWVudCk7CiAg
ICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGUobV9hdHRyTmFtZSkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIGludCBzaXplOworICAgIENTU1ZhbHVlSUQgc2l6ZTsKICAgICBpZiAoIUhUTUxG
b250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIoZWxlbWVudC0+Z2V0QXR0cmli
dXRlKG1fYXR0ck5hbWUpLCBzaXplKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHNpemUpOwpAQCAtOTI3LDkgKzkyNyw5
IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBw
b3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1v
dmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBpZiAodW5pY29k
ZUJpZGkgJiYgdW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBtX211
dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih1bmljb2RlQmlkaS5nZXQoKSktPmdldElkZW50KCkpOwor
ICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlk
aSwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih1bmljb2RlQmlkaS5nZXQoKSktPmdldElkZW50KCkpKTsKICAgICAgICAgaWYgKGRpcmVjdGlv
biAmJiBkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIG1fbXV0YWJs
ZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkpLT5nZXRJZGVudCgpKTsKKyAgICAgICAg
ICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVJRD4oc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJl
Y3Rpb24uZ2V0KCkpLT5nZXRJZGVudCgpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAwMmU0ZTE0ZDJiYWMxZjQyMzY5OTI3M2ZhNjA1
NDlhZTU3MWZkMGU2Li44NDYxNWQzYjY5MjE2YTViYzMyNGY3NDQ2NmY4ODk2YmEyZTRhZWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTEyMyw3ICsxMjMs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aQogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0Zy
YW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwgc3R5bGUuZ2V0KCkpOwogfQogCi1zdGF0aWMgYm9v
bCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291
cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgcHJv
cGVydHlWYWx1ZSkKK3N0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwg
RWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIENTU1ZhbHVlSUQgcHJvcGVydHlWYWx1ZSkKIHsKICAgICBSZWZQdHI8
TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6
OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBwcm9wZXJ0eVZh
bHVlKTsKQEAgLTQyMCw3ICs0MjAsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9udE5hbWUoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjbwogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRm9udFNpemUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGludCBzaXplOwor
ICAgIENTU1ZhbHVlSUQgc2l6ZTsKICAgICBpZiAoIUhUTUxGb250RWxlbWVudDo6Y3NzVmFsdWVG
cm9tRm9udFNpemVOdW1iZXIodmFsdWUsIHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIGV4ZWN1dGVBcHBseVN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25DaGFu
Z2VBdHRyaWJ1dGVzLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKaW5kZXggMzQ0OWIzYjM1MzY5NDlmMjVlZWFkZjRjMDczZjVhZjlkYzIw
NTNjMy4uNWVlZWQ1ZTQxMzJjYmY3MGVhYmVmNjNjMzFlNTEzZTI5MDZiNjNmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEhUTUxFbGVt
ZW50OjppZUZvcmJpZHNJbnNlcnRIVE1MKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgaW50IHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byhIVE1MRWxl
bWVudCogZWxlbWVudCkKK3N0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaUF0dHJp
YnV0ZUZvckRpckF1dG8oSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQt
Pmhhc0xvY2FsTmFtZShwcmVUYWcpIHx8IGVsZW1lbnQtPmhhc0xvY2FsTmFtZSh0ZXh0YXJlYVRh
ZykpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVdlYmtpdFBsYWludGV4dDsKQEAgLTYwMiw4ICs2
MDIsOCBAQCB2b2lkIEhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBhbGlnbm1lbnQsCiB7CiAgICAgLy8gVmVydGljYWwgYWxpZ25t
ZW50IHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBiYXNlbGluZSBvZiB0aGUgdGV4dAogICAg
IC8vIHJpZ2h0IG9yIGxlZnQgbWVhbnMgZmxvYXRpbmcgaW1hZ2VzLgotICAgIGludCBmbG9hdFZh
bHVlID0gQ1NTVmFsdWVJbnZhbGlkOwotICAgIGludCB2ZXJ0aWNhbEFsaWduVmFsdWUgPSBDU1NW
YWx1ZUludmFsaWQ7CisgICAgQ1NTVmFsdWVJRCBmbG9hdFZhbHVlID0gQ1NTVmFsdWVJbnZhbGlk
OworICAgIENTU1ZhbHVlSUQgdmVydGljYWxBbGlnblZhbHVlID0gQ1NTVmFsdWVJbnZhbGlkOwog
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFsaWdubWVudCwgImFic21pZGRsZSIpKQogICAg
ICAgICB2ZXJ0aWNhbEFsaWduVmFsdWUgPSBDU1NWYWx1ZU1pZGRsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvbnRFbGVtZW50LmNwcAppbmRleCBmMDUwNzNhZjQ0ZDgxZTZmNWE5NGJkODg0MWVj
MmM3NWRjNWZjZTQ2Li4zMjU0M2E3NGUwNjUzOTc5MzViMjYyZjVjYjYwZmNjYTg5ZWUxOGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgc3RhdGljIGJvb2wgcGFyc2VGb250U2l6ZShjb25zdCBTdHJpbmcmIGlucHV0LCBpbnQmIHNp
emUpCiAgICAgcmV0dXJuIHBhcnNlRm9udFNpemUoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0
Lmxlbmd0aCgpLCBzaXplKTsKIH0KIAotYm9vbCBIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJv
bUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYgcywgaW50JiBzaXplKQorYm9vbCBIVE1MRm9u
dEVsZW1lbnQ6OmNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYgcywgQ1NT
VmFsdWVJRCYgc2l6ZSkKIHsKICAgICBpbnQgbnVtID0gMDsKICAgICBpZiAoIXBhcnNlRm9udFNp
emUocywgbnVtKSkKQEAgLTE4OSw3ICsxODksNyBAQCBib29sIEhUTUxGb250RWxlbWVudDo6aXNQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHZv
aWQgSFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgTXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChuYW1lID09IHNpemVBdHRy
KSB7Ci0gICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgQ1NTVmFsdWVJRCBzaXplID0gQ1NT
VmFsdWVJbnZhbGlkOwogICAgICAgICBpZiAoY3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIodmFs
dWUsIHNpemUpKQogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKICAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gY29sb3JBdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9udEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKaW5k
ZXggYjJkYzBiZTUyZjZhZWQ5ZDA4ZjNmOWE2ZjY1ZWE2MTYwZDgzNTMxNS4uMGQ5MDIwZDVlMTdm
ZmYwNDVjNmM5OThlODk3Nzc0ODk1M2RlMTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxGb250RWxlbWVudCBGSU5BTCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TEZvbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgCi0gICAgc3RhdGljIGJvb2wgY3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIoY29uc3QgU3Ry
aW5nJiwgaW50Jik7CisgICAgc3RhdGljIGJvb2wgY3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIo
Y29uc3QgU3RyaW5nJiwgQ1NTVmFsdWVJRCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxGb250RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDdhNGE4YTM5MTBhMTQ4YzFmZDRhY2M1NmQwZGIy
Y2EwYjg3MmE2YzEuLjFkYzljYWVmMjc3ZDMxZGY3OTY4OTA5YzMwMDU1YmUxY2I3MDhkZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtNDEzLDcgKzQxMyw3
IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgfQogfQogCi1zdGF0aWMgU3R5bGVQcm9w
ZXJ0eVNldCogbGVha0JvcmRlclN0eWxlKGludCB2YWx1ZSkKK3N0YXRpYyBTdHlsZVByb3BlcnR5
U2V0KiBsZWFrQm9yZGVyU3R5bGUoQ1NTVmFsdWVJRCB2YWx1ZSkKIHsKICAgICBSZWZQdHI8TXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OmNy
ZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxl
LCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5k
ZXggNWJkNTY0MTJlOTU3ZmUyYTJiZWYyOGQyMmY3NmRjZDZmNTAzOWExMy4uMzhmMmVhYTBmNmVh
Yzk2OTg3ODMyYTlhNzZmY2YxMTE3YWVhNzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMTEyNiwxMiArMTEyNiwxMiBAQCBOZXh0U2V0dGluZzoK
ICNlbmRpZgogfQogCi1pbnQgVGV4dFRyYWNrQ3VlOjpnZXRDU1NXcml0aW5nRGlyZWN0aW9uKCkg
Y29uc3QKK0NTU1ZhbHVlSUQgVGV4dFRyYWNrQ3VlOjpnZXRDU1NXcml0aW5nRGlyZWN0aW9uKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9kaXNwbGF5RGlyZWN0aW9uOwogfQogCi1pbnQgVGV4dFRy
YWNrQ3VlOjpnZXRDU1NXcml0aW5nTW9kZSgpIGNvbnN0CitDU1NWYWx1ZUlEIFRleHRUcmFja0N1
ZTo6Z2V0Q1NTV3JpdGluZ01vZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2Rpc3BsYXlXcml0
aW5nTW9kZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4
IDcyNGU3OGJlMDVmYTBhOTU5MGFmNWYyNmNiZTYzZjRhYjVmNDZjZDEuLjYwZTNmYWViOTllYTBm
NWQ0NWYwM2EwYzZiMGJlNTY2ZDM5M2RlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaApAQCAtMTU5LDggKzE1OSw4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8
ZG91YmxlLCBkb3VibGU+IGdldENTU1Bvc2l0aW9uKCkgY29uc3Q7CiAKICAgICBpbnQgZ2V0Q1NT
U2l6ZSgpIGNvbnN0OwotICAgIGludCBnZXRDU1NXcml0aW5nRGlyZWN0aW9uKCkgY29uc3Q7Ci0g
ICAgaW50IGdldENTU1dyaXRpbmdNb2RlKCkgY29uc3Q7CisgICAgQ1NTVmFsdWVJRCBnZXRDU1NX
cml0aW5nRGlyZWN0aW9uKCkgY29uc3Q7CisgICAgQ1NTVmFsdWVJRCBnZXRDU1NXcml0aW5nTW9k
ZSgpIGNvbnN0OwogCiAgICAgZW51bSBXcml0aW5nRGlyZWN0aW9uIHsKICAgICAgICAgSG9yaXpv
bnRhbCwKQEAgLTI2OSwxMCArMjY5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc3BsYXlU
cmVlU2hvdWxkQ2hhbmdlOwogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IG1fZGlzcGxheVRy
ZWU7CiAKLSAgICBpbnQgbV9kaXNwbGF5RGlyZWN0aW9uOworICAgIENTU1ZhbHVlSUQgbV9kaXNw
bGF5RGlyZWN0aW9uOwogCi0gICAgaW50IG1fZGlzcGxheVdyaXRpbmdNb2RlTWFwW051bWJlck9m
V3JpdGluZ0RpcmVjdGlvbnNdOwotICAgIGludCBtX2Rpc3BsYXlXcml0aW5nTW9kZTsKKyAgICBD
U1NWYWx1ZUlEIG1fZGlzcGxheVdyaXRpbmdNb2RlTWFwW051bWJlck9mV3JpdGluZ0RpcmVjdGlv
bnNdOworICAgIENTU1ZhbHVlSUQgbV9kaXNwbGF5V3JpdGluZ01vZGU7CiAKICAgICBpbnQgbV9k
aXNwbGF5U2l6ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205020</attachid>
            <date>2013-06-19 11:21:37 -0700</date>
            <delta_ts>2013-06-19 13:19:09 -0700</delta_ts>
            <desc>attempt to fix efl build</desc>
            <filename>bug-117481-20130619151946.patch</filename>
            <type>text/plain</type>
            <size>49863</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I4NmRhYjZiNWQ2YTVh
ZTQ4ZmRlZjc1ZjRhMGY5MjYyZTYzYzkyNC4uNDRmODgxMjMxNjFjYzE2MTdjODEwYzMwZDI1YTQy
ZWY5NWUzZjk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEzLTA2LTE5ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHVz
ZSBDU1NWYWx1ZUlEIGFuZCBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFuIGludGVnZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0ODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgZW5z
dXJlIHRoYXQgdHlwZXMgYXJlIGVuZm9yY2VkIHdoZW4gcGFzc2luZyBhcmd1bWVudHMgaW4gdmFy
aW91cworICAgICAgICBjc3MgZnVuY3Rpb25zLiBIYXZpbmcgYSBjb21waWxlIHRpbWUgY2hlY2sg
bWFrZSBzdXJlIHRoYXQgbm8gbWlzdGFrZXMKKyAgICAgICAgd2lsbCBiZSBkb25lIG92ZXIgdGhl
IHR5cGUuCisKKyAgICAgICAgVGhlIHBhcnNlciB3YXMgYWxzbyBwYXRjaGVkIHRvIGRpcmVjdGx5
IHVzZSBDU1NWYWx1ZUlEIG92ZXIgaW50ZWdlcnMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBm
aXhlcyB2YXJpb3VzIGNhbGwgc2l0ZXMgYWJ1c2luZyB0aGUgdXNhZ2Ugb2YgaW50ZWdlcnMuCisg
ICAgICAgIFRoaXMgaXMgcGFydCAxIG9mIDIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhp
c3Rpbmcgb25lcyBzaG91bGQgY292ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IGNvcHkgQ1NTVmFsdWVLZXl3b3Jkcy5oIGFzIGl0IGNvdWxkIGJlIHVz
ZWQgaW4gV2ViS2l0LyBmb3IgZXhhbXBsZS4KKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yUmVwZWF0UnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpjc3NJZGVudGlmaWVyRm9yRm9udFNpemVLZXl3b3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlkZW50aWZpZXJGb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6
dmFsdWVGb3JGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb25Db21w
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb3VudGVyQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXByZWNhdGVkR3Jh
ZGllbnRDb2xvclN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHcmFkaWVudENvbG9yT3JL
ZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkUmFk
aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lm
aWVycyk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQYXJz
ZXJWYWx1ZXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlUG9vbDo6
Y3JlYXRlSWRlbnRpZmllclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmg6Cisg
ICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb250U2l6ZUVx
dWl2YWxlbnQ6OmF0dHJpYnV0ZVZhbHVlQXNDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRm9udFNpemUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRv
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0
ZVRvU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtC
b3JkZXJTdHlsZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDU1NXcml0aW5nRGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q1NTV3JpdGluZ01vZGUpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKIDIwMTMtMDYtMTkgIEFuZHJlIE1vcmVp
cmEgTWFnYWxoYWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CiAKICAgICAg
ICAgQWRqdXN0IGludGVybmFsIHNpemUgb24gZ3N0cmVhbWVyIHNvdXJjZSBlbGVtZW50IHdoZW4g
cmVjZWl2aW5nIGRhdGEgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTkxYWQyYWQ5Y2Y3MzdiODU1ZmY4YjE0
OGExZjM2NjdhYjY3Yzg4YS4uZTFiZDU0OTI2ODdlYTc4M2EwMDAyMDhlMzdlNjYyMzcwNmEzMDNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTk2OSw2ICsxOTY5LDcgQEAKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8q
IElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0
ZUxpc3QudHh0ICovOyB9OwogCQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFw
c2hvdHRpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0UzMERBNzE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0g
Ki87IH07CiAJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBE
QTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0Q3NDFCREExNzcyMjZBQTAw
ODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFE
NyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEy
NiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYg
LyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYx
NyAvKiBQdXJnZVByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MDczLDYg
KzYwNzQsNyBAQAogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE7CiAJCQlmaWxlcyA9ICgKIAkJCQk1
REY3RjVDMjBGMDFGOTJBMDA1MjZCNEIgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIENvcHkgR2Vu
ZXJhdGVkIEhlYWRlcnMgKi8sCisJCQkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1Zh
bHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLAogCQkJCTg1MzhGMDMw
MEFENzFDREIwMDZBODFEMSAvKiBET01BYnN0cmFjdFZpZXcuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovLAogCQkJCTFDMTFDQ0JDMEFBNjA5MzcwMERBREIyMCAvKiBET01BdHRyLmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQkyRTJEOTlFQjEwRTJCRDM5MDA0OTYzMzcg
LyogRE9NQmxvYi5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGI3YWRm
ODdmNmE1MmFhODY1ZDM3MDQ2OGQ0YTJjNjg5ZjIyOTU1MmYuLmIyZWQyODIxYWE3ZjQzNTlhYjc3
NmQwM2E5ZGU0ZDA1ZGYwMjE3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgc3RhdGljIGNv
bnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAKIGNvbnN0IHVuc2ln
bmVkIG51bUNvbXB1dGVkUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgoY29tcHV0ZWRQcm9w
ZXJ0aWVzKTsKIAotc3RhdGljIGludCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUpCitzdGF0
aWMgQ1NTVmFsdWVJRCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUpCiB7CiAgICAgc3dpdGNo
IChydWxlKSB7CiAgICAgICAgIGNhc2UgUmVwZWF0SW1hZ2VSdWxlOgpAQCAtMTI2MCwxMSArMTI2
MCwxMSBAQCB2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dChjb25z
dCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUjsKIH0KIAotc3RhdGljIGludCBjc3NJZGVudGlmaWVyRm9yRm9udFNpemVLZXl3
b3JkKGludCBrZXl3b3JkU2l6ZSkKK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc0lkZW50aWZpZXJGb3JG
b250U2l6ZUtleXdvcmQoaW50IGtleXdvcmRTaXplKQogewogICAgIEFTU0VSVF9BUkcoa2V5d29y
ZFNpemUsIGtleXdvcmRTaXplKTsKICAgICBBU1NFUlRfQVJHKGtleXdvcmRTaXplLCBrZXl3b3Jk
U2l6ZSA8PSA4KTsKLSAgICByZXR1cm4gQ1NTVmFsdWVYeFNtYWxsICsga2V5d29yZFNpemUgLSAx
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZVh4U21hbGwgKyBr
ZXl3b3JkU2l6ZSAtIDEpOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQo
KSBjb25zdApAQCAtMTMxNCw3ICsxMzE0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2gKICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBpbnQgaWRlbnRpZmllckZvckZh
bWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBDU1NWYWx1ZUlEIGlkZW50
aWZpZXJGb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgaWYgKGZh
bWlseSA9PSBjdXJzaXZlRmFtaWx5KQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVDdXJzaXZlOwpA
QCAtMTMyOCwxMiArMTMyOCwxMiBAQCBzdGF0aWMgaW50IGlkZW50aWZpZXJGb3JGYW1pbHkoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVNhbnNTZXJp
ZjsKICAgICBpZiAoZmFtaWx5ID09IHNlcmlmRmFtaWx5KQogICAgICAgICByZXR1cm4gQ1NTVmFs
dWVTZXJpZjsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQog
CiBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JGYW1pbHkoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7Ci0gICAgaWYgKGludCBmYW1pbHlJZGVudGlmaWVy
ID0gaWRlbnRpZmllckZvckZhbWlseShmYW1pbHkpKQorICAgIGlmIChDU1NWYWx1ZUlEIGZhbWls
eUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yRmFtaWx5KGZhbWlseSkpCiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmFtaWx5SWRlbnRpZmllcik7
CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGZhbWlseS5zdHJpbmcoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KaW5kZXggYTk2NjM3OWVkYzlkNDc3ZGExNTA0ZGQ0ZGEzM2UyNDU3OWIzMjUwZC4uNzM4
NTM4Nzk3ZTZkYTI1OWZlMjAyZGEwNTg2Yjg1MmMxMzAzZGFiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55LmluCkBAIC04NzQsOSArODc0LDkgQEAga2V5X2xpc3Q6CiAgICAgOwogCiBrZXk6
Ci0gICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsgJCQuaXNJ
bnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSOyB9CisgICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7
ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAk
MSAqICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KICAgICB8
IElERU5UIHsKLSAgICAgICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7CisgICAgICAgICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVI7CiAgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7CiAgICAgICAgIGlm
IChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkKICAgICAgICAgICAgICQkLmZWYWx1ZSA9
IDA7CkBAIC0xNjU0LDcgKzE2NTQsNyBAQCB2YWxpZF9leHByOgogICAgICAgICBpZiAoJCQpIHsK
ICAgICAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7
Ci0gICAgICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICAgICAgdi5pZCA9IENTU1Zh
bHVlSW52YWxpZDsKICAgICAgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3Bl
cmF0b3I7CiAgICAgICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAgICAgICAgICAgICAgICAk
JC0+YWRkVmFsdWUodik7CkBAIC0xNjgzLDIyICsxNjgzLDIyIEBAIG9wZXJhdG9yOgogdGVybToK
ICAgdW5hcnlfdGVybSBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KICAgfCB1bmFyeV9vcGVyYXRv
ciB1bmFyeV90ZXJtIG1heWJlX3NwYWNlIHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9Ci0g
IHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9CisgIHwgU1RSSU5HIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0KICAgfCBJREVOVCBtYXliZV9zcGFjZSB7
CiAgICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKICAgICAgICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwogICAgICAgJCQuc3RyaW5nID0gJDE7CiAgIH0K
ICAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZyb20gYSBk
aW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2VzICQkLnN0
cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCi0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9
IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1F
TlNJT047IH0KLSAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVO
U0lPTjsgfQotICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNPREVSQU5H
RSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KLSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJjb2xvcjog
IzsiICovCisgIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsg
JCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lP
TjsgfQorICB8IHVuYXJ5X29wZXJhdG9yIERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSBDU1NW
YWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19ESU1FTlNJT047IH0KKyAgfCBVUkkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENTU1ZhbHVl
SW52YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VSSTsgfQorICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VU5JQ09ERV9SQU5HRTsgfQorICB8IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEFSU0VSX0hFWENPTE9SOyB9CisgIHwgJyMnIG1heWJlX3NwYWNlIHsgJCQuaWQgPSBDU1NWYWx1
ZUludmFsaWQ7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6
ICJjb2xvcjogIzsiICovCiAgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgY2xvc2lu
Z19wYXJlbnRoZXNpcyBtYXliZV9zcGFjZSB7CiAjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMKLSAg
ICAgICQkLmlkID0gMDsKKyAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgJCQu
c3RyaW5nID0gJDM7CiAgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJ
QUJMRV9OQU1FOwogI2VuZGlmCkBAIC0xNzE0LDQ2ICsxNzE0LDQ2IEBAIHRlcm06CiAgICAgICAk
JCA9ICQxOwogICB9CiAgIHwgJyUnIG1heWJlX3NwYWNlIHsgLyogSGFuZGxlIHdpZHRoOiAlOyAq
LwotICAgICAgJCQuaWQgPSAwOyAkJC51bml0ID0gMDsKKyAgICAgICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC51bml0ID0gMDsKICAgfQogICA7CiAKIHVuYXJ5X3Rlcm06Ci0gIElOVEVHRVIg
eyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gdHJ1ZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICB8IEZMT0FUVE9LRU4geyAkJC5pZCA9
IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgfCBQRVJDRU5UQUdFIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsg
fQotICB8IFBYUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYOyB9Ci0gIHwgQ01TIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007IH0KLSAgfCBNTVMgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19N
TTsgfQotICB8IElOUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyB9Ci0gIHwgUFRTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ7IH0KLSAgfCBQQ1MgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QQzsgfQotICB8IERFR1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KLSAgfCBSQURTIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOyB9Ci0gIHwg
R1JBRFMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19HUkFEOyB9Ci0gIHwgVFVSTlMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOOyB9Ci0gIHwgTVNFQ1MgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19NUzsgfQotICB8IFNFQ1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9Ci0gIHwgSEVSVFogeyAkJC5pZCA9IDA7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19IWjsgfQotICB8IEtI
RVJUWiB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0tIWjsgfQotICB8IEVNUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQotICB8IFFFTVMgeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OlFfRU1TOyB9Ci0g
IHwgRVhTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRVhTOyB9CisgIElOVEVHRVIgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsg
JCQuaXNJbnQgPSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgRkxPQVRUT0tFTiB7ICQkLmlkID0gQ1NTVmFsdWVJbnZh
bGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgUEVSQ0VOVEFHRSB7ICQkLmlkID0gQ1NTVmFs
dWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRTsgfQorICB8IFBYUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0KKyAgfCBD
TVMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9CisgIHwgTU1TIHsgJCQuaWQgPSBDU1NWYWx1ZUlu
dmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19N
TTsgfQorICB8IElOUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47IH0KKyAgfCBQVFMgeyAkJC5pZCA9
IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BUOyB9CisgIHwgUENTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsgfQorICB8IERF
R1MgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQorICB8IFJBRFMgeyAkJC5pZCA9IENTU1ZhbHVl
SW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1JBRDsgfQorICB8IEdSQURTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEOyB9CisgIHwgVFVSTlMg
eyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KKyAgfCBNU0VDUyB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TVM7IH0KKyAgfCBTRUNTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9CisgIHwgSEVSVFogeyAkJC5p
ZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0haOyB9CisgIHwgS0hFUlRaIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19LSFo7IH0K
KyAgfCBFTVMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQorICB8IFFFTVMgeyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6
UV9FTVM7IH0KKyAgfCBFWFMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQogICB8IFJFTVMgewot
ICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAk
JC5mVmFsdWUgPSAkMTsKICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JF
TVM7CiAgICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQpCiAgICAgICAgICAgcGFyc2VyLT5t
X3N0eWxlU2hlZXQtPnBhcnNlclNldFVzZXNSZW1Vbml0cyh0cnVlKTsKICAgfQotICB8IENIUyB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0NIUzsgfQotICB8IFZXIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVlc7IH0KLSAgfCBWSCB7ICQkLmlkID0gMDsgJCQuZlZh
bHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZIOyB9Ci0gIHwgVk1J
TiB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZNSU47IH0KLSAgfCBWTUFYIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1BWDsgfQotICB8IERQUFggeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBY
OyB9Ci0gIHwgRFBJIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBJOyB9Ci0gIHwgRFBDTSB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KKyAgfCBDSFMg
eyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0NIUzsgfQorICB8IFZXIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFs
aWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WVzsg
fQorICB8IFZIIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQorICB8IFZNSU4geyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZNSU47IH0KKyAgfCBWTUFYIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WTUFYOyB9CisgIHwg
RFBQWCB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDsgfQorICB8IERQSSB7ICQkLmlkID0gQ1NTVmFs
dWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfRFBJOyB9CisgIHwgRFBDTSB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTTsgfQogICA7CiAKIGZ1
bmN0aW9uOgpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgZnVuY3Rpb246CiAgICAgICAgIENTU1BhcnNl
ckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CiAgICAgICAg
IGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1ZhbHVl
SW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAg
ICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0gfApAQCAtMTc3MCw3ICsxNzcwLDcgQEAgZnVu
Y3Rpb246CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0
KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CiAgICAgICAg
IGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCh2YWx1ZUxpc3QpOwotICAg
ICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAg
ICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwogICAgICAgICAkJC5mdW5jdGlv
biA9IGY7CiAgICAgfSB8CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBmdW5jdGlvbjoKICAgICAgICAg
Q1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsK
ICAgICAgICAgZi0+bmFtZSA9ICQxOwogICAgICAgICBmLT5hcmdzID0gbnVsbHB0cjsKLSAgICAg
ICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAg
JCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICAgICAgJCQuZnVuY3Rpb24g
PSBmOwogICB9CkBAIC0xNzg4LDcgKzE3ODgsNyBAQCBjYWxjX2Z1bmNfdGVybToKICAgdW5hcnlf
dGVybSB7ICQkID0gJDE7IH0KICAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCBjbG9z
aW5nX3BhcmVudGhlc2lzIHsKICNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUwotICAgICAgJCQuaWQg
PSAwOworICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAkJC5zdHJpbmcgPSAk
MzsKICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7
CiAjZW5kaWYKQEAgLTE4MjEsNyArMTgyMSw3IEBAIGNhbGNfZnVuY19wYXJlbl9leHByOgogICAg
ICAgICBpZiAoJDMpIHsKICAgICAgICAgICAgICQkID0gJDM7CiAgICAgICAgICAgICBDU1NQYXJz
ZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICB2LmlkID0gQ1NT
VmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJh
dG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7CiAgICAgICAgICAgICAkJC0+aW5zZXJ0
VmFsdWVBdCgwLCB2KTsKQEAgLTE4NDYsNyArMTg0Niw3IEBAIHZhbGlkX2NhbGNfZnVuY19leHBy
OgogICAgICAgICBpZiAoJDEgJiYgJDIpIHsKICAgICAgICAgICAgICQkID0gJDE7CiAgICAgICAg
ICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAg
ICB2LmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2Vy
VmFsdWU6Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAgICAgICAgICAg
ICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4NTksNyArMTg1OSw3IEBAIHZhbGlkX2NhbGNfZnVuY19l
eHByOgogICAgICAgICBpZiAoJDEgJiYgJDIgJiYgJDMpIHsKICAgICAgICAgICAgICQkID0gJDE7
CiAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Cisg
ICAgICAgICAgICB2LmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAg
ICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4NzgsNyArMTg3OCw3IEBAIGNhbGNfZnVu
Y19leHByX2xpc3Q6CiAgICAgICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgJCQgPSAk
MTsKICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0gMDsK
KyAgICAgICAgICAgIHYuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAgICAgICB2LnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CiAgICAgICAgICAgICB2LmlWYWx1ZSA9ICcsJzsK
ICAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4OTMsNyArMTg5Myw3IEBAIGNhbGNf
ZnVuY3Rpb246CiAgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ0Z1bmN0aW9uKCk7CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJn
cyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAw
OworICAgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENT
U1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0K
QEAgLTE5MTcsNyArMTkxNyw3IEBAIG1pbl9vcl9tYXhfZnVuY3Rpb246CiAgICAgICAgIENTU1Bh
cnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CiAgICAg
ICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1Zh
bHVlSW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsK
ICAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IGU1ZDRkYTQ5MDQ3NGM5YTljODIwNTZiOWYxMjYwYjAzYTU4OWM4MjAuLjIyNTNmMzA3
MjhlODQxMWYwZGE5ODNjMTZjNzE3OGNhNTA2YWNmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKE11dGFi
bGVTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgQ1NTUGFyc2VyU3RyaW5nIGNzc1N0cmluZzsKICAgICBjc3NTdHJp
bmcuaW5pdChzdHJpbmcpOwotICAgIGludCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoY3Nz
U3RyaW5nKTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NT
dHJpbmcpOwogICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQpCiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
QEAgLTExOTQsNyArMTE5NCw3IEBAIHN0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVlKE11dGFi
bGVTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJCiAKICAgICBDU1NQ
YXJzZXJTdHJpbmcgY3NzU3RyaW5nOwogICAgIGNzc1N0cmluZy5pbml0KHN0cmluZyk7Ci0gICAg
aW50IHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworICAgIENTU1ZhbHVl
SUQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKGNzc1N0cmluZyk7CiAKICAgICBpZiAoIXZh
bHVlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3ODQsNyArMTc4NCw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjp2YWxpZEhlaWdodChDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiAgICAgcmV0dXJu
ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcpOwog
fQogCi1pbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbGlkUHJpbWl0aXZlKGludCBpZGVudGlmaWVyLCBDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCitp
bmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbGlk
UHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRlbnRpZmllciwgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlKQog
ewogICAgIGlmIChpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpOwpAQCAtMTg0Miw3ICsxODQyLDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRvIGF2b2lkIGhhdmluZyB0byBwYXNzIHBhcnNl
ZENhbGMgdG8gYWxsIHZhbGlkVW5pdCBjYWxsZXJzLgogICAgIEFTU0VSVCghbV9wYXJzZWRDYWxj
dWxhdGlvbik7CiAgICAgCi0gICAgaW50IGlkID0gdmFsdWUtPmlkOworICAgIENTU1ZhbHVlSUQg
aWQgPSB2YWx1ZS0+aWQ7CiAKICAgICBpbnQgbnVtID0gaW5TaG9ydGhhbmQoKSA/IDEgOiBtX3Zh
bHVlTGlzdC0+c2l6ZSgpOwogCkBAIC0zNzYzLDYgKzM3NjMsOCBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VDb250ZW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1h
bDoKICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZSh2YWwtPmlkKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAodmFsLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7CiAgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKHZhbCk7CkBAIC0zODA3LDcgKzM4MDks
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0cihDU1NQYXJzZXJW
YWx1ZUxpc3QqIGFyZ3MpCiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VC
YWNrZ3JvdW5kQ29sb3IoKQogewotICAgIGludCBpZCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCkt
PmlkOworICAgIENTU1ZhbHVlSUQgaWQgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZDsKICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IChpZCA+PSBDU1NWYWx1ZUFxdWEgJiYg
aWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUgfHwgaWQgPT0g
Q1NTVmFsdWVDdXJyZW50Y29sb3IgfHwKICAgICAgICAgKGlkID49IENTU1ZhbHVlR3JleSAmJiBp
ZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiBpblF1aXJrc01vZGUoKSkpCiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWQpOwpAQCAtMzg3Myw3ICsz
ODc1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlv
blkoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QKIAogUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQYXJzZXJW
YWx1ZUxpc3QqIHZhbHVlTGlzdCwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmlsbFBvc2l0
aW9uRmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlIHBhcnNpbmdN
b2RlKQogewotICAgIGludCBpZCA9IHZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZDsKKyAgICBDU1NW
YWx1ZUlEIGlkID0gdmFsdWVMaXN0LT5jdXJyZW50KCktPmlkOwogICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBp
ZCA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAgICAgICBp
bnQgcGVyY2VudCA9IDA7CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0g
Q1NTVmFsdWVSaWdodCkgewpAQCAtMzk5NywxMiArMzk5OSwxMiBAQCB2b2lkIENTU1BhcnNlcjo6
cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBS
ZWZQdHI8QwogICAgIHZhbHVlTGlzdC0+bmV4dCgpOwogCiAgICAgYm9vbCBzd2FwTmVlZGVkID0g
ZmFsc2U7Ci0gICAgaW50IGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+Z2V0SWRlbnQoKTsKLSAgICBp
bnQgaWRlbnQyID0gcGFyc2VkVmFsdWUyLT5nZXRJZGVudCgpOwotICAgIGludCBpZGVudDMgPSB2
YWx1ZTMtPmdldElkZW50KCk7CisgICAgQ1NTVmFsdWVJRCBpZGVudDEgPSBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUlEPihwYXJzZWRWYWx1ZTEtPmdldElkZW50KCkpOworICAgIENTU1ZhbHVlSUQgaWRl
bnQyID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4ocGFyc2VkVmFsdWUyLT5nZXRJZGVudCgpKTsK
KyAgICBDU1NWYWx1ZUlEIGlkZW50MyA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHZhbHVlMy0+
Z2V0SWRlbnQoKSk7CiAKLSAgICBpbnQgZmlyc3RQb3NpdGlvbktleXdvcmQ7Ci0gICAgaW50IHNl
Y29uZFBvc2l0aW9uS2V5d29yZDsKKyAgICBDU1NWYWx1ZUlEIGZpcnN0UG9zaXRpb25LZXl3b3Jk
OworICAgIENTU1ZhbHVlSUQgc2Vjb25kUG9zaXRpb25LZXl3b3JkOwogCiAgICAgaWYgKGlkZW50
MSA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAgICAgICAvLyA8cG9zaXRpb24+IHJlcXVpcmVzIHRo
ZSBmaXJzdCAnY2VudGVyJyB0byBiZSBmb2xsb3dlZCBieSBhIGtleXdvcmQuCkBAIC00MDY4LDgg
KzQwNzAsOCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1Bh
cnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8QwogI2lmbmRlZiBOREVCVUcKICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlMS5nZXQoKSk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUyLmdldCgpKTsKLSAgICBpZGVudDEgPSBmaXJz
dC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldElkZW50KCk7Ci0gICAgaWRlbnQyID0gc2Vj
b25kLT5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKS0+Z2V0SWRlbnQoKTsKKyAgICBpZGVudDEgPSBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihmaXJzdC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdl
dElkZW50KCkpOworICAgIGlkZW50MiA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHNlY29uZC0+
Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldElkZW50KCkpOwogICAgIEFTU0VSVChpZGVudDEg
PT0gQ1NTVmFsdWVMZWZ0IHx8IGlkZW50MSA9PSBDU1NWYWx1ZVJpZ2h0KTsKICAgICBBU1NFUlQo
aWRlbnQyID09IENTU1ZhbHVlQm90dG9tIHx8IGlkZW50MiA9PSBDU1NWYWx1ZVRvcCk7CiAjZW5k
aWYKQEAgLTQxODksNyArNDE5MSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTJWYWx1ZXNGaWxs
UG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAKIHZvaWQg
Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQ
dHI8Q1NTVmFsdWU+JiB2YWx1ZTIpCiB7Ci0gICAgaW50IGlkID0gbV92YWx1ZUxpc3QtPmN1cnJl
bnQoKS0+aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCktPmlk
OwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdFgpIHsKICAgICAgICAgbV9pbXBsaWNpdFNo
b3J0aGFuZCA9IHRydWU7CiAgICAgICAgIHZhbHVlMSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJlcGVhdCk7CkBAIC00MjI1LDcgKzQyMjcsNyBAQCB2b2lk
IENTU1BhcnNlcjo6cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVm
UHRyPENTU1ZhbHVlPiYgdmFsdQogCiAgICAgLy8gSWYgb25seSBvbmUgdmFsdWUgd2FzIHNwZWNp
ZmllZCwgdmFsdWUyIGlzIHRoZSBzYW1lIGFzIHZhbHVlMS4KICAgICBtX2ltcGxpY2l0U2hvcnRo
YW5kID0gdHJ1ZTsKLSAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTEuZ2V0KCkpLT5nZXRJ
ZGVudCgpKTsKKyAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZTEuZ2V0KCkpLT5nZXRJZGVudCgpKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxs
b3dDb21tYSkKQEAgLTQ1MTksNyArNDUyMSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb25QYXJzZUNvbnRleHQmIGNvCiAg
ICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBp
ZiAodmFsdWUtPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgaW50IHJlc3VsdCA9IGNzc1Byb3BlcnR5SUQodmFsdWUtPnN0cmluZyk7
CisgICAgQ1NTUHJvcGVydHlJRCByZXN1bHQgPSBjc3NQcm9wZXJ0eUlEKHZhbHVlLT5zdHJpbmcp
OwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUocmVzdWx0KTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUs
ICJhbGwiKSkgewpAQCAtNTAxOCw3ICs1MDIwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywgYm8K
ICAgICAgICAgaWYgKGktPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKICAg
ICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGludCBsaXN0U3R5bGVJRCA9IDA7CisgICAg
ICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSUQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAgIGlm
IChpLT5pZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGktPmlkID49IENTU1ZhbHVlRGlzYyAmJiBpLT5p
ZCA8PSBDU1NWYWx1ZUthdGFrYW5hSXJvaGEpKQogICAgICAgICAgICAgbGlzdFN0eWxlSUQgPSBp
LT5pZDsKICAgICAgICAgZWxzZQpAQCAtNTU1Nyw3ICs1NTU5LDcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5KCkKIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUxpbmVIZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZh
bHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICBpbnQgaWQgPSB2YWx1ZS0+aWQ7Cisg
ICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlLT5pZDsKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0g
ZmFsc2U7CiAgICAgLy8gbm9ybWFsIHwgPG51bWJlcj4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdl
PiB8IGluaGVyaXQKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC01NTcyLDcgKzU1
NzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMaW5lSGVpZ2h0KGJvb2wgaW1wb3J0YW50KQog
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFNpemUoYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NT
UGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICBpbnQgaWQg
PSB2YWx1ZS0+aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlLT5pZDsKICAgICBib29sIHZh
bGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgLy8gPGFic29sdXRlLXNpemU+IHwgPHJlbGF0aXZl
LXNpemU+IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgaWYgKGlkID49
IENTU1ZhbHVlWHhTbWFsbCAmJiBpZCA8PSBDU1NWYWx1ZUxhcmdlcikKQEAgLTU2NDEsNyArNTY0
Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBDU1NRdWlya3NNb2Rl
KSkgewogICAgICAgICBpbnQgd2VpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZS0+ZlZhbHVl
KTsKICAgICAgICAgaWYgKCEod2VpZ2h0ICUgMTAwKSAmJiB3ZWlnaHQgPj0gMTAwICYmIHdlaWdo
dCA8PSA5MDApIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdo
dCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlMTAwICsgd2Vp
Z2h0IC8gMTAwIC0gMSksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShz
dGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZTEwMCArIHdlaWdodCAvIDEwMCAtIDEpKSwg
aW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtNzIzOCw3ICs3MjQwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VEZXByZWNhdGVkR3JhZGllbnRD
b2xvclN0b3AoQ1NTUGFyc2VyKiBwLCBDU1NQYXJzZXJWYWx1ZSogYSwgQ1MKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogCi0gICAgICAgIGludCBpZCA9
IGFyZ3MtPmN1cnJlbnQoKS0+aWQ7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLT5jdXJy
ZW50KCktPmlkOwogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IChpZCA+
PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NW
YWx1ZU1lbnUpCiAgICAgICAgICAgICBzdG9wLm1fY29sb3IgPSBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoaWQpOwogICAgICAgICBlbHNlCkBAIC03MjY1LDcgKzcyNjcsNyBA
QCBzdGF0aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXIq
IHAsIENTU1BhcnNlclZhbHVlKiBhLCBDUwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIHN0b3BBcmcgPSBhcmdzLT5uZXh0KCk7Ci0gICAgICAgIGludCBpZCA9IHN0b3BBcmct
PmlkOworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gc3RvcEFyZy0+aWQ7CiAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQgfHwgKGlkID49IENTU1ZhbHVlQXF1YSAmJiBpZCA8PSBD
U1NWYWx1ZVdpbmRvd3RleHQpIHx8IGlkID09IENTU1ZhbHVlTWVudSkKICAgICAgICAgICAgIHN0
b3AubV9jb2xvciA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZCk7CiAg
ICAgICAgIGVsc2UKQEAgLTc0MzIsNyArNzQzNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB2YWx1ZUZyb21TaWRlS2V5d29yZChDU1NQYXJzZXJWYWx1ZSogYSwgYm9v
CiAKIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUdyYWRpZW50Q29s
b3JPcktleXdvcmQoQ1NTUGFyc2VyKiBwLCBDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiB7Ci0gICAg
aW50IGlkID0gdmFsdWUtPmlkOworICAgIENTU1ZhbHVlSUQgaWQgPSB2YWx1ZS0+aWQ7CiAgICAg
aWYgKGlkID09IENTU1ZhbHVlV2Via2l0VGV4dCB8fCAoaWQgPj0gQ1NTVmFsdWVBcXVhICYmIGlk
IDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgaWQgPT0gQ1NTVmFsdWVNZW51IHx8IGlkID09IENT
U1ZhbHVlQ3VycmVudGNvbG9yKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGlkKTsKIApAQCAtNzU3NCw2ICs3NTc2LDggQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCogdmFs
dWVMaXN0LCBSZWYKICAgICAgICAgICAgIHNpemVWYWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShhLT5pZCk7CiAgICAgICAgICAgICBmb3VuZFZhbHVlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZm91bmRWYWx1ZSkgewpAQCAtOTQ0MCw2ICs5NDQ0
LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVGV4dFVuZGVybGluZVBvc2l0aW9uKGJvb2wgaW1w
b3J0YW50KQogCiAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVy
bGluZVBvc2l0aW9uLCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodmFsdWUt
PmlkKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTEyMDY3LDcgKzEy
MDczLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmlld3BvcnRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaW50IGlkID0gdmFsdWUtPmlkOworICAgIENTU1ZhbHVlSUQgaWQg
PSB2YWx1ZS0+aWQ7CiAgICAgYm9vbCB2YWxpZFByaW1pdGl2ZSA9IGZhbHNlOwogCiAgICAgc3dp
dGNoIChwcm9wSWQpIHsKQEAgLTEyMjIwLDE0ICsxMjIyNiwxNCBAQCB2b2lkIGNzc1Byb3BlcnR5
TmFtZUlPU0FsaWFzaW5nKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHBy
b3BlcnR5TgogI2VuZGlmCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3Rh
dGljIGludCBjc3NWYWx1ZUtleXdvcmRJRChjb25zdCBDaGFyYWN0ZXJUeXBlKiB2YWx1ZUtleXdv
cmQsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElE
KGNvbnN0IENoYXJhY3RlclR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIGNoYXIgYnVmZmVyW21heENTU1ZhbHVlS2V5d29yZExlbmd0aCArIDEgKyAxXTsgLy8gMSB0
byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQiLCAxIGZvciBudWxsIGNoYXJhY3Rl
cgogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgewogICAgICAg
ICBDaGFyYWN0ZXJUeXBlIGMgPSB2YWx1ZUtleXdvcmRbaV07CiAgICAgICAgIGlmIChjID09IDAg
fHwgYyA+PSAweDdGKQotICAgICAgICAgICAgcmV0dXJuIDA7IC8vIGlsbGVnYWwgY2hhcmFjdGVy
CisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOyAvLyBpbGxlZ2FsIGNoYXJhY3Rl
cgogICAgICAgICBidWZmZXJbaV0gPSBXVEY6OnRvQVNDSUlMb3dlcihjKTsKICAgICB9CiAgICAg
YnVmZmVyW2xlbmd0aF0gPSAnXDAnOwpAQCAtMTIyNDMsMTYgKzEyMjQ5LDE2IEBAIHN0YXRpYyBp
bnQgY3NzVmFsdWVLZXl3b3JkSUQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdmFsdWVLZXl3b3JkLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgfQogCiAgICAgY29uc3QgVmFsdWUqIGhhc2hUYWJsZUVudHJ5
ID0gZmluZFZhbHVlKGJ1ZmZlciwgbGVuZ3RoKTsKLSAgICByZXR1cm4gaGFzaFRhYmxlRW50cnkg
PyBoYXNoVGFibGVFbnRyeS0+aWQgOiAwOworICAgIHJldHVybiBoYXNoVGFibGVFbnRyeSA/IHN0
YXRpY19jYXN0PENTU1ZhbHVlSUQ+KGhhc2hUYWJsZUVudHJ5LT5pZCkgOiBDU1NWYWx1ZUludmFs
aWQ7CiB9CiAKLWludCBjc3NWYWx1ZUtleXdvcmRJRChjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHN0
cmluZykKK0NTU1ZhbHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoY29uc3QgQ1NTUGFyc2VyU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAg
IGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVl
SW52YWxpZDsKICAgICBpZiAobGVuZ3RoID4gbWF4Q1NTVmFsdWVLZXl3b3JkTGVuZ3RoKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKIAogICAgIHJl
dHVybiBzdHJpbmcuaXM4Qml0KCkgPyBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcuY2hhcmFjdGVy
czgoKSwgbGVuZ3RoKSA6IGNzc1ZhbHVlS2V5d29yZElEKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwg
bGVuZ3RoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBjMTMxNTA0NzJmMzQ1YWY3N2U3
NTc3YWQ4NTdlZmRjMjRjMDI3MmE2Li41OWIwZjA3NTQ3NzNjZWU3YTE2OGU0ZDYyODE4MWQ3YzMx
MmIwMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC05Niw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0g
ZmFsc2UpOwogICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1
ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZVZhbGlkUHJpbWl0aXZlKGludCBpZGVudCwg
Q1NTUGFyc2VyVmFsdWUqKTsKKyAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJz
ZVZhbGlkUHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRlbnQsIENTU1BhcnNlclZhbHVlKik7CiAgICAg
Ym9vbCBwYXJzZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgY29uc3QgU3Ry
aW5nJiwgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4sIFN0eWxlU2hlZXRDb250ZW50cyog
Y29udGV4dFN0eWxlU2hlZXQpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQ+IHBhcnNlSW5saW5lU3R5bGVEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmLCBF
bGVtZW50Kik7CiAgICAgUGFzc093blB0cjxNZWRpYVF1ZXJ5PiBwYXJzZU1lZGlhUXVlcnkoY29u
c3QgU3RyaW5nJik7CkBAIC02ODEsNyArNjgyLDcgQEAgcHJpdmF0ZToKIAogQ1NTUHJvcGVydHlJ
RCBjc3NQcm9wZXJ0eUlEKGNvbnN0IENTU1BhcnNlclN0cmluZyYpOwogQ1NTUHJvcGVydHlJRCBj
c3NQcm9wZXJ0eUlEKGNvbnN0IFN0cmluZyYpOwotaW50IGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0
IENTU1BhcnNlclN0cmluZyYpOworQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChjb25zdCBD
U1NQYXJzZXJTdHJpbmcmKTsKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIGNzc1Byb3BlcnR5TmFt
ZUlPU0FsaWFzaW5nKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHByb3Bl
cnR5TmFtZUFsaWFzLCB1bnNpZ25lZCYgbmV3TGVuZ3RoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclZhbHVlcy5oCmluZGV4IDE4Zjc2ZTE0NTlmODA0MWM5OTIwZjQwOGI1NmY1YzFk
MTdjNTA2NzUuLjFmZDk1MzRhYWQ1OTMzMjYwNWU0OTM4YmRkMGMzNjdhOWZiZGQ4ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUg
Q1NTUGFyc2VyVmFsdWVzX2gKIAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMTA5LDcgKzExMCw3IEBAIHN0cnVjdCBDU1NQYXJzZXJTdHJpbmcgewogc3RydWN0IENT
U1BhcnNlckZ1bmN0aW9uOwogCiBzdHJ1Y3QgQ1NTUGFyc2VyVmFsdWUgewotICAgIGludCBpZDsK
KyAgICBDU1NWYWx1ZUlEIGlkOwogICAgIGJvb2wgaXNJbnQ7CiAgICAgdW5pb24gewogICAgICAg
ICBkb3VibGUgZlZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
UG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBmZDk4
MGM0ZDNlYzc5ZDMxNjhiYmJhMGJmOWE4MmQ0OWM3Zjc0ODEwLi4xMjRhYmM3YzlmZGRhOGEyMGE5
MDEzOWY5ZDY0OTQwNWE0NGJiNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcApA
QCAtNDksOSArNDksOSBAQCBDU1NWYWx1ZVBvb2w6OkNTU1ZhbHVlUG9vbCgpCiB7CiB9CiAKLVBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmll
clZhbHVlKGludCBpZGVudCkKK1Bhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVl
UG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSUQgaWRlbnQpCiB7Ci0gICAgaWYg
KGlkZW50IDw9IDAgfHwgaWRlbnQgPj0gbnVtQ1NTVmFsdWVLZXl3b3JkcykKKyAgICBpZiAoaWRl
bnQgPD0gMCkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKGlkZW50KTsKIAogICAgIGlmICghbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtpZGVudF0pCkBA
IC01OSw2ICs1OSwxMSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBv
b2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpbnQgaWRlbnQpCiAgICAgcmV0dXJuIG1faWRlbnRp
ZmllclZhbHVlQ2FjaGVbaWRlbnRdOwogfQogCitQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NQcm9wZXJ0eUlEIGlkZW50
KQoreworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVu
dCk7Cit9CisKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3Jl
YXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSkKIHsKICAgICAvLyBUaGVzZSBhcmUgdGhl
IGVtcHR5IGFuZCBkZWxldGVkIHZhbHVlcyBvZiB0aGUgaGFzaCB0YWJsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZVBvb2wuaAppbmRleCA0NWQ2MjBmZmIyZWExMDM2MTgxMjcxOTk1YmMzYmRhZjE1ZDA5
OTQ2Li40MjFkNzRkNmU2OGZlMDI1NjlhYzI0MjFjMDY5OTM4YWEwZDQ3Yzk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTSW5oZXJp
dGVkVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFz
aC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00Niw3ICs0Nyw4IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPENTU0luaGVyaXRlZFZhbHVlPiBjcmVhdGVJbmhlcml0ZWRWYWx1ZSgp
IHsgcmV0dXJuIG1faW5oZXJpdGVkVmFsdWU7IH0KICAgICBQYXNzUmVmUHRyPENTU0luaXRpYWxW
YWx1ZT4gY3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVybiBtX2ltcGxpY2l0SW5p
dGlhbFZhbHVlOyB9CiAgICAgUGFzc1JlZlB0cjxDU1NJbml0aWFsVmFsdWU+IGNyZWF0ZUV4cGxp
Y2l0SW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gbV9leHBsaWNpdEluaXRpYWxWYWx1ZTsgfQotICAg
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpbnQg
aWRlbnRpZmllcik7CisgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlSUQgaWRlbnRpZmllcik7CisgICAgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Byb3BlcnR5SUQgaWRlbnRp
Zmllcik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29sb3JWYWx1
ZSh1bnNpZ25lZCByZ2JWYWx1ZSk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsK
ICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggNzI4OWJkODkyM2YwNmRlNWQzYTI5YWVmNjdjZTVl
ZTE2NjgyNmY2Ny4uZDZhYTMzMTg0OGE1NmE0N2UyNzBjNmJhMGVjNGVmNjViYmJjNGE4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNzI3LDcgKzcyNywxMyBA
QCB2b2lkIE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpzZXRQcmVmaXhpbmdWYXJpYW50UHJvcGVy
dHkoY29uc3QgQ1NTUHJvcGVydHkmIHBybwogICAgICAgICAqdG9SZXBsYWNlID0gQ1NTUHJvcGVy
dHkocHJlZml4aW5nVmFyaWFudCwgcHJvcGVydHkudmFsdWUoKSwgcHJvcGVydHkuaXNJbXBvcnRh
bnQoKSwgcHJvcGVydHkuc2hvcnRoYW5kSUQoKSwgcHJvcGVydHkubWV0YWRhdGEoKS5tX2ltcGxp
Y2l0KTsKIH0KIAotYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQpCiti
b29sIE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAg
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpLCBpbXBvcnRhbnQpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0
YW50KQogewogICAgIHNldFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SUQsIGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZGVudGlmaWVyKSwgaW1wb3J0YW50KSk7CiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCBi
MzA3YzVjMTNlZjI1N2RiODdiODQ0NDIzMDA0Mjc5ODc5M2Y3MjMzLi41MzAxNjllMDJlNzUyNWMz
NGYwMmNiZTU4ZjIzN2VjMjY3YzljNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgor
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC0yMDEsNyArMjAyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1wb3J0YW50ID0gZmFsc2Up
OwogCiAgICAgLy8gVGhlc2UgZG8gbm90LiBGSVhNRTogVGhpcyBpcyB0b28gbWVzc3ksIHdlIGNh
biBkbyBiZXR0ZXIuCi0gICAgYm9vbCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBpbnQgaWRl
bnRpZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgYm9vbCBzZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50ID0gZmFs
c2UpOworICAgIGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCBp
ZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICB2b2lkIGFwcGVuZFByZWZp
eGluZ1ZhcmlhbnRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYpOwogICAgIHZvaWQgc2V0UHJl
Zml4aW5nVmFyaWFudFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5Jik7CiAgICAgdm9pZCBzZXRQ
cm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYsIENTU1Byb3BlcnR5KiBzbG90ID0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggZTZhNmRhN2NlMWUyMzNjMjFmOTk3ODBk
MTMyNDUyODJkOTg3ODFiMS4uZTk2OTNkZGQxZDA0MWYzY2Y3MDM2ZTE2MTEyODEyMGFkZDM4ZWY0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNywxNCBA
QCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmlubGluZVN0eWxlQ2hhbmdlZCgpCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKGRvY3VtZW50KCksIHRoaXMp
OwogfQogICAgIAotYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50KQor
Ym9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCkKK3sKKyAg
ICBlbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgY3Nz
VmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpLCBpbXBvcnRhbnQp
OworICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBDU1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50KQogewogICAg
IGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmllciksIGltcG9ydGFudCk7
CiAgICAgaW5saW5lU3R5bGVDaGFuZ2VkKCk7CkBAIC0zNjYsNyArMzczLDcgQEAgdm9pZCBTdHls
ZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKQogICAgICAgICBj
YWNoZUl0ZXJhdG9yLT52YWx1ZSA9IG5ld0VudHJ5LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBTdHls
ZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGludCBp
ZGVudGlmaWVyKQordm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllcikKIHsKICAgICBzdHlsZS0+c2V0
UHJvcGVydHkocHJvcGVydHlJRCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KGlkZW50aWZpZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDVmZTMy
NDYwZTIwODRjYjU5N2UxNzMzYjc1YThiODdkZTY5ZWJkNzguLjdhMjcyMDAxZGQzYmNlYjBiODlk
Y2ZkZTRmNGQyYjY3OTQyZmQ5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsOCBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBpbmxpbmVTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIGVsZW1lbnREYXRhKCkgPyBlbGVtZW50RGF0YSgpLT5tX2lubGluZVN0eWxl
LmdldCgpIDogMDsgfQogICAgIAotICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAg
Ym9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRl
bnRpZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgYm9vbCBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgaWRlbnRpZmllciwgYm9vbCBp
bXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcywgYm9v
bCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2Up
OwogICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKQEAg
LTcwLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllcik7Cisg
ICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0
eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIpOwog
ICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVT
dHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgZG91YmxlIHZhbHVlLCBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzKTsKICAgICB2b2lkIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggYWRkNTM0NTAyMDlkYzM1ZTAyODU3ZjM1MTkzZGQyMTgzYTBlNThhNS4uYmZmYzk1
NGFkYzY1MDgxOTI0NTI5NWEzYWM2YmVhYWFkOTViMzY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IEhUTUxGb250U2l6ZUVxdWl2YWxlbnQ6OmF0dHJpYnV0ZVZhbHVlQXNDU1NWYWx1ZShFbGVt
ZW50KiBlCiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmli
dXRlKG1fYXR0ck5hbWUpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpbnQgc2l6ZTsKKyAgICBD
U1NWYWx1ZUlEIHNpemU7CiAgICAgaWYgKCFIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJvbUZv
bnRTaXplTnVtYmVyKGVsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2F0dHJOYW1lKSwgc2l6ZSkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcihzaXplKTsKQEAgLTkyNyw5ICs5MjcsOSBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cHJl
cGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNlcnZlV3Jp
dAogICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKHVuaWNvZGVCaWRpICYmIHVuaWNvZGVCaWRpLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5p
Y29kZUJpZGkuZ2V0KCkpLT5nZXRJZGVudCgpKTsKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+
KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRJ
ZGVudCgpKSk7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gJiYgZGlyZWN0aW9uLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCi0gICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9u
LmdldCgpKS0+Z2V0SWRlbnQoKSk7CisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdldCgpKS0+Z2V0SWRlbnQoKSkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5k
ZXggMDJlNGUxNGQyYmFjMWY0MjM2OTkyNzNmYTYwNTQ5YWU1NzFmZDBlNi4uODQ2MTVkM2I2OTIx
NmE1YmMzMjRmNzQ0NjZmODg5NmJhMmU0YWVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUFw
cGx5U3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFj
dGkKICAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBhY3Rpb24s
IHN0eWxlLmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUq
IGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IHByb3BlcnR5VmFsdWUpCitzdGF0aWMgYm9vbCBl
eGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNl
LCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBDU1NWYWx1ZUlE
IHByb3BlcnR5VmFsdWUpCiB7CiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0
UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CkBAIC00MjAsNyArNDIwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY28KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUZvbnRTaXplKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZTsKKyAgICBDU1NWYWx1ZUlEIHNpemU7CiAgICAg
aWYgKCFIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKHZhbHVlLCBz
aXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBleGVjdXRlQXBwbHlTdHls
ZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uQ2hhbmdlQXR0cmlidXRlcywgQ1NTUHJvcGVydHlG
b250U2l6ZSwgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDM0NDli
M2IzNTM2OTQ5ZjI1ZWVhZGY0YzA3M2Y1YWY5ZGMyMDUzYzMuLjVlZWVkNWU0MTMyY2JmNzBlYWJl
ZjYzYzMxZTUxM2UyOTA2YjYzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBA
IC0xMjcsNyArMTI3LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6aWVGb3JiaWRzSW5zZXJ0SFRNTCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW5saW5lIGludCB1bmljb2Rl
QmlkaUF0dHJpYnV0ZUZvckRpckF1dG8oSFRNTEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgaW5s
aW5lIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRvKEhUTUxFbGVtZW50
KiBlbGVtZW50KQogewogICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5hbWUocHJlVGFnKSB8fCBl
bGVtZW50LT5oYXNMb2NhbE5hbWUodGV4dGFyZWFUYWcpKQogICAgICAgICByZXR1cm4gQ1NTVmFs
dWVXZWJraXRQbGFpbnRleHQ7CkBAIC02MDIsOCArNjAyLDggQEAgdm9pZCBIVE1MRWxlbWVudDo6
YXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21pY1N0cmluZyYgYWxpZ25t
ZW50LAogewogICAgIC8vIFZlcnRpY2FsIGFsaWdubWVudCB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1
cnJlbnQgYmFzZWxpbmUgb2YgdGhlIHRleHQKICAgICAvLyByaWdodCBvciBsZWZ0IG1lYW5zIGZs
b2F0aW5nIGltYWdlcy4KLSAgICBpbnQgZmxvYXRWYWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKLSAg
ICBpbnQgdmVydGljYWxBbGlnblZhbHVlID0gQ1NTVmFsdWVJbnZhbGlkOworICAgIENTU1ZhbHVl
SUQgZmxvYXRWYWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKKyAgICBDU1NWYWx1ZUlEIHZlcnRpY2Fs
QWxpZ25WYWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKIAogICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhbGlnbm1lbnQsICJhYnNtaWRkbGUiKSkKICAgICAgICAgdmVydGljYWxBbGlnblZhbHVlID0g
Q1NTVmFsdWVNaWRkbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5k
ZXggZjA1MDczYWY0NGQ4MWU2ZjVhOTRiZDg4NDFlYzJjNzVkYzVmY2U0Ni4uMzI1NDNhNzRlMDY1
Mzk3OTM1YjI2MmY1Y2I2MGZjY2E4OWVlMThkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBib29sIHBhcnNlRm9udFNp
emUoY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50JiBzaXplKQogICAgIHJldHVybiBwYXJzZUZvbnRT
aXplKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgoKSwgc2l6ZSk7CiB9CiAKLWJv
b2wgSFRNTEZvbnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250U2l6ZU51bWJlcihjb25zdCBTdHJp
bmcmIHMsIGludCYgc2l6ZSkKK2Jvb2wgSFRNTEZvbnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250
U2l6ZU51bWJlcihjb25zdCBTdHJpbmcmIHMsIENTU1ZhbHVlSUQmIHNpemUpCiB7CiAgICAgaW50
IG51bSA9IDA7CiAgICAgaWYgKCFwYXJzZUZvbnRTaXplKHMsIG51bSkpCkBAIC0xODksNyArMTg5
LDcgQEAgYm9vbCBIVE1MRm9udEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB2b2lkIEhUTUxGb250RWxlbWVudDo6Y29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBzdHls
ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzaXplQXR0cikgewotICAgICAgICBpbnQgc2l6ZSA9IDA7
CisgICAgICAgIENTU1ZhbHVlSUQgc2l6ZSA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgaWYg
KGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKHZhbHVlLCBzaXplKSkKICAgICAgICAgICAgIGFk
ZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlG
b250U2l6ZSwgc2l6ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbG9yQXR0cikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCmluZGV4IGIyZGMwYmU1MmY2YWVkOWQwOGYzZjlh
NmY2NWVhNjE2MGQ4MzUzMTUuLjBkOTAyMGQ1ZTE3ZmZmMDQ1YzZjOTk4ZTg5Nzc3NDg5NTNkZTE3
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBA
QCBjbGFzcyBIVE1MRm9udEVsZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb250RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIAotICAgIHN0YXRpYyBib29sIGNzc1Zh
bHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYsIGludCYpOworICAgIHN0YXRpYyBi
b29sIGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYsIENTU1ZhbHVlSUQm
KTsKIAogcHJpdmF0ZToKICAgICBIVE1MRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRl
eCA3YTRhOGEzOTEwYTE0OGMxZmQ0YWNjNTZkMGRiMmNhMGI4NzJhNmMxLi4xZGM5Y2FlZjI3N2Qz
MWRmNzk2ODkwOWMzMDA1NWJlMWNiNzA4ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cgogICAgIH0KIH0KIAotc3RhdGljIFN0eWxlUHJvcGVydHlTZXQqIGxlYWtCb3JkZXJTdHlsZShp
bnQgdmFsdWUpCitzdGF0aWMgU3R5bGVQcm9wZXJ0eVNldCogbGVha0JvcmRlclN0eWxlKENTU1Zh
bHVlSUQgdmFsdWUpCiB7CiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHls
ZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDViZDU2NDEyZTk1N2ZlMmEyYmVmMjhk
MjJmNzZkY2Q2ZjUwMzlhMTMuLjM4ZjJlYWEwZjZlYWM5Njk4NzgzMmE5YTc2ZmNmMTExN2FlYTc2
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTEx
MjYsMTIgKzExMjYsMTIgQEAgTmV4dFNldHRpbmc6CiAjZW5kaWYKIH0KIAotaW50IFRleHRUcmFj
a0N1ZTo6Z2V0Q1NTV3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0CitDU1NWYWx1ZUlEIFRleHRUcmFj
a0N1ZTo6Z2V0Q1NTV3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGlz
cGxheURpcmVjdGlvbjsKIH0KIAotaW50IFRleHRUcmFja0N1ZTo6Z2V0Q1NTV3JpdGluZ01vZGUo
KSBjb25zdAorQ1NTVmFsdWVJRCBUZXh0VHJhY2tDdWU6OmdldENTU1dyaXRpbmdNb2RlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9kaXNwbGF5V3JpdGluZ01vZGU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA3MjRlNzhiZTA1ZmEwYTk1OTBhZjVmMjZj
YmU2M2Y0YWI1ZjQ2Y2QxLi42MGUzZmFlYjk5ZWEwZjVkNDVmMDNhMGM2YjBiZTU2NmQzOTNkZTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTE1OSw4ICsx
NTksOCBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBnZXRDU1NQb3Np
dGlvbigpIGNvbnN0OwogCiAgICAgaW50IGdldENTU1NpemUoKSBjb25zdDsKLSAgICBpbnQgZ2V0
Q1NTV3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0OwotICAgIGludCBnZXRDU1NXcml0aW5nTW9kZSgp
IGNvbnN0OworICAgIENTU1ZhbHVlSUQgZ2V0Q1NTV3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0Owor
ICAgIENTU1ZhbHVlSUQgZ2V0Q1NTV3JpdGluZ01vZGUoKSBjb25zdDsKIAogICAgIGVudW0gV3Jp
dGluZ0RpcmVjdGlvbiB7CiAgICAgICAgIEhvcml6b250YWwsCkBAIC0yNjksMTAgKzI2OSwxMCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZTsKICAgICBSZWZQ
dHI8VGV4dFRyYWNrQ3VlQm94PiBtX2Rpc3BsYXlUcmVlOwogCi0gICAgaW50IG1fZGlzcGxheURp
cmVjdGlvbjsKKyAgICBDU1NWYWx1ZUlEIG1fZGlzcGxheURpcmVjdGlvbjsKIAotICAgIGludCBt
X2Rpc3BsYXlXcml0aW5nTW9kZU1hcFtOdW1iZXJPZldyaXRpbmdEaXJlY3Rpb25zXTsKLSAgICBp
bnQgbV9kaXNwbGF5V3JpdGluZ01vZGU7CisgICAgQ1NTVmFsdWVJRCBtX2Rpc3BsYXlXcml0aW5n
TW9kZU1hcFtOdW1iZXJPZldyaXRpbmdEaXJlY3Rpb25zXTsKKyAgICBDU1NWYWx1ZUlEIG1fZGlz
cGxheVdyaXRpbmdNb2RlOwogCiAgICAgaW50IG1fZGlzcGxheVNpemU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205030</attachid>
            <date>2013-06-19 13:19:24 -0700</date>
            <delta_ts>2013-06-19 13:46:40 -0700</delta_ts>
            <desc>with benjamin&apos;s comments</desc>
            <filename>bug-117481-20130619171733.patch</filename>
            <type>text/plain</type>
            <size>50425</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I4NmRhYjZiNWQ2YTVh
ZTQ4ZmRlZjc1ZjRhMGY5MjYyZTYzYzkyNC4uMGRjMzZhZDg4NjE3NWJmZDA4ZjA5Mjg3YTRkNmFm
MTkwMzNhOTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEzLTA2LTE5ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHVz
ZSBDU1NWYWx1ZUlEIGFuZCBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFuIGludGVnZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0ODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgZW5z
dXJlIHRoYXQgdHlwZXMgYXJlIGVuZm9yY2VkIHdoZW4gcGFzc2luZyBhcmd1bWVudHMgaW4gdmFy
aW91cworICAgICAgICBjc3MgZnVuY3Rpb25zLiBIYXZpbmcgYSBjb21waWxlIHRpbWUgY2hlY2sg
bWFrZSBzdXJlIHRoYXQgbm8gbWlzdGFrZXMKKyAgICAgICAgd2lsbCBiZSBkb25lIG92ZXIgdGhl
IHR5cGUuCisKKyAgICAgICAgVGhlIHBhcnNlciB3YXMgYWxzbyBwYXRjaGVkIHRvIGRpcmVjdGx5
IHVzZSBDU1NWYWx1ZUlEIG92ZXIgaW50ZWdlcnMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBm
aXhlcyB2YXJpb3VzIGNhbGwgc2l0ZXMgYWJ1c2luZyB0aGUgdXNhZ2Ugb2YgaW50ZWdlcnMuCisg
ICAgICAgIFRoaXMgaXMgcGFydCAxIG9mIDIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIDogZXhp
c3Rpbmcgb25lcyBzaG91bGQgY292ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IGNvcHkgQ1NTVmFsdWVLZXl3b3Jkcy5oIGFzIGl0IGNvdWxkIGJlIHVz
ZWQgaW4gV2ViS2l0LyBmb3IgZXhhbXBsZS4KKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yUmVwZWF0UnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpjc3NJZGVudGlmaWVyRm9yRm9udFNpemVLZXl3b3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlkZW50aWZpZXJGb3JGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6
dmFsdWVGb3JGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb25Db21w
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb3VudGVyQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpjcmVhdGVGb250V2VpZ2h0VmFsdWVLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VGb250V2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGVwcmVjYXRl
ZEdyYWRpZW50Q29sb3JTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlR3JhZGllbnRDb2xv
ck9yS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRl
ZFJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmV3cml0ZVNw
ZWNpZmllcnMpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyVmFsdWVzLmg6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1ZhbHVlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBv
b2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlUG9vbC5o
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuaDoKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZSk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udFNp
emVFcXVpdmFsZW50OjphdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KToKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvbnRTaXplKToKKyAgICAgICAgKiBodG1sL0hUTUxF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGly
QXV0byk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YXBwbHlBbGlnbm1lbnRBdHRy
aWJ1dGVUb1N0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb250RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb250RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb250RWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjps
ZWFrQm9yZGVyU3R5bGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q1NTV3JpdGluZ0RpcmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldENTU1dyaXRpbmdNb2RlKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorCiAyMDEzLTA2LTE5ICBBbmRyZSBN
b3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgogCiAg
ICAgICAgIEFkanVzdCBpbnRlcm5hbCBzaXplIG9uIGdzdHJlYW1lciBzb3VyY2UgZWxlbWVudCB3
aGVuIHJlY2VpdmluZyBkYXRhIGlmIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU5MWFkMmFkOWNmNzM3Yjg1NWZm
OGIxNDhhMWYzNjY3YWI2N2M4OGEuLmUxYmQ1NDkyNjg3ZWE3ODNhMDAwMjA4ZTM3ZTY2MjM3MDZh
MzAzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE5NjksNiArMTk2OSw3IEBACiAJCTdDQzdFM0Q3MTcyMDhDMEYwMDNDNTI3
NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0
V2hpdGVMaXN0LnR4dCAqLzsgfTsKIAkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1l
U25hcHNob3R0aW5nTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovOyB9OwogCQk3Q0UzMERBQTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRp
bmdNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdENzQxQkRBMTc3MjI2
QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0ODA5RDEzMDQzMDAw
RTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovOyB9OwogCQk3RTEyRTkwRjE1RkE1RDNBMDA1
RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAqLzsgfTsKIAkJN0UxMkU5MTAxNUZBNUQzQTAwNUU0
MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwICovOyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBEMDBC
RThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjA3
Myw2ICs2MDc0LDcgQEAKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSAxOwogCQkJZmlsZXMgPSAoCiAJ
CQkJNURGN0Y1QzIwRjAxRjkyQTAwNTI2QjRCIC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovLAorCQkJCTdENzQxQkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBD
U1NWYWx1ZUtleXdvcmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQk4NTM4
RjAzMDBBRDcxQ0RCMDA2QTgxRDEgLyogRE9NQWJzdHJhY3RWaWV3LmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLywKIAkJCQkxQzExQ0NCQzBBQTYwOTM3MDBEQURCMjAgLyogRE9NQXR0ci5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8sCiAJCQkJMkUyRDk5RUIxMEUyQkQzOTAwNDk2
MzM3IC8qIERPTUJsb2IuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBi
N2FkZjg3ZjZhNTJhYTg2NWQzNzA0NjhkNGEyYzY4OWYyMjk1NTJmLi5iMmVkMjgyMWFhN2Y0MzU5
YWI3NzZkMDNhOWRlNGQwNWRmMDIxNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRp
YyBjb25zdCBDU1NQcm9wZXJ0eUlEIGNvbXB1dGVkUHJvcGVydGllc1tdID0gewogCiBjb25zdCB1
bnNpZ25lZCBudW1Db21wdXRlZFByb3BlcnRpZXMgPSBXVEZfQVJSQVlfTEVOR1RIKGNvbXB1dGVk
UHJvcGVydGllcyk7CiAKLXN0YXRpYyBpbnQgdmFsdWVGb3JSZXBlYXRSdWxlKGludCBydWxlKQor
c3RhdGljIENTU1ZhbHVlSUQgdmFsdWVGb3JSZXBlYXRSdWxlKGludCBydWxlKQogewogICAgIHN3
aXRjaCAocnVsZSkgewogICAgICAgICBjYXNlIFJlcGVhdEltYWdlUnVsZToKQEAgLTEyNjAsMTEg
KzEyNjAsMTEgQEAgdm9pZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQo
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgZWMgPSBOT19NT0RJRklDQVRJ
T05fQUxMT1dFRF9FUlI7CiB9CiAKLXN0YXRpYyBpbnQgY3NzSWRlbnRpZmllckZvckZvbnRTaXpl
S2V5d29yZChpbnQga2V5d29yZFNpemUpCitzdGF0aWMgQ1NTVmFsdWVJRCBjc3NJZGVudGlmaWVy
Rm9yRm9udFNpemVLZXl3b3JkKGludCBrZXl3b3JkU2l6ZSkKIHsKICAgICBBU1NFUlRfQVJHKGtl
eXdvcmRTaXplLCBrZXl3b3JkU2l6ZSk7CiAgICAgQVNTRVJUX0FSRyhrZXl3b3JkU2l6ZSwga2V5
d29yZFNpemUgPD0gOCk7Ci0gICAgcmV0dXJuIENTU1ZhbHVlWHhTbWFsbCArIGtleXdvcmRTaXpl
IC0gMTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oQ1NTVmFsdWVYeFNtYWxs
ICsga2V5d29yZFNpemUgLSAxKTsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3
b3JkKCkgY29uc3QKQEAgLTEzMTQsNyArMTMxNCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNo
CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgaW50IGlkZW50aWZpZXJG
b3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitzdGF0aWMgQ1NTVmFsdWVJRCBp
ZGVudGlmaWVyRm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogewogICAgIGlm
IChmYW1pbHkgPT0gY3Vyc2l2ZUZhbWlseSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQ3Vyc2l2
ZTsKQEAgLTEzMjgsMTIgKzEzMjgsMTIgQEAgc3RhdGljIGludCBpZGVudGlmaWVyRm9yRmFtaWx5
KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVTYW5z
U2VyaWY7CiAgICAgaWYgKGZhbWlseSA9PSBzZXJpZkZhbWlseSkKICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlU2VyaWY7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsK
IH0KIAogc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yRmFtaWx5
KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogewotICAgIGlmIChpbnQgZmFtaWx5SWRlbnRp
ZmllciA9IGlkZW50aWZpZXJGb3JGYW1pbHkoZmFtaWx5KSkKKyAgICBpZiAoQ1NTVmFsdWVJRCBm
YW1pbHlJZGVudGlmaWVyID0gaWRlbnRpZmllckZvckZhbWlseShmYW1pbHkpKQogICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGZhbWlseUlkZW50aWZp
ZXIpOwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShmYW1pbHkuc3RyaW5n
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCmluZGV4IGE5NjYzNzllZGM5ZDQ3N2RhMTUwNGRkNGRhMzNlMjQ1NzliMzI1MGQu
LjczODUzODc5N2U2ZGEyNTlmZTIwMmRhMDU4NmI4NTJjMTMwM2RhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueS5pbgpAQCAtODc0LDkgKzg3NCw5IEBAIGtleV9saXN0OgogICAgIDsKIAog
a2V5OgotICAgIG1heWJlX3VuYXJ5X29wZXJhdG9yIFBFUkNFTlRBR0UgeyAkJC5pZCA9IDA7ICQk
LmlzSW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxICogJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQorICAgIG1heWJlX3VuYXJ5X29wZXJhdG9yIFBFUkNFTlRB
R0UgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVl
ID0gJDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CiAg
ICAgfCBJREVOVCB7Ci0gICAgICAgICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOworICAgICAgICAkJC5pZCA9IENTU1Zh
bHVlSW52YWxpZDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSOwogICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOwogICAgICAg
ICBpZiAoc3RyLmVxdWFsSWdub3JpbmdDYXNlKCJmcm9tIikpCiAgICAgICAgICAgICAkJC5mVmFs
dWUgPSAwOwpAQCAtMTY1NCw3ICsxNjU0LDcgQEAgdmFsaWRfZXhwcjoKICAgICAgICAgaWYgKCQk
KSB7CiAgICAgICAgICAgICBpZiAoJDIpIHsKICAgICAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1
ZSB2OwotICAgICAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgICAgIHYuaWQgPSBD
U1NWYWx1ZUludmFsaWQ7CiAgICAgICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yOwogICAgICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7CiAgICAgICAgICAgICAg
ICAgJCQtPmFkZFZhbHVlKHYpOwpAQCAtMTY4MywyMiArMTY4MywyMiBAQCBvcGVyYXRvcjoKIHRl
cm06CiAgIHVuYXJ5X3Rlcm0gbWF5YmVfc3BhY2UgeyAkJCA9ICQxOyB9CiAgIHwgdW5hcnlfb3Bl
cmF0b3IgdW5hcnlfdGVybSBtYXliZV9zcGFjZSB7ICQkID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsg
fQotICB8IFNUUklORyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzsgfQorICB8IFNUUklORyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9CiAgIHwgSURFTlQgbWF5YmVfc3Bh
Y2UgewogICAgICAgJCQuaWQgPSBjc3NWYWx1ZUtleXdvcmRJRCgkMSk7CiAgICAgICAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVDsKICAgICAgICQkLnN0cmluZyA9ICQxOwog
ICB9CiAgIC8qIFdlIG1pZ2h0IG5lZWQgdG8gYWN0dWFsbHkgcGFyc2UgdGhlIG51bWJlciBmcm9t
IGEgZGltZW5zaW9uLCBidXQgd2UgY2FuJ3QganVzdCBwdXQgc29tZXRoaW5nIHRoYXQgdXNlcyAk
JC5zdHJpbmcgaW50byB1bmFyeV90ZXJtLiAqLwotICB8IERJTUVOIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RElNRU5TSU9OOyB9Ci0gIHwgdW5hcnlfb3BlcmF0b3IgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19E
SU1FTlNJT047IH0KLSAgfCBVUkkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkk7IH0KLSAgfCBVTklDT0RF
UkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTklDT0RFX1JBTkdFOyB9Ci0gIHwgSEVYIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9Ci0gIHwgJyMnIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmcoKTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8qIEhhbmRsZSBlcnJvciBjYXNlOiAiY29s
b3I6ICM7IiAqLworICB8IERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFs
aWQ7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1F
TlNJT047IH0KKyAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0g
Q1NTVmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRElNRU5TSU9OOyB9CisgIHwgVVJJIG1heWJlX3NwYWNlIHsgJCQuaWQgPSBDU1NW
YWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19VUkk7IH0KKyAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENTU1Zh
bHVlSW52YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VOSUNPREVfUkFOR0U7IH0KKyAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENTU1Zh
bHVlSW52YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfQorICB8ICcjJyBtYXliZV9zcGFjZSB7ICQkLmlkID0gQ1NT
VmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmcoKTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8qIEhhbmRsZSBlcnJvciBj
YXNlOiAiY29sb3I6ICM7IiAqLwogICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UIGNs
b3NpbmdfcGFyZW50aGVzaXMgbWF5YmVfc3BhY2UgewogI2lmIEVOQUJMRV9DU1NfVkFSSUFCTEVT
Ci0gICAgICAkJC5pZCA9IDA7CisgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAg
ICQkLnN0cmluZyA9ICQzOwogICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VkFSSUFCTEVfTkFNRTsKICNlbmRpZgpAQCAtMTcxNCw0NiArMTcxNCw0NiBAQCB0ZXJtOgogICAg
ICAgJCQgPSAkMTsKICAgfQogICB8ICclJyBtYXliZV9zcGFjZSB7IC8qIEhhbmRsZSB3aWR0aDog
JTsgKi8KLSAgICAgICQkLmlkID0gMDsgJCQudW5pdCA9IDA7CisgICAgICAkJC5pZCA9IENTU1Zh
bHVlSW52YWxpZDsgJCQudW5pdCA9IDA7CiAgIH0KICAgOwogCiB1bmFyeV90ZXJtOgotICBJTlRF
R0VSIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IHRydWU7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgfCBGTE9BVFRPS0VOIHsgJCQu
aWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Ci0gIHwgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0U7IH0KLSAgfCBQWFMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWDsgfQotICB8IENNUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9Ci0gIHwgTU1TIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTU07IH0KLSAgfCBJTlMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjsgfQotICB8IFBUUyB7ICQkLmlkID0gMDsgJCQuZlZh
bHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOyB9Ci0gIHwgUENT
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEM7IH0KLSAgfCBERUdTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOyB9Ci0gIHwgUkFEUyB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRDsgfQot
ICB8IEdSQURTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfR1JBRDsgfQotICB8IFRVUk5TIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVFVSTjsgfQotICB8IE1TRUNT
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTVM7IH0KLSAgfCBTRUNTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUzsgfQotICB8IEhFUlRaIHsgJCQuaWQgPSAwOyAk
JC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSFo7IH0KLSAg
fCBLSEVSVFogeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19LSFo7IH0KLSAgfCBFTVMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7IH0KLSAgfCBRRU1TIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpRX0VNUzsg
fQotICB8IEVYUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQorICBJTlRFR0VSIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFs
aWQ7ICQkLmlzSW50ID0gdHJ1ZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQorICB8IEZMT0FUVE9LRU4geyAkJC5pZCA9IENTU1ZhbHVl
SW52YWxpZDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQorICB8IFBFUkNFTlRBR0UgeyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0U7IH0KKyAgfCBQWFMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOyB9Cisg
IHwgQ01TIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTTsgfQorICB8IE1NUyB7ICQkLmlkID0gQ1NTVmFs
dWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTU07IH0KKyAgfCBJTlMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyB9CisgIHwgUFRTIHsgJCQu
aWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QVDsgfQorICB8IFBDUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAk
JC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7IH0KKyAg
fCBERUdTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KKyAgfCBSQURTIHsgJCQuaWQgPSBDU1NW
YWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19SQUQ7IH0KKyAgfCBHUkFEUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDsgfQorICB8IFRV
Uk5TIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOOyB9CisgIHwgTVNFQ1MgeyAkJC5pZCA9IENTU1Zh
bHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX01TOyB9CisgIHwgU0VDUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUzsgfQorICB8IEhFUlRaIHsg
JCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19IWjsgfQorICB8IEtIRVJUWiB7ICQkLmlkID0gQ1NTVmFsdWVJbnZh
bGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfS0ha
OyB9CisgIHwgRU1TIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7IH0KKyAgfCBRRU1TIHsgJCQuaWQg
PSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUGFyc2VyVmFs
dWU6OlFfRU1TOyB9CisgIHwgRVhTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KICAgfCBSRU1T
IHsKLSAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAg
ICAgJCQuZlZhbHVlID0gJDE7CiAgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19SRU1TOwogICAgICAgaWYgKHBhcnNlci0+bV9zdHlsZVNoZWV0KQogICAgICAgICAgIHBhcnNl
ci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRVc2VzUmVtVW5pdHModHJ1ZSk7CiAgIH0KLSAgfCBD
SFMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19DSFM7IH0KLSAgfCBWVyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZXOyB9Ci0gIHwgVkggeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQotICB8
IFZNSU4geyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19WTUlOOyB9Ci0gIHwgVk1BWCB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZNQVg7IH0KLSAgfCBEUFBYIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RFBQWDsgfQotICB8IERQSSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQSTsgfQotICB8IERQQ00geyAkJC5pZCA9IDA7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUENNOyB9CisgIHwg
Q0hTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DSFM7IH0KKyAgfCBWVyB7ICQkLmlkID0gQ1NTVmFsdWVJ
bnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
Vlc7IH0KKyAgfCBWSCB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkg7IH0KKyAgfCBWTUlOIHsgJCQuaWQg
PSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19WTUlOOyB9CisgIHwgVk1BWCB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAk
JC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1BWDsgfQor
ICB8IERQUFggeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFg7IH0KKyAgfCBEUEkgeyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0RQSTsgfQorICB8IERQQ00geyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZh
bHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KICAgOwog
CiBmdW5jdGlvbjoKQEAgLTE3NjEsNyArMTc2MSw3IEBAIGZ1bmN0aW9uOgogICAgICAgICBDU1NQ
YXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwogICAg
ICAgICBmLT5uYW1lID0gJDE7CiAgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGlu
Z1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQuaWQgPSBDU1NW
YWx1ZUludmFsaWQ7CiAgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247
CiAgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKICAgICB9IHwKQEAgLTE3NzAsNyArMTc3MCw3IEBA
IGZ1bmN0aW9uOgogICAgICAgICBmLT5uYW1lID0gJDE7CiAgICAgICAgIENTU1BhcnNlclZhbHVl
TGlzdCogdmFsdWVMaXN0ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwogICAg
ICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QodmFsdWVMaXN0KTsK
LSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAg
ICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICAgICAgJCQuZnVu
Y3Rpb24gPSBmOwogICAgIH0gfApAQCAtMTc3OCw3ICsxNzc4LDcgQEAgZnVuY3Rpb246CiAgICAg
ICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9u
KCk7CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJncyA9IG51bGxwdHI7Ci0g
ICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAg
ICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CiAgICAgICAgICQkLmZ1bmN0
aW9uID0gZjsKICAgfQpAQCAtMTc4OCw3ICsxNzg4LDcgQEAgY2FsY19mdW5jX3Rlcm06CiAgIHVu
YXJ5X3Rlcm0geyAkJCA9ICQxOyB9CiAgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQg
Y2xvc2luZ19wYXJlbnRoZXNpcyB7CiAjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMKLSAgICAgICQk
LmlkID0gMDsKKyAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgJCQuc3RyaW5n
ID0gJDM7CiAgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9O
QU1FOwogI2VuZGlmCkBAIC0xODIxLDcgKzE4MjEsNyBAQCBjYWxjX2Z1bmNfcGFyZW5fZXhwcjoK
ICAgICAgICAgaWYgKCQzKSB7CiAgICAgICAgICAgICAkJCA9ICQzOwogICAgICAgICAgICAgQ1NT
UGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi5pZCA9
IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpP
cGVyYXRvcjsKICAgICAgICAgICAgIHYuaVZhbHVlID0gJygnOwogICAgICAgICAgICAgJCQtPmlu
c2VydFZhbHVlQXQoMCwgdik7CkBAIC0xODQ2LDcgKzE4NDYsNyBAQCB2YWxpZF9jYWxjX2Z1bmNf
ZXhwcjoKICAgICAgICAgaWYgKCQxICYmICQyKSB7CiAgICAgICAgICAgICAkJCA9ICQxOwogICAg
ICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAg
ICAgICAgdi5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgICAgIHYudW5pdCA9IENTU1Bh
cnNlclZhbHVlOjpPcGVyYXRvcjsKICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7CiAgICAgICAg
ICAgICAkJC0+YWRkVmFsdWUodik7CkBAIC0xODU5LDcgKzE4NTksNyBAQCB2YWxpZF9jYWxjX2Z1
bmNfZXhwcjoKICAgICAgICAgaWYgKCQxICYmICQyICYmICQzKSB7CiAgICAgICAgICAgICAkJCA9
ICQxOwogICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAw
OworICAgICAgICAgICAgdi5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgICAgIHYudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7
CiAgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CkBAIC0xODc4LDcgKzE4NzgsNyBAQCBjYWxj
X2Z1bmNfZXhwcl9saXN0OgogICAgICAgICBpZiAoJDEgJiYgJDQpIHsKICAgICAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9
IDA7CisgICAgICAgICAgICB2LmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51
bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAn
LCc7CiAgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CkBAIC0xODkzLDcgKzE4OTMsNyBAQCBj
YWxjX2Z1bmN0aW9uOgogICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdGdW5jdGlvbigpOwogICAgICAgICBmLT5uYW1lID0gJDE7CiAgICAgICAgIGYt
PmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlk
ID0gMDsKKyAgICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAgICQkLnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CiAgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKICAg
ICB9CkBAIC0xOTE3LDcgKzE5MTcsNyBAQCBtaW5fb3JfbWF4X2Z1bmN0aW9uOgogICAgICAgICBD
U1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwog
ICAgICAgICBmLT5uYW1lID0gJDE7CiAgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9h
dGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQuaWQgPSBD
U1NWYWx1ZUludmFsaWQ7CiAgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b247CiAgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKICAgICB9IApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAppbmRleCBlNWQ0ZGE0OTA0NzRjOWE5YzgyMDU2YjlmMTI2MGIwM2E1ODljODIwLi5mMzg2
MTczNjYyOGU5MTRjODQwZTEzZWU0OWY4M2NmYjdmMzYxZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcApAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBib29sIHBhcnNlQ29sb3JWYWx1ZShN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5SUQKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIENTU1BhcnNlclN0cmluZyBjc3NTdHJpbmc7CiAgICAgY3Nz
U3RyaW5nLmluaXQoc3RyaW5nKTsKLSAgICBpbnQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElE
KGNzc1N0cmluZyk7CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQo
Y3NzU3RyaW5nKTsKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgaWYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0KQogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7CkBAIC0xMTk0LDcgKzExOTQsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUtleXdvcmRWYWx1ZShN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5SQogCiAgICAg
Q1NTUGFyc2VyU3RyaW5nIGNzc1N0cmluZzsKICAgICBjc3NTdHJpbmcuaW5pdChzdHJpbmcpOwot
ICAgIGludCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3JkSUQoY3NzU3RyaW5nKTsKKyAgICBDU1NW
YWx1ZUlEIHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOwogCiAgICAgaWYg
KCF2YWx1ZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzg0LDcgKzE3ODQsNyBAQCBi
b29sIENTU1BhcnNlcjo6dmFsaWRIZWlnaHQoQ1NTUGFyc2VyVmFsdWUqIHZhbHVlKQogICAgIHJl
dHVybiAhaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVn
KTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VWYWxpZFByaW1pdGl2ZShpbnQgaWRlbnRpZmllciwgQ1NTUGFyc2VyVmFsdWUqIHZhbHVl
KQoraW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VW
YWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50aWZpZXIsIENTU1BhcnNlclZhbHVlKiB2YWx1
ZSkKIHsKICAgICBpZiAoaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZGVudGlmaWVyKTsKQEAgLTE4NDIsNyArMTg0Miw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICAvLyBGSVhNRTogVGhpcyBpcyB0byBhdm9pZCBoYXZpbmcgdG8gcGFzcyBw
YXJzZWRDYWxjIHRvIGFsbCB2YWxpZFVuaXQgY2FsbGVycy4KICAgICBBU1NFUlQoIW1fcGFyc2Vk
Q2FsY3VsYXRpb24pOwogICAgIAotICAgIGludCBpZCA9IHZhbHVlLT5pZDsKKyAgICBDU1NWYWx1
ZUlEIGlkID0gdmFsdWUtPmlkOwogCiAgICAgaW50IG51bSA9IGluU2hvcnRoYW5kKCkgPyAxIDog
bV92YWx1ZUxpc3QtPnNpemUoKTsKIApAQCAtMzc2Myw2ICszNzYzLDggQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlQ29udGVudChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9uZToKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVO
b3JtYWw6CiAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUodmFsLT5pZCk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHZhbC0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykgewogICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBjcmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZSh2YWwpOwpAQCAtMzgwNyw3ICsz
ODA5LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUF0dHIoQ1NTUGFy
c2VyVmFsdWVMaXN0KiBhcmdzKQogCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBh
cnNlQmFja2dyb3VuZENvbG9yKCkKIHsKLSAgICBpbnQgaWQgPSBtX3ZhbHVlTGlzdC0+Y3VycmVu
dCgpLT5pZDsKKyAgICBDU1NWYWx1ZUlEIGlkID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+aWQ7
CiAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0VGV4dCB8fCAoaWQgPj0gQ1NTVmFsdWVBcXVh
ICYmIGlkIDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgaWQgPT0gQ1NTVmFsdWVNZW51IHx8IGlk
ID09IENTU1ZhbHVlQ3VycmVudGNvbG9yIHx8CiAgICAgICAgIChpZCA+PSBDU1NWYWx1ZUdyZXkg
JiYgaWQgPCBDU1NWYWx1ZVdlYmtpdFRleHQgJiYgaW5RdWlya3NNb2RlKCkpKQogICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkKTsKQEAgLTM4NzMs
NyArMzg3NSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsUG9z
aXRpb25ZKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0CiAKIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb25Db21wb25lbnQoQ1NTUGFy
c2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIHVuc2lnbmVkJiBjdW11bGF0aXZlRmxhZ3MsIEZpbGxQ
b3NpdGlvbkZsYWcmIGluZGl2aWR1YWxGbGFnLCBGaWxsUG9zaXRpb25QYXJzaW5nTW9kZSBwYXJz
aW5nTW9kZSkKIHsKLSAgICBpbnQgaWQgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+aWQ7CisgICAg
Q1NTVmFsdWVJRCBpZCA9IHZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZDsKICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlVG9wIHx8IGlkID09IENTU1ZhbHVlUmlnaHQg
fHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20gfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIpIHsKICAgICAg
ICAgaW50IHBlcmNlbnQgPSAwOwogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlk
ID09IENTU1ZhbHVlUmlnaHQpIHsKQEAgLTM5OTcsMTIgKzM5OTksMTIgQEAgdm9pZCBDU1NQYXJz
ZXI6OnBhcnNlM1ZhbHVlc0ZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlz
dCwgUmVmUHRyPEMKICAgICB2YWx1ZUxpc3QtPm5leHQoKTsKIAogICAgIGJvb2wgc3dhcE5lZWRl
ZCA9IGZhbHNlOwotICAgIGludCBpZGVudDEgPSBwYXJzZWRWYWx1ZTEtPmdldElkZW50KCk7Ci0g
ICAgaW50IGlkZW50MiA9IHBhcnNlZFZhbHVlMi0+Z2V0SWRlbnQoKTsKLSAgICBpbnQgaWRlbnQz
ID0gdmFsdWUzLT5nZXRJZGVudCgpOworICAgIENTU1ZhbHVlSUQgaWRlbnQxID0gc3RhdGljX2Nh
c3Q8Q1NTVmFsdWVJRD4ocGFyc2VkVmFsdWUxLT5nZXRJZGVudCgpKTsKKyAgICBDU1NWYWx1ZUlE
IGlkZW50MiA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHBhcnNlZFZhbHVlMi0+Z2V0SWRlbnQo
KSk7CisgICAgQ1NTVmFsdWVJRCBpZGVudDMgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPih2YWx1
ZTMtPmdldElkZW50KCkpOwogCi0gICAgaW50IGZpcnN0UG9zaXRpb25LZXl3b3JkOwotICAgIGlu
dCBzZWNvbmRQb3NpdGlvbktleXdvcmQ7CisgICAgQ1NTVmFsdWVJRCBmaXJzdFBvc2l0aW9uS2V5
d29yZDsKKyAgICBDU1NWYWx1ZUlEIHNlY29uZFBvc2l0aW9uS2V5d29yZDsKIAogICAgIGlmIChp
ZGVudDEgPT0gQ1NTVmFsdWVDZW50ZXIpIHsKICAgICAgICAgLy8gPHBvc2l0aW9uPiByZXF1aXJl
cyB0aGUgZmlyc3QgJ2NlbnRlcicgdG8gYmUgZm9sbG93ZWQgYnkgYSBrZXl3b3JkLgpAQCAtNDA2
OCw4ICs0MDcwLDggQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlM1ZhbHVlc0ZpbGxQb3NpdGlvbihD
U1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgUmVmUHRyPEMKICNpZm5kZWYgTkRFQlVHCiAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZTEuZ2V0KCkpOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMi5nZXQoKSk7Ci0gICAgaWRlbnQxID0g
Zmlyc3QtPmdldFBhaXJWYWx1ZSgpLT5maXJzdCgpLT5nZXRJZGVudCgpOwotICAgIGlkZW50MiA9
IHNlY29uZC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldElkZW50KCk7CisgICAgaWRlbnQx
ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oZmlyc3QtPmdldFBhaXJWYWx1ZSgpLT5maXJzdCgp
LT5nZXRJZGVudCgpKTsKKyAgICBpZGVudDIgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihzZWNv
bmQtPmdldFBhaXJWYWx1ZSgpLT5maXJzdCgpLT5nZXRJZGVudCgpKTsKICAgICBBU1NFUlQoaWRl
bnQxID09IENTU1ZhbHVlTGVmdCB8fCBpZGVudDEgPT0gQ1NTVmFsdWVSaWdodCk7CiAgICAgQVNT
RVJUKGlkZW50MiA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBpZGVudDIgPT0gQ1NTVmFsdWVUb3ApOwog
I2VuZGlmCkBAIC00MTg5LDcgKzQxOTEsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UyVmFsdWVz
RmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8QwogCiB2
b2lkIENTU1BhcnNlcjo6cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwg
UmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUyKQogewotICAgIGludCBpZCA9IG1fdmFsdWVMaXN0LT5j
dXJyZW50KCktPmlkOworICAgIENTU1ZhbHVlSUQgaWQgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgp
LT5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRYKSB7CiAgICAgICAgIG1faW1wbGlj
aXRTaG9ydGhhbmQgPSB0cnVlOwogICAgICAgICB2YWx1ZTEgPSBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVSZXBlYXQpOwpAQCAtNDIyNSw3ICs0MjI3LDcgQEAg
dm9pZCBDU1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEs
IFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHUKIAogICAgIC8vIElmIG9ubHkgb25lIHZhbHVlIHdhcyBz
cGVjaWZpZWQsIHZhbHVlMiBpcyB0aGUgc2FtZSBhcyB2YWx1ZTEuCiAgICAgbV9pbXBsaWNpdFNo
b3J0aGFuZCA9IHRydWU7Ci0gICAgdmFsdWUyID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUxLmdldCgpKS0+
Z2V0SWRlbnQoKSk7CisgICAgdmFsdWUyID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUxLmdldCgpKS0+Z2V0SWRlbnQoKSkpOwogfQogCiBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wm
IGFsbG93Q29tbWEpCkBAIC00NTE5LDcgKzQ1MjEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uUGFyc2VDb250ZXh0JiBj
bwogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAg
ICAgaWYgKHZhbHVlLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIGludCByZXN1bHQgPSBjc3NQcm9wZXJ0eUlEKHZhbHVlLT5zdHJp
bmcpOworICAgIENTU1Byb3BlcnR5SUQgcmVzdWx0ID0gY3NzUHJvcGVydHlJRCh2YWx1ZS0+c3Ry
aW5nKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKHJlc3VsdCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiYWxsIikpIHsKQEAgLTUwMTgsNyArNTAyMCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VDb3VudGVyQ29udGVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3Ms
IGJvCiAgICAgICAgIGlmIChpLT51bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQp
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBpbnQgbGlzdFN0eWxlSUQgPSAwOwor
ICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlEID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAg
ICBpZiAoaS0+aWQgPT0gQ1NTVmFsdWVOb25lIHx8IChpLT5pZCA+PSBDU1NWYWx1ZURpc2MgJiYg
aS0+aWQgPD0gQ1NTVmFsdWVLYXRha2FuYUlyb2hhKSkKICAgICAgICAgICAgIGxpc3RTdHlsZUlE
ID0gaS0+aWQ7CiAgICAgICAgIGVsc2UKQEAgLTU1NTcsNyArNTU1OSw3IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhbWlseSgpCiBib29sIENTU1BhcnNl
cjo6cGFyc2VMaW5lSGVpZ2h0KGJvb2wgaW1wb3J0YW50KQogewogICAgIENTU1BhcnNlclZhbHVl
KiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgaW50IGlkID0gdmFsdWUtPmlk
OworICAgIENTU1ZhbHVlSUQgaWQgPSB2YWx1ZS0+aWQ7CiAgICAgYm9vbCB2YWxpZFByaW1pdGl2
ZSA9IGZhbHNlOwogICAgIC8vIG5vcm1hbCB8IDxudW1iZXI+IHwgPGxlbmd0aD4gfCA8cGVyY2Vu
dGFnZT4gfCBpbmhlcml0CiAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQpAQCAtNTU3Miw3
ICs1NTc0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlTGluZUhlaWdodChib29sIGltcG9ydGFu
dCkKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRTaXplKGJvb2wgaW1wb3J0YW50KQogewogICAg
IENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgaW50
IGlkID0gdmFsdWUtPmlkOworICAgIENTU1ZhbHVlSUQgaWQgPSB2YWx1ZS0+aWQ7CiAgICAgYm9v
bCB2YWxpZFByaW1pdGl2ZSA9IGZhbHNlOwogICAgIC8vIDxhYnNvbHV0ZS1zaXplPiB8IDxyZWxh
dGl2ZS1zaXplPiB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAogICAgIGlmIChp
ZCA+PSBDU1NWYWx1ZVh4U21hbGwgJiYgaWQgPD0gQ1NTVmFsdWVMYXJnZXIpCkBAIC01NjMxLDYg
KzU2MzMsMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnQoYm9vbCBpbXBvcnRh
bnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgQ1NTVmFsdWVJRCBjcmVhdGVGb250
V2VpZ2h0VmFsdWVLZXl3b3JkKGludCB3ZWlnaHQpCit7CisgICAgQVNTRVJUKCEod2VpZ2h0ICUg
MTAwKSAmJiB3ZWlnaHQgPj0gMTAwICYmIHdlaWdodCA8PSA5MDApOworICAgIENTU1ZhbHVlSUQg
dmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZTEwMCArIHdlaWdodCAvIDEw
MCAtIDEpOworICAgIEFTU0VSVCh2YWx1ZSA+PSBDU1NWYWx1ZTEwMCAmJiB2YWx1ZSA8PSBDU1NW
YWx1ZTkwMCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBib29sIENTU1BhcnNlcjo6cGFyc2VG
b250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9
IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CkBAIC01NjQxLDcgKzU2NTEsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VGb250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogICAgIGlmICh2YWxpZFVuaXQo
dmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgQ1NTUXVpcmtzTW9kZSkpIHsKICAgICAgICAgaW50
IHdlaWdodCA9IHN0YXRpY19jYXN0PGludD4odmFsdWUtPmZWYWx1ZSk7CiAgICAgICAgIGlmICgh
KHdlaWdodCAlIDEwMCkgJiYgd2VpZ2h0ID49IDEwMCAmJiB3ZWlnaHQgPD0gOTAwKSB7Ci0gICAg
ICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZTEwMCArIHdlaWdodCAvIDEwMCAtIDEpLCBp
bXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0
LCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoY3JlYXRlRm9udFdlaWdodFZh
bHVlS2V5d29yZCh3ZWlnaHQpKSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQpAQCAtNzIzOCw3ICs3MjQ4LDcgQEAgc3RhdGljIGJvb2wgcGFy
c2VEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0b3AoQ1NTUGFyc2VyKiBwLCBDU1NQYXJzZXJWYWx1
ZSogYSwgQ1MKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3RvcC5tX3Bvc2l0aW9uID0gY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoMSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OwogCi0gICAgICAgIGludCBpZCA9IGFyZ3MtPmN1cnJlbnQoKS0+aWQ7CisgICAgICAgIENTU1Zh
bHVlSUQgaWQgPSBhcmdzLT5jdXJyZW50KCktPmlkOwogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVXZWJraXRUZXh0IHx8IChpZCA+PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5k
b3d0ZXh0KSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUpCiAgICAgICAgICAgICBzdG9wLm1fY29sb3Ig
PSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWQpOwogICAgICAgICBlbHNl
CkBAIC03MjY1LDcgKzcyNzUsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZURlcHJlY2F0ZWRHcmFkaWVu
dENvbG9yU3RvcChDU1NQYXJzZXIqIHAsIENTU1BhcnNlclZhbHVlKiBhLCBDUwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHN0b3BBcmcgPSBhcmdzLT5uZXh0KCk7Ci0gICAg
ICAgIGludCBpZCA9IHN0b3BBcmctPmlkOworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gc3RvcEFy
Zy0+aWQ7CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQgfHwgKGlkID49IENT
U1ZhbHVlQXF1YSAmJiBpZCA8PSBDU1NWYWx1ZVdpbmRvd3RleHQpIHx8IGlkID09IENTU1ZhbHVl
TWVudSkKICAgICAgICAgICAgIHN0b3AubV9jb2xvciA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShpZCk7CiAgICAgICAgIGVsc2UKQEAgLTc0MzIsNyArNzQ0Miw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZyb21TaWRlS2V5d29yZChD
U1NQYXJzZXJWYWx1ZSogYSwgYm9vCiAKIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBwYXJzZUdyYWRpZW50Q29sb3JPcktleXdvcmQoQ1NTUGFyc2VyKiBwLCBDU1NQYXJzZXJW
YWx1ZSogdmFsdWUpCiB7Ci0gICAgaW50IGlkID0gdmFsdWUtPmlkOworICAgIENTU1ZhbHVlSUQg
aWQgPSB2YWx1ZS0+aWQ7CiAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0VGV4dCB8fCAoaWQg
Pj0gQ1NTVmFsdWVBcXVhICYmIGlkIDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgaWQgPT0gQ1NT
VmFsdWVNZW51IHx8IGlkID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQogICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkKTsKIApAQCAtNzU3NCw2ICs3
NTg0LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENT
U1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWYKICAgICAgICAgICAgIHNpemVWYWx1ZSA9
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShhLT5pZCk7CiAgICAgICAgICAg
ICBmb3VuZFZhbHVlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZm91bmRWYWx1
ZSkgewpAQCAtOTQ0MCw2ICs5NDUyLDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVGV4dFVuZGVy
bGluZVBvc2l0aW9uKGJvb2wgaW1wb3J0YW50KQogCiAgICAgICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uLCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUodmFsdWUtPmlkKSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKIH0KQEAgLTEyMDY3LDcgKzEyMDgxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmlld3Bv
cnRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IGlkID0gdmFsdWUtPmlk
OworICAgIENTU1ZhbHVlSUQgaWQgPSB2YWx1ZS0+aWQ7CiAgICAgYm9vbCB2YWxpZFByaW1pdGl2
ZSA9IGZhbHNlOwogCiAgICAgc3dpdGNoIChwcm9wSWQpIHsKQEAgLTEyMjIwLDE0ICsxMjIzNCwx
NCBAQCB2b2lkIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5nKGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgY29uc3QgY2hhciomIHByb3BlcnR5TgogI2VuZGlmCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGludCBjc3NWYWx1ZUtleXdvcmRJRChjb25zdCBDaGFy
YWN0ZXJUeXBlKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKK3N0YXRpYyBDU1NWYWx1
ZUlEIGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENoYXJhY3RlclR5cGUqIHZhbHVlS2V5d29yZCwg
dW5zaWduZWQgbGVuZ3RoKQogewogICAgIGNoYXIgYnVmZmVyW21heENTU1ZhbHVlS2V5d29yZExl
bmd0aCArIDEgKyAxXTsgLy8gMSB0byB0dXJuICJhcHBsZSIvImtodG1sIiBpbnRvICJ3ZWJraXQi
LCAxIGZvciBudWxsIGNoYXJhY3RlcgogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBs
ZW5ndGg7ICsraSkgewogICAgICAgICBDaGFyYWN0ZXJUeXBlIGMgPSB2YWx1ZUtleXdvcmRbaV07
CiAgICAgICAgIGlmIChjID09IDAgfHwgYyA+PSAweDdGKQotICAgICAgICAgICAgcmV0dXJuIDA7
IC8vIGlsbGVnYWwgY2hhcmFjdGVyCisgICAgICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlk
OyAvLyBpbGxlZ2FsIGtleXdvcmQuCiAgICAgICAgIGJ1ZmZlcltpXSA9IFdURjo6dG9BU0NJSUxv
d2VyKGMpOwogICAgIH0KICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CkBAIC0xMjI0MywxNiAr
MTIyNTcsMTYgQEAgc3RhdGljIGludCBjc3NWYWx1ZUtleXdvcmRJRChjb25zdCBDaGFyYWN0ZXJU
eXBlKiB2YWx1ZUtleXdvcmQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB9CiAKICAgICBjb25zdCBW
YWx1ZSogaGFzaFRhYmxlRW50cnkgPSBmaW5kVmFsdWUoYnVmZmVyLCBsZW5ndGgpOwotICAgIHJl
dHVybiBoYXNoVGFibGVFbnRyeSA/IGhhc2hUYWJsZUVudHJ5LT5pZCA6IDA7CisgICAgcmV0dXJu
IGhhc2hUYWJsZUVudHJ5ID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oaGFzaFRhYmxlRW50cnkt
PmlkKSA6IENTU1ZhbHVlSW52YWxpZDsKIH0KIAotaW50IGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0
IENTU1BhcnNlclN0cmluZyYgc3RyaW5nKQorQ1NTVmFsdWVJRCBjc3NWYWx1ZUtleXdvcmRJRChj
b25zdCBDU1NQYXJzZXJTdHJpbmcmIHN0cmluZykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBz
dHJpbmcubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogICAgIGlmIChsZW5ndGggPiBtYXhDU1NWYWx1
ZUtleXdvcmRMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQ1NTVmFs
dWVJbnZhbGlkOwogCiAgICAgcmV0dXJuIHN0cmluZy5pczhCaXQoKSA/IGNzc1ZhbHVlS2V5d29y
ZElEKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpIDogY3NzVmFsdWVLZXl3b3JkSUQoc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4
IGMxMzE1MDQ3MmYzNDVhZjc3ZTc1NzdhZDg1N2VmZGMyNGMwMjcyYTYuLjU5YjBmMDc1NDc3M2Nl
ZTdhMTY4ZTRkNjI4MTgxZDdjMzEyYjAwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJNZWRp
YVF1ZXJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTk2LDcgKzk3LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VTeXN0ZW1D
b2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1bWVudCopOwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYpOwotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlVmFsaWRQ
cmltaXRpdmUoaW50IGlkZW50LCBDU1NQYXJzZXJWYWx1ZSopOworICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHBhcnNlVmFsaWRQcmltaXRpdmUoQ1NTVmFsdWVJRCBpZGVudCwgQ1NT
UGFyc2VyVmFsdWUqKTsKICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQqLCBjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiwg
U3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gcGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0
aW9uKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqKTsKICAgICBQYXNzT3duUHRyPE1lZGlhUXVlcnk+
IHBhcnNlTWVkaWFRdWVyeShjb25zdCBTdHJpbmcmKTsKQEAgLTY4MSw3ICs2ODIsNyBAQCBwcml2
YXRlOgogCiBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoY29uc3QgQ1NTUGFyc2VyU3RyaW5n
Jik7CiBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoY29uc3QgU3RyaW5nJik7Ci1pbnQgY3Nz
VmFsdWVLZXl3b3JkSUQoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJik7CitDU1NWYWx1ZUlEIGNzc1Zh
bHVlS2V5d29yZElEKGNvbnN0IENTU1BhcnNlclN0cmluZyYpOwogI2lmIFBMQVRGT1JNKElPUykK
IHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoY29uc3QgY2hhciogcHJvcGVydHlOYW1l
LCBjb25zdCBjaGFyKiYgcHJvcGVydHlOYW1lQWxpYXMsIHVuc2lnbmVkJiBuZXdMZW5ndGgpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggMThmNzZlMTQ1OWY4
MDQxYzk5MjBmNDA4YjU2ZjVjMWQxN2M1MDY3NS4uMWZkOTUzNGFhZDU5MzMyNjA1ZTQ5MzhiZGQw
YzM2N2E5ZmJkZDhlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaApAQCAtMjIs
NiArMjIsNyBAQAogI2RlZmluZSBDU1NQYXJzZXJWYWx1ZXNfaAogCiAjaW5jbHVkZSAiQ1NTU2Vs
ZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFs
dWVMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMDksNyArMTEwLDcgQEAgc3RydWN0IENTU1BhcnNl
clN0cmluZyB7CiBzdHJ1Y3QgQ1NTUGFyc2VyRnVuY3Rpb247CiAKIHN0cnVjdCBDU1NQYXJzZXJW
YWx1ZSB7Ci0gICAgaW50IGlkOworICAgIENTU1ZhbHVlSUQgaWQ7CiAgICAgYm9vbCBpc0ludDsK
ICAgICB1bmlvbiB7CiAgICAgICAgIGRvdWJsZSBmVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZVBvb2wuY3BwCmluZGV4IGZkOTgwYzRkM2VjNzlkMzE2OGJiYmEwYmY5YTgyZDQ5YzdmNzQ4MTAu
Ljc1OTgzY2FjZDUwMThlMTQ0NDNmYTdkN2FmOTQ3OTQ2NDk5ZWUxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC00OSwxNiArNDksMjIgQEAgQ1NTVmFsdWVQb29sOjpDU1NW
YWx1ZVBvb2woKQogewogfQogCi1QYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1
ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpbnQgaWRlbnQpCitQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUlEIGlkZW50KQogewotICAgIGlmIChpZGVudCA8PSAwIHx8IGlkZW50ID49IG51bUNTU1ZhbHVl
S2V5d29yZHMpCisgICAgaWYgKCFpZGVudCkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsKIAorICAgIEFTU0VSVChpZGVudCA8IG51bUNT
U1ZhbHVlS2V5d29yZHMpOwogICAgIGlmICghbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtpZGVudF0p
CiAgICAgICAgIG1faWRlbnRpZmllclZhbHVlQ2FjaGVbaWRlbnRdID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwogICAgIHJldHVybiBtX2lkZW50aWZpZXJWYWx1
ZUNhY2hlW2lkZW50XTsKIH0KIAorUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTVmFs
dWVQb29sOjpjcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTUHJvcGVydHlJRCBpZGVudCkKK3sKKyAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOworfQor
CiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUNvbG9y
VmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCiB7CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBlbXB0eSBh
bmQgZGVsZXRlZCB2YWx1ZXMgb2YgdGhlIGhhc2ggdGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQ
b29sLmgKaW5kZXggNDVkNjIwZmZiMmVhMTAzNjE4MTI3MTk5NWJjM2JkYWYxNWQwOTk0Ni4uNDIx
ZDc0ZDZlNjhmZTAyNTY5YWMyNDIxYzA2OTkzOGFhMGQ0N2M5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZVBvb2wuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDYsNyArNDcsOCBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxDU1NJbmhlcml0ZWRWYWx1ZT4gY3JlYXRlSW5oZXJpdGVkVmFsdWUoKSB7IHJldHVy
biBtX2luaGVyaXRlZFZhbHVlOyB9CiAgICAgUGFzc1JlZlB0cjxDU1NJbml0aWFsVmFsdWU+IGNy
ZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gbV9pbXBsaWNpdEluaXRpYWxWYWx1
ZTsgfQogICAgIFBhc3NSZWZQdHI8Q1NTSW5pdGlhbFZhbHVlPiBjcmVhdGVFeHBsaWNpdEluaXRp
YWxWYWx1ZSgpIHsgcmV0dXJuIG1fZXhwbGljaXRJbml0aWFsVmFsdWU7IH0KLSAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyVmFsdWUoaW50IGlkZW50aWZp
ZXIpOworICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUlEIGlkZW50aWZpZXIpOworICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIpOwog
ICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUNvbG9yVmFsdWUodW5zaWdu
ZWQgcmdiVmFsdWUpOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVZh
bHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7CiAgICAgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1
ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlKSB7IHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydHlTZXQuY3BwCmluZGV4IDcyODliZDg5MjNmMDZkZTVkM2EyOWFlZjY3Y2U1ZWUxNjY4MjZm
NjcuLmQ2YWEzMzE4NDhhNTZhNDdlMjcwYzZiYTBlYzRlZjY1YmJiYzRhOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTcyNyw3ICs3MjcsMTMgQEAgdm9pZCBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJlZml4aW5nVmFyaWFudFByb3BlcnR5KGNvbnN0
IENTU1Byb3BlcnR5JiBwcm8KICAgICAgICAgKnRvUmVwbGFjZSA9IENTU1Byb3BlcnR5KHByZWZp
eGluZ1ZhcmlhbnQsIHByb3BlcnR5LnZhbHVlKCksIHByb3BlcnR5LmlzSW1wb3J0YW50KCksIHBy
b3BlcnR5LnNob3J0aGFuZElEKCksIHByb3BlcnR5Lm1ldGFkYXRhKCkubV9pbXBsaWNpdCk7CiB9
CiAKLWJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50KQoreworICAgIHNldFByb3Bl
cnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SUQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShpZGVudGlmaWVyKSwgaW1wb3J0YW50KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCkKIHsK
ICAgICBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmllciksIGltcG9ydGFudCkpOwogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKaW5kZXggYjMwN2M1YzEz
ZWYyNTdkYjg3Yjg0NDQyMzAwNDI3OTg3OTNmNzIzMy4uNTMwMTY5ZTAyZTc1MjVjMzRmMDJjYmU1
OGYyMzdlYzI2N2M5YzZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
MjAxLDcgKzIwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb3BlcnR5KENTU1Byb3BlcnR5
SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKIAogICAg
IC8vIFRoZXNlIGRvIG5vdC4gRklYTUU6IFRoaXMgaXMgdG9vIG1lc3N5LCB3ZSBjYW4gZG8gYmV0
dGVyLgotICAgIGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIs
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKKyAg
ICBib29sIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgaWRlbnRpZmll
ciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgdm9pZCBhcHBlbmRQcmVmaXhpbmdWYXJp
YW50UHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmKTsKICAgICB2b2lkIHNldFByZWZpeGluZ1Zh
cmlhbnRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYpOwogICAgIHZvaWQgc2V0UHJvcGVydHko
Y29uc3QgQ1NTUHJvcGVydHkmLCBDU1NQcm9wZXJ0eSogc2xvdCA9IDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IGU2YTZkYTdjZTFlMjMzYzIxZjk5NzgwZDEzMjQ1Mjgy
ZDk4NzgxYjEuLmU5NjkzZGRkMWQwNDFmM2NmNzAzNmUxNjExMjgxMjBhZGQzOGVmNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTIyNyw3ICsyMjcsMTQgQEAgdm9pZCBT
dHlsZWRFbGVtZW50OjppbmxpbmVTdHlsZUNoYW5nZWQoKQogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKIH0KICAg
ICAKLWJvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCkKK2Jvb2wgU3R5
bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgZW5zdXJl
TXV0YWJsZUlubGluZVN0eWxlKCktPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZGVudGlmaWVyKSwgaW1wb3J0YW50KTsKKyAgICBp
bmxpbmVTdHlsZUNoYW5nZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTdHlsZWRF
bGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
Q1NTUHJvcGVydHlJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCkKIHsKICAgICBlbnN1cmVN
dXRhYmxlSW5saW5lU3R5bGUoKS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgY3NzVmFsdWVQb29s
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpLCBpbXBvcnRhbnQpOwogICAgIGlu
bGluZVN0eWxlQ2hhbmdlZCgpOwpAQCAtMzY2LDcgKzM3Myw3IEBAIHZvaWQgU3R5bGVkRWxlbWVu
dDo6cmVidWlsZFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkKICAgICAgICAgY2FjaGVJdGVy
YXRvci0+dmFsdWUgPSBuZXdFbnRyeS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVu
dDo6YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmll
cikKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIpCiB7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KHByb3BlcnR5SUQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZGVudGlm
aWVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAppbmRleCA1ZmUzMjQ2MGUyMDg0
Y2I1OTdlMTczM2I3NWE4Yjg3ZGU2OWViZDc4Li43YTI3MjAwMWRkM2JjZWIwYjg5ZGNmZGU0ZjRk
MmI2Nzk0MmZkOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDggQEAgcHVibGlj
OgogCiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUoKSBjb25zdCB7IHJl
dHVybiBlbGVtZW50RGF0YSgpID8gZWxlbWVudERhdGEoKS0+bV9pbmxpbmVTdHlsZS5nZXQoKSA6
IDA7IH0KICAgICAKLSAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIs
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50
ID0gZmFsc2UpOwogICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
LCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMsIGJvb2wgaW1wb3J0
YW50ID0gZmFsc2UpOwogICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICBi
b29sIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CkBAIC03MCw3ICs3
Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHls
ZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIpOworICAgIHZvaWQg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3Bl
cnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyKTsKICAgICB2b2lk
IGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9w
ZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcyk7CiAgICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4
IGFkZDUzNDUwMjA5ZGMzNWUwMjg1N2YzNTE5M2RkMjE4M2EwZTU4YTUuLmJmZmM5NTRhZGM2NTA4
MTkyNDUyOTVhM2FjNmJlYWFhZDk1YjM2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAKQEAgLTMwNSw3ICszMDUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBIVE1M
Rm9udFNpemVFcXVpdmFsZW50OjphdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoRWxlbWVudCogZQog
ICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZShtX2F0
dHJOYW1lKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaW50IHNpemU7CisgICAgQ1NTVmFsdWVJ
RCBzaXplOwogICAgIGlmICghSFRNTEZvbnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250U2l6ZU51
bWJlcihlbGVtZW50LT5nZXRBdHRyaWJ1dGUobV9hdHRyTmFtZSksIHNpemUpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
c2l6ZSk7CkBAIC05MjcsOSArOTI3LDkgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0Fw
cGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXQKICAgICAg
ICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKIAogICAgIGlmICh1bmljb2RlQmlkaSAmJiB1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7Ci0gICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHVuaWNvZGVCaWRp
LmdldCgpKS0+Z2V0SWRlbnQoKSk7CisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0SWRlbnQoKSkp
OwogICAgICAgICBpZiAoZGlyZWN0aW9uICYmIGRpcmVjdGlvbi0+aXNQcmltaXRpdmVWYWx1ZSgp
KQotICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGly
ZWN0aW9uLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGRpcmVjdGlvbi5nZXQoKSkt
PmdldElkZW50KCkpOworICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5RGlyZWN0aW9uLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGRpcmVjdGlvbi5nZXQoKSktPmdldElkZW50KCkpKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDAyZTRl
MTRkMmJhYzFmNDIzNjk5MjczZmE2MDU0OWFlNTcxZmQwZTYuLjg0NjE1ZDNiNjkyMTZhNWJjMzI0
Zjc0NDY2Zjg4OTZiYTJlNGFlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxl
KEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3RpCiAgICAg
cmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5n
ZXQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwg
RWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIGludCBwcm9wZXJ0eVZhbHVlKQorc3RhdGljIGJvb2wgZXhlY3V0ZUFw
cGx5U3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFj
dGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBwcm9wZXJ0
eVZhbHVlKQogewogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwpAQCAtNDIwLDcgKzQyMCw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVGb250TmFtZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSBzb3VyY2UsIGNvCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVGb250U2l6ZShGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7Ci0gICAgaW50IHNpemU7CisgICAgQ1NTVmFsdWVJRCBzaXplOwogICAgIGlmICghSFRN
TEZvbnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250U2l6ZU51bWJlcih2YWx1ZSwgc2l6ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gZXhlY3V0ZUFwcGx5U3R5bGUoZnJhbWUs
IHNvdXJjZSwgRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMsIENTU1Byb3BlcnR5Rm9udFNpemUs
IHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAzNDQ5YjNiMzUzNjk0
OWYyNWVlYWRmNGMwNzNmNWFmOWRjMjA1M2MzLi41ZWVlZDVlNDEzMmNiZjcwZWFiZWY2M2MzMWU1
MTNlMjkwNmI2M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmllRm9yYmlkc0luc2VydEhUTUwoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgdW5pY29kZUJpZGlBdHRy
aWJ1dGVGb3JEaXJBdXRvKEhUTUxFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIGlubGluZSBDU1NW
YWx1ZUlEIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byhIVE1MRWxlbWVudCogZWxlbWVu
dCkKIHsKICAgICBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKHByZVRhZykgfHwgZWxlbWVudC0+
aGFzTG9jYWxOYW1lKHRleHRhcmVhVGFnKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlV2Via2l0
UGxhaW50ZXh0OwpAQCAtNjAyLDggKzYwMiw4IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFwcGx5QWxp
Z25tZW50QXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9taWNTdHJpbmcmIGFsaWdubWVudCwKIHsK
ICAgICAvLyBWZXJ0aWNhbCBhbGlnbm1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJh
c2VsaW5lIG9mIHRoZSB0ZXh0CiAgICAgLy8gcmlnaHQgb3IgbGVmdCBtZWFucyBmbG9hdGluZyBp
bWFnZXMuCi0gICAgaW50IGZsb2F0VmFsdWUgPSBDU1NWYWx1ZUludmFsaWQ7Ci0gICAgaW50IHZl
cnRpY2FsQWxpZ25WYWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKKyAgICBDU1NWYWx1ZUlEIGZsb2F0
VmFsdWUgPSBDU1NWYWx1ZUludmFsaWQ7CisgICAgQ1NTVmFsdWVJRCB2ZXJ0aWNhbEFsaWduVmFs
dWUgPSBDU1NWYWx1ZUludmFsaWQ7CiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWxpZ25t
ZW50LCAiYWJzbWlkZGxlIikpCiAgICAgICAgIHZlcnRpY2FsQWxpZ25WYWx1ZSA9IENTU1ZhbHVl
TWlkZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCmluZGV4IGYwNTA3
M2FmNDRkODFlNmY1YTk0YmQ4ODQxZWMyYzc1ZGM1ZmNlNDYuLjMyNTQzYTc0ZTA2NTM5NzkzNWIy
NjJmNWNiNjBmY2NhODllZTE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVu
dC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUZvbnRTaXplKGNvbnN0
IFN0cmluZyYgaW5wdXQsIGludCYgc2l6ZSkKICAgICByZXR1cm4gcGFyc2VGb250U2l6ZShpbnB1
dC5jaGFyYWN0ZXJzMTYoKSwgaW5wdXQubGVuZ3RoKCksIHNpemUpOwogfQogCi1ib29sIEhUTUxG
b250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIoY29uc3QgU3RyaW5nJiBzLCBp
bnQmIHNpemUpCitib29sIEhUTUxGb250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1i
ZXIoY29uc3QgU3RyaW5nJiBzLCBDU1NWYWx1ZUlEJiBzaXplKQogewogICAgIGludCBudW0gPSAw
OwogICAgIGlmICghcGFyc2VGb250U2l6ZShzLCBudW0pKQpAQCAtMTg5LDcgKzE4OSw3IEBAIGJv
b2wgSFRNTEZvbnRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKSBjb25zdAogdm9pZCBIVE1MRm9udEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAg
ICAgaWYgKG5hbWUgPT0gc2l6ZUF0dHIpIHsKLSAgICAgICAgaW50IHNpemUgPSAwOworICAgICAg
ICBDU1NWYWx1ZUlEIHNpemUgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAgIGlmIChjc3NWYWx1
ZUZyb21Gb250U2l6ZU51bWJlcih2YWx1ZSwgc2l6ZSkpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Rm9udFNpemUs
IHNpemUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb2xvckF0dHIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9udEVsZW1lbnQuaAppbmRleCBiMmRjMGJlNTJmNmFlZDlkMDhmM2Y5YTZmNjVlYTYx
NjBkODM1MzE1Li4wZDkwMjBkNWUxN2ZmZjA0NWM2Yzk5OGU4OTc3NzQ4OTUzZGUxNzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3Mg
SFRNTEZvbnRFbGVtZW50IEZJTkFMIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRm9udEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAKLSAgICBzdGF0aWMgYm9vbCBjc3NWYWx1ZUZyb21G
b250U2l6ZU51bWJlcihjb25zdCBTdHJpbmcmLCBpbnQmKTsKKyAgICBzdGF0aWMgYm9vbCBjc3NW
YWx1ZUZyb21Gb250U2l6ZU51bWJlcihjb25zdCBTdHJpbmcmLCBDU1NWYWx1ZUlEJik7CiAKIHBy
aXZhdGU6CiAgICAgSFRNTEZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggN2E0YThh
MzkxMGExNDhjMWZkNGFjYzU2ZDBkYjJjYTBiODcyYTZjMS4uMWRjOWNhZWYyNzdkMzFkZjc5Njg5
MDljMzAwNTViZTFjYjcwOGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICB9
CiB9CiAKLXN0YXRpYyBTdHlsZVByb3BlcnR5U2V0KiBsZWFrQm9yZGVyU3R5bGUoaW50IHZhbHVl
KQorc3RhdGljIFN0eWxlUHJvcGVydHlTZXQqIGxlYWtCb3JkZXJTdHlsZShDU1NWYWx1ZUlEIHZh
bHVlKQogewogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA1YmQ1NjQxMmU5NTdmZTJhMmJlZjI4ZDIyZjc2ZGNk
NmY1MDM5YTEzLi4zOGYyZWFhMGY2ZWFjOTY5ODc4MzJhOWE3NmZjZjExMTdhZWE3NjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0xMTI2LDEyICsx
MTI2LDEyIEBAIE5leHRTZXR0aW5nOgogI2VuZGlmCiB9CiAKLWludCBUZXh0VHJhY2tDdWU6Omdl
dENTU1dyaXRpbmdEaXJlY3Rpb24oKSBjb25zdAorQ1NTVmFsdWVJRCBUZXh0VHJhY2tDdWU6Omdl
dENTU1dyaXRpbmdEaXJlY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2Rpc3BsYXlEaXJl
Y3Rpb247CiB9CiAKLWludCBUZXh0VHJhY2tDdWU6OmdldENTU1dyaXRpbmdNb2RlKCkgY29uc3QK
K0NTU1ZhbHVlSUQgVGV4dFRyYWNrQ3VlOjpnZXRDU1NXcml0aW5nTW9kZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZGlzcGxheVdyaXRpbmdNb2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggNzI0ZTc4YmUwNWZhMGE5NTkwYWY1ZjI2Y2JlNjNmNGFi
NWY0NmNkMS4uNjBlM2ZhZWI5OWVhMGY1ZDQ1ZjAzYTBjNmIwYmU1NjZkMzkzZGU5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0xNTksOCArMTU5LDggQEAg
cHVibGljOgogICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gZ2V0Q1NTUG9zaXRpb24oKSBj
b25zdDsKIAogICAgIGludCBnZXRDU1NTaXplKCkgY29uc3Q7Ci0gICAgaW50IGdldENTU1dyaXRp
bmdEaXJlY3Rpb24oKSBjb25zdDsKLSAgICBpbnQgZ2V0Q1NTV3JpdGluZ01vZGUoKSBjb25zdDsK
KyAgICBDU1NWYWx1ZUlEIGdldENTU1dyaXRpbmdEaXJlY3Rpb24oKSBjb25zdDsKKyAgICBDU1NW
YWx1ZUlEIGdldENTU1dyaXRpbmdNb2RlKCkgY29uc3Q7CiAKICAgICBlbnVtIFdyaXRpbmdEaXJl
Y3Rpb24gewogICAgICAgICBIb3Jpem9udGFsLApAQCAtMjY5LDEwICsyNjksMTAgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2U7CiAgICAgUmVmUHRyPFRleHRU
cmFja0N1ZUJveD4gbV9kaXNwbGF5VHJlZTsKIAotICAgIGludCBtX2Rpc3BsYXlEaXJlY3Rpb247
CisgICAgQ1NTVmFsdWVJRCBtX2Rpc3BsYXlEaXJlY3Rpb247CiAKLSAgICBpbnQgbV9kaXNwbGF5
V3JpdGluZ01vZGVNYXBbTnVtYmVyT2ZXcml0aW5nRGlyZWN0aW9uc107Ci0gICAgaW50IG1fZGlz
cGxheVdyaXRpbmdNb2RlOworICAgIENTU1ZhbHVlSUQgbV9kaXNwbGF5V3JpdGluZ01vZGVNYXBb
TnVtYmVyT2ZXcml0aW5nRGlyZWN0aW9uc107CisgICAgQ1NTVmFsdWVJRCBtX2Rpc3BsYXlXcml0
aW5nTW9kZTsKIAogICAgIGludCBtX2Rpc3BsYXlTaXplOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205031</attachid>
            <date>2013-06-19 13:46:55 -0700</date>
            <delta_ts>2013-06-19 15:07:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-117481-20130619174504.patch</filename>
            <type>text/plain</type>
            <size>50448</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I4NmRhYjZiNWQ2YTVh
ZTQ4ZmRlZjc1ZjRhMGY5MjYyZTYzYzkyNC4uMGY3MTk4Njg3ODFmNWEyYjllMmFiYWY5NWVlZDE5
YjZiYjU5YmUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEzLTA2LTE5ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHVz
ZSBDU1NWYWx1ZUlEIGFuZCBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFuIGludGVnZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc0ODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFRoaXMgd2lsbCBl
bnN1cmUgdGhhdCB0eXBlcyBhcmUgZW5mb3JjZWQgd2hlbiBwYXNzaW5nIGFyZ3VtZW50cyBpbiB2
YXJpb3VzCisgICAgICAgIGNzcyBmdW5jdGlvbnMuIEhhdmluZyBhIGNvbXBpbGUgdGltZSBjaGVj
ayBtYWtlIHN1cmUgdGhhdCBubyBtaXN0YWtlcworICAgICAgICB3aWxsIGJlIGRvbmUgb3ZlciB0
aGUgdHlwZS4KKworICAgICAgICBUaGUgcGFyc2VyIHdhcyBhbHNvIHBhdGNoZWQgdG8gZGlyZWN0
bHkgdXNlIENTU1ZhbHVlSUQgb3ZlciBpbnRlZ2Vycy4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNv
IGZpeGVzIHZhcmlvdXMgY2FsbCBzaXRlcyBhYnVzaW5nIHRoZSB1c2FnZSBvZiBpbnRlZ2Vycy4K
KyAgICAgICAgVGhpcyBpcyBwYXJ0IDEgb2YgMi4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiBl
eGlzdGluZyBvbmVzIHNob3VsZCBjb3Zlci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogY29weSBDU1NWYWx1ZUtleXdvcmRzLmggYXMgaXQgY291bGQgYmUg
dXNlZCBpbiBXZWJLaXQvIGZvciBleGFtcGxlLgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JSZXBlYXRSdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNzc0lkZW50aWZpZXJGb3JGb250U2l6ZUtleXdvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6aWRlbnRpZmllckZvckZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
Ojp2YWx1ZUZvckZhbWlseSk6CisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ29sb3JWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUtleXdvcmRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsaWRQcmltaXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbkNv
bXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlM1ZhbHVlc0ZpbGxQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmNyZWF0ZUZvbnRXZWlnaHRWYWx1ZUtleXdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXByZWNh
dGVkR3JhZGllbnRDb2xvclN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHcmFkaWVudENv
bG9yT3JLZXl3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEZXByZWNh
dGVkUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRl
U3BlY2lmaWVycyk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVl
UG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29s
Lmg6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBjc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb250
U2l6ZUVxdWl2YWxlbnQ6OmF0dHJpYnV0ZVZhbHVlQXNDU1NWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9udFNpemUpOgorICAgICAgICAqIGh0bWwvSFRN
TEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JE
aXJBdXRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0
dHJpYnV0ZVRvU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb250RWxlbWVudDo6Y3NzVmFsdWVGcm9tRm9udFNpemVOdW1i
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvbnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZvbnRFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmxlYWtCb3JkZXJTdHlsZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDU1NXcml0aW5nRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q1NTV3JpdGluZ01vZGUpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisKIDIwMTMtMDYtMTkgIEFuZHJl
IE1vcmVpcmEgTWFnYWxoYWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CiAK
ICAgICAgICAgQWRqdXN0IGludGVybmFsIHNpemUgb24gZ3N0cmVhbWVyIHNvdXJjZSBlbGVtZW50
IHdoZW4gcmVjZWl2aW5nIGRhdGEgaWYgbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTkxYWQyYWQ5Y2Y3MzdiODU1
ZmY4YjE0OGExZjM2NjdhYjY3Yzg4YS4uZTFiZDU0OTI2ODdlYTc4M2EwMDAyMDhlMzdlNjYyMzcw
NmEzMDNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTk2OSw2ICsxOTY5LDcgQEAKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1
Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3Jp
cHRXaGl0ZUxpc3QudHh0ICovOyB9OwogCQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJh
bWVTbmFwc2hvdHRpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdN
YWMubW0gKi87IH07CiAJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90
dGluZ01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0Q3NDFCREExNzcy
MjZBQTAwODU5MTcwIC8qIENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMw
MDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0Ew
MDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyog
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1
RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyog
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHAgKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQw
MEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02
MDczLDYgKzYwNzQsNyBAQAogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE7CiAJCQlmaWxlcyA9ICgK
IAkJCQk1REY3RjVDMjBGMDFGOTJBMDA1MjZCNEIgLyogQ1NTUHJvcGVydHlOYW1lcy5oIGluIENv
cHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8sCisJCQkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8q
IENTU1ZhbHVlS2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLAogCQkJCTg1
MzhGMDMwMEFENzFDREIwMDZBODFEMSAvKiBET01BYnN0cmFjdFZpZXcuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovLAogCQkJCTFDMTFDQ0JDMEFBNjA5MzcwMERBREIyMCAvKiBET01BdHRy
LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQkyRTJEOTlFQjEwRTJCRDM5MDA0
OTYzMzcgLyogRE9NQmxvYi5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4
IGI3YWRmODdmNmE1MmFhODY1ZDM3MDQ2OGQ0YTJjNjg5ZjIyOTU1MmYuLmIyZWQyODIxYWE3ZjQz
NTlhYjc3NmQwM2E5ZGU0ZDA1ZGYwMjE3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgc3Rh
dGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAKIGNvbnN0
IHVuc2lnbmVkIG51bUNvbXB1dGVkUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgoY29tcHV0
ZWRQcm9wZXJ0aWVzKTsKIAotc3RhdGljIGludCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUp
CitzdGF0aWMgQ1NTVmFsdWVJRCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUpCiB7CiAgICAg
c3dpdGNoIChydWxlKSB7CiAgICAgICAgIGNhc2UgUmVwZWF0SW1hZ2VSdWxlOgpAQCAtMTI2MCwx
MSArMTI2MCwxMSBAQCB2b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4
dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBlYyA9IE5PX01PRElGSUNB
VElPTl9BTExPV0VEX0VSUjsKIH0KIAotc3RhdGljIGludCBjc3NJZGVudGlmaWVyRm9yRm9udFNp
emVLZXl3b3JkKGludCBrZXl3b3JkU2l6ZSkKK3N0YXRpYyBDU1NWYWx1ZUlEIGNzc0lkZW50aWZp
ZXJGb3JGb250U2l6ZUtleXdvcmQoaW50IGtleXdvcmRTaXplKQogewogICAgIEFTU0VSVF9BUkco
a2V5d29yZFNpemUsIGtleXdvcmRTaXplKTsKICAgICBBU1NFUlRfQVJHKGtleXdvcmRTaXplLCBr
ZXl3b3JkU2l6ZSA8PSA4KTsKLSAgICByZXR1cm4gQ1NTVmFsdWVYeFNtYWxsICsga2V5d29yZFNp
emUgLSAxOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihDU1NWYWx1ZVh4U21h
bGwgKyBrZXl3b3JkU2l6ZSAtIDEpOwogfQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tl
eXdvcmQoKSBjb25zdApAQCAtMTMxNCw3ICsxMzE0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSog
c2gKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBpbnQgaWRlbnRpZmll
ckZvckZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3N0YXRpYyBDU1NWYWx1ZUlE
IGlkZW50aWZpZXJGb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAg
aWYgKGZhbWlseSA9PSBjdXJzaXZlRmFtaWx5KQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVDdXJz
aXZlOwpAQCAtMTMyOCwxMiArMTMyOCwxMiBAQCBzdGF0aWMgaW50IGlkZW50aWZpZXJGb3JGYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVNh
bnNTZXJpZjsKICAgICBpZiAoZmFtaWx5ID09IHNlcmlmRmFtaWx5KQogICAgICAgICByZXR1cm4g
Q1NTVmFsdWVTZXJpZjsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlk
OwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JGYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7Ci0gICAgaWYgKGludCBmYW1pbHlJZGVu
dGlmaWVyID0gaWRlbnRpZmllckZvckZhbWlseShmYW1pbHkpKQorICAgIGlmIChDU1NWYWx1ZUlE
IGZhbWlseUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yRmFtaWx5KGZhbWlseSkpCiAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoZmFtaWx5SWRlbnRp
Zmllcik7CiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGZhbWlseS5zdHJp
bmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkuaW4KaW5kZXggYTk2NjM3OWVkYzlkNDc3ZGExNTA0ZGQ0ZGEzM2UyNDU3OWIzMjUw
ZC4uNzM4NTM4Nzk3ZTZkYTI1OWZlMjAyZGEwNTg2Yjg1MmMxMzAzZGFiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LmluCkBAIC04NzQsOSArODc0LDkgQEAga2V5X2xpc3Q6CiAgICAgOwog
CiBrZXk6Ci0gICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsg
JCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VO
VEFHRSB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFs
dWUgPSAkMSAqICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0K
ICAgICB8IElERU5UIHsKLSAgICAgICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7CisgICAgICAgICQkLmlkID0gQ1NT
VmFsdWVJbnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVI7CiAgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7CiAgICAg
ICAgIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkKICAgICAgICAgICAgICQkLmZW
YWx1ZSA9IDA7CkBAIC0xNjU0LDcgKzE2NTQsNyBAQCB2YWxpZF9leHByOgogICAgICAgICBpZiAo
JCQpIHsKICAgICAgICAgICAgIGlmICgkMikgewogICAgICAgICAgICAgICAgIENTU1BhcnNlclZh
bHVlIHY7Ci0gICAgICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICAgICAgdi5pZCA9
IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1
ZTo6T3BlcmF0b3I7CiAgICAgICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAgICAgICAgICAg
ICAgICAkJC0+YWRkVmFsdWUodik7CkBAIC0xNjgzLDIyICsxNjgzLDIyIEBAIG9wZXJhdG9yOgog
dGVybToKICAgdW5hcnlfdGVybSBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KICAgfCB1bmFyeV9v
cGVyYXRvciB1bmFyeV90ZXJtIG1heWJlX3NwYWNlIHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQx
OyB9Ci0gIHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9CisgIHwgU1RSSU5HIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0KICAgfCBJREVOVCBtYXliZV9z
cGFjZSB7CiAgICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKICAgICAgICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwogICAgICAgJCQuc3RyaW5nID0gJDE7
CiAgIH0KICAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZy
b20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2Vz
ICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCi0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19ESU1FTlNJT047IH0KLSAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RJTUVOU0lPTjsgfQotICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNP
REVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KLSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJj
b2xvcjogIzsiICovCisgIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENTU1ZhbHVlSW52
YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJ
TUVOU0lPTjsgfQorICB8IHVuYXJ5X29wZXJhdG9yIERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSBDU1NWYWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19ESU1FTlNJT047IH0KKyAgfCBVUkkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1VSSTsgfQorICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gQ1NT
VmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVU5JQ09ERV9SQU5HRTsgfQorICB8IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gQ1NT
VmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9CisgIHwgJyMnIG1heWJlX3NwYWNlIHsgJCQuaWQgPSBD
U1NWYWx1ZUludmFsaWQ7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9y
IGNhc2U6ICJjb2xvcjogIzsiICovCiAgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQg
Y2xvc2luZ19wYXJlbnRoZXNpcyBtYXliZV9zcGFjZSB7CiAjaWYgRU5BQkxFX0NTU19WQVJJQUJM
RVMKLSAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAg
ICAgJCQuc3RyaW5nID0gJDM7CiAgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19WQVJJQUJMRV9OQU1FOwogI2VuZGlmCkBAIC0xNzE0LDQ2ICsxNzE0LDQ2IEBAIHRlcm06CiAg
ICAgICAkJCA9ICQxOwogICB9CiAgIHwgJyUnIG1heWJlX3NwYWNlIHsgLyogSGFuZGxlIHdpZHRo
OiAlOyAqLwotICAgICAgJCQuaWQgPSAwOyAkJC51bml0ID0gMDsKKyAgICAgICQkLmlkID0gQ1NT
VmFsdWVJbnZhbGlkOyAkJC51bml0ID0gMDsKICAgfQogICA7CiAKIHVuYXJ5X3Rlcm06Ci0gIElO
VEVHRVIgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gdHJ1ZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICB8IEZMT0FUVE9LRU4geyAk
JC5pZCA9IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgfCBQRVJDRU5UQUdFIHsgJCQuaWQgPSAw
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRTsgfQotICB8IFBYUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOyB9Ci0gIHwgQ01TIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007IH0KLSAgfCBNTVMg
eyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19NTTsgfQotICB8IElOUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyB9Ci0gIHwgUFRTIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ7IH0KLSAgfCBQ
Q1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QQzsgfQotICB8IERFR1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KLSAgfCBSQURTIHsgJCQuaWQgPSAw
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOyB9
Ci0gIHwgR1JBRFMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19HUkFEOyB9Ci0gIHwgVFVSTlMgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOOyB9Ci0gIHwgTVNF
Q1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19NUzsgfQotICB8IFNFQ1MgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9Ci0gIHwgSEVSVFogeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19IWjsgfQot
ICB8IEtIRVJUWiB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0tIWjsgfQotICB8IEVNUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQotICB8IFFFTVMgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OlFfRU1T
OyB9Ci0gIHwgRVhTIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRVhTOyB9CisgIElOVEVHRVIgeyAkJC5pZCA9IENTU1ZhbHVlSW52
YWxpZDsgJCQuaXNJbnQgPSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgRkxPQVRUT0tFTiB7ICQkLmlkID0gQ1NTVmFs
dWVJbnZhbGlkOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgUEVSQ0VOVEFHRSB7ICQkLmlkID0g
Q1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRTsgfQorICB8IFBYUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlk
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0K
KyAgfCBDTVMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9CisgIHwgTU1TIHsgJCQuaWQgPSBDU1NW
YWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19NTTsgfQorICB8IElOUyB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47IH0KKyAgfCBQVFMgeyAk
JC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BUOyB9CisgIHwgUENTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsgfQor
ICB8IERFR1MgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQorICB8IFJBRFMgeyAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1JBRDsgfQorICB8IEdSQURTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEOyB9CisgIHwg
VFVSTlMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KKyAgfCBNU0VDUyB7ICQkLmlkID0gQ1NT
VmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTVM7IH0KKyAgfCBTRUNTIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9CisgIHwgSEVSVFog
eyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0haOyB9CisgIHwgS0hFUlRaIHsgJCQuaWQgPSBDU1NWYWx1ZUlu
dmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19L
SFo7IH0KKyAgfCBFTVMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQorICB8IFFFTVMgeyAkJC5p
ZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6UV9FTVM7IH0KKyAgfCBFWFMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZh
bHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQogICB8IFJF
TVMgewotICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAg
ICAgICAkJC5mVmFsdWUgPSAkMTsKICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1JFTVM7CiAgICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQpCiAgICAgICAgICAgcGFy
c2VyLT5tX3N0eWxlU2hlZXQtPnBhcnNlclNldFVzZXNSZW1Vbml0cyh0cnVlKTsKICAgfQotICB8
IENIUyB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0NIUzsgfQotICB8IFZXIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVlc7IH0KLSAgfCBWSCB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZIOyB9Ci0g
IHwgVk1JTiB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1ZNSU47IH0KLSAgfCBWTUFYIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1BWDsgfQotICB8IERQUFggeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19EUFBYOyB9Ci0gIHwgRFBJIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBJOyB9Ci0gIHwgRFBDTSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KKyAg
fCBDSFMgeyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NIUzsgfQorICB8IFZXIHsgJCQuaWQgPSBDU1NWYWx1
ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19WVzsgfQorICB8IFZIIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQorICB8IFZNSU4geyAkJC5p
ZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1ZNSU47IH0KKyAgfCBWTUFYIHsgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WTUFYOyB9
CisgIHwgRFBQWCB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDsgfQorICB8IERQSSB7ICQkLmlkID0g
Q1NTVmFsdWVJbnZhbGlkOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRFBJOyB9CisgIHwgRFBDTSB7ICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTTsgfQogICA7
CiAKIGZ1bmN0aW9uOgpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgZnVuY3Rpb246CiAgICAgICAgIENT
U1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CiAg
ICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0
aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENT
U1ZhbHVlSW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bjsKICAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0gfApAQCAtMTc3MCw3ICsxNzcwLDcg
QEAgZnVuY3Rpb246CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgQ1NTUGFyc2VyVmFs
dWVMaXN0KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CiAg
ICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCh2YWx1ZUxpc3Qp
OwotICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLmlkID0gQ1NTVmFsdWVJbnZhbGlkOwog
ICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwogICAgICAgICAkJC5m
dW5jdGlvbiA9IGY7CiAgICAgfSB8CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBmdW5jdGlvbjoKICAg
ICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rp
b24oKTsKICAgICAgICAgZi0+bmFtZSA9ICQxOwogICAgICAgICBmLT5hcmdzID0gbnVsbHB0cjsK
LSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAg
ICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICAgICAgJCQuZnVu
Y3Rpb24gPSBmOwogICB9CkBAIC0xNzg4LDcgKzE3ODgsNyBAQCBjYWxjX2Z1bmNfdGVybToKICAg
dW5hcnlfdGVybSB7ICQkID0gJDE7IH0KICAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVO
VCBjbG9zaW5nX3BhcmVudGhlc2lzIHsKICNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUwotICAgICAg
JCQuaWQgPSAwOworICAgICAgJCQuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAkJC5zdHJp
bmcgPSAkMzsKICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxF
X05BTUU7CiAjZW5kaWYKQEAgLTE4MjEsNyArMTgyMSw3IEBAIGNhbGNfZnVuY19wYXJlbl9leHBy
OgogICAgICAgICBpZiAoJDMpIHsKICAgICAgICAgICAgICQkID0gJDM7CiAgICAgICAgICAgICBD
U1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICB2Lmlk
ID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7CiAgICAgICAgICAgICAkJC0+
aW5zZXJ0VmFsdWVBdCgwLCB2KTsKQEAgLTE4NDYsNyArMTg0Niw3IEBAIHZhbGlkX2NhbGNfZnVu
Y19leHByOgogICAgICAgICBpZiAoJDEgJiYgJDIpIHsKICAgICAgICAgICAgICQkID0gJDE7CiAg
ICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7CisgICAg
ICAgICAgICB2LmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51bml0ID0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKICAgICAg
ICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4NTksNyArMTg1OSw3IEBAIHZhbGlkX2NhbGNf
ZnVuY19leHByOgogICAgICAgICBpZiAoJDEgJiYgJDIgJiYgJDMpIHsKICAgICAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9
IDA7CisgICAgICAgICAgICB2LmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgICAgICAgICAgdi51
bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwogICAgICAgICAgICAgdi5pVmFsdWUgPSAk
MjsKICAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4NzgsNyArMTg3OCw3IEBAIGNh
bGNfZnVuY19leHByX2xpc3Q6CiAgICAgICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAg
JCQgPSAkMTsKICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2Lmlk
ID0gMDsKKyAgICAgICAgICAgIHYuaWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAgICAgICAgICB2
LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CiAgICAgICAgICAgICB2LmlWYWx1ZSA9
ICcsJzsKICAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKQEAgLTE4OTMsNyArMTg5Myw3IEBA
IGNhbGNfZnVuY3Rpb246CiAgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAg
Zi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQu
aWQgPSAwOworICAgICAgICAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgJCQudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwog
ICAgIH0KQEAgLTE5MTcsNyArMTkxNyw3IEBAIG1pbl9vcl9tYXhfZnVuY3Rpb246CiAgICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7
CiAgICAgICAgIGYtPm5hbWUgPSAkMTsKICAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC5pZCA9
IENTU1ZhbHVlSW52YWxpZDsKICAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5j
dGlvbjsKICAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwogICAgIH0gCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCmluZGV4IGU1ZDRkYTQ5MDQ3NGM5YTljODIwNTZiOWYxMjYwYjAzYTU4OWM4MjAuLmYz
ODYxNzM2NjI4ZTkxNGM4NDBlMTNlZTQ5ZjgzY2ZiN2YzNjFmNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVl
KE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgQ1NTUGFyc2VyU3RyaW5nIGNzc1N0cmluZzsKICAgICBj
c3NTdHJpbmcuaW5pdChzdHJpbmcpOwotICAgIGludCB2YWx1ZUlEID0gY3NzVmFsdWVLZXl3b3Jk
SUQoY3NzU3RyaW5nKTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJ
RChjc3NTdHJpbmcpOwogICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKICAgICBpZiAo
dmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQpCiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTExOTQsNyArMTE5NCw3IEBAIHN0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVl
KE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJCiAKICAg
ICBDU1NQYXJzZXJTdHJpbmcgY3NzU3RyaW5nOwogICAgIGNzc1N0cmluZy5pbml0KHN0cmluZyk7
Ci0gICAgaW50IHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChjc3NTdHJpbmcpOworICAgIENT
U1ZhbHVlSUQgdmFsdWVJRCA9IGNzc1ZhbHVlS2V5d29yZElEKGNzc1N0cmluZyk7CiAKICAgICBp
ZiAoIXZhbHVlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3ODQsNyArMTc4NCw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjp2YWxpZEhlaWdodChDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiAgICAg
cmV0dXJuICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25O
ZWcpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2Vy
OjpwYXJzZVZhbGlkUHJpbWl0aXZlKGludCBpZGVudGlmaWVyLCBDU1NQYXJzZXJWYWx1ZSogdmFs
dWUpCitpbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbGlkUHJpbWl0aXZlKENTU1ZhbHVlSUQgaWRlbnRpZmllciwgQ1NTUGFyc2VyVmFsdWUqIHZh
bHVlKQogewogICAgIGlmIChpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpOwpAQCAtMTg0Miw3ICsxODQyLDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRvIGF2b2lkIGhhdmluZyB0byBwYXNz
IHBhcnNlZENhbGMgdG8gYWxsIHZhbGlkVW5pdCBjYWxsZXJzLgogICAgIEFTU0VSVCghbV9wYXJz
ZWRDYWxjdWxhdGlvbik7CiAgICAgCi0gICAgaW50IGlkID0gdmFsdWUtPmlkOworICAgIENTU1Zh
bHVlSUQgaWQgPSB2YWx1ZS0+aWQ7CiAKICAgICBpbnQgbnVtID0gaW5TaG9ydGhhbmQoKSA/IDEg
OiBtX3ZhbHVlTGlzdC0+c2l6ZSgpOwogCkBAIC0zNzYzLDYgKzM3NjMsOCBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VDb250ZW50KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgogICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZU5vcm1hbDoKICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWwtPmlkKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAodmFs
LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7CiAgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IGNyZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKHZhbCk7CkBAIC0zODA3LDcg
KzM4MDksNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0cihDU1NQ
YXJzZXJWYWx1ZUxpc3QqIGFyZ3MpCiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VCYWNrZ3JvdW5kQ29sb3IoKQogewotICAgIGludCBpZCA9IG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCktPmlkOworICAgIENTU1ZhbHVlSUQgaWQgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5p
ZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IChpZCA+PSBDU1NWYWx1ZUFx
dWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUgfHwg
aWQgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IgfHwKICAgICAgICAgKGlkID49IENTU1ZhbHVlR3Jl
eSAmJiBpZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiBpblF1aXJrc01vZGUoKSkpCiAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWQpOwpAQCAtMzg3
Myw3ICszODc1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQ
b3NpdGlvblkoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QKIAogUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbkNvbXBvbmVudChDU1NQ
YXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgdW5zaWduZWQmIGN1bXVsYXRpdmVGbGFncywgRmls
bFBvc2l0aW9uRmxhZyYgaW5kaXZpZHVhbEZsYWcsIEZpbGxQb3NpdGlvblBhcnNpbmdNb2RlIHBh
cnNpbmdNb2RlKQogewotICAgIGludCBpZCA9IHZhbHVlTGlzdC0+Y3VycmVudCgpLT5pZDsKKyAg
ICBDU1NWYWx1ZUlEIGlkID0gdmFsdWVMaXN0LT5jdXJyZW50KCktPmlkOwogICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVSaWdo
dCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAg
ICAgICBpbnQgcGVyY2VudCA9IDA7CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwg
aWQgPT0gQ1NTVmFsdWVSaWdodCkgewpAQCAtMzk5NywxMiArMzk5OSwxMiBAQCB2b2lkIENTU1Bh
cnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVM
aXN0LCBSZWZQdHI8QwogICAgIHZhbHVlTGlzdC0+bmV4dCgpOwogCiAgICAgYm9vbCBzd2FwTmVl
ZGVkID0gZmFsc2U7Ci0gICAgaW50IGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+Z2V0SWRlbnQoKTsK
LSAgICBpbnQgaWRlbnQyID0gcGFyc2VkVmFsdWUyLT5nZXRJZGVudCgpOwotICAgIGludCBpZGVu
dDMgPSB2YWx1ZTMtPmdldElkZW50KCk7CisgICAgQ1NTVmFsdWVJRCBpZGVudDEgPSBzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUlEPihwYXJzZWRWYWx1ZTEtPmdldElkZW50KCkpOworICAgIENTU1ZhbHVl
SUQgaWRlbnQyID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4ocGFyc2VkVmFsdWUyLT5nZXRJZGVu
dCgpKTsKKyAgICBDU1NWYWx1ZUlEIGlkZW50MyA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHZh
bHVlMy0+Z2V0SWRlbnQoKSk7CiAKLSAgICBpbnQgZmlyc3RQb3NpdGlvbktleXdvcmQ7Ci0gICAg
aW50IHNlY29uZFBvc2l0aW9uS2V5d29yZDsKKyAgICBDU1NWYWx1ZUlEIGZpcnN0UG9zaXRpb25L
ZXl3b3JkOworICAgIENTU1ZhbHVlSUQgc2Vjb25kUG9zaXRpb25LZXl3b3JkOwogCiAgICAgaWYg
KGlkZW50MSA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAgICAgICAvLyA8cG9zaXRpb24+IHJlcXVp
cmVzIHRoZSBmaXJzdCAnY2VudGVyJyB0byBiZSBmb2xsb3dlZCBieSBhIGtleXdvcmQuCkBAIC00
MDY4LDggKzQwNzAsOCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9u
KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8QwogI2lmbmRlZiBOREVCVUcK
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlMS5nZXQoKSk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUyLmdldCgpKTsKLSAgICBpZGVudDEg
PSBmaXJzdC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldElkZW50KCk7Ci0gICAgaWRlbnQy
ID0gc2Vjb25kLT5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKS0+Z2V0SWRlbnQoKTsKKyAgICBpZGVu
dDEgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihmaXJzdC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0
KCktPmdldElkZW50KCkpOworICAgIGlkZW50MiA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHNl
Y29uZC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldElkZW50KCkpOwogICAgIEFTU0VSVChp
ZGVudDEgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkZW50MSA9PSBDU1NWYWx1ZVJpZ2h0KTsKICAgICBB
U1NFUlQoaWRlbnQyID09IENTU1ZhbHVlQm90dG9tIHx8IGlkZW50MiA9PSBDU1NWYWx1ZVRvcCk7
CiAjZW5kaWYKQEAgLTQxODksNyArNDE5MSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTJWYWx1
ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAK
IHZvaWQgQ1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUx
LCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTIpCiB7Ci0gICAgaW50IGlkID0gbV92YWx1ZUxpc3Qt
PmN1cnJlbnQoKS0+aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50
KCktPmlkOwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdFgpIHsKICAgICAgICAgbV9pbXBs
aWNpdFNob3J0aGFuZCA9IHRydWU7CiAgICAgICAgIHZhbHVlMSA9IGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJlcGVhdCk7CkBAIC00MjI1LDcgKzQyMjcsNyBA
QCB2b2lkIENTU1BhcnNlcjo6cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVl
MSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdQogCiAgICAgLy8gSWYgb25seSBvbmUgdmFsdWUgd2Fz
IHNwZWNpZmllZCwgdmFsdWUyIGlzIHRoZSBzYW1lIGFzIHZhbHVlMS4KICAgICBtX2ltcGxpY2l0
U2hvcnRoYW5kID0gdHJ1ZTsKLSAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTEuZ2V0KCkp
LT5nZXRJZGVudCgpKTsKKyAgICB2YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZTEuZ2V0KCkpLT5nZXRJZGVudCgpKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9v
bCYgYWxsb3dDb21tYSkKQEAgLTQ1MTksNyArNDUyMSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb25QYXJzZUNvbnRleHQm
IGNvCiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsK
ICAgICBpZiAodmFsdWUtPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgaW50IHJlc3VsdCA9IGNzc1Byb3BlcnR5SUQodmFsdWUtPnN0
cmluZyk7CisgICAgQ1NTUHJvcGVydHlJRCByZXN1bHQgPSBjc3NQcm9wZXJ0eUlEKHZhbHVlLT5z
dHJpbmcpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUocmVzdWx0KTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWUsICJhbGwiKSkgewpAQCAtNTAxOCw3ICs1MDIwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJn
cywgYm8KICAgICAgICAgaWYgKGktPnVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVO
VCkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGludCBsaXN0U3R5bGVJRCA9IDA7
CisgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSUQgPSBDU1NWYWx1ZUludmFsaWQ7CiAgICAg
ICAgIGlmIChpLT5pZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGktPmlkID49IENTU1ZhbHVlRGlzYyAm
JiBpLT5pZCA8PSBDU1NWYWx1ZUthdGFrYW5hSXJvaGEpKQogICAgICAgICAgICAgbGlzdFN0eWxl
SUQgPSBpLT5pZDsKICAgICAgICAgZWxzZQpAQCAtNTU1Nyw3ICs1NTU5LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VGb250RmFtaWx5KCkKIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUxpbmVIZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NTUGFyc2VyVmFs
dWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICBpbnQgaWQgPSB2YWx1ZS0+
aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlLT5pZDsKICAgICBib29sIHZhbGlkUHJpbWl0
aXZlID0gZmFsc2U7CiAgICAgLy8gbm9ybWFsIHwgPG51bWJlcj4gfCA8bGVuZ3RoPiB8IDxwZXJj
ZW50YWdlPiB8IGluaGVyaXQKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC01NTcy
LDcgKzU1NzQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VMaW5lSGVpZ2h0KGJvb2wgaW1wb3J0
YW50KQogYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udFNpemUoYm9vbCBpbXBvcnRhbnQpCiB7CiAg
ICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICBp
bnQgaWQgPSB2YWx1ZS0+aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlLT5pZDsKICAgICBi
b29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgLy8gPGFic29sdXRlLXNpemU+IHwgPHJl
bGF0aXZlLXNpemU+IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CiAgICAgaWYg
KGlkID49IENTU1ZhbHVlWHhTbWFsbCAmJiBpZCA8PSBDU1NWYWx1ZUxhcmdlcikKQEAgLTU2MzEs
NiArNTYzMywxNCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250VmFyaWFudChib29sIGltcG9y
dGFudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBDU1NWYWx1ZUlEIGNyZWF0ZUZv
bnRXZWlnaHRWYWx1ZUtleXdvcmQoaW50IHdlaWdodCkKK3sKKyAgICBBU1NFUlQoISh3ZWlnaHQg
JSAxMDApICYmIHdlaWdodCA+PSAxMDAgJiYgd2VpZ2h0IDw9IDkwMCk7CisgICAgQ1NTVmFsdWVJ
RCB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KENTU1ZhbHVlMTAwICsgd2VpZ2h0IC8g
MTAwIC0gMSk7CisgICAgQVNTRVJUKHZhbHVlID49IENTU1ZhbHVlMTAwICYmIHZhbHVlIDw9IENT
U1ZhbHVlOTAwKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUZvbnRXZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVl
ID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTU2NDEsNyArNTY1MSw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUZvbnRXZWlnaHQoYm9vbCBpbXBvcnRhbnQpCiAgICAgaWYgKHZhbGlkVW5p
dCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBDU1NRdWlya3NNb2RlKSkgewogICAgICAgICBp
bnQgd2VpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZS0+ZlZhbHVlKTsKICAgICAgICAgaWYg
KCEod2VpZ2h0ICUgMTAwKSAmJiB3ZWlnaHQgPj0gMTAwICYmIHdlaWdodCA8PSA5MDApIHsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgY3NzVmFsdWVQb29s
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlMTAwICsgd2VpZ2h0IC8gMTAwIC0gMSks
IGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWln
aHQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShjcmVhdGVGb250V2VpZ2h0
VmFsdWVLZXl3b3JkKHdlaWdodCkpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkBAIC03MjM4LDcgKzcyNDgsNyBAQCBzdGF0aWMgYm9vbCBw
YXJzZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXIqIHAsIENTU1BhcnNlclZh
bHVlKiBhLCBDUwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdG9wLm1fcG9zaXRpb24gPSBj
c3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSgxLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CiAKLSAgICAgICAgaW50IGlkID0gYXJncy0+Y3VycmVudCgpLT5pZDsKKyAgICAgICAgQ1NT
VmFsdWVJRCBpZCA9IGFyZ3MtPmN1cnJlbnQoKS0+aWQ7CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZVdlYmtpdFRleHQgfHwgKGlkID49IENTU1ZhbHVlQXF1YSAmJiBpZCA8PSBDU1NWYWx1ZVdp
bmRvd3RleHQpIHx8IGlkID09IENTU1ZhbHVlTWVudSkKICAgICAgICAgICAgIHN0b3AubV9jb2xv
ciA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZCk7CiAgICAgICAgIGVs
c2UKQEAgLTcyNjUsNyArNzI3NSw3IEBAIHN0YXRpYyBib29sIHBhcnNlRGVwcmVjYXRlZEdyYWRp
ZW50Q29sb3JTdG9wKENTU1BhcnNlciogcCwgQ1NTUGFyc2VyVmFsdWUqIGEsIENTCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgc3RvcEFyZyA9IGFyZ3MtPm5leHQoKTsKLSAg
ICAgICAgaW50IGlkID0gc3RvcEFyZy0+aWQ7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBzdG9w
QXJnLT5pZDsKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0VGV4dCB8fCAoaWQgPj0g
Q1NTVmFsdWVBcXVhICYmIGlkIDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgaWQgPT0gQ1NTVmFs
dWVNZW51KQogICAgICAgICAgICAgc3RvcC5tX2NvbG9yID0gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGlkKTsKICAgICAgICAgZWxzZQpAQCAtNzQzMiw3ICs3NDQyLDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRnJvbVNpZGVLZXl3b3Jk
KENTU1BhcnNlclZhbHVlKiBhLCBib28KIAogc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHBhcnNlR3JhZGllbnRDb2xvck9yS2V5d29yZChDU1NQYXJzZXIqIHAsIENTU1BhcnNl
clZhbHVlKiB2YWx1ZSkKIHsKLSAgICBpbnQgaWQgPSB2YWx1ZS0+aWQ7CisgICAgQ1NTVmFsdWVJ
RCBpZCA9IHZhbHVlLT5pZDsKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8IChp
ZCA+PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBD
U1NWYWx1ZU1lbnUgfHwgaWQgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWQpOwogCkBAIC03NTc0LDYg
Kzc1ODQsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQo
Q1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZgogICAgICAgICAgICAgc2l6ZVZhbHVl
ID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGEtPmlkKTsKICAgICAgICAg
ICAgIGZvdW5kVmFsdWUgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmb3VuZFZh
bHVlKSB7CkBAIC05NDQwLDYgKzk0NTIsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUZXh0VW5k
ZXJsaW5lUG9zaXRpb24oYm9vbCBpbXBvcnRhbnQpCiAKICAgICAgICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb24sIGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS0+aWQpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtMTIwNjcsNyArMTIwODEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWaWV3
cG9ydFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQgaWQgPSB2YWx1ZS0+
aWQ7CisgICAgQ1NTVmFsdWVJRCBpZCA9IHZhbHVlLT5pZDsKICAgICBib29sIHZhbGlkUHJpbWl0
aXZlID0gZmFsc2U7CiAKICAgICBzd2l0Y2ggKHByb3BJZCkgewpAQCAtMTIyMjAsMTQgKzEyMjM0
LDE0IEBAIHZvaWQgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoY29uc3QgY2hhciogcHJvcGVy
dHlOYW1lLCBjb25zdCBjaGFyKiYgcHJvcGVydHlOCiAjZW5kaWYKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW50IGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENo
YXJhY3RlclR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIENTU1Zh
bHVlSUQgY3NzVmFsdWVLZXl3b3JkSUQoY29uc3QgQ2hhcmFjdGVyVHlwZSogdmFsdWVLZXl3b3Jk
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgY2hhciBidWZmZXJbbWF4Q1NTVmFsdWVLZXl3b3Jk
TGVuZ3RoICsgMSArIDFdOyAvLyAxIHRvIHR1cm4gImFwcGxlIi8ia2h0bWwiIGludG8gIndlYmtp
dCIsIDEgZm9yIG51bGwgY2hhcmFjdGVyCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9
IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIENoYXJhY3RlclR5cGUgYyA9IHZhbHVlS2V5d29yZFtp
XTsKICAgICAgICAgaWYgKGMgPT0gMCB8fCBjID49IDB4N0YpCi0gICAgICAgICAgICByZXR1cm4g
MDsgLy8gaWxsZWdhbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFs
aWQ7IC8vIGlsbGVnYWwga2V5d29yZC4KICAgICAgICAgYnVmZmVyW2ldID0gV1RGOjp0b0FTQ0lJ
TG93ZXIoYyk7CiAgICAgfQogICAgIGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKQEAgLTEyMjQzLDE2
ICsxMjI1NywxNiBAQCBzdGF0aWMgaW50IGNzc1ZhbHVlS2V5d29yZElEKGNvbnN0IENoYXJhY3Rl
clR5cGUqIHZhbHVlS2V5d29yZCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIH0KIAogICAgIGNvbnN0
IFZhbHVlKiBoYXNoVGFibGVFbnRyeSA9IGZpbmRWYWx1ZShidWZmZXIsIGxlbmd0aCk7Ci0gICAg
cmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMDsKKyAgICByZXR1
cm4gaGFzaFRhYmxlRW50cnkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihoYXNoVGFibGVFbnRy
eS0+aWQpIDogQ1NTVmFsdWVJbnZhbGlkOwogfQogCi1pbnQgY3NzVmFsdWVLZXl3b3JkSUQoY29u
c3QgQ1NTUGFyc2VyU3RyaW5nJiBzdHJpbmcpCitDU1NWYWx1ZUlEIGNzc1ZhbHVlS2V5d29yZElE
KGNvbnN0IENTU1BhcnNlclN0cmluZyYgc3RyaW5nKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBDU1NWYWx1ZUludmFsaWQ7CiAgICAgaWYgKGxlbmd0aCA+IG1heENTU1Zh
bHVlS2V5d29yZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBDU1NW
YWx1ZUludmFsaWQ7CiAKICAgICByZXR1cm4gc3RyaW5nLmlzOEJpdCgpID8gY3NzVmFsdWVLZXl3
b3JkSUQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCkgOiBjc3NWYWx1ZUtleXdvcmRJRChz
dHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5k
ZXggYzEzMTUwNDcyZjM0NWFmNzdlNzU3N2FkODU3ZWZkYzI0YzAyNzJhNi4uNTliMGYwNzU0Nzcz
Y2VlN2ExNjhlNGQ2MjgxODFkN2MzMTJiMDBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgorI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIk1l
ZGlhUXVlcnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtOTYsNyArOTcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBT
dHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVN5c3Rl
bUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIERvY3VtZW50Kik7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJik7Ci0gICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VWYWxp
ZFByaW1pdGl2ZShpbnQgaWRlbnQsIENTU1BhcnNlclZhbHVlKik7CisgICAgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShDU1NWYWx1ZUlEIGlkZW50LCBD
U1NQYXJzZXJWYWx1ZSopOwogICAgIGJvb2wgcGFyc2VEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQ
cm9wZXJ0eVNldCosIGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbW11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBwYXJzZUlubGluZVN0eWxlRGVjbGFy
YXRpb24oY29uc3QgU3RyaW5nJiwgRWxlbWVudCopOwogICAgIFBhc3NPd25QdHI8TWVkaWFRdWVy
eT4gcGFyc2VNZWRpYVF1ZXJ5KGNvbnN0IFN0cmluZyYpOwpAQCAtNjgxLDcgKzY4Miw3IEBAIHBy
aXZhdGU6CiAKIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJRChjb25zdCBDU1NQYXJzZXJTdHJp
bmcmKTsKIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJRChjb25zdCBTdHJpbmcmKTsKLWludCBj
c3NWYWx1ZUtleXdvcmRJRChjb25zdCBDU1NQYXJzZXJTdHJpbmcmKTsKK0NTU1ZhbHVlSUQgY3Nz
VmFsdWVLZXl3b3JkSUQoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJik7CiAjaWYgUExBVEZPUk0oSU9T
KQogdm9pZCBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIGNvbnN0IGNoYXIqJiBwcm9wZXJ0eU5hbWVBbGlhcywgdW5zaWduZWQmIG5ld0xlbmd0aCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAppbmRleCAxOGY3NmUxNDU5
ZjgwNDFjOTkyMGY0MDhiNTZmNWMxZDE3YzUwNjc1Li4xZmQ5NTM0YWFkNTkzMzI2MDVlNDkzOGJk
ZDBjMzY3YTlmYmRkOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCkBAIC0y
Miw2ICsyMiw3IEBACiAjZGVmaW5lIENTU1BhcnNlclZhbHVlc19oCiAKICNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEwOSw3ICsxMTAsNyBAQCBzdHJ1Y3QgQ1NTUGFy
c2VyU3RyaW5nIHsKIHN0cnVjdCBDU1NQYXJzZXJGdW5jdGlvbjsKIAogc3RydWN0IENTU1BhcnNl
clZhbHVlIHsKLSAgICBpbnQgaWQ7CisgICAgQ1NTVmFsdWVJRCBpZDsKICAgICBib29sIGlzSW50
OwogICAgIHVuaW9uIHsKICAgICAgICAgZG91YmxlIGZWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlUG9vbC5jcHAKaW5kZXggZmQ5ODBjNGQzZWM3OWQzMTY4YmJiYTBiZjlhODJkNDljN2Y3NDgx
MC4uODU1NjgyNjkzZjhiZjc5YzZmNmM5NTViYTdjNzM5YjFlNDRmODM5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlUG9vbC5jcHAKQEAgLTQ5LDE2ICs0OSwyMiBAQCBDU1NWYWx1ZVBvb2w6OkNT
U1ZhbHVlUG9vbCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1Zh
bHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBpZGVudCkKK1Bhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU1ZhbHVlUG9vbDo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlSUQgaWRlbnQpCiB7Ci0gICAgaWYgKGlkZW50IDw9IDAgfHwgaWRlbnQgPj0gbnVtQ1NTVmFs
dWVLZXl3b3JkcykKKyAgICBpZiAoIWlkZW50KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWRlbnQpOwogCisgICAgUkVMRUFTRV9BU1NFUlQoaWRl
bnQgPiAwICYmIGlkZW50IDwgbnVtQ1NTVmFsdWVLZXl3b3Jkcyk7CiAgICAgaWYgKCFtX2lkZW50
aWZpZXJWYWx1ZUNhY2hlW2lkZW50XSkKICAgICAgICAgbV9pZGVudGlmaWVyVmFsdWVDYWNoZVtp
ZGVudF0gPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7CiAgICAg
cmV0dXJuIG1faWRlbnRpZmllclZhbHVlQ2FjaGVbaWRlbnRdOwogfQogCitQYXNzUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NQ
cm9wZXJ0eUlEIGlkZW50KQoreworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihpZGVudCk7Cit9CisKIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENT
U1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSkKIHsKICAgICAv
LyBUaGVzZSBhcmUgdGhlIGVtcHR5IGFuZCBkZWxldGVkIHZhbHVlcyBvZiB0aGUgaGFzaCB0YWJs
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaAppbmRleCA0NWQ2MjBmZmIyZWExMDM2MTgxMjcx
OTk1YmMzYmRhZjE1ZDA5OTQ2Li40MjFkNzRkNmU2OGZlMDI1NjlhYzI0MjFjMDY5OTM4YWEwZDQ3
Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ1NTSW5oZXJpdGVkVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00Niw3ICs0
Nyw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU0luaGVyaXRlZFZhbHVlPiBjcmVhdGVJ
bmhlcml0ZWRWYWx1ZSgpIHsgcmV0dXJuIG1faW5oZXJpdGVkVmFsdWU7IH0KICAgICBQYXNzUmVm
UHRyPENTU0luaXRpYWxWYWx1ZT4gY3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSB7IHJldHVy
biBtX2ltcGxpY2l0SW5pdGlhbFZhbHVlOyB9CiAgICAgUGFzc1JlZlB0cjxDU1NJbml0aWFsVmFs
dWU+IGNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gbV9leHBsaWNpdEluaXRp
YWxWYWx1ZTsgfQotICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShpbnQgaWRlbnRpZmllcik7CisgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlSUQgaWRlbnRpZmllcik7CisgICAg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1By
b3BlcnR5SUQgaWRlbnRpZmllcik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlQ29sb3JWYWx1ZSh1bnNpZ25lZCByZ2JWYWx1ZSk7CiAgICAgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY3JlYXRlVmFsdWUoZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzKTsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVW
YWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHR5
cGUpIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5cGUpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggNzI4OWJkODkyM2YwNmRl
NWQzYTI5YWVmNjdjZTVlZTE2NjgyNmY2Ny4uZDZhYTMzMTg0OGE1NmE0N2UyNzBjNmJhMGVjNGVm
NjViYmJjNGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAt
NzI3LDcgKzcyNywxMyBAQCB2b2lkIE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpzZXRQcmVmaXhp
bmdWYXJpYW50UHJvcGVydHkoY29uc3QgQ1NTUHJvcGVydHkmIHBybwogICAgICAgICAqdG9SZXBs
YWNlID0gQ1NTUHJvcGVydHkocHJlZml4aW5nVmFyaWFudCwgcHJvcGVydHkudmFsdWUoKSwgcHJv
cGVydHkuaXNJbXBvcnRhbnQoKSwgcHJvcGVydHkuc2hvcnRoYW5kSUQoKSwgcHJvcGVydHkubWV0
YWRhdGEoKS5tX2ltcGxpY2l0KTsKIH0KIAotYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9v
bCBpbXBvcnRhbnQpCitib29sIE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllciwgYm9vbCBpbXBv
cnRhbnQpCit7CisgICAgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgY3NzVmFs
dWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpLCBpbXBvcnRhbnQpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEIGlkZW50aWZp
ZXIsIGJvb2wgaW1wb3J0YW50KQogewogICAgIHNldFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3Bl
cnR5SUQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZGVudGlmaWVyKSwg
aW1wb3J0YW50KSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuaAppbmRleCBiMzA3YzVjMTNlZjI1N2RiODdiODQ0NDIzMDA0Mjc5ODc5M2Y3MjMzLi41
MzAxNjllMDJlNzUyNWMzNGYwMmNiZTU4ZjIzN2VjMjY3YzljNmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDU1NQcmlt
aXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yMDEsNyArMjAyLDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1w
b3J0YW50ID0gZmFsc2UpOwogCiAgICAgLy8gVGhlc2UgZG8gbm90LiBGSVhNRTogVGhpcyBpcyB0
b28gbWVzc3ksIHdlIGNhbiBkbyBiZXR0ZXIuCi0gICAgYm9vbCBzZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgYm9v
bCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIsIGJvb2wg
aW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwg
Q1NTUHJvcGVydHlJRCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICB2
b2lkIGFwcGVuZFByZWZpeGluZ1ZhcmlhbnRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYpOwog
ICAgIHZvaWQgc2V0UHJlZml4aW5nVmFyaWFudFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5Jik7
CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYsIENTU1Byb3BlcnR5KiBz
bG90ID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggZTZhNmRhN2Nl
MWUyMzNjMjFmOTk3ODBkMTMyNDUyODJkOTg3ODFiMS4uZTk2OTNkZGQxZDA0MWYzY2Y3MDM2ZTE2
MTEyODEyMGFkZDM4ZWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAt
MjI3LDcgKzIyNywxNCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmlubGluZVN0eWxlQ2hhbmdlZCgp
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKGRv
Y3VtZW50KCksIHRoaXMpOwogfQogICAgIAotYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJv
b2wgaW1wb3J0YW50KQorYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBpZGVudGlmaWVyLCBib29sIGlt
cG9ydGFudCkKK3sKKyAgICBlbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKS0+c2V0UHJvcGVydHko
cHJvcGVydHlJRCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGlkZW50aWZp
ZXIpLCBpbXBvcnRhbnQpOworICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEIGlkZW50aWZpZXIsIGJvb2wgaW1w
b3J0YW50KQogewogICAgIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLT5zZXRQcm9wZXJ0eShw
cm9wZXJ0eUlELCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmll
ciksIGltcG9ydGFudCk7CiAgICAgaW5saW5lU3R5bGVDaGFuZ2VkKCk7CkBAIC0zNjYsNyArMzcz
LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoKQogICAgICAgICBjYWNoZUl0ZXJhdG9yLT52YWx1ZSA9IG5ld0VudHJ5LnJlbGVhc2UoKTsK
IH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsIGludCBpZGVudGlmaWVyKQordm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0
eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqIHN0
eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllcikKIHsK
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKGlkZW50aWZpZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5oCmluZGV4IDVmZTMyNDYwZTIwODRjYjU5N2UxNzMzYjc1YThiODdkZTY5ZWJkNzguLjdhMjcy
MDAxZGQzYmNlYjBiODlkY2ZkZTRmNGQyYjY3OTQyZmQ5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVL
ZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDcsNyArNDgsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBp
bmxpbmVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGVsZW1lbnREYXRhKCkgPyBlbGVtZW50RGF0YSgp
LT5tX2lubGluZVN0eWxlLmdldCgpIDogMDsgfQogICAgIAotICAgIGJvb2wgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQg
PSBmYWxzZSk7CisgICAgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQs
IENTU1ZhbHVlSUQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgYm9v
bCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgaWRl
bnRpZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgYm9vbCBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcywgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgYm9vbCBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1w
b3J0YW50ID0gZmFsc2UpOwogICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEKTsKQEAgLTcwLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBi
b29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBpbnQg
aWRlbnRpZmllcik7CisgICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlE
IGlkZW50aWZpZXIpOwogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgZG91YmxlIHZh
bHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKICAgICB2b2lkIGFkZFByb3BlcnR5
VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCosIENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggYWRkNTM0NTAyMDlkYzM1ZTAyODU3ZjM1MTkzZGQyMTgz
YTBlNThhNS4uYmZmYzk1NGFkYzY1MDgxOTI0NTI5NWEzYWM2YmVhYWFkOTViMzY3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IEhUTUxGb250U2l6ZUVxdWl2YWxlbnQ6OmF0dHJpYnV0ZVZhbHVl
QXNDU1NWYWx1ZShFbGVtZW50KiBlCiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIGlmICghZWxl
bWVudC0+aGFzQXR0cmlidXRlKG1fYXR0ck5hbWUpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBp
bnQgc2l6ZTsKKyAgICBDU1NWYWx1ZUlEIHNpemU7CiAgICAgaWYgKCFIVE1MRm9udEVsZW1lbnQ6
OmNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGVsZW1lbnQtPmdldEF0dHJpYnV0ZShtX2F0dHJO
YW1lKSwgc2l6ZSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihzaXplKTsKQEAgLTkyNyw5ICs5MjcsOSBAQCB2b2lkIEVk
aXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNo
b3VsZFByZXNlcnZlV3JpdAogICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKHVuaWNvZGVCaWRpICYmIHVu
aWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgbV9tdXRhYmxlU3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRJZGVudCgpKTsKKyAgICAgICAgbV9t
dXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19j
YXN0PENTU1ZhbHVlSUQ+KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJp
ZGkuZ2V0KCkpLT5nZXRJZGVudCgpKSk7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gJiYgZGlyZWN0
aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4oZGlyZWN0aW9uLmdldCgpKS0+Z2V0SWRlbnQoKSk7CisgICAgICAgICAgICBtX211dGFi
bGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENT
U1ZhbHVlSUQ+KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdldCgp
KS0+Z2V0SWRlbnQoKSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKaW5kZXggMDJlNGUxNGQyYmFjMWY0MjM2OTkyNzNmYTYwNTQ5YWU1NzFmZDBl
Ni4uODQ2MTVkM2I2OTIxNmE1YmMzMjRmNzQ0NjZmODg5NmJhMmU0YWVmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgRWRpdEFjdGkKICAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwg
c291cmNlLCBhY3Rpb24sIHN0eWxlLmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgZXhlY3V0ZUFw
cGx5U3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFj
dGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IHByb3BlcnR5VmFsdWUp
CitzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1h
bmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBDU1NWYWx1ZUlEIHByb3BlcnR5VmFsdWUpCiB7CiAgICAgUmVmUHRyPE11dGFibGVTdHls
ZVByb3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsK
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CkBAIC00
MjAsNyArNDIwLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY28KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZUZvbnRTaXplKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZTsKKyAgICBDU1NWYWx1
ZUlEIHNpemU7CiAgICAgaWYgKCFIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJvbUZvbnRTaXpl
TnVtYmVyKHZhbHVlLCBzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBl
eGVjdXRlQXBwbHlTdHlsZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uQ2hhbmdlQXR0cmlidXRl
cywgQ1NTUHJvcGVydHlGb250U2l6ZSwgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCmluZGV4IDM0NDliM2IzNTM2OTQ5ZjI1ZWVhZGY0YzA3M2Y1YWY5ZGMyMDUzYzMuLjVlZWVk
NWU0MTMyY2JmNzBlYWJlZjYzYzMxZTUxM2UyOTA2YjYzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6aWVGb3Ji
aWRzSW5zZXJ0SFRNTCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW5s
aW5lIGludCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8oSFRNTEVsZW1lbnQqIGVsZW1l
bnQpCitzdGF0aWMgaW5saW5lIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJB
dXRvKEhUTUxFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmIChlbGVtZW50LT5oYXNMb2NhbE5h
bWUocHJlVGFnKSB8fCBlbGVtZW50LT5oYXNMb2NhbE5hbWUodGV4dGFyZWFUYWcpKQogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVXZWJraXRQbGFpbnRleHQ7CkBAIC02MDIsOCArNjAyLDggQEAgdm9p
ZCBIVE1MRWxlbWVudDo6YXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21p
Y1N0cmluZyYgYWxpZ25tZW50LAogewogICAgIC8vIFZlcnRpY2FsIGFsaWdubWVudCB3aXRoIHJl
c3BlY3QgdG8gdGhlIGN1cnJlbnQgYmFzZWxpbmUgb2YgdGhlIHRleHQKICAgICAvLyByaWdodCBv
ciBsZWZ0IG1lYW5zIGZsb2F0aW5nIGltYWdlcy4KLSAgICBpbnQgZmxvYXRWYWx1ZSA9IENTU1Zh
bHVlSW52YWxpZDsKLSAgICBpbnQgdmVydGljYWxBbGlnblZhbHVlID0gQ1NTVmFsdWVJbnZhbGlk
OworICAgIENTU1ZhbHVlSUQgZmxvYXRWYWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKKyAgICBDU1NW
YWx1ZUlEIHZlcnRpY2FsQWxpZ25WYWx1ZSA9IENTU1ZhbHVlSW52YWxpZDsKIAogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhbGlnbm1lbnQsICJhYnNtaWRkbGUiKSkKICAgICAgICAgdmVydGlj
YWxBbGlnblZhbHVlID0gQ1NTVmFsdWVNaWRkbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5jcHAKaW5kZXggZjA1MDczYWY0NGQ4MWU2ZjVhOTRiZDg4NDFlYzJjNzVkYzVmY2U0
Ni4uMzI1NDNhNzRlMDY1Mzk3OTM1YjI2MmY1Y2I2MGZjY2E4OWVlMThkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBi
b29sIHBhcnNlRm9udFNpemUoY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50JiBzaXplKQogICAgIHJl
dHVybiBwYXJzZUZvbnRTaXplKGlucHV0LmNoYXJhY3RlcnMxNigpLCBpbnB1dC5sZW5ndGgoKSwg
c2l6ZSk7CiB9CiAKLWJvb2wgSFRNTEZvbnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250U2l6ZU51
bWJlcihjb25zdCBTdHJpbmcmIHMsIGludCYgc2l6ZSkKK2Jvb2wgSFRNTEZvbnRFbGVtZW50Ojpj
c3NWYWx1ZUZyb21Gb250U2l6ZU51bWJlcihjb25zdCBTdHJpbmcmIHMsIENTU1ZhbHVlSUQmIHNp
emUpCiB7CiAgICAgaW50IG51bSA9IDA7CiAgICAgaWYgKCFwYXJzZUZvbnRTaXplKHMsIG51bSkp
CkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBIVE1MRm9udEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB2b2lkIEhUTUxGb250
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICBpZiAobmFtZSA9PSBzaXplQXR0cikgewotICAgICAg
ICBpbnQgc2l6ZSA9IDA7CisgICAgICAgIENTU1ZhbHVlSUQgc2l6ZSA9IENTU1ZhbHVlSW52YWxp
ZDsKICAgICAgICAgaWYgKGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKHZhbHVlLCBzaXplKSkK
ICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHls
ZSwgQ1NTUHJvcGVydHlGb250U2l6ZSwgc2l6ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNv
bG9yQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCmluZGV4IGIyZGMwYmU1
MmY2YWVkOWQwOGYzZjlhNmY2NWVhNjE2MGQ4MzUzMTUuLjBkOTAyMGQ1ZTE3ZmZmMDQ1YzZjOTk4
ZTg5Nzc3NDg5NTNkZTE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
bnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaApA
QCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MRm9udEVsZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRN
TEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxGb250RWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIAotICAgIHN0
YXRpYyBib29sIGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYsIGludCYp
OworICAgIHN0YXRpYyBib29sIGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmlu
ZyYsIENTU1ZhbHVlSUQmKTsKIAogcHJpdmF0ZToKICAgICBIVE1MRm9udEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcAppbmRleCA3YTRhOGEzOTEwYTE0OGMxZmQ0YWNjNTZkMGRiMmNhMGI4NzJhNmMx
Li4xZGM5Y2FlZjI3N2QzMWRmNzk2ODkwOWMzMDA1NWJlMWNiNzA4ZGYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIEhU
TUxUYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cgogICAgIH0KIH0KIAotc3RhdGljIFN0eWxlUHJvcGVydHlTZXQqIGxl
YWtCb3JkZXJTdHlsZShpbnQgdmFsdWUpCitzdGF0aWMgU3R5bGVQcm9wZXJ0eVNldCogbGVha0Jv
cmRlclN0eWxlKENTU1ZhbHVlSUQgdmFsdWUpCiB7CiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVBy
b3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgdmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDViZDU2NDEy
ZTk1N2ZlMmEyYmVmMjhkMjJmNzZkY2Q2ZjUwMzlhMTMuLjM4ZjJlYWEwZjZlYWM5Njk4NzgzMmE5
YTc2ZmNmMTExN2FlYTc2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKQEAgLTExMjYsMTIgKzExMjYsMTIgQEAgTmV4dFNldHRpbmc6CiAjZW5kaWYKIH0K
IAotaW50IFRleHRUcmFja0N1ZTo6Z2V0Q1NTV3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0CitDU1NW
YWx1ZUlEIFRleHRUcmFja0N1ZTo6Z2V0Q1NTV3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZGlzcGxheURpcmVjdGlvbjsKIH0KIAotaW50IFRleHRUcmFja0N1ZTo6Z2V0
Q1NTV3JpdGluZ01vZGUoKSBjb25zdAorQ1NTVmFsdWVJRCBUZXh0VHJhY2tDdWU6OmdldENTU1dy
aXRpbmdNb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kaXNwbGF5V3JpdGluZ01vZGU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA3MjRlNzhiZTA1
ZmEwYTk1OTBhZjVmMjZjYmU2M2Y0YWI1ZjQ2Y2QxLi42MGUzZmFlYjk5ZWEwZjVkNDVmMDNhMGM2
YjBiZTU2NmQzOTNkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmgKQEAgLTE1OSw4ICsxNTksOCBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPGRvdWJsZSwgZG91
YmxlPiBnZXRDU1NQb3NpdGlvbigpIGNvbnN0OwogCiAgICAgaW50IGdldENTU1NpemUoKSBjb25z
dDsKLSAgICBpbnQgZ2V0Q1NTV3JpdGluZ0RpcmVjdGlvbigpIGNvbnN0OwotICAgIGludCBnZXRD
U1NXcml0aW5nTW9kZSgpIGNvbnN0OworICAgIENTU1ZhbHVlSUQgZ2V0Q1NTV3JpdGluZ0RpcmVj
dGlvbigpIGNvbnN0OworICAgIENTU1ZhbHVlSUQgZ2V0Q1NTV3JpdGluZ01vZGUoKSBjb25zdDsK
IAogICAgIGVudW0gV3JpdGluZ0RpcmVjdGlvbiB7CiAgICAgICAgIEhvcml6b250YWwsCkBAIC0y
NjksMTAgKzI2OSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaXNwbGF5VHJlZVNob3VsZENo
YW5nZTsKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBtX2Rpc3BsYXlUcmVlOwogCi0gICAg
aW50IG1fZGlzcGxheURpcmVjdGlvbjsKKyAgICBDU1NWYWx1ZUlEIG1fZGlzcGxheURpcmVjdGlv
bjsKIAotICAgIGludCBtX2Rpc3BsYXlXcml0aW5nTW9kZU1hcFtOdW1iZXJPZldyaXRpbmdEaXJl
Y3Rpb25zXTsKLSAgICBpbnQgbV9kaXNwbGF5V3JpdGluZ01vZGU7CisgICAgQ1NTVmFsdWVJRCBt
X2Rpc3BsYXlXcml0aW5nTW9kZU1hcFtOdW1iZXJPZldyaXRpbmdEaXJlY3Rpb25zXTsKKyAgICBD
U1NWYWx1ZUlEIG1fZGlzcGxheVdyaXRpbmdNb2RlOwogCiAgICAgaW50IG1fZGlzcGxheVNpemU7
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>