<?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>116561</bug_id>
          
          <creation_ts>2013-05-21 11:02:01 -0700</creation_ts>
          <short_desc>fourthTier: should use ConcurrentJITLock[er] directly and not through typedef</short_desc>
          <delta_ts>2013-05-21 12:26:51 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112836</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>891898</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-21 11:02:01 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891914</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-05-21 11:24:38 -0700</bug_when>
    <thetext>RS=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891940</commentid>
    <comment_count>2</comment_count>
      <attachid>202457</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-21 12:24:28 -0700</bug_when>
    <thetext>Created attachment 202457
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891942</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-21 12:26:51 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/150466</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202457</attachid>
            <date>2013-05-21 12:24:28 -0700</date>
            <delta_ts>2013-05-21 12:24:28 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>62530</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOCBA
QAorMjAxMy0wNS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IGZvdXJ0aFRpZXI6IHNob3VsZCB1c2UgQ29uY3VycmVudEpJVExvY2tbZXJdIGRpcmVjdGx5IGFu
ZCBub3QgdGhyb3VnaCB0eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTY1NjEKKworICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICAoSlND
OjpBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5oOgorICAgICAgICAoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJy
YXlQcm9maWxlOjpleHBlY3RlZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmls
ZTo6c3RydWN0dXJlSXNQb2x5bW9ycGhpYyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6
aGFzRGVmaW5pdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6Om9ic2Vy
dmVkQXJyYXlNb2Rlcyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6bWF5SW50ZXJjZXB0
SW5kZXhlZEFjY2Vzc2VzKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjptYXlTdG9yZVRv
SG9sZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b3V0T2ZCb3VuZHMpOgorICAgICAg
ICAoSlNDOjpBcnJheVByb2ZpbGU6OnVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxpbmcpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBBcnJheVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9ja0xvY2suaDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAg
ICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlND
OjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVIb2xkZXI6OmFkZCk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxl
UGFyc2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVQYXJzZXI6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFs
dWVQcm9maWxlLmg6CisgICAgICAgIChDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVI
b2xkZXIpOgorICAgICAgICAoTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIpOgorICAgICAg
ICAqIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAo
SlNDOjpNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlOjpnZXRTcGVjRmFpbEJ1Y2tldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpjb21wdXRlRm9y
KToKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFs
dWVQcm9maWxlQmFzZTo6YnJpZWZEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OlZhbHVlUHJv
ZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmFkZFZhcik6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJh
eU1vZGUuaDoKKyAgICAgICAgKEFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlN
b2RlOjp3aXRoUHJvZmlsZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aW5qZWN0TGF6eU9wZXJhbmRTcGVj
dWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rp
b25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omdl
dEFycmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFycmF5
TW9kZUFuZEVtaXRDaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZVJlc29sdmVPcGVyYXRpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlByZWRpY3Rpb25JbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNob29zZUFycmF5TW9kZSk6CisgICAgICAg
ICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAg
ICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJf
RlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpsYXp5TGlua0Zvcik6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxl
cjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZSk6CisgICAgICAgICogcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmFkZEds
b2JhbFZhcik6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpKU0FjdGl2YXRpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAg
IChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6CisgICAg
ICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6cmVzb2x2
ZUNvbnRhaW5pbmdTY29wZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6cmVzb2x2
ZVB1dCk6CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6ZmluZFJlZ2lzdGVySW5k
ZXgpOgorICAgICAgICAoSlNDOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OjphZGRSZWdpc3Rl
cnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOgorICAg
ICAgICAoSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9iamVjdDo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVHZXQpOgorICAgICAgICAo
SlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVu
dGx5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVk
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnB1dFNwZWNpZmljVmFsdWUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlUHJvcGVy
dHlNYXApOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKFN5bWJvbFRh
YmxlKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmZpbmQpOgorICAgICAgICAoSlNDOjpT
eW1ib2xUYWJsZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmlubGluZUdldCk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpiZWdpbik6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlOjplbmQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6c2l6ZSk6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlOjphZGQpOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6c2V0
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNvbnRhaW5zKToKKwogMjAxMy0wNS0yMCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGZvdXJ0aFRpZXI6IERG
RyBzaG91bGQgYmUgYWJsZSB0byBydW4gb24gYSBzZXBhcmF0ZSB0aHJlYWQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTA0NjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNiBAQAogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyog
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMENENEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBDRDRD
NDE1RjZCNkJCMDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDRDRDMzE1RjZCNkI1MDAzMkYx
QzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi87IH07Ci0JCTBGMEQ4NUIyMTcyMzQ1NTQw
MDMzODIxMCAvKiBDb2RlQmxvY2tMb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBEODVCMTE3MjM0NTUxMDAzMzgyMTAgLyogQ29kZUJsb2NrTG9j
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgx
MTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxMzZENEQxNzRBRDY5RTAwNzVCMzU0IC8qIERlZmVyR0Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM2RDRC
MTc0QUQ2OUIwMDc1QjM1NCAvKiBEZWZlckdDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxMzkxMjkxNjc3MUMzMzAwOUNDQjA3IC8qIFByb2Zp
bGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjEzOTEyNDE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29k
ZVNlcXVlbmNlLmNwcCAqLzsgfTsKQEAgLTEwNzAsNyArMTA2OSw2IEBACiAJCTBGMEI4M0I4MTRC
Q0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDRDRDMDE1RjFBNjA0MDAz
MkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1dERpcmVjdEluZGV4TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjBDRDRDMzE1RjZCNkI1MDAzMkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGFyc2VBcnJheVZhbHVlTWFwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYwRDg1QjExNzIzNDU1MTAwMzM4MjEw
IC8qIENvZGVCbG9ja0xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUJsb2NrTG9jay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJ
bnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRD
YWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxMzZENEIxNzRB
RDY5QjAwNzVCMzU0IC8qIERlZmVyR0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVmZXJHQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjEzOTEyNDE2Nzcx
QzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHA7IHBh
dGggPSBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzE1MCw3ICszMTQ4LDYgQEAKIAkJCQk5NjlBMDc5MTBFRDFEM0FF
MDBGMUY2ODEgLyogQ29kZUJsb2NrLmggKi8sCiAJCQkJMEY4Rjk0M0QxNjY3NjMyRDAwRDYxOTcx
IC8qIENvZGVCbG9ja0hhc2guY3BwICovLAogCQkJCTBGOEY5NDNFMTY2NzYzMkQwMEQ2MTk3MSAv
KiBDb2RlQmxvY2tIYXNoLmggKi8sCi0JCQkJMEYwRDg1QjExNzIzNDU1MTAwMzM4MjEwIC8qIENv
ZGVCbG9ja0xvY2suaCAqLywKIAkJCQkwRjk2RUJCMTE2Njc2RUY0MDA4QkFERTMgLyogQ29kZUJs
b2NrV2l0aEpJVFR5cGUuaCAqLywKIAkJCQkwRjhGOTQ0NTE2Njc2NEVFMDBENjE5NzEgLyogQ29k
ZU9yaWdpbi5jcHAgKi8sCiAJCQkJMEZCRDdFNjcxNDQ3OTk4RjAwNDgxMzE1IC8qIENvZGVPcmln
aW4uaCAqLywKQEAgLTMyNDcsNyArMzI0NCw2IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0
M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
M0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI3RjM5NTE1RUQ4RTQ2MDBGMTY3QjIgLyogQXJyYXlDb252ZW50aW9ucy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEYwRDg1QjIxNzIzNDU1NDAwMzM4MjEwIC8qIENvZGVCbG9ja0xvY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBB
cnJheVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVGNjgzNUYxNzQzNDNDQzAwQTMy
RTI1IC8qIEpJVFN0dWJzQVJNdjcuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDE1MDM5
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRT
dHJlYW0mIG91dCwgQXIKICAgICAgICAgb3V0LnByaW50KCJBcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlIik7CiB9CiAKLXZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24oY29uc3QgQ29kZUJsb2NrTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBP
cGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlvbikKK3ZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgT3BlcmF0aW9uSW5Qcm9ncmVzcyBvcGVyYXRpb24pCiB7CiAgICAg
aWYgKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpIHsKICAgICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMg
fD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKTsKQEAgLTEwMCw3
ICsxMDAsNyBAQCB2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0CiAgICAg
ICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBwb2x5bW9ycGhpY1N0cnVjdHVyZSgpOwogfQogCi1D
U3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb2RlQmxvY2tMb2Nr
ZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCitDU3RyaW5nIEFycmF5UHJvZmlsZTo6
YnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVC
bG9jayogY29kZUJsb2NrKQogewogICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIs
IGNvZGVCbG9jayk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAxNTAzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpZm5kZWYgQXJyYXlQcm9maWxlX2gKICNkZWZpbmUgQXJyYXlQcm9maWxlX2gKIAot
I2luY2x1ZGUgIkNvZGVCbG9ja0xvY2suaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtMTU0LDMxICsxNTQsMzEgQEAgcHVibGljOgogICAgICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb2RlQmxvY2tMb2NrZXImLCBDb2RlQmxvY2sq
LCBPcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb24pOworICAgIHZvaWQgY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqLCBP
cGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb24pOwogICAgIAotICAgIFN0cnVjdHVyZSog
ZXhwZWN0ZWRTdHJ1Y3R1cmUoY29uc3QgQ29kZUJsb2NrTG9ja2VyJiBsb2NrZXIpIGNvbnN0Cisg
ICAgU3RydWN0dXJlKiBleHBlY3RlZFN0cnVjdHVyZShjb25zdCBDb25jdXJyZW50SklUTG9ja2Vy
JiBsb2NrZXIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoc3RydWN0dXJlSXNQb2x5bW9ycGhp
Yyhsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2V4cGVj
dGVkU3RydWN0dXJlOwogICAgIH0KLSAgICBib29sIHN0cnVjdHVyZUlzUG9seW1vcnBoaWMoY29u
c3QgQ29kZUJsb2NrTG9ja2VyJikgY29uc3QKKyAgICBib29sIHN0cnVjdHVyZUlzUG9seW1vcnBo
aWMoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9leHBlY3RlZFN0cnVjdHVyZSA9PSBwb2x5bW9ycGhpY1N0cnVjdHVyZSgpOwogICAgIH0K
LSAgICBib29sIGhhc0RlZmluaXRlU3RydWN0dXJlKGNvbnN0IENvZGVCbG9ja0xvY2tlciYgbG9j
a2VyKSBjb25zdAorICAgIGJvb2wgaGFzRGVmaW5pdGVTdHJ1Y3R1cmUoY29uc3QgQ29uY3VycmVu
dEpJVExvY2tlciYgbG9ja2VyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFzdHJ1Y3R1
cmVJc1BvbHltb3JwaGljKGxvY2tlcikgJiYgbV9leHBlY3RlZFN0cnVjdHVyZTsKICAgICB9Ci0g
ICAgQXJyYXlNb2RlcyBvYnNlcnZlZEFycmF5TW9kZXMoY29uc3QgQ29kZUJsb2NrTG9ja2VyJikg
Y29uc3QgeyByZXR1cm4gbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KLSAgICBib29sIG1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3Nlcyhjb25zdCBDb2RlQmxvY2tMb2NrZXImKSBjb25zdCB7IHJldHVy
biBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlczsgfQorICAgIEFycmF5TW9kZXMgb2JzZXJ2
ZWRBcnJheU1vZGVzKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKSBjb25zdCB7IHJldHVybiBt
X29ic2VydmVkQXJyYXlNb2RlczsgfQorICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKSBjb25zdCB7IHJldHVybiBtX21heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3NlczsgfQogICAgIAotICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoY29u
c3QgQ29kZUJsb2NrTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV9tYXlTdG9yZVRvSG9sZTsgfQot
ICAgIGJvb2wgb3V0T2ZCb3VuZHMoY29uc3QgQ29kZUJsb2NrTG9ja2VyJikgY29uc3QgeyByZXR1
cm4gbV9vdXRPZkJvdW5kczsgfQorICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUoY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0KKyAgICBi
b29sIG91dE9mQm91bmRzKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKSBjb25zdCB7IHJldHVy
biBtX291dE9mQm91bmRzOyB9CiAgICAgCi0gICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVj
dHVyZXMoY29uc3QgQ29kZUJsb2NrTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXM7IH0KKyAgICBib29sIHVzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyhjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJikgY29uc3QgeyByZXR1cm4gbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXM7IH0KICAgICAKLSAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRpb24o
Y29uc3QgQ29kZUJsb2NrTG9ja2VyJiwgQ29kZUJsb2NrKik7CisgICAgQ1N0cmluZyBicmllZkRl
c2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqKTsKICAgICAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cAkocmV2aXNpb24gMTUwMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyCiAKIENhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKIHsKLSAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxv
Y2stPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9j
ay0+bV9sb2NrKTsKICAgICAKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAg
VU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE1MDQ2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MzgsNyArNjM4LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmJlZ2luRHVtcFByb2ZpbGluZyhQcmludAog
CiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IEluc3RydWN0aW9uKiYgaXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCiB7Ci0gICAg
Q29kZUJsb2NrTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CiAgICAgCiAgICAgKytpdDsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCkBAIC02NTUsNyArNjU1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGlu
ZyhQcmludAogCiB2b2lkIENvZGVCbG9jazo6ZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcp
CiB7Ci0gICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCiAgICAgKytpdDsKICNpZiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCkBAIC0zMjAyLDcgKzMyMDIsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9j
azo6Z2V0T3JBZGRBcnJheVByCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNB
bmRDb3VudExpdmVuZXNzKAogICAgIE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uLCB1bnNp
Z25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVt
YmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKLSAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAKICAg
ICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9m
U2FtcGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxl
OjpudW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFs
dWUgcHJvZmlsZXMgYXJlIGZ1bGwuCkBAIC0zMjM0LDcgKzMyMzQsNyBAQCB2b2lkIENvZGVCbG9j
azo6dXBkYXRlQWxsVmFsdWVQcm9maWxlUHJlCiAKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxB
cnJheVByZWRpY3Rpb25zKE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uKQogewotICAgIENv
ZGVCbG9ja0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYXJyYXlQcm9maWxl
cy5zaXplKCk7IGktLTspCiAgICAgICAgIG1fYXJyYXlQcm9maWxlc1tpXS5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obG9ja2VyLCB0aGlzLCBvcGVyYXRpb24pOwpAQCAtMzQzMSw3ICszNDMxLDcg
QEAgYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3BjbwogCiBTdHJpbmcgQ29k
ZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoaW50IHJlZ2lzdGVyTnVtYmVyKQogewotICAgIFN5bWJv
bFRhYmxlOjpMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7CisgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAg
ICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIHB0ciA9IHN5bWJvbFRhYmxlKCktPmJl
Z2luKGxvY2tlcik7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgIGlmIChwdHItPnZhbHVl
LmdldEluZGV4KCkgPT0gcmVnaXN0ZXJOdW1iZXIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1MDQ2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgot
I2luY2x1ZGUgIkNvZGVCbG9ja0xvY2suaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5o
IgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1
ZGUgIkNvbXBhY3RKSVRDb2RlTWFwLmgiCkBAIC00NDIsNyArNDQyLDcgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDbwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9Ci0gICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChjb25zdCBDb2Rl
QmxvY2tMb2NrZXImIGxvY2tlciwgaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICBTcGVjdWxh
dGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICB9CkBA
IC04OTIsNyArODkyLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZD
bwogICAgICAgICAvLyBBbm90aGVyIGV4Y2VwdGlvbiB0byB0aGUgcnVsZXMgaXMgdGhhdCB0aGUg
R0MgY2FuIGRvIHdoYXRldmVyIGl0IHdhbnRzCiAgICAgICAgIC8vIHdpdGhvdXQgaG9sZGluZyBh
bnkgbG9ja3MsIGJlY2F1c2UgdGhlIEdDIGlzIGd1YXJhbnRlZWQgdG8gd2FpdCB1bnRpbCBhbnkK
ICAgICAgICAgLy8gY29uY3VycmVudCBjb21waWxhdGlvbiB0aHJlYWRzIGZpbmlzaCB3aGF0IHRo
ZXkncmUgZG9pbmcuCi0gICAgICAgIENvZGVCbG9ja0xvY2sgbV9sb2NrOworICAgICAgICBDb25j
dXJyZW50SklUTG9jayBtX2xvY2s7CiAKICAgICBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKEpJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tMb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0xvY2su
aAkocmV2aXNpb24gMTUwNDY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQ29kZUJsb2NrTG9j
a19oCi0jZGVmaW5lIENvZGVCbG9ja0xvY2tfaAotCi0jaW5jbHVkZSAiQ29uY3VycmVudEpJVExv
Y2suaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXR5cGVkZWYgQ29uY3VycmVudEpJVExvY2sgQ29k
ZUJsb2NrTG9jazsKLXR5cGVkZWYgQ29uY3VycmVudEpJVExvY2tlciBDb2RlQmxvY2tMb2NrZXI7
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gQ29kZUJsb2NrTG9ja19oCi0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAJKHJldmlzaW9uIDE1MDM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvckNoYWluKEdldEIKIAogR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgU3RyaW5nSW1wbCogdWlkKQogewotICAgIENvZGVCbG9ja0xvY2tlciBs
b2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgIAogICAgIFVOVVNFRF9QQVJBTShwcm9m
aWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAJKHJldmlzaW9uIDE1MDM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXI6OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcigp
IHsgfQogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjp+Q29tcHJlc3Nl
ZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyKCkgeyB9CiAKLXZvaWQgQ29tcHJlc3NlZExh
enlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGNv
bnN0IENvZGVCbG9ja0xvY2tlciYgbG9ja2VyLCBPcGVyYXRpb25JblByb2dyZXNzIG9wZXJhdGlv
bikKK3ZvaWQgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb25zKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgT3Bl
cmF0aW9uSW5Qcm9ncmVzcyBvcGVyYXRpb24pCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAg
IHJldHVybjsKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIbwogfQogCiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlP
cGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCi0gICAgY29uc3QgQ29kZUJsb2NrTG9ja2Vy
JiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKKyAgICBjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkK
IHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRQdHIobmV3IExhenlP
cGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0KCkpOwpAQCAtNjQsNyArNjQsNyBAQCBMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZVBhcnNlcjo6TGF6eU9wZXJhCiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBh
cnNlcjo6fkxhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKCkgeyB9CiAKIHZvaWQgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OmluaXRpYWxpemUoCi0gICAgY29uc3QgQ29kZUJsb2Nr
TG9ja2VyJiwgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIp
CisgICAgY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvbXByZXNzZWRMYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZUhvbGRlciYgaG9sZGVyKQogewogICAgIEFTU0VSVChtX21hcC5pc0VtcHR5KCkp
OwogICAgIApAQCAtODksNyArODksNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogTGF6eU9w
ZXJhbmRWYWx1CiB9CiAKIFNwZWN1bGF0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyOjpwcmVkaWN0aW9uKAotICAgIGNvbnN0IENvZGVCbG9ja0xvY2tlciYgbG9ja2VyLCBjb25z
dCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdAorICAgIGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkm
IGtleSkgY29uc3QKIHsKICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdl
dElmUHJlc2VudChrZXkpOwogICAgIGlmICghcHJvZmlsZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
CShyZXZpc2lvbiAxNTAzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
CiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogCi0jaW5jbHVkZSAiQ29kZUJsb2NrTG9jay5o
IgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KQEAgLTE1NiwxMCArMTU2LDEwIEBAIHB1YmxpYzoKICAgICBDb21wcmVzc2VkTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVIb2xkZXIoKTsKICAgICB+Q29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlSG9sZGVyKCk7CiAgICAgCi0gICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb25z
KGNvbnN0IENvZGVCbG9ja0xvY2tlciYsIE9wZXJhdGlvbkluUHJvZ3Jlc3MpOworICAgIHZvaWQg
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgT3Bl
cmF0aW9uSW5Qcm9ncmVzcyk7CiAgICAgCiAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIGFk
ZCgKLSAgICAgICAgY29uc3QgQ29kZUJsb2NrTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkmIGtleSk7CisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBj
b25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KTsKICAgICAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOwpAQCAtMTczLDEz
ICsxNzMsMTMgQEAgcHVibGljOgogICAgIH5MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcigp
OwogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgKLSAgICAgICAgY29uc3QgQ29kZUJsb2NrTG9j
a2VyJiwgQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpOwor
ICAgICAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29tcHJlc3NlZExhenlPcGVyYW5k
VmFsdWVQcm9maWxlSG9sZGVyJiBob2xkZXIpOwogICAgIAogICAgIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlKiBnZXRJZlByZXNlbnQoCiAgICAgICAgIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlS2V5JiBrZXkpIGNvbnN0OwogICAgIAogICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24o
Ci0gICAgICAgIGNvbnN0IENvZGVCbG9ja0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlS2V5JiBrZXkpIGNvbnN0OworICAgICAgICBjb25zdCBDb25jdXJyZW50SklUTG9ja2Vy
JiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3Q7CiBwcml2YXRl
OgogICAgIEhhc2hNYXA8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXksIExhenlPcGVyYW5kVmFs
dWVQcm9maWxlKj4gbV9tYXA7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNw
cAkocmV2aXNpb24gMTUwMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1
NSw3IEBAIEVuY29kZWRKU1ZhbHVlKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm8KICAgICBjYXNl
IExhenlPcGVyYW5kOiB7CiAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSh1
LmxhenlPcGVyYW5kLmJ5dGVjb2RlT2Zmc2V0LCB1LmxhenlPcGVyYW5kLm9wZXJhbmQpOwogICAg
ICAgICAKLSAgICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcih1LmxhenlPcGVyYW5kLmNvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodS5sYXp5
T3BlcmFuZC5jb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0KICAgICAgICAgICAgIHUubGF6eU9wZXJhbmQuY29kZUJsb2NrLT5sYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZXMoKS5hZGQobG9ja2VyLCBrZXkpOwogICAgICAgICByZXR1cm4g
cHJvZmlsZS0+c3BlY0ZhaWxCdWNrZXQoaW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTUwMzk4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb20KIAogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgU3RyaW5nSW1w
bCogdWlkKQogewotICAgIENvZGVCbG9ja0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9s
b2NrKTsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xv
Y2spOwogICAgIAogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuY3BwCShyZXZpc2lvbiAxNTAzOTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFJlc29sdmVHbG9iYWxT
dGF0dXMgY29tcHV0ZUZvclN0cgogCiBSZXNvbHZlR2xvYmFsU3RhdHVzIFJlc29sdmVHbG9iYWxT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCwgUmVzb2x2ZU9wZXJh
dGlvbiogb3BlcmF0aW9uLCBTdHJpbmdJbXBsKiB1aWQpCiB7Ci0gICAgQ29kZUJsb2NrTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgIAogICAgIEFTU0VSVChvcGVyYXRpb24tPm1fb3Bl
cmF0aW9uID09IFJlc29sdmVPcGVyYXRpb246OkdldEFuZFJldHVybkdsb2JhbFByb3BlcnR5KTsK
ICAgICBpZiAoIW9wZXJhdGlvbi0+bV9zdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAxNTAzOTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKIAotI2lu
Y2x1ZGUgIkNvZGVCbG9ja0xvY2suaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SklUTG9jay5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiU3BlY3Vs
YXRlZFR5cGUuaCIKQEAgLTExMiw3ICsxMTIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgQ1N0cmluZyBicmllZkRl
c2NyaXB0aW9uKGNvbnN0IENvZGVCbG9ja0xvY2tlciYgbG9ja2VyKQorICAgIENTdHJpbmcgYnJp
ZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIpCiAgICAgewog
ICAgICAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICAgICAgCkBAIC0x
NTAsNyArMTUwLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIAogICAgIC8vIFVw
ZGF0ZXMgdGhlIHByZWRpY3Rpb24gYW5kIHJldHVybnMgdGhlIG5ldyBvbmUuIE5ldmVyIGNhbGwg
dGhpcyBmcm9tIGFueSB0aHJlYWQKICAgICAvLyB0aGF0IGlzbid0IGV4ZWN1dGluZyB0aGUgY29k
ZS4KLSAgICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29k
ZUJsb2NrTG9ja2VyJiwgT3BlcmF0aW9uSW5Qcm9ncmVzcyBvcGVyYXRpb24gPSBOb09wZXJhdGlv
bikKKyAgICBTcGVjdWxhdGVkVHlwZSBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29u
Y3VycmVudEpJVExvY2tlciYsIE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uID0gTm9PcGVy
YXRpb24pCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1i
ZXJPZkJ1Y2tldHM7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShtX2J1Y2tldHNbaV0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1
MDM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjph
ZGRWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGJvb2wgaXNDb25zdGFudCwgUmVnaXN0ZXJJ
RComIHIwKQogewotICAgIFN5bWJvbFRhYmxlOjpMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCku
bV9sb2NrKTsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLm1f
bG9jayk7CiAgICAgaW50IGluZGV4ID0gbV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpOwogICAgIFN5
bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIGlzQ29uc3RhbnQgPyBSZWFkT25seSA6IDAp
OwogICAgIFN5bWJvbFRhYmxlOjpNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzeW1ib2xUYWJsZSgp
LmFkZChsb2NrZXIsIGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTUwMzk4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotQXJy
YXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IENvZGVCbG9ja0xvY2tlciYgbG9j
a2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIEFycmF5OjpBY3Rpb24gYWN0aW9uLCBib29sIG1h
a2VTYWZlKQorQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2VydmVkKGNvbnN0IENvbmN1cnJl
bnRKSVRMb2NrZXImIGxvY2tlciwgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBBcnJheTo6QWN0aW9u
IGFjdGlvbiwgYm9vbCBtYWtlU2FmZSkKIHsKICAgICBBcnJheU1vZGVzIG9ic2VydmVkID0gcHJv
ZmlsZS0+b2JzZXJ2ZWRBcnJheU1vZGVzKGxvY2tlcik7CiAgICAgc3dpdGNoIChvYnNlcnZlZCkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCShyZXZpc2lv
biAxNTAzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTAsMTQgKzE1MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBBcnJheU1vZGUod29yZCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBBcnJheU1vZGUgZnJv
bU9ic2VydmVkKGNvbnN0IENvZGVCbG9ja0xvY2tlciYsIEFycmF5UHJvZmlsZSosIEFycmF5OjpB
Y3Rpb24sIGJvb2wgbWFrZVNhZmUpOworICAgIHN0YXRpYyBBcnJheU1vZGUgZnJvbU9ic2VydmVk
KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBBcnJheVByb2ZpbGUqLCBBcnJheTo6QWN0aW9u
LCBib29sIG1ha2VTYWZlKTsKICAgICAKICAgICBBcnJheU1vZGUgd2l0aFNwZWN1bGF0aW9uKEFy
cmF5OjpTcGVjdWxhdGlvbiBzcGVjdWxhdGlvbikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBBcnJheU1vZGUodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uLCBjb252ZXJzaW9u
KCkpOwogICAgIH0KICAgICAKLSAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoY29uc3QgQ29kZUJs
b2NrTG9ja2VyJiBsb2NrZXIsIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgYm9vbCBtYWtlU2FmZSkg
Y29uc3QKKyAgICBBcnJheU1vZGUgd2l0aFByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYgbG9ja2VyLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wgbWFrZVNhZmUpIGNvbnN0CiAg
ICAgewogICAgICAgICBBcnJheTo6U3BlY3VsYXRpb24gbXlTcGVjdWxhdGlvbjsKICAgICAgICAg
QXJyYXk6OkNsYXNzIG15QXJyYXlDbGFzczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTA0NjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcwLDcgKzI3MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBHZXRMb2NhbCk7CiAgICAgICAgIEFTU0VSVChub2RlLT5jb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXggPT0gbV9jdXJyZW50SW5kZXgpOwotICAgICAgICBDb2RlQmxvY2tMb2NrZXIg
bG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX2xvY2spOwogICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSBrZXko
bV9jdXJyZW50SW5kZXgsIG5vZGUtPmxvY2FsKCkpOwogICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9sYXp5T3BlcmFuZHMucHJlZGljdGlvbihs
b2NrZXIsIGtleSk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpAQCAtODE0LDcgKzgx
NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0UHJlZGljdGlvbldp
dGhvdXRPU1JFeGl0KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgewotICAgICAgICBDb2Rl
QmxvY2tMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9s
b2NrKTsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgICAgICByZXR1cm4gbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVP
ZmZzZXQobG9ja2VyLCBieXRlY29kZUluZGV4KTsKICAgICB9CiAKQEAgLTg0Myw3ICs4NDMsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIEFycmF5TW9kZSBnZXRBcnJheU1vZGUoQXJyYXlQcm9maWxl
KiBwcm9maWxlLCBBcnJheTo6QWN0aW9uIGFjdGlvbikKICAgICB7Ci0gICAgICAgIENvZGVCbG9j
a0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2sp
OworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihsb2NrZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jayk7CiAg
ICAgICAgIHJldHVybiBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChsb2NrZXIsIHByb2ZpbGUsIGFj
dGlvbiwgZmFsc2UpOwogICAgIH0KQEAgLTg1NSw3ICs4NTUsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIEFycmF5TW9kZSBnZXRBcnJheU1vZGVBbmRFbWl0Q2hlY2tzKEFycmF5UHJvZmlsZSogcHJv
ZmlsZSwgQXJyYXk6OkFjdGlvbiBhY3Rpb24sIE5vZGUqIGJhc2UpCiAgICAgewotICAgICAgICBD
b2RlQmxvY2tMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgICAgICAKICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrKTsKICAgICAgICAgCkBAIC0xNzg3LDcgKzE3ODcsNyBAQCBOb2RlKiBCeXRl
Q29kZVBhcnNlcjo6Z2V0U2NvcGUoYm9vbCBza2lwCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZVJlc29sdmVPcGVyYXRpb25zKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIHVuc2lnbmVkIGlk
ZW50aWZpZXIsIFJlc29sdmVPcGVyYXRpb25zKiByZXNvbHZlT3BlcmF0aW9ucywgUHV0VG9CYXNl
T3BlcmF0aW9uKiBwdXRUb0Jhc2VPcGVyYXRpb24sIE5vZGUqKiBiYXNlLCBOb2RlKiogdmFsdWUp
CiB7CiAgICAgewotICAgICAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAg
ICAKICAgICAgICAgaWYgKCFyZXNvbHZlT3BlcmF0aW9ucy0+bV9yZWFkeSkgewogICAgICAgICAg
ICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwpAQCAtMjAyNSw3ICsyMDI1LDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX3RvX3Ro
aXM6IHsKICAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsKICAgICAgICAgICAgIGlm
IChvcDEtPm9wKCkgIT0gVG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgQ29kZUJsb2NrTG9ja2Vy
IGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAg
ICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50UHJvZmlsaW5n
SW5kZXgpOwogICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIpOwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBv
cF9nZXRfY2FsbGVlOiB7Ci0gICAgICAgICAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51LnByb2ZpbGU7CiAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICAgICAgICAgIGlmIChwcm9maWxlLT5tX3NpbmdsZXRv
blZhbHVlSXNUb3AKQEAgLTMxNjIsNyArMzE2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIFB1dFRvQmFzZU9wZXJhdGlvbiogcHV0VG9C
YXNlID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUucHV0VG9CYXNlT3BlcmF0aW9uOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ29kZUJsb2NrTG9ja2VyIGxv
Y2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAgICAg
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmICghcHV0VG9CYXNlLT5tX3JlYWR5KSB7CiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKQEAgLTM0ODMsNyArMzQ4Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAsIG1fY2FsbGVyKGJ5dGVDb2RlUGFyc2VyLT5t
X2lubGluZVN0YWNrVG9wKQogewogICAgIHsKLSAgICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tl
cihtX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAgICAgbV9sYXp5T3BlcmFuZHMu
aW5pdGlhbGl6ZShsb2NrZXIsIG1fcHJvZmlsZWRCbG9jay0+bGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVzKCkpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTUwMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI2LDcgKzcyNiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0QXJyYXlQcm9m
aWxlKG5vZGUtPmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBBcnJheU1v
ZGUgYXJyYXlNb2RlID0gQXJyYXlNb2RlKEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zKTsK
ICAgICAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBDb2RlQmxv
Y2tMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAg
ICAgICAgICAgICBhcnJheVByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIs
IHByb2ZpbGVkQmxvY2spOwogICAgICAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZTo6
ZnJvbU9ic2VydmVkKGxvY2tlciwgYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCwgZmFsc2UpOwog
ICAgICAgICAgICAgICAgIGFycmF5TW9kZSA9IGFycmF5TW9kZS5yZWZpbmUobm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSwgbm9kZS0+cHJlZGljdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDE1MDM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoY29kZUJsb2NrKCktPm51bVBh
cmFtZXRlcnMoKSA+PSAxKTsKICAgICAgICAgewotICAgICAgICAgICAgQ29kZUJsb2NrTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CisgICAgICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8IHN0YXRpY19jYXN0PHNpemVf
dD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7ICsrYXJnKSB7CiAgICAgICAgICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gcHJvZmlsZWRCbG9jaygpLT52YWx1ZVByb2ZpbGVG
b3JBcmd1bWVudChhcmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgJKHJldmlzaW9uIDE1MDM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsNyArNDM0LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGFycmF5UHJvZmlsZVNhdyhBcnJheQogaW5saW5lIEpJVEFycmF5TW9kZSBKSVQ6OmNob29z
ZUFycmF5TW9kZShBcnJheVByb2ZpbGUqIHByb2ZpbGUpCiB7CiAjaWYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQotICAgIENvZGVCbG9ja0xvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7
CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CiAg
ICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlciwgbV9jb2RlQmxvY2sp
OwogICAgIEFycmF5TW9kZXMgYXJyYXlNb2RlcyA9IHByb2ZpbGUtPm9ic2VydmVkQXJyYXlNb2Rl
cyhsb2NrZXIpOwogICAgIGlmIChhcnJheVByb2ZpbGVTYXcoYXJyYXlNb2RlcywgRG91YmxlU2hh
cGUpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9u
IDE1MDQ2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBwZXJmb3JtUGxhdGZvcm1TcGVjaWZp
Y0pJVEFzc2VydGlvbgogCiBORVZFUl9JTkxJTkUgc3RhdGljIHZvaWQgdHJ5Q2FjaGVQdXRCeUlE
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgUHV0UHJvcGVydHlT
bG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGJvb2wgZGlyZWN0KQogewot
ICAgIENvZGVCbG9ja0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAKICAgICAvLyBU
aGUgaW50ZXJwcmV0ZXIgY2hlY2tzIGZvciByZWN1cnNpb24gaGVyZTsgSSBkbyBub3QgYmVsaWV2
ZSB0aGlzIGNhbiBvY2N1ciBpbiBDVEkuCiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBORVZFUl9JTkxJ
TkUgc3RhdGljIHZvaWQgdHJ5Q2FjaGVQdXRCeUlECiAKIE5FVkVSX0lOTElORSBzdGF0aWMgdm9p
ZCB0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJs
b2NrLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEpTVmFsdWUgYmFzZVZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewotICAgIENvZGVCbG9ja0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrKTsKICAgICAKICAgICAvLyBGSVhNRTogV3JpdGUgYSB0ZXN0IHRoYXQg
cHJvdmVzIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHJlY3Vyc2lvbiBoZXJlIGp1c3QKICAgICAvLyBs
aWtlIHRoZSBpbnRlcnByZXRlciBkb2VzLCB0aGVuIGFkZCBhIGNoZWNrIGZvciByZWN1cnNpb24u
CkBAIC02NTcsNyArNjU3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUs
IG9wXwogCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogCi0gICAgQ29kZUJsb2NrTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgIAogICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkK
ICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCkBAIC03NzAsNyArNzcwLDcgQEAgREVGSU5F
X1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2spOwogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKTsKIApAQCAtMTI4MCw3ICsxMjgwLDcgQEAgaW5saW5lIHZv
aWQqIGxhenlMaW5rRm9yKENhbGxGcmFtZSogY2FsbAogICAgICAgICAgICAgY29kZVB0ciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNh
bGwoKTsKICAgICB9CiAKLSAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKGNhbGxGcmFtZS0+Y2Fs
bGVyRnJhbWUoKS0+Y29kZUJsb2NrKCktPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsK
ICAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkKICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRTZWVuKCk7CiAgICAgZWxzZQpAQCAtMTM1Niw3ICsxMzU2LDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIHZtX2xhenlMaW5rQwogICAgIAogICAgIGlmIChzaG91bGRMaW5rKSB7
CiAgICAgICAgIEFTU0VSVChjb2RlUHRyKTsKLSAgICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tl
cihjYWxsZXJDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKGNhbGxlckNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgSklUOjpjb21waWxlQ2xv
c3VyZUNhbGwodm0sIGNhbGxMaW5rSW5mbywgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWVDb2RlQmxv
Y2ssIHN0cnVjdHVyZSwgZXhlY3V0YWJsZSwgY29kZVB0cik7CiAgICAgICAgIGNhbGxMaW5rSW5m
by0+aGFzU2VlbkNsb3N1cmUgPSB0cnVlOwogICAgIH0gZWxzZQpAQCAtMTUwMyw3ICsxNTAzLDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gSlNTY29wZTo6cmVzb2x2ZShjYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1swXS5p
ZGVudGlmaWVyKCksIG9wZXJhdGlvbnMpOwogICAgIAogICAgIGlmICh3aWxsUmVpZnkpIHsKLSAg
ICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5tX2xv
Y2spOworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5tX2xvY2spOwogICAgICAgICBvcGVyYXRpb25zLT5tX3JlYWR5ID0gdHJ1ZTsKICAg
ICB9CiAgICAgCkBAIC0xNTIzLDcgKzE1MjMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcF9wdXRfdG9fYmFzCiAgICAgSlNTY29wZTo6cmVzb2x2ZVB1dChjYWxsRnJhbWUsIGJhc2Us
IHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCksIHZhbHVlLCBvcGVyYXRpb24pOwogICAg
IAogICAgIGlmIChmaXJzdFRpbWUpIHsKLSAgICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5tX2xvY2spOworICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICBvcGVy
YXRpb24tPm1fcmVhZHkgPSB0cnVlOwogICAgIH0KIApAQCAtMTg2MCw3ICsxODYwLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gSlNTY29wZTo6cmVzb2x2ZUJhc2Uoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUu
YXJnc1swXS5pZGVudGlmaWVyKCksIGZhbHNlLCBvcGVyYXRpb25zLCBzdGFja0ZyYW1lLmFyZ3Nb
Ml0ucHV0VG9CYXNlT3BlcmF0aW9uKCkpOwogICAgIAogICAgIGlmICh3aWxsUmVpZnkpIHsKLSAg
ICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN0YWNr
RnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgb3BlcmF0aW9u
cy0+bV9yZWFkeSA9IHRydWU7CiAgICAgfQogICAgIApAQCAtMTg3Nyw3ICsxODc3LDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IEpTU2NvcGU6OnJlc29sdmVCYXNlKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpLCB0cnVlLCBvcGVyYXRpb25zLCBzdGFja0ZyYW1lLmFy
Z3NbMl0ucHV0VG9CYXNlT3BlcmF0aW9uKCkpKSB7CiAgICAgICAgIAogICAgICAgICBpZiAod2ls
bFJlaWZ5KSB7Ci0gICAgICAgICAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKKyAgICAgICAgICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bV9sb2Nr
KTsKICAgICAgICAgICAgIG9wZXJhdGlvbnMtPm1fcmVhZHkgPSB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMjE2OSw3ICsyMTY5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wXwogICAgIGJvb2wgd2lsbFJlaWZ5ID0gb3BlcmF0aW9ucy0+aXNFbXB0eSgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNTY29wZTo6cmVzb2x2ZVdpdGhCYXNlKGNhbGxGcmFt
ZSwgc3RhY2tGcmFtZS5hcmdzWzBdLmlkZW50aWZpZXIoKSwgJmNhbGxGcmFtZS0+cmVnaXN0ZXJz
KClbc3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCldLCBvcGVyYXRpb25zLCBzdGFja0ZyYW1lLmFy
Z3NbM10ucHV0VG9CYXNlT3BlcmF0aW9uKCkpOwogICAgIGlmICh3aWxsUmVpZnkpIHsKLSAgICAg
ICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN0YWNrRnJh
bWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgb3BlcmF0aW9ucy0+
bV9yZWFkeSA9IHRydWU7CiAgICAgfQogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7
CkBAIC0yMTg1LDcgKzIxODUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1
ZSwgb3BfCiAgICAgYm9vbCB3aWxsUmVpZnkgPSBvcGVyYXRpb25zLT5pc0VtcHR5KCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBKU1Njb3BlOjpyZXNvbHZlV2l0aFRoaXMoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLmFyZ3NbMF0uaWRlbnRpZmllcigpLCAmY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtzdGFj
a0ZyYW1lLmFyZ3NbMV0uaW50MzIoKV0sIG9wZXJhdGlvbnMpOwogICAgIGlmICh3aWxsUmVpZnkp
IHsKLSAgICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgb3Bl
cmF0aW9ucy0+bV9yZWFkeSA9IHRydWU7CiAgICAgfQogICAgIENIRUNLX0ZPUl9FWENFUFRJT05f
QVRfRU5EKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDE1MDQ2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OSw3ICs3OTksNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZSkKICAgICB9CiAgICAgCiAg
ICAgewotICAgICAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5t
X2xvY2spOworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxv
Y2soKS0+bV9sb2NrKTsKICAgICAgICAgb3BlcmF0aW9ucy0+bV9yZWFkeSA9IHRydWU7CiAgICAg
fQogICAgIApAQCAtODIxLDcgKzgyMSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfdG9fYmEKICAgICB9CiAKICAgICB7Ci0gICAgICAgIENvZGVCbG9ja0xvY2tlciBsb2Nr
ZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICBvcGVyYXRpb24t
Pm1fcmVhZHkgPSB0cnVlOwogICAgIH0KICAgICAKQEAgLTg1OSw3ICs4NTksNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9iCiAgICAgfQogICAgIAogICAgIHsKLSAg
ICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsK
KyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1f
bG9jayk7CiAgICAgICAgIG9wZXJhdGlvbnMtPm1fcmVhZHkgPSB0cnVlOwogICAgIH0KICAgICAK
QEAgLTg4NSw3ICs4ODUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2
ZV93CiAgICAgYm9vbCB3aWxsUmVpZnkgPSBvcGVyYXRpb25zLT5pc0VtcHR5KCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBKU1Njb3BlOjpyZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgJkxMSU5UX09QKDEpLCBvcGVyYXRp
b25zLCBwY1s1XS51LnB1dFRvQmFzZU9wZXJhdGlvbik7CiAgICAgaWYgKHdpbGxSZWlmeSkgewot
ICAgICAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2sp
OworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+
bV9sb2NrKTsKICAgICAgICAgb3BlcmF0aW9ucy0+bV9yZWFkeSA9IHRydWU7CiAgICAgfQogICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwpAQCAtOTAxLDcgKzkwMSw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3cKICAgICBib29sIHdpbGxSZWlmeSA9IG9wZXJh
dGlvbnMtPmlzRW1wdHkoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTU2NvcGU6OnJlc29sdmVX
aXRoVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpLCAmTExJTlRfT1AoMSksIG9wZXJhdGlvbnMpOwogICAgIGlmICh3aWxsUmVpZnkpIHsKLSAg
ICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsK
KyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1f
bG9jayk7CiAgICAgICAgIG9wZXJhdGlvbnMtPm1fcmVhZHkgPSB0cnVlOwogICAgIH0KICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKQEAgLTk0MSw3ICs5NDEsNyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkCiAgICAgICAgIAogICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQogICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewotICAgICAgICAgICAg
Q29kZUJsb2NrTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKICAgICAgICAgICAgICAgICB2
bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKQEAgLTEwMDgsNyAr
MTAwOCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQKICAgICAg
ICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7
Ci0gICAgICAgICAgICAgICAgQ29kZUJsb2NrTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9j
ayk7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpID09IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPnRyYW5zaXRpb25XYXRjaHBv
aW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwpAQCAtMTQzNyw3ICsxNDM3LDcgQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogICAgIGlmICghTExJTlRfQUxXQVlT
X0FDQ0VTU19TTE9XICYmIGNhbGxMaW5rSW5mbykgewogICAgICAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogCi0gICAgICAgIENvZGVCbG9ja0xv
Y2tlciBsb2NrZXIoZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm1fbG9jayk7CisgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5tX2xvY2sp
OwogICAgICAgICAKICAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNw
cAkocmV2aXNpb24gMTUwMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAgQnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2RlQgogICAgIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJs
b2NrLT5udW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgQ29k
ZUJsb2NrTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgQ1N0cmluZyBk
ZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSktPmJyaWVm
RGVzY3JpcHRpb24obG9ja2VyKTsKICAgICAgICAgaWYgKCFkZXNjcmlwdGlvbi5sZW5ndGgoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDE1MDM5OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzIsNyAr
MzcyLDcgQEAgaW50IFByb2dyYW1FeGVjdXRhYmxlOjphZGRHbG9iYWxWYXIoSlNHbAogICAgIC8v
IFRyeSB0byBzaGFyZSB0aGUgc3ltYm9sVGFibGUgaWYgcG9zc2libGUKICAgICBTaGFyZWRTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxPYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAg
VU5VU0VEX1BBUkFNKGZ1bmN0aW9uTW9kZSk7Ci0gICAgU3ltYm9sVGFibGU6OkxvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
c3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUtPnNpemUo
bG9ja2VyKTsKICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCAoY29uc3RhbnRN
b2RlID09IElzQ29uc3RhbnQpID8gUmVhZE9ubHkgOiAwKTsKICAgICBpZiAoZnVuY3Rpb25Nb2Rl
ID09IElzRnVuY3Rpb25Ub1NwZWNpYWxpemUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDE1MDM5OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1
bWVudHMpOwogCiAgICAgewotICAgICAgICBTeW1ib2xUYWJsZTo6TG9ja2VyIGxvY2tlcih0aGlz
T2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOworICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgp
LT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250
RW51bSAmJiBtb2RlICE9IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpCkBAIC0xMzQsNyArMTM0
LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dAogICAgIAogICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7Ci0gICAgICAgIFN5bWJvbFRh
YmxlOjpMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7CisgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJv
bFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDE1MDM5
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgdGVtcGxhdGUgPEpTU2NvcGU6Okxvb2t1cE1vZGUg
bW9kZSwgSlNTYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMtPmFwcGVu
ZChSZXNvbHZlT3BlcmF0aW9uOjpjaGVja0ZvckR5bmFtaWNFbnRyaWVzQmVmb3JlR2xvYmFsU2Nv
cGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdXRUb0Jhc2VPcGVyYXRpb24p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bV9s
b2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXRUb0Jhc2VPcGVyYXRpb24tPm1faXNEeW5hbWljID0gcmVxdWlyZXNEeW5hbWlj
Q2hlY2tzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFRvQmFzZU9wZXJhdGlvbi0+
bV9raW5kID0gUHV0VG9CYXNlT3BlcmF0aW9uOjpHbG9iYWxQcm9wZXJ0eVB1dDsKQEAgLTM0Nyw3
ICszNDcsNyBAQCB0ZW1wbGF0ZSA8SlNTY29wZTo6TG9va3VwTW9kZSBtb2RlLCBKU1NjCiAgICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAKICAgICAgICAgICAgICAgICAgICAgaWYg
KHB1dFRvQmFzZU9wZXJhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUJsb2Nr
TG9ja2VyIGxvY2tlcihjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgcHV0VG9CYXNlT3BlcmF0aW9uLT5tX2tpbmQgPSBlbnRyeS5pc1JlYWRPbmx5
KCkgPyBQdXRUb0Jhc2VPcGVyYXRpb246OlJlYWRvbmx5IDogUHV0VG9CYXNlT3BlcmF0aW9uOjpW
YXJpYWJsZVB1dDsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFRvQmFzZU9wZXJhdGlvbi0+
bV9zdHJ1Y3R1cmUuc2V0KGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
b3duZXJFeGVjdXRhYmxlKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hY3Rp
dmF0aW9uU3RydWN0dXJlKCkpOwpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgSlNTY29wZTo6cmVz
b2x2ZVB1dChDYWxsRnJhbWUqIGNhbGwKICAgICBpZiAoc2xvdC5iYXNlKCkgIT0gYmFzZU9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghYmFzZU9iamVjdC0+aGFzSW5saW5lU3Rv
cmFnZSgpKTsKLSAgICBDb2RlQmxvY2tMb2NrZXIgbG9ja2VyKGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+bV9sb2NrKTsKICAgICAKICAgICBvcGVyYXRpb24tPm1fc3RydWN0dXJlLnNl
dChjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJs
ZSgpLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CiAgICAgc2V0UHV0UHJvcGVydHlBY2Nlc3NP
ZmZzZXQob3BlcmF0aW9uLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwCShyZXZpc2lvbiAxNTA0NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogaW50IEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3Q6OmZpbmRSZWdpc3RlckluZGV4KHZvaWQqIHJlZ2lzdGVyQWRkcmVzcykKIHsKLSAgICBMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKICAgICAKICAgICBmb3IgKGludCBpID0gbV9yZWdpc3RlcnMuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgIGlmICgmbV9yZWdpc3RlcnNbaV0gIT0gcmVnaXN0ZXJBZGRyZXNzKQpAQCAtNDgsNyAr
NDgsNyBAQCBpbnQgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6ZmluZFJlZ2lzCiAKIGludCBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OjphZGRSZWdpc3RlcnMoaW50IG51bWJlck9mUmVnaXN0
ZXJzVG9BZGQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCiAgICAgQVNTRVJUKG51bWJlck9mUmVnaXN0
ZXJzVG9BZGQgPj0gMCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAx
NTA0NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDExICs5Myw4IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIH0KICAgICAKLSAgICB0eXBl
ZGVmIENvbmN1cnJlbnRKSVRMb2NrIExvY2s7Ci0gICAgdHlwZWRlZiBDb25jdXJyZW50SklUTG9j
a2VyIExvY2tlcjsKLQogICAgIFNlZ21lbnRlZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4s
IDE2PiBtX3JlZ2lzdGVyczsKLSAgICBMb2NrIG1fbG9jazsKKyAgICBDb25jdXJyZW50SklUTG9j
ayBtX2xvY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCShyZXZp
c2lvbiAxNTAzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEpTU3lt
Ym9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4CiB7CiAgICAgSlNTeW1ib2xUYWJsZU9iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4ob2JqZWN0KTsKICAg
ICB7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJv
bFRhYmxlKCktPm1fbG9jayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRo
aXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIp
OwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8ICht
b2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkocmV2aXNpb24g
MTUwMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIGlubGluZSBib29sIHN5bWJv
bFRhYmxlR2V0KAogICAgIFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKLSAgICBTeW1ib2xUYWJsZTo6
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOworICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7CiAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtODgsNyArODgsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJs
ZUdldCgKICAgICBTeW1ib2xUYWJsZU9iamVjdFR5cGUqIG9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7Ci0gICAgU3ltYm9s
VGFibGU6OkxvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKKyAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwogICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBpbmxpbmUgYm9vbCBz
eW1ib2xUYWJsZUdldCgKICAgICBib29sJiBzbG90SXNXcml0ZWFibGUpCiB7CiAgICAgU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKLSAgICBTeW1ib2xU
YWJsZTo6TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOworICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7CiAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI3LDcgKzEyNyw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlUHV0KAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7
CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxl
KCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9j
ayk7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9j
ayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgICAgIGlmIChp
dGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTYwLDcgKzE2MCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAg
ICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwotICAg
ICAgICBTeW1ib2xUYWJsZTo6TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOworICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwogICAg
ICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBz
eW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24g
MTUwMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKFYKICAgICAvLyBNdXN0IGhvbGQgdGhlIGxvY2sgb24gdGhpcyBzdHJ1
Y3R1cmUsIHNpbmNlIHdlIHdpbGwgYmUgbW9kaWZ5aW5nIHRoaXMgc3RydWN0dXJlJ3MKICAgICAv
LyBwcm9wZXJ0eSBtYXAuIFdlIGRvbid0IHdhbnQgZ2V0Q29uY3VycmVudGx5KCkgdG8gc2VlIHRo
ZSBwcm9wZXJ0eSBtYXAgaW4gYSBoYWxmLWJha2VkCiAgICAgLy8gc3RhdGUuCi0gICAgTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgaWYgKCF0YWJsZSkKICAgICAgICAgY3JlYXRlUHJvcGVydHlNYXAobG9ja2VyLCB2bSwg
bnVtYmVyT2ZTbG90c0Zvckxhc3RPZmZzZXQobV9vZmZzZXQsIG1faW5saW5lQ2FwYWNpdHkpKTsK
ICAgICBlbHNlCkBAIC0zNDYsNyArMzQ2LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdAogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7Ci0gICAgTG9ja2VyIGxvY2tlcihzdHJ1Y3R1
cmUtPm1fbG9jayk7CisgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5t
X2xvY2spOwogICAgIHJldHVybiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0
dXJlSW1wbChzdHJ1Y3R1cmUsIHVpZCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSwgb2Zmc2V0
KTsKIH0KIApAQCAtNDE4LDcgKzQxOCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXQKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPm1fb2Zmc2V0LCB0cmFu
c2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIo
c3RydWN0dXJlLT5tX2xvY2spOworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
dHJ1Y3R1cmUtPm1fbG9jayk7CiAgICAgICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUu
YWRkKHZtLCB0cmFuc2l0aW9uKTsKICAgICB9CiAgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRD
b25zaXN0ZW5jeSgpOwpAQCAtNTg0LDcgKzU4NCw3IEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVy
ZTo6dGFrZVByb3BlcnR5VGEKICAgICAvLyBIb2xkIHRoZSBsb2NrIHdoaWxlIHN0ZWFsaW5nIHRo
ZSB0YWJsZSAtIHNvIHRoYXQgZ2V0Q29uY3VycmVudGx5KCkgb24gYW5vdGhlciB0aHJlYWQKICAg
ICAvLyB3aWxsIGVpdGhlciBoYXZlIHRvIGJ5cGFzcyB0aGlzIHN0cnVjdHVyZSwgb3Igd2lsbCBn
ZXQgdG8gdXNlIHRoZSBwcm9wZXJ0eSB0YWJsZQogICAgIC8vIGJlZm9yZSBpdCBpcyBzdG9sZW4u
Ci0gICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CiAgICAgUHJvcGVydHlUYWJsZSogdGFrZW5Qcm9wZXJ0eVRhYmxlID0gcHJv
cGVydHlUYWJsZSgpLmdldCgpOwogICAgIHByb3BlcnR5VGFibGUoKS5jbGVhcigpOwogICAgIHJl
dHVybiB0YWtlblByb3BlcnR5VGFibGU7CkBAIC02MjAsNyArNjIwLDcgQEAgU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24t
Pm1fb2Zmc2V0LCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAKICAgICB7Ci0g
ICAgICAgIExvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2spOworICAgICAgICBDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jayk7CiAgICAgICAgIHN0cnVjdHVy
ZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKHZtLCB0cmFuc2l0aW9uKTsKICAgICB9CiAgICAgdHJh
bnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwpAQCAtODY4LDcgKzg2OCw3IEBAIHZv
aWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoVk0KIAogUHJvcGVydHlPZmZzZXQg
U3RydWN0dXJlOjpwdXRTcGVjaWZpY1ZhbHVlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewotICAg
IExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlciht
X2xvY2spOwogICAgIAogICAgIEFTU0VSVCghSlNDOjppc1ZhbGlkT2Zmc2V0KGdldCh2bSwgcHJv
cGVydHlOYW1lKSkpOwogCkBAIC04OTEsNyArODkxLDcgQEAgUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpwdXRTcGVjaWZpY1ZhbAogCiBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIAogICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKIApAQCAtOTEzLDcgKzkxMyw3IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVj
dHVyZTo6cmVtb3ZlKFByb3BlcnQKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi12b2lkIFN0cnVj
dHVyZTo6Y3JlYXRlUHJvcGVydHlNYXAoY29uc3QgTG9ja2VyJiwgVk0mIHZtLCB1bnNpZ25lZCBj
YXBhY2l0eSkKK3ZvaWQgU3RydWN0dXJlOjpjcmVhdGVQcm9wZXJ0eU1hcChjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgVk0mIHZtLCB1bnNpZ25lZCBjYXBhY2l0eSkKIHsKICAgICBBU1NFUlQo
IXByb3BlcnR5VGFibGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNTA0NjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsNiBAQCBwdWJs
aWM6CiAKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIAotICAgIHR5cGVkZWYgQ29uY3Vy
cmVudEpJVExvY2sgTG9jazsKLSAgICB0eXBlZGVmIENvbmN1cnJlbnRKSVRMb2NrZXIgTG9ja2Vy
OwotCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRl
eGluZ1R5cGUgPSBOb25BcnJheSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSAwKTsKIAogcHJv
dGVjdGVkOgpAQCAtMzg4LDcgKzM4NSw3IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlPZmZzZXQg
cHV0U3BlY2lmaWNWYWx1ZShWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmUoUHJvcGVy
dHlOYW1lKTsKIAotICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAoY29uc3QgTG9ja2VyJiwgVk0m
LCB1bnNpZ25lZCBrZXlDb3VudCA9IDApOworICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAoY29u
c3QgQ29uY3VycmVudEpJVExvY2tlciYsIFZNJiwgdW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAg
ICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24o
Vk0mLCBQcm9wZXJ0eU5hbWUpOwpAQCAtNDkwLDcgKzQ4Nyw3IEBAIHByaXZhdGU6CiAgICAgSW5k
ZXhpbmdUeXBlIG1faW5kZXhpbmdUeXBlOwogICAgIHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsK
ICAgICAKLSAgICBMb2NrIG1fbG9jazsKKyAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CiAg
ICAgCiAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgYm9vbCBtX2lzUGlu
bmVkUHJvcGVydHlUYWJsZSA6IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1MDQ2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMiwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM0NCw5MSArMzQ0LDg5IEBAIHN0cnVjdCBTeW1ib2xUYWJsZUluZGV4SGFzaFRy
YWl0cyA6IEhhc2gKIGNsYXNzIFN5bWJvbFRhYmxlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVw
SGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4gPiwgU3ltYm9sVGFibGVJbmRleEhh
c2hUcmFpdHM+IE1hcDsKLSAgICB0eXBlZGVmIENvbmN1cnJlbnRKSVRMb2NrIExvY2s7Ci0gICAg
dHlwZWRlZiBDb25jdXJyZW50SklUTG9ja2VyIExvY2tlcjsKIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN5bWJvbFRhYmxlKCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflN5bWJvbFRhYmxlKCk7
CiAgICAgCiAgICAgLy8gWW91IG11c3QgaG9sZCB0aGUgbG9jayB1bnRpbCBhZnRlciB5b3UncmUg
ZG9uZSB3aXRoIHRoZSBpdGVyYXRvci4KLSAgICBNYXA6Oml0ZXJhdG9yIGZpbmQoY29uc3QgTG9j
a2VyJiwgU3RyaW5nSW1wbCoga2V5KQorICAgIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBDb25j
dXJyZW50SklUTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5KQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fbWFwLmZpbmQoa2V5KTsKICAgICB9CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBnZXQo
Y29uc3QgTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5KQorICAgIFN5bWJvbFRhYmxlRW50cnkgZ2V0
KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXkpCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9tYXAuZ2V0KGtleSk7CiAgICAgfQogICAgIAogICAgIFN5bWJvbFRhYmxl
RW50cnkgZ2V0KFN0cmluZ0ltcGwqIGtleSkKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKICAg
ICAgICAgcmV0dXJuIGdldChsb2NrZXIsIGtleSk7CiAgICAgfQogICAgIAotICAgIFN5bWJvbFRh
YmxlRW50cnkgaW5saW5lR2V0KGNvbnN0IExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSkKKyAgICBT
eW1ib2xUYWJsZUVudHJ5IGlubGluZUdldChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgU3Ry
aW5nSW1wbCoga2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFwLmlubGluZUdldChrZXkp
OwogICAgIH0KICAgICAKICAgICBTeW1ib2xUYWJsZUVudHJ5IGlubGluZUdldChTdHJpbmdJbXBs
KiBrZXkpCiAgICAgewotICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIHJldHVybiBpbmxpbmVH
ZXQobG9ja2VyLCBrZXkpOwogICAgIH0KICAgICAKLSAgICBNYXA6Oml0ZXJhdG9yIGJlZ2luKGNv
bnN0IExvY2tlciYpCisgICAgTWFwOjppdGVyYXRvciBiZWdpbihjb25zdCBDb25jdXJyZW50SklU
TG9ja2VyJikKICAgICB7CiAgICAgICAgIHJldHVybiBtX21hcC5iZWdpbigpOwogICAgIH0KICAg
ICAKLSAgICBNYXA6Oml0ZXJhdG9yIGVuZChjb25zdCBMb2NrZXImKQorICAgIE1hcDo6aXRlcmF0
b3IgZW5kKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fbWFwLmVuZCgpOwogICAgIH0KICAgICAKLSAgICBzaXplX3Qgc2l6ZShjb25zdCBMb2NrZXIm
KSBjb25zdAorICAgIHNpemVfdCBzaXplKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFwLnNpemUoKTsKICAgICB9CiAgICAgCiAgICAg
c2l6ZV90IHNpemUoKSBjb25zdAogICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBy
ZXR1cm4gc2l6ZShsb2NrZXIpOwogICAgIH0KICAgICAKLSAgICBNYXA6OkFkZFJlc3VsdCBhZGQo
Y29uc3QgTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5LCBjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBl
bnRyeSkKKyAgICBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYs
IFN0cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCiAgICAgewog
ICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGtleSwgZW50cnkpOwogICAgIH0KICAgICAKICAgICB2
b2lkIGFkZChTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQog
ICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIGVudHJ5
KTsKICAgICB9CiAgICAgCi0gICAgTWFwOjpBZGRSZXN1bHQgc2V0KGNvbnN0IExvY2tlciYsIFN0
cmluZ0ltcGwqIGtleSwgY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCisgICAgTWFwOjpB
ZGRSZXN1bHQgc2V0KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBTdHJpbmdJbXBsKiBrZXks
IGNvbnN0IFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
bWFwLnNldChrZXksIGVudHJ5KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzZXQoU3RyaW5nSW1w
bCoga2V5LCBjb25zdCBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSkKICAgICB7Ci0gICAgICAgIExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKICAgICAgICAgc2V0KGxvY2tlciwga2V5LCBlbnRyeSk7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgTG9ja2VyJiwgU3RyaW5nSW1wbCoga2V5KQorICAgIGJv
b2wgY29udGFpbnMoY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIFN0cmluZ0ltcGwqIGtleSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX21hcC5jb250YWlucyhrZXkpOwogICAgIH0KICAgICAK
ICAgICBib29sIGNvbnRhaW5zKFN0cmluZ0ltcGwqIGtleSkKICAgICB7Ci0gICAgICAgIExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAgICAgcmV0dXJuIGNvbnRhaW5zKGxvY2tlciwga2V5KTsKICAgICB9CiAgICAg
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>