<?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>226501</bug_id>
          
          <creation_ts>2021-06-01 09:16:00 -0700</creation_ts>
          <short_desc>Rename InlineBox to LegacyInlineBox</short_desc>
          <delta_ts>2021-06-01 10:23:21 -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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765629</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-01 09:16:00 -0700</bug_when>
    <thetext>create some legacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765631</commentid>
    <comment_count>1</comment_count>
      <attachid>430267</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-01 09:18:53 -0700</bug_when>
    <thetext>Created attachment 430267
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765640</commentid>
    <comment_count>2</comment_count>
      <attachid>430270</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-01 09:33:38 -0700</bug_when>
    <thetext>Created attachment 430270
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765667</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-01 10:22:52 -0700</bug_when>
    <thetext>Committed r278313 (238350@main): &lt;https://commits.webkit.org/238350@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430270.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765668</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-01 10:23:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78720750&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430267</attachid>
            <date>2021-06-01 09:18:53 -0700</date>
            <delta_ts>2021-06-01 09:38:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-inline-box-rename.patch</filename>
            <type>text/plain</type>
            <size>110203</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OWJiODUwZjlkNmUuLjU4ZTE5NGNhNzc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4OSBAQAorMjAyMS0wNi0wMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZUJveCB0byBMZWdhY3lJbmxpbmVCb3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjUwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vcmUgbGVnYWN5IGxp
bmUgbGF5b3V0IHBhdGggcmVuYW1pbmcuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKiBsYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y2hlY2tGb3JNYXRjaGlu
Z05vblRleHRSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29sbGVjdEZsb3dCb3hT
dWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29sbGVjdElubGluZUJveGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUlu
Zm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcik6CisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
TGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTGVnYWN5UGF0aDo6UnVuSXRlcmF0b3JMZWdhY3lQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OmxlZ2FjeUlubGlu
ZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9CaWRpUnVuLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvQmlk
aVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6Ym94KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpZGlSdW46OnNldEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JJbmxpbmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGxpcHNpc0JveDo6RWxsaXBzaXNCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNC
b3g6Om1hcmt1cEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFp
bnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lRWxlbWVudEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRWxlbWVudEJv
eDo6SW5saW5lRWxlbWVudEJveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVFbGVtZW50Qm94
OjpyZW5kZXJlciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6c2V0SGFzQmFkQ2hpbGRMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmdldEZsb3dTcGFjaW5nTG9naWNhbFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFRvTGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OmV4dHJhY3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OmF0dGFjaExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRqdXN0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3BhY2lu
Z0ZvckZsb3dCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJv
eFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6cmVxdWlyZXNJZGVvZ3JhcGhpY0Jhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUZsb3dCb3g6OmFkanVzdE1heEFzY2VudEFuZERlc2NlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lRmxvd0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVj
b3JhdGlvbkxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bWlu
TG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVGbG93Qm94OjpmbGlwTGluZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6Zmly
c3RMZWFmRGVzY2VuZGFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjpsYXN0TGVhZkRlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpv
dXRwdXRMaW5lVHJlZUFuZE1hcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OklubGluZUZsb3dC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cmVuZGVyZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6Zmlyc3RDaGlsZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpsYXN0Q2hpbGQgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OklubGluZVRleHRCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVC
b3g6OmFzc2VydE5vdERlbGV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lQm94Ojp+TGVnYWN5SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZUJveDo6c2V0SGFzQmFkUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJv
eDo6aW52YWxpZGF0ZVBhcmVudENoaWxkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVCb3g6OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lQm94Ojpib3hOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJv
eDo6c2hvd05vZGVUcmVlRm9yVGhpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVCb3g6OnNob3dMaW5lVHJlZUZvclRoaXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lQm94OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpvdXRwdXRMaW5lQm94IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpsaW5lSGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6Y2FyZXRNaW5PZmZzZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpjYXJldE1heE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmRpcnR5TGluZUJveGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6YWRqdXN0UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lQm94Ojpyb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUJveDo6cm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVC
b3g6Om5leHRPbkxpbmVFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lQm94OjpwcmV2aW91c09uTGluZUV4aXN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVCb3g6Om5leHRMZWFmT25MaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUJveDo6cHJldmlvdXNMZWFmT25MaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZUJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lQm94OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9jYXRpb25JbmNsdWRpbmdGbGlw
cGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmZsaXBGb3JX
cml0aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChzaG93Tm9kZVRyZWUpOgorICAgICAgICAoc2hv
d0xpbmVUcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94Lmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmguCisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6Om5leHRPbkxpbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lQm94OjpwcmV2aW91c09uTGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OnNldE5leHRPbkxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lQm94OjpzZXRQcmV2aW91c09uTGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVCb3g6OkxlZ2FjeUlubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVCb3g6On5MZWdhY3lJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lQm94Ojphc3NlcnROb3REZWxldGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvTGVnYWN5TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5
b3V0OjpjcmVhdGVJbmxpbmVCb3hGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
TGluZUxheW91dDo6Y29uc3RydWN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjppbmxpbmVBbmNl
c3Rvckhhc1N0YXJ0Qm9yZGVyUGFkZGluZ09yTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Omlu
bGluZUFuY2VzdG9ySGFzRW5kQm9yZGVyUGFkZGluZ09yTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JT
ZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dFJ1bnNB
bmRGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6Om91dHB1dExpbmVUcmVlQW5kTWFyayBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om9mZnNldExl
ZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpvZmZzZXRUb3AgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVGaXJzdExp
bmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxp
bmVMYXN0TGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpmaXJzdExpbmVCb3hJbmNsdWRpbmdD
dWxsaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGFzdExpbmVC
b3hJbmNsdWRpbmdDdWxsaW5nIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmRpcnR5
TGluZXNGcm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpsb2NhbFNlbGVj
dGlvblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94Ojppc0h5cGhlbmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6cGxhY2VFbGxpcHNpcyk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojpj
aGlsZFJlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVj
dGlvbkdhcCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpzZWxlY3Rpb25TdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3RlZEJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6aW5jbHVkZUxlYWRpbmdGb3JC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6aW5jbHVkZUZvbnRG
b3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6aW5jbHVkZUds
eXBoc0ZvckJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjppbmNs
dWRlSW5pdGlhbExldHRlckZvckJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94OjppbmNsdWRlTWFyZ2luRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJv
b3RJbmxpbmVCb3g6Om91dHB1dExpbmVCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
b290SW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lRmxvd0JveDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290
SW5saW5lQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94Ojps
YXlvdXRDaGFyYWN0ZXJzSW5UZXh0Qm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElu
bGluZUJveDo6bGF5b3V0Q2hpbGRCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5s
aW5lQm94OjpsYXlvdXRSb290Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVC
b3g6OmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
b290SW5saW5lQm94Ojpub2RlQXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpyZXZlcnNlSW5s
aW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Um9vdElubGluZUJveDo6cmVvcmRlclZhbHVlTGlzdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUm9vdElubGluZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1
ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRRdWVyeTo6Y29sbGVjdFRleHRCb3hl
c0luRmxvd0JveCk6CisKIDIwMjEtMDYtMDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBDb21wbGV4TGluZUxheW91dCB0byBMZWdhY3lMaW5lTGF5
b3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMTYyYThiN2I1MTIuLmRhMjdiNDE5MTFmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTI0LDEyICsxNTI0LDEyIEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKICAg
ICByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmgKLSAgICByZW5kZXJpbmcvSW5saW5lQm94LmgKICAgICByZW5kZXJpbmcvSW5saW5lRWxlbWVu
dEJveC5oCiAgICAgcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAogICAgIHJlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmgKICAgICByZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaAog
ICAgIHJlbmRlcmluZy9MYXllckZyYWdtZW50LmgKKyAgICByZW5kZXJpbmcvTGVnYWN5SW5saW5l
Qm94LmgKICAgICByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5oCiAgICAgcmVuZGVyaW5nL01h
cmtlZFRleHQuaAogICAgIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggNjhiZDZkNDM5NTI0Li40YzQ2MzlmYWU3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjU2LDcg
KzIyNTYsNiBAQCByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcAogcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCiByZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcAogcmVu
ZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCi1yZW5kZXJpbmcvSW5saW5lQm94LmNw
cAogcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guY3BwCiByZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5jcHAKQEAgLTIyNjUsNiArMjI2NCw3IEBA
IHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5jcHAKIHJlbmRlcmluZy9MYXll
ck92ZXJsYXBNYXAuY3BwCiByZW5kZXJpbmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcAogcmVu
ZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAKK3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3Bw
CiByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKIHJlbmRlcmluZy9NYXJrZWRUZXh0LmNw
cAogcmVuZGVyaW5nL01hcmtlZFRleHRTdHlsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjk4N2MxZTE4OTguLmYzNzhk
OWQ5ZjYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzU3NCw3ICszNTc0LDcgQEAKIAkJQThDRkYwNTEwQTE1NEYwOTAwMEE0
MjM0IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOENGRjA0QzBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCAqLzsg
fTsKIAkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNURBMEExNTVBMDUw
MDBBNDIzNCAvKiBSb290SW5saW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZs
b3dCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
Q0ZGNURDMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQThDRkY1RTUwQTE1NUEwNTAwMEE0
MjM0IC8qIElubGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDRkY1REUwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUJveC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE4Q0ZGNUU1MEExNTVB
MDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJ
bmxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBOENGRjZCRTBBMTU2MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNkJEMEExNTYxMTgwMDBB
NDIzNCAvKiBFbGxpcHNpc0JveC5oICovOyB9OwogCQlBOENGRjdBMzBBMTU2OTc4MDAwQTQyMzQg
LyogSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDRkY3OTkwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOENG
RjdBNjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjc5QzBBMTU2OTc4MDAwQTQyMzQg
LyogSFRNTEZvbnRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEzMTYzLDggKzEzMTYzLDggQEAKIAkJQThDRkY1REEwQTE1NUEwNTAw
MEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY1
REMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElubGluZUZsb3dCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQThDRkY1REQwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUZsb3dCb3guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOENGRjVERTBBMTU1QTA1MDAwQTQyMzQgLyogSW5s
aW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVCb3guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThDRkY1REYwQTE1NUEwNTAwMEE0MjM0IC8q
IElubGluZUJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5s
aW5lQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDRkY1REUwQTE1NUEw
NTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGVnYWN5SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE4Q0ZGNURGMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUlubGluZUJveC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGNUUwMEExNTVBMDUwMDBBNDIzNCAvKiBSb290
SW5saW5lQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb290
SW5saW5lQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY2QkQwQTE1
NjExODAwMEE0MjM0IC8qIEVsbGlwc2lzQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbGxpcHNpc0JveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENG
RjZDQTBBMTU2MUNEMDAwQTQyMzQgLyogRWxsaXBzaXNCb3guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVsbGlwc2lzQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTMwMTg5LDggKzMwMTg5LDggQEAKIAkJCQk5MzA3RjFENjBBRjJENTkwMDBE
QkEzMUEgLyogSGl0VGVzdFJlc3VsdC5oICovLAogCQkJCUI1MUEyRjQwMTdEN0Q1REEwMDcyNTE3
QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCNTFBMkYzRTE3RDdEM0E0
MDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oICovLAotCQkJCUE4Q0ZGNURGMEEx
NTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guY3BwICovLAotCQkJCUE4Q0ZGNURFMEExNTVBMDUw
MDBBNDIzNCAvKiBJbmxpbmVCb3guaCAqLywKKwkJCQlBOENGRjVERjBBMTU1QTA1MDAwQTQyMzQg
LyogTGVnYWN5SW5saW5lQm94LmNwcCAqLywKKwkJCQlBOENGRjVERTBBMTU1QTA1MDAwQTQyMzQg
LyogTGVnYWN5SW5saW5lQm94LmggKi8sCiAJCQkJQjU3Q0I1MkMxODJBM0VFRDAwNzlBNjQ3IC8q
IElubGluZUVsZW1lbnRCb3guY3BwICovLAogCQkJCUI1N0NCNTJCMTgyQTM3RjYwMDc5QTY0NyAv
KiBJbmxpbmVFbGVtZW50Qm94LmggKi8sCiAJCQkJQThDRkY1REQwQTE1NUEwNTAwMEE0MjM0IC8q
IElubGluZUZsb3dCb3guY3BwICovLApAQCAtMzMxNDIsNyArMzMxNDIsNyBAQAogCQkJCTUxRUVB
QTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEMDYzRjgzMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOENGRjVFNTBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5l
Qm94LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOENGRjVFNTBBMTU1QTA1MDAwQTQyMzQgLyogTGVn
YWN5SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzA1OTI2NDFFMjdBM0FEMDBENTdD
OTggLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFMTk4MTcy
MTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVha2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCNTdDQjUyRTE4MkEzRUZDMDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDRiYTg5MjJmY2VjNy4uMzczYjMyNDRm
YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBUZXh0U3Ry
ZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElubGluZUJveDsKK2NsYXNzIExl
Z2FjeUlubGluZUJveDsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBUZXh0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IDM5Nzg2OWZkNDcxYy4uZTc3ZGMw
OTRmYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtNzAsNyAr
NzAsNyBAQCBzdGF0aWMgYm9vbCBhcmVFc3NlbnRpYWxseUVxdWFsKExheW91dFJlY3QgYSwgTGF5
b3V0UmVjdCBiKQogICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGEuaGVpZ2h0KCksIGIu
aGVpZ2h0KCkpOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMo
Y29uc3QgTGluZVJ1biYgbGluZVJ1biwgY29uc3QgV2ViQ29yZTo6SW5saW5lQm94JiBpbmxpbmVC
b3gpCitzdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoY29uc3QgTGluZVJ1
biYgbGluZVJ1biwgY29uc3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94JiBpbmxpbmVCb3gpCiB7
CiAgICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LmxlZnQoKSwgbGluZVJ1
bi5sb2dpY2FsTGVmdCgpKQogICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJv
eC5yaWdodCgpLCBsaW5lUnVuLmxvZ2ljYWxSaWdodCgpKQpAQCAtOTAsNyArOTAsNyBAQCBzdGF0
aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29uc3QgTGluZVJ1biYgbGluZVJ1biwg
Y29uc3QgV2ViQ29yZTo6SW5saQogICAgICAgICAmJiAoaW5saW5lVGV4dEJveC5pc0xpbmVCcmVh
aygpIHx8IChpbmxpbmVUZXh0Qm94LnN0YXJ0KCkgPT0gbGluZVJ1bi50ZXh0KCktPnN0YXJ0KCkg
JiYgaW5saW5lVGV4dEJveC5lbmQoKSA9PSBsaW5lUnVuLnRleHQoKS0+ZW5kKCkpKTsKIH0KIAot
c3RhdGljIHZvaWQgY29sbGVjdEZsb3dCb3hTdWJ0cmVlKGNvbnN0IElubGluZUZsb3dCb3gmIGZs
b3dib3gsIFZlY3RvcjxXZWJDb3JlOjpJbmxpbmVCb3gqPiYgaW5saW5lQm94ZXMpCitzdGF0aWMg
dm9pZCBjb2xsZWN0Rmxvd0JveFN1YnRyZWUoY29uc3QgSW5saW5lRmxvd0JveCYgZmxvd2JveCwg
VmVjdG9yPFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCo+JiBpbmxpbmVCb3hlcykKIHsKICAgICBh
dXRvKiBpbmxpbmVCb3ggPSBmbG93Ym94LmZpcnN0TGVhZkRlc2NlbmRhbnQoKTsKICAgICBhdXRv
KiBsYXN0TGVhZkRlc2NlbmRhbnQgPSBmbG93Ym94Lmxhc3RMZWFmRGVzY2VuZGFudCgpOwpAQCAt
MTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RGbG93Qm94U3VidHJlZShjb25zdCBJ
bmxpbmVGbG93Qm94JiBmbG93Ym94LCBWZWN0b3I8V2ViQ29yZTo6CiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBjb2xsZWN0SW5saW5lQm94ZXMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiByb290LCBW
ZWN0b3I8V2ViQ29yZTo6SW5saW5lQm94Kj4mIGlubGluZUJveGVzKQorc3RhdGljIHZvaWQgY29s
bGVjdElubGluZUJveGVzKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcm9vdCwgVmVjdG9yPFdlYkNv
cmU6OkxlZ2FjeUlubGluZUJveCo+JiBpbmxpbmVCb3hlcykKIHsKICAgICBmb3IgKGF1dG8qIHJv
b3RMaW5lID0gcm9vdC5maXJzdFJvb3RCb3goKTsgcm9vdExpbmU7IHJvb3RMaW5lID0gcm9vdExp
bmUtPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVCb3ggPSByb290
TGluZS0+Zmlyc3RDaGlsZCgpOyBpbmxpbmVCb3g7IGlubGluZUJveCA9IGlubGluZUJveC0+bmV4
dE9uTGluZSgpKSB7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0
Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLAog
ICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVk
Rm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvJiBsaW5lUnVu
cyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRl
KS5saW5lUnVucygpOwogICAgIC8vIENvbGxlY3QgaW5saW5lYm94ZXMuCi0gICAgVmVjdG9yPFdl
YkNvcmU6OklubGluZUJveCo+IGlubGluZUJveGVzOworICAgIFZlY3RvcjxXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlczsKICAgICBjb2xsZWN0SW5saW5lQm94ZXMoYmxvY2tG
bG93LCBpbmxpbmVCb3hlcyk7CiAKICAgICBhdXRvIG1pc21hdGNoZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcAppbmRleCBmZWQwNzU0ZDBlYmYuLmRlMWExZjU3
ZmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtMTY3LDcgKzE2
Nyw3IEBAIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVyVGV4dCYg
dGV4dCkKIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBS
ZW5kZXJUZXh0JiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmZpcnN0VGV4dEJveCgpICYmIHRleHQu
Y29udGFpbnNSZXZlcnNlZFRleHQoKSkgewotICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lQm94
Kj4gc29ydGVkVGV4dEJveGVzOworICAgICAgICBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94
Kj4gc29ydGVkVGV4dEJveGVzOwogICAgICAgICBmb3IgKGF1dG8qIHRleHRCb3ggPSB0ZXh0LmZp
cnN0VGV4dEJveCgpOyB0ZXh0Qm94OyB0ZXh0Qm94ID0gdGV4dEJveC0+bmV4dFRleHRCb3goKSkK
ICAgICAgICAgICAgIHNvcnRlZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7CiAgICAgICAgIHN0
ZDo6c29ydChzb3J0ZWRUZXh0Qm94ZXMuYmVnaW4oKSwgc29ydGVkVGV4dEJveGVzLmVuZCgpLCBb
XShhdXRvKiBhLCBhdXRvKiBiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRl
eCAzMmUwZjM1YWZmMjkuLjk3YWU2OGMyNDQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICAvLyBGb3IgaW50ZXJtZWRpYXRlIHBvcnRpbmcgc3Rl
cHMgb25seS4KLSAgICBJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0OworICAgIExl
Z2FjeUlubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAg
ICBmcmllbmQgY2xhc3MgUnVuSXRlcmF0b3I7CkBAIC0yNjksNyArMjY5LDcgQEAgaW5saW5lIGNv
bnN0IFJlbmRlck9iamVjdCYgUGF0aFJ1bjo6cmVuZGVyZXIoKSBjb25zdAogICAgIH0pOwogfQog
Ci1pbmxpbmUgSW5saW5lQm94KiBQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3goKSBjb25zdAoraW5s
aW5lIExlZ2FjeUlubGluZUJveCogUGF0aFJ1bjo6bGVnYWN5SW5saW5lQm94KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7
CiAgICAgICAgIHJldHVybiBwYXRoLmxlZ2FjeUlubGluZUJveCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3JMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaAppbmRleCBlZWNhYzZiMmE3ODcuLjQ2
YWNhOWMxNTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdh
Y3lQYXRoLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsK
IAogY2xhc3MgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIHsKIHB1YmxpYzoKLSAgICBSdW5JdGVyYXRv
ckxlZ2FjeVBhdGgoY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBJbmxp
bmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29ydGVkSW5saW5lQm94
SW5kZXggPSAwKQorICAgIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdhY3lJbmxpbmVC
b3gqIGlubGluZUJveCwgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+JiYgc29ydGVkSW5s
aW5lQm94ZXMgPSB7IH0sIHNpemVfdCBzb3J0ZWRJbmxpbmVCb3hJbmRleCA9IDApCiAgICAgICAg
IDogbV9pbmxpbmVCb3goaW5saW5lQm94KQogICAgICAgICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUo
V1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hlcykpCiAgICAgICAgICwgbV9sb2dpY2FsT3JkZXJDYWNo
ZUluZGV4KHNvcnRlZElubGluZUJveEluZGV4KQpAQCAtMTE5LDE3ICsxMTksMTcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2lubGluZUJveDsgfQogCi0g
ICAgSW5saW5lQm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PElubGluZUJveCo+KG1faW5saW5lQm94KTsgfQorICAgIExlZ2FjeUlubGluZUJveCogbGVnYWN5
SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxMZWdhY3lJbmxpbmVCb3gqPiht
X2lubGluZUJveCk7IH0KICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290SW5saW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGNv
bnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxJbmxpbmVUZXh0Qm94PihtX2lubGluZUJveCk7IH0KIAotICAgIHN0YXRpYyBWZWN0b3I8Y29u
c3QgSW5saW5lQm94Kj4gaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBSb290SW5saW5l
Qm94JiByb290KQorICAgIHN0YXRpYyBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4gaW5s
aW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBSb290SW5saW5lQm94JiByb290KQogICAgIHsK
LSAgICAgICAgVmVjdG9yPElubGluZUJveCo+IGlubGluZUJveGVzOworICAgICAgICBWZWN0b3I8
TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7CiAgICAgICAgIHJvb3QuY29sbGVjdExlYWZC
b3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IElubGluZUJveCo+Jj4oaW5saW5lQm94ZXMpOworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4m
PihpbmxpbmVCb3hlcyk7CiAgICAgfQogICAgIHZvaWQgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNh
Y2hlRm9yTGluZSgpCiAgICAgewpAQCAtMTQ2LDggKzE0Niw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKICAgICB2b2lkIHRyYXZlcnNl
UHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKIAotICAgIGNvbnN0IElubGluZUJveCog
bV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgUmVmQ291bnRlZEFycmF5PGNvbnN0IElubGlu
ZUJveCo+IG1fbG9naWNhbE9yZGVyQ2FjaGU7CisgICAgY29uc3QgTGVnYWN5SW5saW5lQm94KiBt
X2lubGluZUJveCB7IG51bGxwdHIgfTsKKyAgICBSZWZDb3VudGVkQXJyYXk8Y29uc3QgTGVnYWN5
SW5saW5lQm94Kj4gbV9sb2dpY2FsT3JkZXJDYWNoZTsKICAgICBzaXplX3QgbV9sb2dpY2FsT3Jk
ZXJDYWNoZUluZGV4IHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaAppbmRleCAyODhmYmJhYmM1ZjMuLjE3ZGU5MzZjMGU5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKQEAgLTE5
Niw3ICsxOTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4g
bV9ydW5JbmRleCA9PSBydW5zKCkuc2l6ZSgpIHx8ICFydW4oKS5oYXNVbmRlcmx5aW5nTGF5b3V0
KCk7IH0KIAotICAgIElubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QKKyAgICBMZWdh
Y3lJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QmlkaVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAKaW5kZXgg
YTRlNzU4MzBmMzNlLi42MWFmZWVlMzQ0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9CaWRpUnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1
bi5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkJpZGlSdW4uaCIKLSNpbmNsdWRlICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxp
bmVCb3guaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQmlkaVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAppbmRl
eCA4ZWRlMWQ1ZTM0YjEuLmVkNzc0NWQ3ZDFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0JpZGlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1
bi5oCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJpZGlD
b250ZXh0OwotY2xhc3MgSW5saW5lQm94OworY2xhc3MgTGVnYWN5SW5saW5lQm94OwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwogCiBzdHJ1Y3QgQmlkaVJ1biA6IEJpZGlDaGFyYWN0ZXJSdW4gewpAQCAt
MzksMTIgKzM5LDEyIEBAIHN0cnVjdCBCaWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7CiAgICAg
QmlkaVJ1biogbmV4dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpZGlSdW4qPihCaWRpQ2hhcmFj
dGVyUnVuOjpuZXh0KCkpOyB9CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IHRha2VOZXh0
KCk7CiAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlcigpIHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0K
LSAgICBJbmxpbmVCb3gqIGJveCgpIHsgcmV0dXJuIG1fYm94OyB9Ci0gICAgdm9pZCBzZXRCb3go
SW5saW5lQm94KiBib3gpIHsgbV9ib3ggPSBib3g7IH0KKyAgICBMZWdhY3lJbmxpbmVCb3gqIGJv
eCgpIHsgcmV0dXJuIG1fYm94OyB9CisgICAgdm9pZCBzZXRCb3goTGVnYWN5SW5saW5lQm94KiBi
b3gpIHsgbV9ib3ggPSBib3g7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QmIG1fcmVu
ZGVyZXI7Ci0gICAgSW5saW5lQm94KiBtX2JveDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIG1fYm94
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKaW5kZXggZDM3MjY3MGVjMTIyLi42NWE4
MjY0ZWE2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RD
b21wdXRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENv
bXB1dGF0aW9uLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbXB1
dGVDYXJldFJlY3RGb3JJbmxpbmUoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJlcikKIAogICAg
IExheW91dFJlY3QgY2FyZXRSZWN0ID0gY29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChy
ZW5kZXJlciwgcmVuZGVyZXIuaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgMCwg
Q2FyZXRSZWN0TW9kZTo6Tm9ybWFsKTsKIAotICAgIGlmIChJbmxpbmVCb3gqIGZpcnN0Qm94ID0g
cmVuZGVyZXIuZmlyc3RMaW5lQm94KCkpCisgICAgaWYgKExlZ2FjeUlubGluZUJveCogZmlyc3RC
b3ggPSByZW5kZXJlci5maXJzdExpbmVCb3goKSkKICAgICAgICAgY2FyZXRSZWN0Lm1vdmVCeShM
YXlvdXRQb2ludChmaXJzdEJveC0+dG9wTGVmdCgpKSk7CiAKICAgICByZXR1cm4gY2FyZXRSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggMDcwZDMxNDk4
NzliLi5mODU5YTFkMjVkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
bGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChFbGxpcHNpc0JveCk7CiAKLUVsbGlwc2lzQm94OjpFbGxpcHNpc0Jv
eChSZW5kZXJCbG9ja0Zsb3cmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBlbGxpcHNpc1N0
ciwgSW5saW5lRmxvd0JveCogcGFyZW50LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB5LCBi
b29sIGZpcnN0TGluZSwgYm9vbCBpc0hvcml6b250YWwsIElubGluZUJveCogbWFya3VwQm94KQor
RWxsaXBzaXNCb3g6OkVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYgcmVuZGVyZXIsIGNvbnN0
IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3aWR0
aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzSG9yaXpvbnRhbCwg
TGVnYWN5SW5saW5lQm94KiBtYXJrdXBCb3gpCiAgICAgOiBJbmxpbmVFbGVtZW50Qm94KHJlbmRl
cmVyLCBGbG9hdFBvaW50KDAsIHkpLCB3aWR0aCwgZmlyc3RMaW5lLCB0cnVlLCBmYWxzZSwgZmFs
c2UsIGlzSG9yaXpvbnRhbCwgMCwgMCwgcGFyZW50KQogICAgICwgbV9zaG91bGRQYWludE1hcmt1
cEJveChtYXJrdXBCb3gpCiAgICAgLCBtX2hlaWdodChoZWlnaHQpCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgcGFpbnRNYXJrdXBCb3gocGFpbnRJbmZvLCBw
YWludE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSwgbGluZVN0eWxlKTsKIH0KIAotSW5saW5l
Qm94KiBFbGxpcHNpc0JveDo6bWFya3VwQm94KCkgY29uc3QKK0xlZ2FjeUlubGluZUJveCogRWxs
aXBzaXNCb3g6Om1hcmt1cEJveCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Nob3VsZFBhaW50TWFy
a3VwQm94KQogICAgICAgICByZXR1cm4gMDsKQEAgLTkzLDcgKzkzLDcgQEAgSW5saW5lQm94KiBF
bGxpcHNpc0JveDo6bWFya3VwQm94KCkgY29uc3QKIAogICAgIC8vIElmIHRoZSBsYXN0IGxpbmUt
Ym94IG9uIHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBpcyBhIGxpbmssIC13ZWJraXQtbGluZS1j
bGFtcCBwYWludHMgdGhhdCBib3ggYWZ0ZXIgdGhlIGVsbGlwc2lzLgogICAgIC8vIEl0IGRvZXMg
bm90IGFjdHVhbGx5IG1vdmUgdGhlIGxpbmsuCi0gICAgSW5saW5lQm94KiBhbmNob3JCb3ggPSBs
YXN0TGluZS0+bGFzdENoaWxkKCk7CisgICAgTGVnYWN5SW5saW5lQm94KiBhbmNob3JCb3ggPSBs
YXN0TGluZS0+bGFzdENoaWxkKCk7CiAgICAgaWYgKCFhbmNob3JCb3ggfHwgIWFuY2hvckJveC0+
cmVuZGVyZXIoKS5zdHlsZSgpLmlzTGluaygpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTAy
LDcgKzEwMiw3IEBAIElubGluZUJveCogRWxsaXBzaXNCb3g6Om1hcmt1cEJveCgpIGNvbnN0CiAK
IHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50TWFya3VwQm94KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgSW5saW5l
Qm94KiBtYXJrdXBCb3ggPSB0aGlzLT5tYXJrdXBCb3goKTsKKyAgICBMZWdhY3lJbmxpbmVCb3gq
IG1hcmt1cEJveCA9IHRoaXMtPm1hcmt1cEJveCgpOwogICAgIGlmICghbWFya3VwQm94KQogICAg
ICAgICByZXR1cm47CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEVsbGlwc2lzQm94Ojpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dQogICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCAr
IExheW91dFBvaW50KHRvcExlZnQoKSk7CiAKICAgICAvLyBIaXQgdGVzdCB0aGUgbWFya3VwIGJv
eC4KLSAgICBpZiAoSW5saW5lQm94KiBtYXJrdXBCb3ggPSB0aGlzLT5tYXJrdXBCb3goKSkgewor
ICAgIGlmIChMZWdhY3lJbmxpbmVCb3gqIG1hcmt1cEJveCA9IHRoaXMtPm1hcmt1cEJveCgpKSB7
CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUo
KTsKICAgICAgICAgTGF5b3V0VW5pdCBtdHggeyBhZGp1c3RlZExvY2F0aW9uLngoKSArIGxvZ2lj
YWxXaWR0aCgpIC0gbWFya3VwQm94LT54KCkgfTsKICAgICAgICAgTGF5b3V0VW5pdCBtdHkgeyBh
ZGp1c3RlZExvY2F0aW9uLnkoKSArIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpIC0g
KG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFz
Y2VudCgpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaAppbmRleCA0ZmEy
ZDUwZjcyNDcuLjQ2MTk2ZTJkNjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmgKQEAgLTMwLDIwICszMCwyMCBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgRWxs
aXBzaXNCb3ggZmluYWwgOiBwdWJsaWMgSW5saW5lRWxlbWVudEJveCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChFbGxpcHNpc0JveCk7CiBwdWJsaWM6Ci0gICAgRWxsaXBzaXNCb3goUmVu
ZGVyQmxvY2tGbG93JiwgY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsIElubGluZUZsb3dC
b3gqIHBhcmVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJzdExpbmUs
IGJvb2wgaXNIb3Jpem9udGFsLCBJbmxpbmVCb3gqIG1hcmt1cEJveCk7CisgICAgRWxsaXBzaXNC
b3goUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsIElubGlu
ZUZsb3dCb3gqIHBhcmVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJz
dExpbmUsIGJvb2wgaXNIb3Jpem9udGFsLCBMZWdhY3lJbmxpbmVCb3gqIG1hcmt1cEJveCk7CiAg
ICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQg
bGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKICAgICBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwg
SGl0VGVzdEFjdGlvbikgZmluYWw7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlIHMpIHsgbV9zZWxlY3Rpb25TdGF0ZSA9IHM7IH0KICAgICBJ
bnRSZWN0IHNlbGVjdGlvblJlY3QoKTsKIAotICAgIFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihJbmxpbmVCb3g6OnJl
bmRlcmVyKCkpOyB9CisgICAgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3coKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KExlZ2FjeUlubGluZUJveDo6cmVuZGVyZXIo
KSk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50TWFya3VwQm94KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20sIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgaW50IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0K
ICAgICB2b2lkIHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOwotICAgIElubGlu
ZUJveCogbWFya3VwQm94KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBtYXJrdXBCb3go
KSBjb25zdDsKIAogICAgIGJvb2wgbV9zaG91bGRQYWludE1hcmt1cEJveDsKICAgICBSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlIG1fc2VsZWN0aW9uU3RhdGUgeyBSZW5kZXJPYmplY3Q6Okhp
Z2hsaWdodFN0YXRlOjpOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRWxlbWVudEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVs
ZW1lbnRCb3guaAppbmRleCAxNGUxZmY1YmU2MWMuLmFlYTA1ZDk4N2MyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCkBAIC0yNSwyNCArMjUsMjQgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdh
Y3lJbmxpbmVCb3guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbmxpbmVFbGVt
ZW50Qm94IDogcHVibGljIElubGluZUJveCB7CitjbGFzcyBJbmxpbmVFbGVtZW50Qm94IDogcHVi
bGljIExlZ2FjeUlubGluZUJveCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVF
bGVtZW50Qm94KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmxpbmVFbGVtZW50Qm94KFJlbmRl
ckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikKLSAgICAgICAgOiBJbmxpbmVCb3gocmVuZGVyZXIp
CisgICAgICAgIDogTGVnYWN5SW5saW5lQm94KHJlbmRlcmVyKQogICAgIHsKICAgICB9CiAKLSAg
ICBJbmxpbmVFbGVtZW50Qm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEZsb2F0UG9pbnQgdG9w
TGVmdCwgZmxvYXQgbG9naWNhbFdpZHRoLCBib29sIGZpcnN0TGluZSwgYm9vbCBjb25zdHJ1Y3Rl
ZCwgYm9vbCBkaXJ0eSwgYm9vbCBleHRyYWN0ZWQsIGJvb2wgaXNIb3Jpem9udGFsLCBJbmxpbmVC
b3gqIG5leHQsIElubGluZUJveCogcHJldiwgSW5saW5lRmxvd0JveCogcGFyZW50KQotICAgICAg
ICA6IElubGluZUJveChyZW5kZXJlciwgdG9wTGVmdCwgbG9naWNhbFdpZHRoLCBmaXJzdExpbmUs
IGNvbnN0cnVjdGVkLCBkaXJ0eSwgZXh0cmFjdGVkLCBpc0hvcml6b250YWwsIG5leHQsIHByZXYs
IHBhcmVudCkKKyAgICBJbmxpbmVFbGVtZW50Qm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEZs
b2F0UG9pbnQgdG9wTGVmdCwgZmxvYXQgbG9naWNhbFdpZHRoLCBib29sIGZpcnN0TGluZSwgYm9v
bCBjb25zdHJ1Y3RlZCwgYm9vbCBkaXJ0eSwgYm9vbCBleHRyYWN0ZWQsIGJvb2wgaXNIb3Jpem9u
dGFsLCBMZWdhY3lJbmxpbmVCb3gqIG5leHQsIExlZ2FjeUlubGluZUJveCogcHJldiwgSW5saW5l
Rmxvd0JveCogcGFyZW50KQorICAgICAgICA6IExlZ2FjeUlubGluZUJveChyZW5kZXJlciwgdG9w
TGVmdCwgbG9naWNhbFdpZHRoLCBmaXJzdExpbmUsIGNvbnN0cnVjdGVkLCBkaXJ0eSwgZXh0cmFj
dGVkLCBpc0hvcml6b250YWwsIG5leHQsIHByZXYsIHBhcmVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KKyAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxS
ZW5kZXJCb3hNb2RlbE9iamVjdD4oTGVnYWN5SW5saW5lQm94OjpyZW5kZXJlcigpKTsgfQogCiAg
ICAgdm9pZCBkZWxldGVMaW5lKCkgZmluYWw7CiAgICAgdm9pZCBleHRyYWN0TGluZSgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDhlMzhi
Y2YwOWVkNC4uODk0NTZkMTI1MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGluZUZsb3dCb3gpOwogCi1zdHJ1Y3QgU2FtZVNp
emVBc0lubGluZUZsb3dCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKK3N0cnVjdCBTYW1lU2l6ZUFz
SW5saW5lRmxvd0JveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVCb3ggewogICAgIHVpbnQzMl90IGJp
dGZpZWxkcyA6IDIzOwogICAgIHZvaWQqIHBvaW50ZXJzWzVdOwogfTsKQEAgLTY3LDcgKzY3LDcg
QEAgdm9pZCBJbmxpbmVGbG93Qm94OjpzZXRIYXNCYWRDaGlsZExpc3QoKQogICAgIGFzc2VydE5v
dERlbGV0ZWQoKTsKICAgICBpZiAobV9oYXNCYWRDaGlsZExpc3QpCiAgICAgICAgIHJldHVybjsK
LSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0T25MaW5lKCkpCisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKICAgICAgICAgY2hpbGQtPnNl
dEhhc0JhZFBhcmVudCgpOwogICAgIG1faGFzQmFkQ2hpbGRMaXN0ID0gdHJ1ZTsKIH0KQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpzZXRIYXNCYWRDaGlsZExpc3QoKQogTGF5
b3V0VW5pdCBJbmxpbmVGbG93Qm94OjpnZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpCiB7CiAg
ICAgTGF5b3V0VW5pdCB0b3RhbFdpZHRoID0gbWFyZ2luQm9yZGVyUGFkZGluZ0xvZ2ljYWxMZWZ0
KCkgKyBtYXJnaW5Cb3JkZXJQYWRkaW5nTG9naWNhbFJpZ2h0KCk7Ci0gICAgZm9yIChJbmxpbmVC
b3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGlu
ZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4o
KmNoaWxkKSkKICAgICAgICAgICAgIHRvdGFsV2lkdGggKz0gZG93bmNhc3Q8SW5saW5lRmxvd0Jv
eD4oKmNoaWxkKS5nZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIH0KQEAgLTkyLDcg
KzkyLDcgQEAgc3RhdGljIHZvaWQgc2V0SGFzVGV4dERlc2NlbmRhbnRzT25BbmNlc3RvcnMoSW5s
aW5lRmxvd0JveCogYm94KQogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xp
bmUoSW5saW5lQm94KiBjaGlsZCkgCit2b2lkIElubGluZUZsb3dCb3g6OmFkZFRvTGluZShMZWdh
Y3lJbmxpbmVCb3gqIGNoaWxkKSAKIHsKICAgICBBU1NFUlQoIWNoaWxkLT5wYXJlbnQoKSk7CiAg
ICAgQVNTRVJUKCFjaGlsZC0+bmV4dE9uTGluZSgpKTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqIGNoaWxkKQogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpyZW1vdmVDaGlsZChJbmxpbmVC
b3gqIGNoaWxkKQordm9pZCBJbmxpbmVGbG93Qm94OjpyZW1vdmVDaGlsZChMZWdhY3lJbmxpbmVC
b3gqIGNoaWxkKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtMjEzLDggKzIxMyw4
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cmVtb3ZlQ2hpbGQoSW5saW5lQm94KiBjaGlsZCkKIAog
dm9pZCBJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKCkKIHsKLSAgICBJbmxpbmVCb3gqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOwotICAgIElubGluZUJveCogbmV4dCA9IG51bGxwdHI7CisgICAgTGVn
YWN5SW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKKyAgICBMZWdhY3lJbmxpbmVCb3gq
IG5leHQgPSBudWxscHRyOwogICAgIHdoaWxlIChjaGlsZCkgewogICAgICAgICBBU1NFUlQodGhp
cyA9PSBjaGlsZC0+cGFyZW50KCkpOwogICAgICAgICBuZXh0ID0gY2hpbGQtPm5leHRPbkxpbmUo
KTsKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lKCkK
IHsKICAgICBpZiAoIWV4dHJhY3RlZCgpKQogICAgICAgICBleHRyYWN0TGluZUJveEZyb21SZW5k
ZXJPYmplY3QoKTsKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpCisgICAgZm9yIChhdXRvKiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKICAgICAg
ICAgY2hpbGQtPmV4dHJhY3RMaW5lKCk7CiB9CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmF0dGFjaExpbmUoKQogewogICAgIGlmIChleHRyYWN0ZWQoKSkKICAgICAg
ICAgYXR0YWNoTGluZUJveFRvUmVuZGVyT2JqZWN0KCk7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKQor
ICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGNoaWxkLT5hdHRhY2hMaW5lKCk7CiB9CiAKQEAgLTI2
Niw4ICsyNjYsOCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmF0dGFjaExpbmVCb3hUb1JlbmRlck9i
amVjdCgpCiAKIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZs
b2F0IGR5KQogewotICAgIElubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZHgsIGR5KTsKLSAgICBm
b3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0T25MaW5lKCkpCisgICAgTGVnYWN5SW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihkeCwg
ZHkpOworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGNoaWxkLT5hZGp1c3RQb3NpdGlvbihkeCwg
ZHkpOwogICAgIGlmIChtX292ZXJmbG93KQogICAgICAgICBtX292ZXJmbG93LT5tb3ZlKExheW91
dFVuaXQoZHgpLCBMYXlvdXRVbml0KGR5KSk7IC8vIEZJWE1FOiBSb3VuZGluZyBlcnJvciBoZXJl
IHNpbmNlIG92ZXJmbG93IHdhcyBwaXhlbCBzbmFwcGVkLCBidXQgbm9ib2R5IG90aGVyIHRoYW4g
bGlzdCBtYXJrZXJzIHBhc3NlcyBub24taW50ZWdyYWwgdmFsdWVzIGhlcmUuCkBAIC0zNjMsNyAr
MzYzLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVz
KGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHkKICAgICBzZXRFZGdlcyhpbmNsdWRlTGVm
dEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogCiAgICAgLy8gUmVjdXIgaW50byBvdXIgY2hpbGRy
ZW4uCi0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICBp
ZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSkKICAgICAgICAgICAgIGRvd25jYXN0PElubGlu
ZUZsb3dCb3g+KCpjaGlsZCkuZGV0ZXJtaW5lU3BhY2luZ0ZvckZsb3dCb3hlcyhsYXN0TGluZSwg
aXNMb2dpY2FsbHlMYXN0UnVuV3JhcHBlZCwgbG9naWNhbGx5TGFzdFJ1blJlbmRlcmVyKTsKICAg
ICB9CkBAIC0zODcsMTAgKzM4NywxMCBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVz
SW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzVwogICAgIHJl
dHVybiBsb2dpY2FsTGVmdDsKIH0KIAotZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5n
ZUluSW5saW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW5lQm94KiBsYXN0
Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYg
bWF4TG9naWNhbFJpZ2h0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5nKQorZmxvYXQgSW5saW5lRmxv
d0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKExlZ2FjeUlubGluZUJveCogZmly
c3RDaGlsZCwgTGVnYWN5SW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVmdCwg
ZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJpZ2h0LCBib29sJiBuZWVk
c1dvcmRTcGFjaW5nKQogewogICAgIGZsb2F0IHRvdGFsRXhwYW5zaW9uID0gMDsKLSAgICBmb3Ig
KElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkOyBjaGlsZCAmJiBjaGlsZCAhPSBsYXN0Q2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQg
PSBmaXJzdENoaWxkOyBjaGlsZCAmJiBjaGlsZCAhPSBsYXN0Q2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQtPnJlbmRl
cmVyKCkpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4
dEJveD4oKmNoaWxkKTsKICAgICAgICAgICAgIFJlbmRlclRleHQmIHJlbmRlclRleHQgPSB0ZXh0
Qm94LnJlbmRlcmVyKCk7CkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpy
ZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUoY29uc3QgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm8KICAgICAgICAgfHwgbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5oYXNW
ZXJ0aWNhbEdseXBocygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGZvciAoSW5saW5l
Qm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxp
bmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigp
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0
aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAgICAgICAgIApA
QCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBib29sIHZlcnRpY2FsQWxpZ25BcHBsaWVzKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAKIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0TWF4
QXNjZW50QW5kRGVzY2VudChMYXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVuaXQmIG1heERl
c2NlbnQsIExheW91dFVuaXQgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQgbWF4UG9zaXRpb25C
b3R0b20pCiB7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAg
ICAgICAvLyBUaGUgY29tcHV0ZWQgbGluZWhlaWdodCBuZWVkcyB0byBiZSBleHRlbmRlZCBmb3Ig
dGhlCiAgICAgICAgIC8vIHBvc2l0aW9uZWQgZWxlbWVudHMKICAgICAgICAgaWYgKGNoaWxkLT5y
ZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtNTcxLDggKzU3MSw4IEBAIHZv
aWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gm
IHJvb3RCb3gsIExheW91dFVuaXQmCiAgICAgaWYgKCFjaGVja0NoaWxkcmVuKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBWZWN0b3I8SW5saW5lQm94Kj4gbWF4QXNjZW50SW5saW5lQm94TGlzdDsK
LSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gbWF4
QXNjZW50SW5saW5lQm94TGlzdDsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25z
LgogICAgICAgICAKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNl
Qm94ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IG1heEhlaQog
ICAgICAgICAgICAgYWRqdXN0bWVudEZvckNoaWxkcmVuV2l0aFNhbWVMaW5lSGVpZ2h0QW5kQmFz
ZWxpbmUgKz0gcmVuZGVyZXIoKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CiAgICAgfQogCi0g
ICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoY2hp
bGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9u
cy4KIApAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0lu
QmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiAKIHZvaWQg
SW5saW5lRmxvd0JveDo6bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9h
dCYgbWF4TG9naWNhbEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRl
cmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uKSBjb25zdAogewot
ICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGNo
aWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29u
dGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlv
bnMuCiAgICAgICAgIApAQCAtODA1LDcgKzgwNSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6bWF4
TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRv
CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGlu
ZShmbG9hdCYgbWluTG9naWNhbFRvcCwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJl
bmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uKSBjb25zdAog
ewotICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYg
KGNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
Y29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxh
dGlvbnMuCiAgICAgICAgIApAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
ZmxpcExpbmVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluCiAgICAgLy8gRmxpcCB0aGUgYm94IG9uIHRoZSBsaW5lIHN1Y2ggdGhhdCB0aGUgdG9wIGlz
IG5vdyByZWxhdGl2ZSB0byB0aGUgbGluZUJvdHRvbSBpbnN0ZWFkIG9mIHRoZSBsaW5lVG9wLgog
ICAgIHNldExvZ2ljYWxUb3AobGluZUJvdHRvbSAtIChsb2dpY2FsVG9wKCkgLSBsaW5lVG9wKSAt
IGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgCi0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRP
bkxpbmUoKSkgewogICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRl
cnMgYXJlbid0IGFmZmVjdGVkIGhlcmUuCiAgICAgICAgIApAQCAtOTg2LDcgKzk4Niw3IEBAIGlu
bGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZE91dGxpbmVWaXN1YWxPdmVyZmxvdyhMYXlvdXRS
ZWN0JiBsb2dpY2FsVmlzdWFsT3ZlCiAgICAgICAgIGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93
IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93
IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKIH0KIAotaW5saW5lIHZvaWQgSW5saW5lRmxv
d0JveDo6YWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93KGNvbnN0IElubGluZUJveCogaW5saW5lQm94
LCBMYXlvdXRSZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3csIExheW91dFJlY3QmIGxvZ2ljYWxW
aXN1YWxPdmVyZmxvdykKK2lubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hp
bGRPdmVyZmxvdyhjb25zdCBMZWdhY3lJbmxpbmVCb3gqIGlubGluZUJveCwgTGF5b3V0UmVjdCYg
bG9naWNhbExheW91dE92ZXJmbG93LCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cp
CiB7CiAgICAgY29uc3QgUmVuZGVyQm94JiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGlubGlu
ZUJveC0+cmVuZGVyZXIoKSk7CiAgICAgCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSwgRwogICAgIGFkZE91dGxpbmVWaXN1YWxPdmVyZmxvdyhsb2dpY2FsVmlzdWFs
T3ZlcmZsb3cpOwogICAgIGFkZEJvcmRlck91dHNldFZpc3VhbE92ZXJmbG93KGxvZ2ljYWxWaXN1
YWxPdmVyZmxvdyk7CiAKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7
CiAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBh
ZmZlY3QgY2FsY3VsYXRpb25zLgogCkBAIC0xMDk5LDcgKzEwOTksNyBAQCBib29sIElubGluZUZs
b3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZQogICAgIC8vIENoZWNrIGNoaWxkcmVuIGZpcnN0LgogICAgIC8vIFdlIG5lZWQg
dG8gYWNjb3VudCBmb3IgY3VsbGVkIGlubGluZSBwYXJlbnRzIG9mIHRoZSBoaXQtdGVzdGVkIG5v
ZGVzLCBzbyB0aGF0IHRoZXkgbWF5IGFsc28gZ2V0IGluY2x1ZGVkIGluIGFyZWEtYmFzZWQgaGl0
LXRlc3RzLgogICAgIFJlbmRlckVsZW1lbnQqIGN1bGxlZFBhcmVudCA9IG51bGxwdHI7Ci0gICAg
Zm9yIChJbmxpbmVCb3gqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5wcmV2aW91c09uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGxhc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNPbkxpbmUoKSkgewogICAgICAgICBpZiAo
aXM8UmVuZGVyVGV4dD4oY2hpbGQtPnJlbmRlcmVyKCkpIHx8ICFjaGlsZC0+Ym94TW9kZWxPYmpl
Y3QoKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgUmVuZGVyRWxlbWVu
dCogbmV3UGFyZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIC8vIEN1bGxlZCBwYXJlbnRzIGFy
ZSBvbmx5IHJlbGV2YW50IGZvciBhcmVhLWJhc2VkIGhpdC10ZXN0cywgc28gaWdub3JlIGl0IGlu
IHBvaW50LWJhc2VkIG9uZXMuCkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsCiAgICAgCiAgICAgLy8gUGFpbnQgb3VyIGNoaWxkcmVuLgogICAgIGlmIChwYWludFBo
YXNlICE9IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lKSB7Ci0gICAgICAgIGZvciAoSW5saW5lQm94
KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7
CisgICAgICAgIGZvciAoYXV0byogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNU
ZXh0KCkgfHwgIWN1cnItPmJveE1vZGVsT2JqZWN0KCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkp
CiAgICAgICAgICAgICAgICAgY3Vyci0+cGFpbnQoY2hpbGRJbmZvLCBwYWludE9mZnNldCwgbGlu
ZVRvcCwgbGluZUJvdHRvbSk7CiAgICAgICAgIH0KQEAgLTE1MjAsMTggKzE1MjAsMTggQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFu
c3BhcmVuY3lMYXllcigpOwogfQogCi1JbmxpbmVCb3gqIElubGluZUZsb3dCb3g6OmZpcnN0TGVh
ZkRlc2NlbmRhbnQoKSBjb25zdAorTGVnYWN5SW5saW5lQm94KiBJbmxpbmVGbG93Qm94OjpmaXJz
dExlYWZEZXNjZW5kYW50KCkgY29uc3QKIHsKLSAgICBJbmxpbmVCb3gqIGxlYWYgPSBudWxscHRy
OwotICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQgJiYgIWxl
YWY7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKKyAgICBMZWdhY3lJbmxpbmVCb3gqIGxl
YWYgPSBudWxscHRyOworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
ICYmICFsZWFmOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGxlYWYgPSBj
aGlsZC0+aXNMZWFmKCkgPyBjaGlsZCA6IGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCku
Zmlyc3RMZWFmRGVzY2VuZGFudCgpOwogICAgIHJldHVybiBsZWFmOwogfQogCi1JbmxpbmVCb3gq
IElubGluZUZsb3dCb3g6Omxhc3RMZWFmRGVzY2VuZGFudCgpIGNvbnN0CitMZWdhY3lJbmxpbmVC
b3gqIElubGluZUZsb3dCb3g6Omxhc3RMZWFmRGVzY2VuZGFudCgpIGNvbnN0CiB7Ci0gICAgSW5s
aW5lQm94KiBsZWFmID0gbnVsbHB0cjsKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBsYXN0
Q2hpbGQoKTsgY2hpbGQgJiYgIWxlYWY7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzT25MaW5lKCkp
CisgICAgTGVnYWN5SW5saW5lQm94KiBsZWFmID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gbGFzdENoaWxkKCk7IGNoaWxkICYmICFsZWFmOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91
c09uTGluZSgpKQogICAgICAgICBsZWFmID0gY2hpbGQtPmlzTGVhZigpID8gY2hpbGQgOiBkb3du
Y2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmxhc3RMZWFmRGVzY2VuZGFudCgpOwogICAgIHJl
dHVybiBsZWFmOwogfQpAQCAtMTU0Myw3ICsxNTQzLDcgQEAgUmVuZGVyT2JqZWN0OjpIaWdobGln
aHRTdGF0ZSBJbmxpbmVGbG93Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiAKIGJvb2wgSW5saW5lRmxv
d0JveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50
IGVsbGlwc2lzV2lkdGgpIGNvbnN0CiB7Ci0gICAgZm9yIChJbmxpbmVCb3ggKmJveCA9IGZpcnN0
Q2hpbGQoKTsgYm94OyBib3ggPSBib3gtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byog
Ym94ID0gZmlyc3RDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKSB7CiAgICAg
ICAgIGlmICghYm94LT5jYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGx0ciwgYmxvY2tFZGdlLCBlbGxp
cHNpc1dpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNTU3LDcg
KzE1NTcsNyBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRy
LCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9jawogICAgIC8vIGJveCBjb250YWluaW5n
IHRoZSBlbGxpcHNpcy4gIEFsbCBib3hlcyBhZnRlciB0aGF0IG9uZSBpbiB0aGUgZmxvdyBhcmUg
aGlkZGVuLgogICAgIC8vIElmIG91ciBmbG93IGlzIGx0ciB0aGVuIGl0ZXJhdGUgb3ZlciB0aGUg
Ym94ZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBvdGhlcndpc2UgaXRlcmF0ZQogICAgIC8vIGZyb20g
cmlnaHQgdG8gbGVmdC4gVmFyeWluZyB0aGUgb3JkZXIgYWxsb3dzIHVzIHRvIGNvcnJlY3RseSBo
aWRlIHRoZSBib3hlcyBmb2xsb3dpbmcgdGhlIGVsbGlwc2lzLgotICAgIElubGluZUJveCogYm94
ID0gbHRyID8gZmlyc3RDaGlsZCgpIDogbGFzdENoaWxkKCk7CisgICAgTGVnYWN5SW5saW5lQm94
KiBib3ggPSBsdHIgPyBmaXJzdENoaWxkKCkgOiBsYXN0Q2hpbGQoKTsKIAogICAgIC8vIE5PVEU6
IHRoZXNlIHdpbGwgY3Jvc3MgYWZ0ZXIgZm91bmRCb3ggPSB0cnVlLgogICAgIGludCB2aXNpYmxl
TGVmdEVkZ2UgPSBibG9ja0xlZnRFZGdlOwpAQCAtMTU4MiwxNCArMTU4MiwxNCBAQCBmbG9hdCBJ
bmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRF
ZGdlLCBmbG9hdCBibG9jawogCiB2b2lkIElubGluZUZsb3dCb3g6OmNsZWFyVHJ1bmNhdGlvbigp
CiB7Ci0gICAgZm9yIChJbmxpbmVCb3ggKmJveCA9IGZpcnN0Q2hpbGQoKTsgYm94OyBib3ggPSBi
b3gtPm5leHRPbkxpbmUoKSkKKyAgICBmb3IgKGF1dG8qIGJveCA9IGZpcnN0Q2hpbGQoKTsgYm94
OyBib3ggPSBib3gtPm5leHRPbkxpbmUoKSkKICAgICAgICAgYm94LT5jbGVhclRydW5jYXRpb24o
KTsKIH0KIAogTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25B
ZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3dlZFBvc2l0aW9uKSBjb25zdAogewogICAgIExheW91
dFVuaXQgcmVzdWx0OwotICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsK
ICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQog
ICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFm
ZmVjdCBjYWxjdWxhdGlvbnMuCiAgICAgICAgIApAQCAtMTYzNyw3ICsxNjM3LDcgQEAgTGF5b3V0
VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KExheW91
dFVuaXQgYWxsb3dlZFBvc2kKIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVy
QW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zaXRpb24pIGNvbnN0CiB7
CiAgICAgTGF5b3V0VW5pdCByZXN1bHQ7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRP
bkxpbmUoKSkgewogICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRl
cnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KIApAQCAtMTY4Miw5ICsxNjgyLDkgQEAgTGF5
b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChM
YXlvdXRVbml0IGFsbG93ZWRQb3MKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIElubGlu
ZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihWZWN0b3I8SW5saW5lQm94
Kj4mIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLCBDdXN0b21JbmxpbmVCb3hSYW5nZVJldmVyc2Ug
Y3VzdG9tUmV2ZXJzZUltcGxlbWVudGF0aW9uLCB2b2lkKiB1c2VyRGF0YSkgY29uc3QKK3ZvaWQg
SW5saW5lRmxvd0JveDo6Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKFZlY3RvcjxMZWdh
Y3lJbmxpbmVCb3gqPiYgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIsIEN1c3RvbUlubGluZUJveFJh
bmdlUmV2ZXJzZSBjdXN0b21SZXZlcnNlSW1wbGVtZW50YXRpb24sIHZvaWQqIHVzZXJEYXRhKSBj
b25zdAogewotICAgIElubGluZUJveCogbGVhZiA9IGZpcnN0TGVhZkRlc2NlbmRhbnQoKTsKKyAg
ICBMZWdhY3lJbmxpbmVCb3gqIGxlYWYgPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7CiAKICAgICAv
LyBGSVhNRTogVGhlIHJlb3JkZXJpbmcgY29kZSBpcyBhIGNvcHkgb2YgcGFydHMgZnJvbSBCaWRp
UmVzb2x2ZXI6OmNyZWF0ZUJpZGlSdW5zRm9yTGluZSwgb3BlcmF0aW5nIGRpcmVjdGx5IG9uIElu
bGluZUJveGVzLCBpbnN0ZWFkIG9mIEJpZGlSdW5zLgogICAgIC8vIEludmVzdGlnYXRlIG9uIGhv
dyB0aGlzIGNvZGUgY291bGQgcG9zc2libHkgYmUgc2hhcmVkLgpAQCAtMTcwOSwyMiArMTcwOSwy
MiBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihW
ZWN0b3I8SW5saW5lQm94Kj4mIGxlYWZCb3hlcwogICAgIGlmICghKG1pbkxldmVsICUgMikpCiAg
ICAgICAgICsrbWluTGV2ZWw7CiAKLSAgICBWZWN0b3I8SW5saW5lQm94Kj46Oml0ZXJhdG9yIGVu
ZCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLmVuZCgpOworICAgIFZlY3RvcjxMZWdhY3lJbmxp
bmVCb3gqPjo6aXRlcmF0b3IgZW5kID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuZW5kKCk7CiAg
ICAgd2hpbGUgKG1pbkxldmVsIDw9IG1heExldmVsKSB7Ci0gICAgICAgIFZlY3RvcjxJbmxpbmVC
b3gqPjo6aXRlcmF0b3IgaXQgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5iZWdpbigpOworICAg
ICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9yIGl0ID0gbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXIuYmVnaW4oKTsKICAgICAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAg
ICAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICAgICAgICAgIGlmICgoKml0KS0+Ymlk
aUxldmVsKCkgPj0gbWluTGV2ZWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBWZWN0b3I8SW5saW5l
Qm94Kj46Oml0ZXJhdG9yIGZpcnN0ID0gaXQ7CisgICAgICAgICAgICBWZWN0b3I8TGVnYWN5SW5s
aW5lQm94Kj46Oml0ZXJhdG9yIGZpcnN0ID0gaXQ7CiAgICAgICAgICAgICB3aGlsZSAoaXQgIT0g
ZW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKCgqaXQpLT5iaWRpTGV2ZWwoKSA8IG1pbkxldmVs
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICArK2l0OwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgVmVjdG9yPElubGluZUJveCo+OjppdGVyYXRvciBsYXN0
ID0gaXQ7CisgICAgICAgICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9yIGxh
c3QgPSBpdDsKICAgICAgICAgICAgIGlmIChjdXN0b21SZXZlcnNlSW1wbGVtZW50YXRpb24pIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQodXNlckRhdGEpOwogICAgICAgICAgICAgICAgICgqY3Vz
dG9tUmV2ZXJzZUltcGxlbWVudGF0aW9uKSh1c2VyRGF0YSwgZmlyc3QsIGxhc3QpOwpAQCAtMTc1
NiwxMCArMTc1NiwxMCBAQCBjb25zdCBjaGFyKiBJbmxpbmVGbG93Qm94Ojpib3hOYW1lKCkgY29u
c3QKICAgICByZXR1cm4gIklubGluZUZsb3dCb3giOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6
Om91dHB1dExpbmVUcmVlQW5kTWFyayhXVEY6OlRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgSW5s
aW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgSW5saW5lRmxvd0JveDo6
b3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMZWdh
Y3lJbmxpbmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAogewotICAgIElubGluZUJv
eDo6b3V0cHV0TGluZVRyZWVBbmRNYXJrKHN0cmVhbSwgbWFya2VkQm94LCBkZXB0aCk7Ci0gICAg
Zm9yIChjb25zdCBJbmxpbmVCb3gqIGJveCA9IGZpcnN0Q2hpbGQoKTsgYm94OyBib3ggPSBib3gt
Pm5leHRPbkxpbmUoKSkKKyAgICBMZWdhY3lJbmxpbmVCb3g6Om91dHB1dExpbmVUcmVlQW5kTWFy
ayhzdHJlYW0sIG1hcmtlZEJveCwgZGVwdGgpOworICAgIGZvciAoY29uc3QgTGVnYWN5SW5saW5l
Qm94KiBib3ggPSBmaXJzdENoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpCiAg
ICAgICAgIGJveC0+b3V0cHV0TGluZVRyZWVBbmRNYXJrKHN0cmVhbSwgbWFya2VkQm94LCBkZXB0
aCArIDEpOwogfQogCkBAIC0xNzcyLDggKzE3NzIsOCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNo
ZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIGFzc2VydE5vdERlbGV0ZWQoKTsKICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9oYXNCYWRDaGlsZExpc3QpOwogI2lmZGVm
IENIRUNLX0NPTlNJU1RFTkNZCi0gICAgY29uc3QgSW5saW5lQm94KiBwcmV2aW91c0NoaWxkID0g
bnVsbHB0cjsKLSAgICBmb3IgKGNvbnN0IElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBjb25zdCBMZWdhY3lJ
bmxpbmVCb3gqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyOworICAgIGZvciAoY29uc3QgTGVnYWN5
SW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRPbkxpbmUoKSkgewogICAgICAgICBBU1NFUlQoY2hpbGQtPnBhcmVudCgpID09IHRoaXMpOwog
ICAgICAgICBBU1NFUlQoY2hpbGQtPnByZXZpb3VzT25MaW5lKCkgPT0gcHJldmlvdXNDaGlsZCk7
CiAgICAgICAgIHByZXZpb3VzQ2hpbGQgPSBjaGlsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCmluZGV4IDc1ZDMxNzgzNTk0MC4uYzI1ZTkwNTBlZTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTIwLDcgKzIwLDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPdmVyZmxvdy5oIgogI2luY2x1ZGUgIlNoYWRv
d0RhdGEuaCIKIApAQCAtMzcsMTEgKzM3LDExIEBAIHN0cnVjdCBHbHlwaE92ZXJmbG93OwogCiB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgSW5saW5lVGV4dEJveCosIHN0ZDo6cGFpcjxWZWN0b3I8Y29u
c3QgRm9udCo+LCBHbHlwaE92ZXJmbG93Pj4gR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXA7CiAKLWNsYXNzIElubGluZUZsb3dCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKK2NsYXNzIElu
bGluZUZsb3dCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKElubGluZUZsb3dCb3gpOwogcHVibGljOgogICAgIGV4cGxpY2l0IElubGluZUZs
b3dCb3goUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKQotICAgICAgICA6IElubGluZUJv
eChyZW5kZXJlcikKKyAgICAgICAgOiBMZWdhY3lJbmxpbmVCb3gocmVuZGVyZXIpCiAgICAgICAg
ICwgbV9pbmNsdWRlTG9naWNhbExlZnRFZGdlKGZhbHNlKQogICAgICAgICAsIG1faW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UoZmFsc2UpCiAgICAgICAgICwgbV9oYXNIYXJkTGluZWJyZWFrKGZhbHNl
KQpAQCAtNzIsMTEgKzcyLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRSRUVf
REVCVUdHSU5HKQotICAgIHZvaWQgb3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgb3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IExlZ2FjeUlubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGNvbnN0IGNoYXIqIGJveE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCi0gICAg
UmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KKyAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oTGVnYWN5SW5saW5lQm94OjpyZW5kZXJlcigpKTsgfQogICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBpc0ZpcnN0TGluZSgp
ID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOyB9CiAK
ICAgICBJbmxpbmVGbG93Qm94KiBwcmV2TGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldkxp
bmVCb3g7IH0KQEAgLTg0LDI1ICs4NCwyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXh0TGlu
ZUJveChJbmxpbmVGbG93Qm94KiBuKSB7IG1fbmV4dExpbmVCb3ggPSBuOyB9CiAgICAgdm9pZCBz
ZXRQcmV2aW91c0xpbmVCb3goSW5saW5lRmxvd0JveCogcCkgeyBtX3ByZXZMaW5lQm94ID0gcDsg
fQogCi0gICAgSW5saW5lQm94KiBmaXJzdENoaWxkKCkgY29uc3QgeyBjaGVja0NvbnNpc3RlbmN5
KCk7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KLSAgICBJbmxpbmVCb3gqIGxhc3RDaGlsZCgpIGNv
bnN0IHsgY2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KKyAgICBMZWdh
Y3lJbmxpbmVCb3gqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IGNoZWNrQ29uc2lzdGVuY3koKTsgcmV0
dXJuIG1fZmlyc3RDaGlsZDsgfQorICAgIExlZ2FjeUlubGluZUJveCogbGFzdENoaWxkKCkgY29u
c3QgeyBjaGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiBtX2xhc3RDaGlsZDsgfQogCiAgICAgYm9v
bCBpc0xlYWYoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIAotICAgIElubGlu
ZUJveCogZmlyc3RMZWFmRGVzY2VuZGFudCgpIGNvbnN0OwotICAgIElubGluZUJveCogbGFzdExl
YWZEZXNjZW5kYW50KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdExlYWZEZXNj
ZW5kYW50KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0TGVhZkRlc2NlbmRhbnQo
KSBjb25zdDsKIAotICAgIHR5cGVkZWYgdm9pZCAoKkN1c3RvbUlubGluZUJveFJhbmdlUmV2ZXJz
ZSkodm9pZCogdXNlckRhdGEsIFZlY3RvcjxJbmxpbmVCb3gqPjo6aXRlcmF0b3IgZmlyc3QsIFZl
Y3RvcjxJbmxpbmVCb3gqPjo6aXRlcmF0b3IgbGFzdCk7Ci0gICAgdm9pZCBjb2xsZWN0TGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXIoVmVjdG9yPElubGluZUJveCo+JiwgQ3VzdG9tSW5saW5lQm94UmFu
Z2VSZXZlcnNlIGN1c3RvbVJldmVyc2VJbXBsZW1lbnRhdGlvbiA9IG51bGxwdHIsIHZvaWQqIHVz
ZXJEYXRhID0gbnVsbHB0cikgY29uc3Q7CisgICAgdHlwZWRlZiB2b2lkICgqQ3VzdG9tSW5saW5l
Qm94UmFuZ2VSZXZlcnNlKSh2b2lkKiB1c2VyRGF0YSwgVmVjdG9yPExlZ2FjeUlubGluZUJveCo+
OjppdGVyYXRvciBmaXJzdCwgVmVjdG9yPExlZ2FjeUlubGluZUJveCo+OjppdGVyYXRvciBsYXN0
KTsKKyAgICB2b2lkIGNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihWZWN0b3I8TGVnYWN5
SW5saW5lQm94Kj4mLCBDdXN0b21JbmxpbmVCb3hSYW5nZVJldmVyc2UgY3VzdG9tUmV2ZXJzZUlt
cGxlbWVudGF0aW9uID0gbnVsbHB0ciwgdm9pZCogdXNlckRhdGEgPSBudWxscHRyKSBjb25zdDsK
IAogICAgIHZvaWQgc2V0Q29uc3RydWN0ZWQoKSBmaW5hbAogICAgIHsKLSAgICAgICAgSW5saW5l
Qm94OjpzZXRDb25zdHJ1Y3RlZCgpOwotICAgICAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpCisgICAgICAg
IExlZ2FjeUlubGluZUJveDo6c2V0Q29uc3RydWN0ZWQoKTsKKyAgICAgICAgZm9yIChhdXRvKiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkK
ICAgICAgICAgICAgIGNoaWxkLT5zZXRDb25zdHJ1Y3RlZCgpOwogICAgIH0KIAotICAgIHZvaWQg
YWRkVG9MaW5lKElubGluZUJveCogY2hpbGQpOworICAgIHZvaWQgYWRkVG9MaW5lKExlZ2FjeUlu
bGluZUJveCogY2hpbGQpOwogICAgIHZvaWQgZGVsZXRlTGluZSgpIGZpbmFsOwogICAgIHZvaWQg
ZXh0cmFjdExpbmUoKSBmaW5hbDsKICAgICB2b2lkIGF0dGFjaExpbmUoKSBmaW5hbDsKQEAgLTE3
Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0Jv
eGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHlMYXN0UnVuV3JhcHBlZCwgUmVuZGVy
T2JqZWN0KiBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpOwogICAgIExheW91dFVuaXQgZ2V0Rmxv
d1NwYWNpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBmbG9hdCBwbGFjZUJveGVzSW5JbmxpbmVEaXJl
Y3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcpOwotICAgIGZs
b2F0IHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQs
IElubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBtaW5Mb2dp
Y2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZyk7
CisgICAgZmxvYXQgcGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKExlZ2FjeUlubGluZUJv
eCogZmlyc3RDaGlsZCwgTGVnYWN5SW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0JiBsb2dpY2Fs
TGVmdCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJpZ2h0LCBib29s
JiBuZWVkc1dvcmRTcGFjaW5nKTsKICAgICB2b2lkIGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5s
aW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0KSB7IHNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxM
ZWZ0KTsgfQogICAgIHZvaWQgZW5kUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGZs
b2F0IGxvZ2ljYWxMZWZ0LCBmbG9hdCBsb2dpY2FsUmlnaHQsIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0
LCBmbG9hdCBtYXhMb2dpY2FsUmlnaHQpCiAgICAgewpAQCAtMjAwLDcgKzIwMCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY29tcHV0ZU92ZXJmbG93KExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYpOwogICAg
IAotICAgIHZvaWQgcmVtb3ZlQ2hpbGQoSW5saW5lQm94KiBjaGlsZCk7CisgICAgdm9pZCByZW1v
dmVDaGlsZChMZWdhY3lJbmxpbmVCb3gqIGNoaWxkKTsKIAogICAgIFJlbmRlck9iamVjdDo6SGln
aGxpZ2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBvdmVycmlkZTsKIApAQCAtMzA2LDcgKzMwNiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRCb3JkZXJPdXRzZXRWaXN1YWxPdmVyZmxvdyhMYXlv
dXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgYWRkVGV4dEJveFZpc3Vh
bE92ZXJmbG93KElubGluZVRleHRCb3gmLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cCYsIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAgICAgdm9pZCBhZGRPdXRs
aW5lVmlzdWFsT3ZlcmZsb3coTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKLSAg
ICB2b2lkIGFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhjb25zdCBJbmxpbmVCb3gqLCBMYXlvdXRS
ZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3csIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVy
Zmxvdyk7CisgICAgdm9pZCBhZGRSZXBsYWNlZENoaWxkT3ZlcmZsb3coY29uc3QgTGVnYWN5SW5s
aW5lQm94KiwgTGF5b3V0UmVjdCYgbG9naWNhbExheW91dE92ZXJmbG93LCBMYXlvdXRSZWN0JiBs
b2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgY29uc3RyYWluVG9MaW5lVG9wQW5kQm90
dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMzQzLDggKzM0
Myw4IEBAIHByaXZhdGU6CiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFJlbmRlck92ZXJmbG93PiBt
X292ZXJmbG93OwogCi0gICAgSW5saW5lQm94KiBtX2ZpcnN0Q2hpbGQ7Ci0gICAgSW5saW5lQm94
KiBtX2xhc3RDaGlsZDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIG1fZmlyc3RDaGlsZDsKKyAgICBM
ZWdhY3lJbmxpbmVCb3gqIG1fbGFzdENoaWxkOwogICAgIAogICAgIElubGluZUZsb3dCb3gqIG1f
cHJldkxpbmVCb3g7IC8vIFRoZSBwcmV2aW91cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRl
ck9iamVjdAogICAgIElubGluZUZsb3dCb3gqIG1fbmV4dExpbmVCb3g7IC8vIFRoZSBuZXh0IGJv
eCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggOGU5ODc2YmIzYzQ1Li5jOGJhZDk2OGQ3ZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW5saW5lVGV4dEJveCk7CiAKLXN0cnVjdCBTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCA6IHB1Ymxp
YyBJbmxpbmVCb3ggeworc3RydWN0IFNhbWVTaXplQXNJbmxpbmVUZXh0Qm94IDogcHVibGljIExl
Z2FjeUlubGluZUJveCB7CiAgICAgdW5zaWduZWQgdmFyaWFibGVzWzFdOwogICAgIHVuc2lnbmVk
IHNob3J0IHZhcmlhYmxlczJbMl07CiAgICAgdm9pZCogcG9pbnRlcnNbMl07CkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjptYXJrRGlydHkoYm9vbCBkaXJ0eSkKICAgICAg
ICAgbV9sZW4gPSAwOwogICAgICAgICBtX3N0YXJ0ID0gMDsKICAgICB9Ci0gICAgSW5saW5lQm94
OjptYXJrRGlydHkoZGlydHkpOworICAgIExlZ2FjeUlubGluZUJveDo6bWFya0RpcnR5KGRpcnR5
KTsKIH0KIAogTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94Ojpsb2dpY2FsT3ZlcmZsb3dSZWN0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IGE0ZWVh
ODllMzcwYi4uMDk3ZTgwZjQ1ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJ
bmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogCkBAIC0zOSwxOCArMzksMTggQEAgc3Ry
dWN0IFRleHRQYWludFN0eWxlOwogY29uc3QgdW5zaWduZWQgc2hvcnQgY05vVHJ1bmNhdGlvbiA9
IFVTSFJUX01BWDsKIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNGdWxsVHJ1bmNhdGlvbiA9IFVTSFJU
X01BWCAtIDE7CiAKLWNsYXNzIElubGluZVRleHRCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKK2Ns
YXNzIElubGluZVRleHRCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKElubGluZVRleHRCb3gpOwogcHVibGljOgogICAgIGV4cGxpY2l0IElu
bGluZVRleHRCb3goUmVuZGVyVGV4dCYgcmVuZGVyZXIpCi0gICAgICAgIDogSW5saW5lQm94KHJl
bmRlcmVyKQorICAgICAgICA6IExlZ2FjeUlubGluZUJveChyZW5kZXJlcikKICAgICB7CiAgICAg
ICAgIHNldEJlaGF2ZXNMaWtlVGV4dCh0cnVlKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5Jbmxp
bmVUZXh0Qm94KCk7CiAKLSAgICBSZW5kZXJUZXh0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFJlbmRlclRleHQ+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KKyAgICBSZW5k
ZXJUZXh0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KExl
Z2FjeUlubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gaXNGaXJzdExpbmUoKSA/IHJlbmRlcmVyKCkuZmlyc3RM
aW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsgfQogCiAgICAgSW5saW5lVGV4dEJveCog
cHJldlRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX3ByZXZUZXh0Qm94OyB9CkBAIC03OSwxNiAr
NzksMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrRGlydHkoYm9vbCBkaXJ0eSA9IHRydWUp
IGZpbmFsOwogCi0gICAgdXNpbmcgSW5saW5lQm94OjpoYXNIeXBoZW47Ci0gICAgdXNpbmcgSW5s
aW5lQm94OjpzZXRIYXNIeXBoZW47Ci0gICAgdXNpbmcgSW5saW5lQm94OjpjYW5IYXZlTGVmdEV4
cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uOwot
ICAgIHVzaW5nIElubGluZUJveDo6Y2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOwotICAgIHVzaW5nIElu
bGluZUJveDo6c2V0Q2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOwotICAgIHVzaW5nIElubGluZUJveDo6
Zm9yY2VSaWdodEV4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNldEZvcmNlUmlnaHRF
eHBhbnNpb247Ci0gICAgdXNpbmcgSW5saW5lQm94Ojpmb3JjZUxlZnRFeHBhbnNpb247Ci0gICAg
dXNpbmcgSW5saW5lQm94OjpzZXRGb3JjZUxlZnRFeHBhbnNpb247CisgICAgdXNpbmcgTGVnYWN5
SW5saW5lQm94OjpoYXNIeXBoZW47CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpzZXRIYXNI
eXBoZW47CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpjYW5IYXZlTGVmdEV4cGFuc2lvbjsK
KyAgICB1c2luZyBMZWdhY3lJbmxpbmVCb3g6OnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uOworICAg
IHVzaW5nIExlZ2FjeUlubGluZUJveDo6Y2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOworICAgIHVzaW5n
IExlZ2FjeUlubGluZUJveDo6c2V0Q2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOworICAgIHVzaW5nIExl
Z2FjeUlubGluZUJveDo6Zm9yY2VSaWdodEV4cGFuc2lvbjsKKyAgICB1c2luZyBMZWdhY3lJbmxp
bmVCb3g6OnNldEZvcmNlUmlnaHRFeHBhbnNpb247CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94
Ojpmb3JjZUxlZnRFeHBhbnNpb247CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpzZXRGb3Jj
ZUxlZnRFeHBhbnNpb247CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJ5U3RhcnQo
Y29uc3QgSW5saW5lVGV4dEJveCogZmlyc3QsIGNvbnN0IElubGluZVRleHRCb3gqIHNlY29uZCkg
eyByZXR1cm4gZmlyc3QtPnN0YXJ0KCkgPCBzZWNvbmQtPnN0YXJ0KCk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcApzaW1pbGFyaXR5IGluZGV4IDczJQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcApyZW5hbWUgdG8g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKaW5kZXggZDg0NGM5
YWRjYjZmLi5jMDIyOGNmOWU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxp
bmVCb3guY3BwCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIklubGluZUJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZUJveC5oIgogCiAj
aW5jbHVkZSAiRm9udE1ldHJpY3MuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYsMTAgKzM2
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKElubGluZUJveCk7CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGVnYWN5SW5saW5l
Qm94KTsKIAotc3RydWN0IFNhbWVTaXplQXNJbmxpbmVCb3ggewotICAgIHZpcnR1YWwgflNhbWVT
aXplQXNJbmxpbmVCb3goKSA9IGRlZmF1bHQ7CitzdHJ1Y3QgU2FtZVNpemVBc0xlZ2FjeUlubGlu
ZUJveCB7CisgICAgdmlydHVhbCB+U2FtZVNpemVBc0xlZ2FjeUlubGluZUJveCgpID0gZGVmYXVs
dDsKICAgICB2b2lkKiBhWzNdOwogICAgIFdlYWtQdHI8UmVuZGVyT2JqZWN0PiByOwogICAgIEZs
b2F0UG9pbnQgYjsKQEAgLTUyLDI4ICs1MiwyOCBAQCBzdHJ1Y3QgU2FtZVNpemVBc0lubGluZUJv
eCB7CiAjZW5kaWYKIH07CiAKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihJbmxpbmVCb3gpID09IHNp
emVvZihTYW1lU2l6ZUFzSW5saW5lQm94KSwgSW5saW5lQm94X3NpemVfZ3VhcmQpOworQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKExlZ2FjeUlubGluZUJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNMZWdh
Y3lJbmxpbmVCb3gpLCBMZWdhY3lJbmxpbmVCb3hfc2l6ZV9ndWFyZCk7CiAKICNpZiAhQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKIAotdm9pZCBJbmxpbmVCb3g6OmFz
c2VydE5vdERlbGV0ZWQoKSBjb25zdAordm9pZCBMZWdhY3lJbmxpbmVCb3g6OmFzc2VydE5vdERl
bGV0ZWQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2RlbGV0aW9uU2VudGluZWwgPT0gZGVsZXRp
b25TZW50aW5lbE5vdERlbGV0ZWRWYWx1ZSk7CiB9CiAKLUlubGluZUJveDo6fklubGluZUJveCgp
CitMZWdhY3lJbmxpbmVCb3g6On5MZWdhY3lJbmxpbmVCb3goKQogewogICAgIGludmFsaWRhdGVQ
YXJlbnRDaGlsZExpc3QoKTsKICAgICBtX2RlbGV0aW9uU2VudGluZWwgPSBkZWxldGlvblNlbnRp
bmVsRGVsZXRlZFZhbHVlOwogfQogCi12b2lkIElubGluZUJveDo6c2V0SGFzQmFkUGFyZW50KCkK
K3ZvaWQgTGVnYWN5SW5saW5lQm94OjpzZXRIYXNCYWRQYXJlbnQoKQogewogICAgIGFzc2VydE5v
dERlbGV0ZWQoKTsKICAgICBtX2hhc0JhZFBhcmVudCA9IHRydWU7CiB9CiAKLXZvaWQgSW5saW5l
Qm94OjppbnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0KCkKK3ZvaWQgTGVnYWN5SW5saW5lQm94Ojpp
bnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0KCkKIHsKICAgICBhc3NlcnROb3REZWxldGVkKCk7CiAg
ICAgaWYgKCFtX2hhc0JhZFBhcmVudCAmJiBtX3BhcmVudCAmJiBtX2lzRXZlckluQ2hpbGRMaXN0
KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIElubGluZUJveDo6aW52YWxpZGF0ZVBhcmVudENoaWxk
TGlzdCgpCiAKICNlbmRpZgogCi12b2lkIElubGluZUJveDo6cmVtb3ZlRnJvbVBhcmVudCgpCit2
b2lkIExlZ2FjeUlubGluZUJveDo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7IAogICAgIGlmIChwYXJl
bnQoKSkKICAgICAgICAgcGFyZW50KCktPnJlbW92ZUNoaWxkKHRoaXMpOwpAQCAtOTAsMjcgKzkw
LDI3IEBAIHZvaWQgSW5saW5lQm94OjpyZW1vdmVGcm9tUGFyZW50KCkKIAogI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKIAotY29uc3QgY2hhciogSW5saW5lQm94Ojpib3hOYW1lKCkgY29uc3QK
K2NvbnN0IGNoYXIqIExlZ2FjeUlubGluZUJveDo6Ym94TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuICJJbmxpbmVCb3giOwogfQogCi12b2lkIElubGluZUJveDo6c2hvd05vZGVUcmVlRm9yVGhp
cygpIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZUJveDo6c2hvd05vZGVUcmVlRm9yVGhpcygpIGNv
bnN0CiB7CiAgICAgcmVuZGVyZXIoKS5zaG93Tm9kZVRyZWVGb3JUaGlzKCk7CiB9CiAKLXZvaWQg
SW5saW5lQm94OjpzaG93TGluZVRyZWVGb3JUaGlzKCkgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5l
Qm94OjpzaG93TGluZVRyZWVGb3JUaGlzKCkgY29uc3QKIHsKICAgICByZW5kZXJlcigpLmNvbnRh
aW5pbmdCbG9jaygpLT5zaG93TGluZVRyZWVGb3JUaGlzKCk7CiB9CiAKLXZvaWQgSW5saW5lQm94
OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBJbmxpbmVC
b3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAordm9pZCBMZWdhY3lJbmxpbmVCb3g6Om91
dHB1dExpbmVUcmVlQW5kTWFyayhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExlZ2FjeUlubGlu
ZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0CiB7CiAgICAgb3V0cHV0TGluZUJveChz
dHJlYW0sIG1hcmtlZEJveCA9PSB0aGlzLCBkZXB0aCk7CiB9CiAKLXZvaWQgSW5saW5lQm94Ojpv
dXRwdXRMaW5lQm94KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNv
bnN0Cit2b2lkIExlZ2FjeUlubGluZUJveDo6b3V0cHV0TGluZUJveChUZXh0U3RyZWFtJiBzdHJl
YW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAogewogICAgIHN0cmVhbSA8PCAiLS0tLS0t
LS0gIiA8PCAoaXNEaXJ0eSgpID8gIkQiIDogIi0iKSA8PCAiLSI7CiAgICAgaW50IHByaW50ZWRD
aGFyYWN0ZXJzID0gMDsKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIElubGluZUJveDo6b3V0cHV0
TGluZUJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAog
CiAjZW5kaWYgLy8gRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogCi1mbG9hdCBJbmxpbmVCb3g6Omxv
Z2ljYWxIZWlnaHQoKSBjb25zdAorZmxvYXQgTGVnYWN5SW5saW5lQm94Ojpsb2dpY2FsSGVpZ2h0
KCkgY29uc3QKIHsKICAgICBpZiAoaGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuIHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CkBAIC0xNDYsMzQgKzE0NiwzNCBAQCBmbG9h
dCBJbmxpbmVCb3g6OmxvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUxheW91dFVuaXQgSW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZUJveDo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAogewogICAgIHJldHVybiBi
b3hNb2RlbE9iamVjdCgpLT5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgbV9iaXRmaWVs
ZHMuZmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNh
bExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9CiAKLUxheW91dFVuaXQgSW5saW5l
Qm94OjpsaW5lSGVpZ2h0KCkgY29uc3QKK0xheW91dFVuaXQgTGVnYWN5SW5saW5lQm94OjpsaW5l
SGVpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+bGluZUhlaWdo
dChtX2JpdGZpZWxkcy5maXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIH0KIAotaW50IElu
bGluZUJveDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdCAKK2ludCBMZWdhY3lJbmxpbmVCb3g6OmNh
cmV0TWluT2Zmc2V0KCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuY2FyZXRNaW5P
ZmZzZXQoKTsKIH0KIAotaW50IElubGluZUJveDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdCAKK2lu
dCBMZWdhY3lJbmxpbmVCb3g6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKIHsgCiAgICAgcmV0dXJu
IHJlbmRlcmVyKCkuY2FyZXRNYXhPZmZzZXQoKTsKIH0KIAotdm9pZCBJbmxpbmVCb3g6OmRpcnR5
TGluZUJveGVzKCkKK3ZvaWQgTGVnYWN5SW5saW5lQm94OjpkaXJ0eUxpbmVCb3hlcygpCiB7CiAg
ICAgbWFya0RpcnR5KCk7CiAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gcGFyZW50KCk7
IGN1cnIgJiYgIWN1cnItPmlzRGlydHkoKTsgY3VyciA9IGN1cnItPnBhcmVudCgpKQogICAgICAg
ICBjdXJyLT5tYXJrRGlydHkoKTsKIH0KIAotdm9pZCBJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9u
KGZsb2F0IGR4LCBmbG9hdCBkeSkKK3ZvaWQgTGVnYWN5SW5saW5lQm94OjphZGp1c3RQb3NpdGlv
bihmbG9hdCBkeCwgZmxvYXQgZHkpCiB7CiAgICAgbV90b3BMZWZ0Lm1vdmUoZHgsIGR5KTsKIApA
QCAtMTg0LDIxICsxODQsMjEgQEAgdm9pZCBJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKGZsb2F0
IGR4LCBmbG9hdCBkeSkKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS5t
b3ZlKExheW91dFVuaXQoZHgpLCBMYXlvdXRVbml0KGR5KSk7CiB9CiAKLWNvbnN0IFJvb3RJbmxp
bmVCb3gmIElubGluZUJveDo6cm9vdCgpIGNvbnN0Citjb25zdCBSb290SW5saW5lQm94JiBMZWdh
Y3lJbmxpbmVCb3g6OnJvb3QoKSBjb25zdAogeyAKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAg
IHJldHVybiBwYXJlbnQoKS0+cm9vdCgpOwogICAgIHJldHVybiBkb3duY2FzdDxSb290SW5saW5l
Qm94PigqdGhpcyk7CiB9CiAKLVJvb3RJbmxpbmVCb3gmIElubGluZUJveDo6cm9vdCgpCitSb290
SW5saW5lQm94JiBMZWdhY3lJbmxpbmVCb3g6OnJvb3QoKQogeyAKICAgICBpZiAocGFyZW50KCkp
CiAgICAgICAgIHJldHVybiBwYXJlbnQoKS0+cm9vdCgpOwogICAgIHJldHVybiBkb3duY2FzdDxS
b290SW5saW5lQm94PigqdGhpcyk7CiB9CiAKLWJvb2wgSW5saW5lQm94OjpuZXh0T25MaW5lRXhp
c3RzKCkgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lQm94OjpuZXh0T25MaW5lRXhpc3RzKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYml0ZmllbGRzLmRldGVybWluZWRJZk5leHRPbkxpbmVFeGlzdHMo
KSkgewogICAgICAgICBtX2JpdGZpZWxkcy5zZXREZXRlcm1pbmVkSWZOZXh0T25MaW5lRXhpc3Rz
KHRydWUpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSW5saW5lQm94OjpuZXh0T25MaW5lRXhp
c3RzKCkgY29uc3QKICAgICByZXR1cm4gbV9iaXRmaWVsZHMubmV4dE9uTGluZUV4aXN0cygpOwog
fQogCi1ib29sIElubGluZUJveDo6cHJldmlvdXNPbkxpbmVFeGlzdHMoKSBjb25zdAorYm9vbCBM
ZWdhY3lJbmxpbmVCb3g6OnByZXZpb3VzT25MaW5lRXhpc3RzKCkgY29uc3QKIHsKICAgICBpZiAo
IXBhcmVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjIsMzIgKzIyMiwzMiBAQCBi
b29sIElubGluZUJveDo6cHJldmlvdXNPbkxpbmVFeGlzdHMoKSBjb25zdAogICAgIHJldHVybiBw
YXJlbnQoKS0+cHJldmlvdXNPbkxpbmVFeGlzdHMoKTsKIH0KIAotSW5saW5lQm94KiBJbmxpbmVC
b3g6Om5leHRMZWFmT25MaW5lKCkgY29uc3QKK0xlZ2FjeUlubGluZUJveCogTGVnYWN5SW5saW5l
Qm94OjpuZXh0TGVhZk9uTGluZSgpIGNvbnN0CiB7Ci0gICAgSW5saW5lQm94KiBsZWFmID0gbnVs
bHB0cjsKLSAgICBmb3IgKElubGluZUJveCogYm94ID0gbmV4dE9uTGluZSgpOyBib3ggJiYgIWxl
YWY7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKQorICAgIExlZ2FjeUlubGluZUJveCogbGVhZiA9
IG51bGxwdHI7CisgICAgZm9yIChhdXRvKiBib3ggPSBuZXh0T25MaW5lKCk7IGJveCAmJiAhbGVh
ZjsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGxlYWYgPSBib3gtPmlzTGVhZigp
ID8gYm94IDogZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmJveCkuZmlyc3RMZWFmRGVzY2VuZGFu
dCgpOwogICAgIGlmICghbGVhZiAmJiBwYXJlbnQoKSkKICAgICAgICAgbGVhZiA9IHBhcmVudCgp
LT5uZXh0TGVhZk9uTGluZSgpOwogICAgIHJldHVybiBsZWFmOwogfQogICAgIAotSW5saW5lQm94
KiBJbmxpbmVCb3g6OnByZXZpb3VzTGVhZk9uTGluZSgpIGNvbnN0CitMZWdhY3lJbmxpbmVCb3gq
IExlZ2FjeUlubGluZUJveDo6cHJldmlvdXNMZWFmT25MaW5lKCkgY29uc3QKIHsKLSAgICBJbmxp
bmVCb3gqIGxlYWYgPSBudWxscHRyOwotICAgIGZvciAoSW5saW5lQm94KiBib3ggPSBwcmV2aW91
c09uTGluZSgpOyBib3ggJiYgIWxlYWY7IGJveCA9IGJveC0+cHJldmlvdXNPbkxpbmUoKSkKKyAg
ICBMZWdhY3lJbmxpbmVCb3gqIGxlYWYgPSBudWxscHRyOworICAgIGZvciAoYXV0byogYm94ID0g
cHJldmlvdXNPbkxpbmUoKTsgYm94ICYmICFsZWFmOyBib3ggPSBib3gtPnByZXZpb3VzT25MaW5l
KCkpCiAgICAgICAgIGxlYWYgPSBib3gtPmlzTGVhZigpID8gYm94IDogZG93bmNhc3Q8SW5saW5l
Rmxvd0JveD4oKmJveCkubGFzdExlYWZEZXNjZW5kYW50KCk7CiAgICAgaWYgKCFsZWFmICYmIHBh
cmVudCgpKQogICAgICAgICBsZWFmID0gcGFyZW50KCktPnByZXZpb3VzTGVhZk9uTGluZSgpOwog
ICAgIHJldHVybiBsZWFmOwogfQogCi1SZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElubGlu
ZUJveDo6c2VsZWN0aW9uU3RhdGUoKQorUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBMZWdh
Y3lJbmxpbmVCb3g6OnNlbGVjdGlvblN0YXRlKCkKIHsKICAgICByZXR1cm4gcmVuZGVyZXIoKS5z
ZWxlY3Rpb25TdGF0ZSgpOwogfQogCi1ib29sIElubGluZUJveDo6Y2FuQWNjb21tb2RhdGVFbGxp
cHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpIGNvbnN0Citi
b29sIExlZ2FjeUlubGluZUJveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50
IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXJlcGxh
Y2VkIGVsZW1lbnRzIGNhbiBhbHdheXMgYWNjb21tb2RhdGUgYW4gZWxsaXBzaXMuCiAgICAgaWYg
KCFyZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkKQEAgLTI1OCwyMSArMjU4LDIxIEBAIGJvb2wgSW5s
aW5lQm94OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBp
bnQgZWxsaXBzaXNXaWR0CiAgICAgcmV0dXJuICEoYm94UmVjdC5pbnRlcnNlY3RzKGVsbGlwc2lz
UmVjdCkpOwogfQogCi1mbG9hdCBJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQmIHRydW5jYXRlZFdpZHRoLCBib29sJikKK2Zsb2F0IExl
Z2FjeUlubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveChib29sLCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCYgdHJ1bmNhdGVkV2lkdGgsIGJvb2wmKQogewogICAgIC8vIFVzZSAtMSB0byBtZWFu
ICJ3ZSBkaWRuJ3Qgc2V0IHRoZSBwb3NpdGlvbi4iCiAgICAgdHJ1bmNhdGVkV2lkdGggKz0gbG9n
aWNhbFdpZHRoKCk7CiAgICAgcmV0dXJuIC0xOwogfQogCi12b2lkIElubGluZUJveDo6Y2xlYXJL
bm93blRvSGF2ZU5vT3ZlcmZsb3coKQordm9pZCBMZWdhY3lJbmxpbmVCb3g6OmNsZWFyS25vd25U
b0hhdmVOb092ZXJmbG93KCkKIHsgCiAgICAgbV9iaXRmaWVsZHMuc2V0S25vd25Ub0hhdmVOb092
ZXJmbG93KGZhbHNlKTsKICAgICBpZiAocGFyZW50KCkgJiYgcGFyZW50KCktPmtub3duVG9IYXZl
Tm9PdmVyZmxvdygpKQogICAgICAgICBwYXJlbnQoKS0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZs
b3coKTsKIH0KIAotRmxvYXRQb2ludCBJbmxpbmVCb3g6OmxvY2F0aW9uSW5jbHVkaW5nRmxpcHBp
bmcoKSBjb25zdAorRmxvYXRQb2ludCBMZWdhY3lJbmxpbmVCb3g6OmxvY2F0aW9uSW5jbHVkaW5n
RmxpcHBpbmcoKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBl
ZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiB0b3BMZWZ0KCk7CkBAIC0yODIs
MjggKzI4MiwyOCBAQCBGbG9hdFBvaW50IElubGluZUJveDo6bG9jYXRpb25JbmNsdWRpbmdGbGlw
cGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHsgYmxvY2sud2lkdGgoKSAtIHdpZHRoKCkgLSB4KCks
IHkoKSB9OwogfQogCi12b2lkIElubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lQm94OjpmbGlwRm9yV3JpdGluZ01vZGUo
RmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKS5zdHlsZSgpLmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICByb290KCku
YmxvY2tGbG93KCkuZmxpcEZvcldyaXRpbmdNb2RlKHJlY3QpOwogfQogCi1GbG9hdFBvaW50IElu
bGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25z
dAorRmxvYXRQb2ludCBMZWdhY3lJbmxpbmVCb3g6OmZsaXBGb3JXcml0aW5nTW9kZShjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuc3R5bGUoKS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gcG9pbnQ7CiAgICAg
cmV0dXJuIHJvb3QoKS5ibG9ja0Zsb3coKS5mbGlwRm9yV3JpdGluZ01vZGUocG9pbnQpOwogfQog
Ci12b2lkIElubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKExheW91dFJlY3QmIHJlY3QpIGNv
bnN0Cit2b2lkIExlZ2FjeUlubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKExheW91dFJlY3Qm
IHJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJvb3QoKS5ibG9ja0Zsb3co
KS5mbGlwRm9yV3JpdGluZ01vZGUocmVjdCk7CiB9CiAKLUxheW91dFBvaW50IElubGluZUJveDo6
ZmxpcEZvcldyaXRpbmdNb2RlKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKK0xheW91
dFBvaW50IExlZ2FjeUlubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gcG9pbnQ7CkBAIC0zMTQsMTQg
KzMxNCwxNCBAQCBMYXlvdXRQb2ludCBJbmxpbmVCb3g6OmZsaXBGb3JXcml0aW5nTW9kZShjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcp
CiAKLXZvaWQgc2hvd05vZGVUcmVlKGNvbnN0IFdlYkNvcmU6OklubGluZUJveCogaW5saW5lQm94
KQordm9pZCBzaG93Tm9kZVRyZWUoY29uc3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94KiBpbmxp
bmVCb3gpCiB7CiAgICAgaWYgKCFpbmxpbmVCb3gpCiAgICAgICAgIHJldHVybjsKICAgICBpbmxp
bmVCb3gtPnNob3dOb2RlVHJlZUZvclRoaXMoKTsKIH0KIAotdm9pZCBzaG93TGluZVRyZWUoY29u
c3QgV2ViQ29yZTo6SW5saW5lQm94KiBpbmxpbmVCb3gpCit2b2lkIHNob3dMaW5lVHJlZShjb25z
dCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gqIGlubGluZUJveCkKIHsKICAgICBpZiAoIWlubGlu
ZUJveCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJv
eC5oCnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVCb3guaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUlubGluZUJveC5oCmluZGV4IGIzMzNmY2E4ODg2OS4uZmFjMGNiZjg3M2EyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFJvb3RJbmxpbmVCb3g7
CiAKLS8vIElubGluZUJveCByZXByZXNlbnRzIGEgcmVjdGFuZ2xlIHRoYXQgb2NjdXJzIG9uIGEg
bGluZS4gIEl0IGNvcnJlc3BvbmRzIHRvCisvLyBMZWdhY3lJbmxpbmVCb3ggcmVwcmVzZW50cyBh
IHJlY3RhbmdsZSB0aGF0IG9jY3VycyBvbiBhIGxpbmUuIEl0IGNvcnJlc3BvbmRzIHRvCiAvLyBz
b21lIFJlbmRlck9iamVjdCAoaS5lLiwgaXQgcmVwcmVzZW50cyBhIHBvcnRpb24gb2YgdGhhdCBS
ZW5kZXJPYmplY3QpLgotY2xhc3MgSW5saW5lQm94IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKElubGluZUJveCk7CitjbGFzcyBMZWdhY3lJbmxpbmVCb3ggeworICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoTGVnYWN5SW5saW5lQm94KTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Jbmxp
bmVCb3goKTsKKyAgICB2aXJ0dWFsIH5MZWdhY3lJbmxpbmVCb3goKTsKIAogICAgIHZvaWQgYXNz
ZXJ0Tm90RGVsZXRlZCgpIGNvbnN0OwogCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNob3dOb2RlVHJlZUZvclRoaXMoKSBjb25zdDsKICAgICB2b2lkIHNob3dMaW5lVHJlZUZv
clRoaXMoKSBjb25zdDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgb3V0
cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IElubGluZUJveCogbWFy
a2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBvdXRwdXRMaW5lVHJlZUFuZE1hcmsoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTGVnYWN5SW5s
aW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIG91dHB1dExpbmVCb3goV1RGOjpUZXh0U3RyZWFtJiwgYm9vbCBtYXJrLCBp
bnQgZGVwdGgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgY29uc3QgY2hhciog
Ym94TmFtZSgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMTUsMTQgKzExNSwxNCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIElubGluZUJveCogbmV4dE9uTGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dE9uTGluZTsgfQotICAgIElubGluZUJveCogcHJldmlv
dXNPbkxpbmUoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzT25MaW5lOyB9Ci0gICAgdm9pZCBz
ZXROZXh0T25MaW5lKElubGluZUJveCogbmV4dCkKKyAgICBMZWdhY3lJbmxpbmVCb3gqIG5leHRP
bkxpbmUoKSBjb25zdCB7IHJldHVybiBtX25leHRPbkxpbmU7IH0KKyAgICBMZWdhY3lJbmxpbmVC
b3gqIHByZXZpb3VzT25MaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c09uTGluZTsgfQor
ICAgIHZvaWQgc2V0TmV4dE9uTGluZShMZWdhY3lJbmxpbmVCb3gqIG5leHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9wYXJlbnQgfHwgIW5leHQpOwogICAgICAgICBtX25leHRPbkxpbmUgPSBu
ZXh0OwogICAgIH0KLSAgICB2b2lkIHNldFByZXZpb3VzT25MaW5lKElubGluZUJveCogcHJldmlv
dXMpCisgICAgdm9pZCBzZXRQcmV2aW91c09uTGluZShMZWdhY3lJbmxpbmVCb3gqIHByZXZpb3Vz
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcGFyZW50IHx8ICFwcmV2aW91cyk7CiAgICAgICAg
IG1fcHJldmlvdXNPbkxpbmUgPSBwcmV2aW91czsKQEAgLTEzMiw4ICsxMzIsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IAotICAgIElubGluZUJveCogbmV4dExlYWZPbkxpbmUoKSBjb25zdDsKLSAgICBJbmxpbmVCb3gq
IHByZXZpb3VzTGVhZk9uTGluZSgpIGNvbnN0OworICAgIExlZ2FjeUlubGluZUJveCogbmV4dExl
YWZPbkxpbmUoKSBjb25zdDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIHByZXZpb3VzTGVhZk9uTGlu
ZSgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IEhpZGUgdGhpcyBvbmNlIGFsbCBjYWxsZXJzIGFy
ZSB1c2luZyB0aWdodGVyIHR5cGVzLgogICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiAqbV9yZW5kZXJlcjsgfQpAQCAtMjg1LDggKzI4NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEZvcmNlTGVmdEV4cGFuc2lvbigpIHsgbV9iaXRmaWVsZHMuc2V0Rm9yY2VMZWZ0
RXhwYW5zaW9uKHRydWUpOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5saW5lQm94KiBtX25leHRPbkxp
bmUgeyBudWxscHRyIH07IC8vIFRoZSBuZXh0IGVsZW1lbnQgb24gdGhlIHNhbWUgbGluZSBhcyB1
cy4KLSAgICBJbmxpbmVCb3gqIG1fcHJldmlvdXNPbkxpbmUgeyBudWxscHRyIH07IC8vIFRoZSBw
cmV2aW91cyBlbGVtZW50IG9uIHRoZSBzYW1lIGxpbmUgYXMgdXMuCisgICAgTGVnYWN5SW5saW5l
Qm94KiBtX25leHRPbkxpbmUgeyBudWxscHRyIH07IC8vIFRoZSBuZXh0IGVsZW1lbnQgb24gdGhl
IHNhbWUgbGluZSBhcyB1cy4KKyAgICBMZWdhY3lJbmxpbmVCb3gqIG1fcHJldmlvdXNPbkxpbmUg
eyBudWxscHRyIH07IC8vIFRoZSBwcmV2aW91cyBlbGVtZW50IG9uIHRoZSBzYW1lIGxpbmUgYXMg
dXMuCiAKICAgICBJbmxpbmVGbG93Qm94KiBtX3BhcmVudCB7IG51bGxwdHIgfTsgLy8gVGhlIGJv
eCB0aGF0IGNvbnRhaW5zIHVzLgogCkBAIC0zNzYsMTIgKzM3NiwxMiBAQCBwcml2YXRlOgogICAg
IElubGluZUJveEJpdGZpZWxkcyBtX2JpdGZpZWxkczsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IElubGluZUJveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQorICAgIGV4cGxpY2l0IExlZ2Fj
eUlubGluZUJveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogICAgICAgICA6IG1fcmVuZGVyZXIo
bWFrZVdlYWtQdHIocmVuZGVyZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBJbmxpbmVCb3goUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgRmxvYXRQb2ludCB0b3BMZWZ0LCBmbG9hdCBsb2dpY2FsV2lk
dGgsIGJvb2wgZmlyc3RMaW5lLCBib29sIGNvbnN0cnVjdGVkLCBib29sIGRpcnR5LCBib29sIGV4
dHJhY3RlZCwgYm9vbCBpc0hvcml6b250YWwsIElubGluZUJveCogbmV4dCwgSW5saW5lQm94KiBw
cmV2aW91cywgSW5saW5lRmxvd0JveCogcGFyZW50KQorICAgIExlZ2FjeUlubGluZUJveChSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBGbG9hdFBvaW50IHRvcExlZnQsIGZsb2F0IGxvZ2ljYWxXaWR0
aCwgYm9vbCBmaXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQsIGJvb2wgZGlydHksIGJvb2wgZXh0
cmFjdGVkLCBib29sIGlzSG9yaXpvbnRhbCwgTGVnYWN5SW5saW5lQm94KiBuZXh0LCBMZWdhY3lJ
bmxpbmVCb3gqIHByZXZpb3VzLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQpCiAgICAgICAgIDogbV9u
ZXh0T25MaW5lKG5leHQpCiAgICAgICAgICwgbV9wcmV2aW91c09uTGluZShwcmV2aW91cykKICAg
ICAgICAgLCBtX3BhcmVudChwYXJlbnQpCkBAIC00MjMsMTEgKzQyMywxMSBAQCBwcm90ZWN0ZWQ6
CiAKICNpZiBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRAogCi1pbmxp
bmUgSW5saW5lQm94Ojp+SW5saW5lQm94KCkKK2lubGluZSBMZWdhY3lJbmxpbmVCb3g6On5MZWdh
Y3lJbmxpbmVCb3goKQogewogfQogCi1pbmxpbmUgdm9pZCBJbmxpbmVCb3g6OmFzc2VydE5vdERl
bGV0ZWQoKSBjb25zdAoraW5saW5lIHZvaWQgTGVnYWN5SW5saW5lQm94Ojphc3NlcnROb3REZWxl
dGVkKCkgY29uc3QKIHsKIH0KIApAQCAtNDM3LDExICs0MzcsMTEgQEAgaW5saW5lIHZvaWQgSW5s
aW5lQm94Ojphc3NlcnROb3REZWxldGVkKCkgY29uc3QKIAogI2RlZmluZSBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0lOTElORV9CT1goVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OklubGluZUJveCYgYm94KSB7IHJldHVy
biBib3gucHJlZGljYXRlOyB9IFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6TGVnYWN5SW5saW5lQm94JiBib3gpIHsgcmV0dXJuIGJveC5wcmVkaWNhdGU7IH0gXAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQog
Ly8gT3V0c2lkZSB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgZm9yIGVhc2Ugb2YgaW52b2NhdGlvbiBm
cm9tIHRoZSBkZWJ1Z2dlci4KLXZvaWQgc2hvd05vZGVUcmVlKGNvbnN0IFdlYkNvcmU6OklubGlu
ZUJveCopOwotdm9pZCBzaG93TGluZVRyZWUoY29uc3QgV2ViQ29yZTo6SW5saW5lQm94Kik7Cit2
b2lkIHNob3dOb2RlVHJlZShjb25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gqKTsKK3ZvaWQg
c2hvd0xpbmVUcmVlKGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCopOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKaW5kZXggNDVm
NjNhZmQ5MWVlLi5jNWNmNmY4NGIxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBSb290SW5saW5lQm94KiBM
ZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKICAgICByZXR1
cm4gcm9vdEJveDsKIH0KIAotSW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVJbmxp
bmVCb3hGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIGlzT25seVJ1bikK
K0xlZ2FjeUlubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y3JlYXRlSW5saW5lQm94Rm9yUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBpc09ubHlSdW4pCiB7CiAgICAgaWYg
KHJlbmRlcmVyID09ICZtX2Zsb3cpCiAgICAgICAgIHJldHVybiBjcmVhdGVBbmRBcHBlbmRSb290
SW5saW5lQm94KCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIGJvb2wgcGFyZW50SXNDb25z
dHJ1Y3RlZE9ySGF2ZU5leHQoSW5saW5lRmxvd0JveCogcGFyZW50Qm94KQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotSW5saW5lRmxvd0JveCogTGVnYWN5TGluZUxheW91dDo6Y3JlYXRlTGluZUJv
eGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIElubGluZUJv
eCogY2hpbGRCb3gpCitJbmxpbmVGbG93Qm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5l
Qm94ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgTGVnYWN5
SW5saW5lQm94KiBjaGlsZEJveCkKIHsKICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhbiB1bmNvbnN0
cnVjdGVkIGxpbmUgYm94IGZvciB0aGlzIG9iamVjdCB0aGF0IGlzIGFsc28KICAgICAvLyB0aGUg
bGFzdCBpdGVtIG9uIHRoZSBsaW5lLgpAQCAtMjMyLDcgKzIzMiw3IEBAIElubGluZUZsb3dCb3gq
IExlZ2FjeUxpbmVMYXlvdXQ6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwgY29u
c3QgTGluZUluCiAgICAgICAgIGlmIChhbGxvd2VkVG9Db25zdHJ1Y3ROZXdCb3ggJiYgIWNhblVz
ZUV4aXN0aW5nUGFyZW50Qm94KSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBu
ZXcgYm94IGZvciB0aGlzIHJlbmRlciBvYmplY3QuIE9uY2UKICAgICAgICAgICAgIC8vIG1hZGUs
IHdlIG5lZWQgdG8gcGxhY2UgaXQgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaW5lLgotICAg
ICAgICAgICAgSW5saW5lQm94KiBuZXdCb3ggPSBjcmVhdGVJbmxpbmVCb3hGb3JSZW5kZXJlcihv
YmopOworICAgICAgICAgICAgTGVnYWN5SW5saW5lQm94KiBuZXdCb3ggPSBjcmVhdGVJbmxpbmVC
b3hGb3JSZW5kZXJlcihvYmopOwogICAgICAgICAgICAgcGFyZW50Qm94ID0gZG93bmNhc3Q8SW5s
aW5lRmxvd0JveD4obmV3Qm94KTsKICAgICAgICAgICAgIHBhcmVudEJveC0+c2V0SXNGaXJzdExp
bmUobGluZUluZm8uaXNGaXJzdExpbmUoKSk7CiAgICAgICAgICAgICBwYXJlbnRCb3gtPnNldElz
SG9yaXpvbnRhbChtX2Zsb3cuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CkBAIC0zMDYsNyAr
MzA2LDcgQEAgUm9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y29uc3RydWN0TGluZShC
aWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGMKICAgICAgICAgaWYgKGxpbmVJbmZvLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIElubGluZUJveCogYm94
ID0gY3JlYXRlSW5saW5lQm94Rm9yUmVuZGVyZXIoJnItPnJlbmRlcmVyKCksIGlzT25seVJ1bik7
CisgICAgICAgIExlZ2FjeUlubGluZUJveCogYm94ID0gY3JlYXRlSW5saW5lQm94Rm9yUmVuZGVy
ZXIoJnItPnJlbmRlcmVyKCksIGlzT25seVJ1bik7CiAgICAgICAgIHItPnNldEJveChib3gpOwog
CiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcGFyZW50IGJveCB5ZXQsIG9yIGlmIHRoZSBydW4g
aXMgbm90IHNpbXBseSBhIHNpYmxpbmcsCkBAIC04MDksNyArODA5LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGx5RXhwYW5zaW9uQmVoYXZpb3IoSW5saW5lVGV4dEJveCYgdGV4dEJveCwgRXhw
YW5zaW9uQmVoYXYKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlubGluZUFuY2VzdG9ySGFzU3Rh
cnRCb3JkZXJQYWRkaW5nT3JNYXJnaW4oY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9jaywgY29u
c3QgSW5saW5lQm94JiBib3gpCitzdGF0aWMgYm9vbCBpbmxpbmVBbmNlc3Rvckhhc1N0YXJ0Qm9y
ZGVyUGFkZGluZ09yTWFyZ2luKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGNvbnN0IExl
Z2FjeUlubGluZUJveCYgYm94KQogewogICAgIGJvb2wgaXNMVFIgPSBibG9jay5zdHlsZSgpLmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSBib3gu
cGFyZW50KCk7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5wYXJlbnQoKSkg
ewpAQCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyBib29sIGlubGluZUFuY2VzdG9ySGFzU3RhcnRC
b3JkZXJQYWRkaW5nT3JNYXJnaW4oY29uc3QgUmVuZGVyQmxvY2tGbG93JiBiCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBpbmxpbmVBbmNlc3Rvckhhc0VuZEJvcmRlclBhZGRp
bmdPck1hcmdpbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBjb25zdCBJbmxpbmVCb3gm
IGJveCkKK3N0YXRpYyBib29sIGlubGluZUFuY2VzdG9ySGFzRW5kQm9yZGVyUGFkZGluZ09yTWFy
Z2luKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGNvbnN0IExlZ2FjeUlubGluZUJveCYg
Ym94KQogewogICAgIGJvb2wgaXNMVFIgPSBibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSBib3gucGFyZW50KCk7IGN1cnJl
bnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5wYXJlbnQoKSkgewpAQCAtODU4LDcgKzg1
OCw3IEBAIEJpZGlSdW4qIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCCiAgICAgYXV0byBjb2xsZWN0U3BhY2luZ0xv
Z2ljYWxXaWR0aHMgPSBbJl0gKCkgewogICAgICAgICBhdXRvIHRvdGFsU3BhY2luZ1dpZHRoID0g
TGF5b3V0VW5pdCB7IH07CiAgICAgICAgIC8vIENvbGxlY3QgdGhlIHNwYWNpbmcgcG9zaXRpb25z
IChtYXJnaW4sIGJvcmRlciBwYWRkaW5nKSBmb3IgdGhlIHRleHRib3hlcyBieSB0cmF2ZXJzaW5n
IHRoZSBpbmxpbmUgdHJlZSBvZiB0aGUgY3VycmVudCBsaW5lLgotICAgICAgICBWZWN0b3I8SW5s
aW5lQm94Kj4gcXVldWU7CisgICAgICAgIFZlY3RvcjxMZWdhY3lJbmxpbmVCb3gqPiBxdWV1ZTsK
ICAgICAgICAgcXVldWUuYXBwZW5kKGxpbmVCb3gpOwogICAgICAgICAvLyAxLiBWaXNpdCBlYWNo
IGlubGluZSBib3ggaW4gYSBwcmVvcmRlciBmYXNoaW9uCiAgICAgICAgIC8vIDIuIEFjY3VtdWxh
dGUgdGhlIHNwYWNpbmcgd2hlbiB3ZSBmaW5kIGFuIElubGluZUZsb3dCb3ggKGlubGluZSBjb250
YWluZXIgZS5nLiBzcGFuKQpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5
b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRzKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGJv
b2wgaGEKICAgICAgICAgLy8gSWYgdGhlIGxhc3QgbGluZSBiZWZvcmUgdGhlIHN0YXJ0IGxpbmUg
ZW5kcyB3aXRoIGEgbGluZSBicmVhayB0aGF0IGNsZWFyIGZsb2F0cywKICAgICAgICAgLy8gYWRq
dXN0IHRoZSBoZWlnaHQgYWNjb3JkaW5nbHkuCiAgICAgICAgIC8vIEEgbGluZSBicmVhayBjYW4g
YmUgZWl0aGVyIHRoZSBmaXJzdCBvciB0aGUgbGFzdCBvYmplY3Qgb24gYSBsaW5lLCBkZXBlbmRp
bmcgb24gaXRzIGRpcmVjdGlvbi4KLSAgICAgICAgaWYgKElubGluZUJveCogbGFzdExlYWZEZXNj
ZW5kYW50ID0gbGFzdFJvb3RCb3goKS0+bGFzdExlYWZEZXNjZW5kYW50KCkpIHsKKyAgICAgICAg
aWYgKExlZ2FjeUlubGluZUJveCogbGFzdExlYWZEZXNjZW5kYW50ID0gbGFzdFJvb3RCb3goKS0+
bGFzdExlYWZEZXNjZW5kYW50KCkpIHsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbGFzdE9i
amVjdCA9ICZsYXN0TGVhZkRlc2NlbmRhbnQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAo
IWxhc3RPYmplY3QtPmlzQlIoKSkKICAgICAgICAgICAgICAgICBsYXN0T2JqZWN0ID0gJmxhc3RS
b290Qm94KCktPmZpcnN0TGVhZkRlc2NlbmRhbnQoKS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5oCmluZGV4IGM0MzY1ZWE2NGQwZS4uYTYy
MmI4OWMxYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0
LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQmlkaUNvbnRleHQ7CiBjbGFzcyBGbG9hdGluZ09i
amVjdDsKIGNsYXNzIEZsb2F0V2l0aFJlY3Q7CiBjbGFzcyBGcmFtZVZpZXdMYXlvdXRDb250ZXh0
OwotY2xhc3MgSW5saW5lQm94OworY2xhc3MgTGVnYWN5SW5saW5lQm94OwogY2xhc3MgSW5saW5l
SXRlcmF0b3I7CiBjbGFzcyBMaW5lSW5mbzsKIGNsYXNzIExpbmVMYXlvdXRTdGF0ZTsKQEAgLTc5
LDggKzc5LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElu
bGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgpOwogICAgIFJvb3RJbmxpbmVCb3gqIGNyZWF0
ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKTsKLSAgICBJbmxpbmVCb3gqIGNyZWF0ZUlubGluZUJv
eEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCosIGJvb2wgaXNPbmx5UnVuID0gZmFsc2UpOwotICAg
IElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5l
SW5mbyYsIElubGluZUJveCopOworICAgIExlZ2FjeUlubGluZUJveCogY3JlYXRlSW5saW5lQm94
Rm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiwgYm9vbCBpc09ubHlSdW4gPSBmYWxzZSk7CisgICAg
SW5saW5lRmxvd0JveCogY3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCosIGNvbnN0IExpbmVJ
bmZvJiwgTGVnYWN5SW5saW5lQm94Kik7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ25tZW50
Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdDsKICAgICB2b2lkIHNldE1hcmdp
bnNGb3JSdWJ5UnVuKEJpZGlSdW4qLCBSZW5kZXJSdWJ5UnVuJiwgUmVuZGVyT2JqZWN0KiBwcmV2
aW91c09iamVjdCwgY29uc3QgTGluZUluZm8mKTsKICAgICB2b2lkIHVwZGF0ZVJ1YnlGb3JKdXN0
aWZpZWRUZXh0KFJlbmRlclJ1YnlSdW4mLCBCaWRpUnVuJiwgY29uc3QgVmVjdG9yPHVuc2lnbmVk
LCAxNj4mIGV4cGFuc2lvbk9wcG9ydHVuaXRpZXMsIHVuc2lnbmVkJiBleHBhbnNpb25PcHBvcnR1
bml0eUNvdW50LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCwgc2l6ZV90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IGZlNzVhNmI0Mjk2OC4uNzBmZjFjODAxZmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzgxNiw3ICszODE2LDcg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om91dHB1dEZsb2F0aW5nT2JqZWN0cyhXVEY6OlRleHRT
dHJlYW0mIHN0cmVhbSwgaW50IGRlcHRoKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6Om91dHB1dExpbmVUcmVlQW5kTWFyayhXVEY6OlRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
SW5saW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgUmVuZGVyQmxvY2tG
bG93OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsoV1RGOjpUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExlZ2FjeUlubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0CiB7CiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKGF1dG8qIG1vZGVybkxpbmVM
YXlvdXQgPSB0aGlzLT5tb2Rlcm5MaW5lTGF5b3V0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBhN2YwMWMyM2FlZGMuLmI4ZTdmZDVmOTYyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzY5LDcg
KzM2OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKICAgICB2b2lk
IG91dHB1dEZsb2F0aW5nT2JqZWN0cyhXVEY6OlRleHRTdHJlYW0mLCBpbnQgZGVwdGgpIGNvbnN0
OwotICAgIHZvaWQgb3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZvaWQgb3V0cHV0
TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExlZ2FjeUlubGluZUJveCog
bWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OwogI2VuZGlmCiAKICAgICAvLyBSZXR1cm5zIHRo
ZSBsb2dpY2FsT2Zmc2V0IGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZS4gSWYgdGhlIG9mZnNl
dCBwYXNzZWQgaW4gaXMgYWxyZWFkeSBhdCB0aGUgdG9wIG9mIHRoZSBjdXJyZW50IHBhZ2UsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCmluZGV4IDk5ZTkxYmI4MWUwNC4uNzlkZDAzNWJlZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcApAQCAtMTA2OCw3ICsxMDY4LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wKIAog
ICAgICAgICAvLyBHZXQgZWxsaXBzaXMgd2lkdGgsIGFuZCBpZiB0aGUgbGFzdCBjaGlsZCBpcyBh
biBhbmNob3IsIGl0IHdpbGwgZ28gYWZ0ZXIgdGhlIGVsbGlwc2lzLCBzbyBhZGQgaW4gYSBzcGFj
ZSBhbmQgdGhlIGFuY2hvciB3aWR0aCB0b28KICAgICAgICAgTGF5b3V0VW5pdCB0b3RhbFdpZHRo
OwotICAgICAgICBJbmxpbmVCb3gqIGFuY2hvckJveCA9IGxhc3RMaW5lLT5sYXN0Q2hpbGQoKTsK
KyAgICAgICAgTGVnYWN5SW5saW5lQm94KiBhbmNob3JCb3ggPSBsYXN0TGluZS0+bGFzdENoaWxk
KCk7CiAgICAgICAgIGF1dG8mIGxhc3RWaXNpYmxlUmVuZGVyZXIgPSBsYXN0VmlzaWJsZUxpbmUt
PmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKGFuY2hvckJveCAmJiBhbmNo
b3JCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKS5pc0xpbmsoKSAmJiAmbGFzdFZpc2libGVSZW5kZXJl
ciAhPSAmYW5jaG9yQm94LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgdG90YWxXaWR0aCA9IGFu
Y2hvckJveC0+bG9naWNhbFdpZHRoKCkgKyBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4oZWxs
aXBzaXNBbmRTcGFjZSwgMiwgc3R5bGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAppbmRleCA2NWZkNzc4ODc3YWIuLjBhZjBlNTZmNzI3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCBM
YXlvdXRVbml0IFJlbmRlcklubGluZTo6b2Zmc2V0TGVmdCgpIGNvbnN0CiAgICAgICAgIGxpbmVM
YXlvdXQtPmZsb3coKS5lbnN1cmVMaW5lQm94ZXMoKTsKICNlbmRpZgogICAgIExheW91dFBvaW50
IHRvcExlZnQ7Ci0gICAgaWYgKElubGluZUJveCogZmlyc3RCb3ggPSBmaXJzdExpbmVCb3hJbmNs
dWRpbmdDdWxsaW5nKCkpCisgICAgaWYgKExlZ2FjeUlubGluZUJveCogZmlyc3RCb3ggPSBmaXJz
dExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkpCiAgICAgICAgIHRvcExlZnQgPSBmbG9vcmVkTGF5
b3V0UG9pbnQoZmlyc3RCb3gtPnRvcExlZnQoKSk7CiAgICAgcmV0dXJuIGFkanVzdGVkUG9zaXRp
b25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KHRvcExlZnQpLngoKTsKIH0KQEAgLTQ2MSw3ICs0NjEs
NyBAQCBMYXlvdXRVbml0IFJlbmRlcklubGluZTo6b2Zmc2V0VG9wKCkgY29uc3QKICAgICAgICAg
bGluZUxheW91dC0+ZmxvdygpLmVuc3VyZUxpbmVCb3hlcygpOwogI2VuZGlmCiAgICAgTGF5b3V0
UG9pbnQgdG9wTGVmdDsKLSAgICBpZiAoSW5saW5lQm94KiBmaXJzdEJveCA9IGZpcnN0TGluZUJv
eEluY2x1ZGluZ0N1bGxpbmcoKSkKKyAgICBpZiAoTGVnYWN5SW5saW5lQm94KiBmaXJzdEJveCA9
IGZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSkKICAgICAgICAgdG9wTGVmdCA9IGZsb29y
ZWRMYXlvdXRQb2ludChmaXJzdEJveC0+dG9wTGVmdCgpKTsKICAgICByZXR1cm4gYWRqdXN0ZWRQ
b3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQodG9wTGVmdCkueSgpOwogfQpAQCAtNjcyLDcg
KzY3Miw3IEBAIEludFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbmxpbmVCb3gqIFJlbmRlcklubGluZTo6Y3VsbGVk
SW5saW5lRmlyc3RMaW5lQm94KCkgY29uc3QKK0xlZ2FjeUlubGluZUJveCogUmVuZGVySW5saW5l
OjpjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdAogewogICAgIGZvciAoYXV0byYgY3Vy
cmVudCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oKnRoaXMpKSB7CiAgICAgICAgIGlm
IChjdXJyZW50LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTY5MCw3ICs2
OTAsNyBAQCBJbmxpbmVCb3gqIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lRmlyc3RMaW5lQm94
KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyQlIuaW5saW5lQm94V3JhcHBl
cigpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlcklubGluZT4oY3VycmVudCkpIHsKICAg
ICAgICAgICAgIGF1dG8mIHJlbmRlcklubGluZSA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oY3Vy
cmVudCk7Ci0gICAgICAgICAgICBpZiAoSW5saW5lQm94KiByZXN1bHQgPSByZW5kZXJJbmxpbmUu
Zmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpKQorICAgICAgICAgICAgaWYgKExlZ2FjeUlu
bGluZUJveCogcmVzdWx0ID0gcmVuZGVySW5saW5lLmZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxp
bmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9IGVsc2UgaWYg
KGlzPFJlbmRlclRleHQ+KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBhdXRvJiByZW5kZXJUZXh0
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY3VycmVudCk7CkBAIC03MDEsNyArNzAxLDcgQEAgSW5s
aW5lQm94KiBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUZpcnN0TGluZUJveCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUlubGluZUJveCogUmVuZGVySW5saW5lOjpjdWxsZWRJ
bmxpbmVMYXN0TGluZUJveCgpIGNvbnN0CitMZWdhY3lJbmxpbmVCb3gqIFJlbmRlcklubGluZTo6
Y3VsbGVkSW5saW5lTGFzdExpbmVCb3goKSBjb25zdAogewogICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjdXJyZW50ID0gbGFzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wcmV2
aW91c1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoY3VycmVudC0+aXNGbG9hdGluZ09yT3V0T2ZG
bG93UG9zaXRpb25lZCgpKQpAQCAtNzE5LDcgKzcxOSw3IEBAIElubGluZUJveCogUmVuZGVySW5s
aW5lOjpjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlbmRlckJSLmlubGluZUJveFdyYXBwZXIoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxS
ZW5kZXJJbmxpbmU+KCpjdXJyZW50KSkgewogICAgICAgICAgICAgUmVuZGVySW5saW5lJiByZW5k
ZXJJbmxpbmUgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjdXJyZW50KTsKLSAgICAgICAgICAg
IGlmIChJbmxpbmVCb3gqIHJlc3VsdCA9IHJlbmRlcklubGluZS5sYXN0TGluZUJveEluY2x1ZGlu
Z0N1bGxpbmcoKSkKKyAgICAgICAgICAgIGlmIChMZWdhY3lJbmxpbmVCb3gqIHJlc3VsdCA9IHJl
bmRlcklubGluZS5sYXN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KCpjdXJy
ZW50KSkgewogICAgICAgICAgICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJl
bmRlclRleHQ+KCpjdXJyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aAppbmRleCAyNTJlMTk4ODgxOWIuLmJjMDNlZDZiMzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBJbmxp
bmVGbG93Qm94KiBmaXJzdExpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlcy5maXJz
dExpbmVCb3goKTsgfQogICAgIElubGluZUZsb3dCb3gqIGxhc3RMaW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9saW5lQm94ZXMubGFzdExpbmVCb3goKTsgfQotICAgIElubGluZUJveCogZmlyc3RM
aW5lQm94SW5jbHVkaW5nQ3VsbGluZygpIGNvbnN0IHsgcmV0dXJuIGFsd2F5c0NyZWF0ZUxpbmVC
b3hlcygpID8gZmlyc3RMaW5lQm94KCkgOiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKTsgfQot
ICAgIElubGluZUJveCogbGFzdExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkgY29uc3QgeyByZXR1
cm4gYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkgPyBsYXN0TGluZUJveCgpIDogY3VsbGVkSW5saW5l
TGFzdExpbmVCb3goKTsgfQorICAgIExlZ2FjeUlubGluZUJveCogZmlyc3RMaW5lQm94SW5jbHVk
aW5nQ3VsbGluZygpIGNvbnN0IHsgcmV0dXJuIGFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpID8gZmly
c3RMaW5lQm94KCkgOiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKTsgfQorICAgIExlZ2FjeUlu
bGluZUJveCogbGFzdExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkgY29uc3QgeyByZXR1cm4gYWx3
YXlzQ3JlYXRlTGluZUJveGVzKCkgPyBsYXN0TGluZUJveCgpIDogY3VsbGVkSW5saW5lTGFzdExp
bmVCb3goKTsgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGFic29sdXRl
UXVhZHNGb3JTZWxlY3Rpb24oVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTEwNSw4ICsxMDUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBjdWxsZWRJ
bmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3Q7Ci0gICAgSW5saW5lQm94KiBj
dWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdDsKLSAgICBJbmxpbmVCb3gqIGN1bGxlZElu
bGluZUxhc3RMaW5lQm94KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBjdWxsZWRJbmxp
bmVGaXJzdExpbmVCb3goKSBjb25zdDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIGN1bGxlZElubGlu
ZUxhc3RMaW5lQm94KCkgY29uc3Q7CiAKICAgICB2b2lkIGFic29sdXRlUXVhZHNJZ25vcmluZ0Nv
bnRpbnVhdGlvbihjb25zdCBGbG9hdFJlY3QmLCBWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggYWIxNzk1MzdiZjI4Li4zZGMzZmY0MjY5NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcApAQCAt
MzExLDcgKzMxMSw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hh
bmdlZENoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0JiBjb250YWluCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlbmRlcklubGluZSogaW5saW5lQ29udGFpbmVyID0gaXM8UmVuZGVySW5saW5lPihj
b250YWluZXIpID8gJmRvd25jYXN0PFJlbmRlcklubGluZT4oY29udGFpbmVyKSA6IG51bGxwdHI7
Ci0gICAgSW5saW5lQm94KiBmaXJzdEJveCA9IGlubGluZUNvbnRhaW5lciA/IGlubGluZUNvbnRh
aW5lci0+Zmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpIDogZmlyc3RMaW5lQm94KCk7Cisg
ICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdEJveCA9IGlubGluZUNvbnRhaW5lciA/IGlubGluZUNv
bnRhaW5lci0+Zmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpIDogZmlyc3RMaW5lQm94KCk7
CiAKICAgICAvLyBJZiB3ZSBoYXZlIG5vIGZpcnN0IGxpbmUgYm94LCB0aGVuIGp1c3QgYmFpbCBl
YXJseS4KICAgICBpZiAoIWZpcnN0Qm94KSB7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBSZW5k
ZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxP
YmplY3QmIGNvbnRhaW4KICAgICAgICAgICAgIGlmIChJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94ID0g
ZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmN1cnJlbnQpLmxhc3RUZXh0Qm94KCkpCiAgICAgICAgICAg
ICAgICAgYm94ID0gJnRleHRCb3gtPnJvb3QoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5k
ZXJJbmxpbmU+KCpjdXJyZW50KSkgewotICAgICAgICAgICAgSW5saW5lQm94KiBsYXN0U2libGlu
Z0JveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmN1cnJlbnQpLmxhc3RMaW5lQm94SW5jbHVk
aW5nQ3VsbGluZygpOworICAgICAgICAgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0U2libGluZ0Jv
eCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmN1cnJlbnQpLmxhc3RMaW5lQm94SW5jbHVkaW5n
Q3VsbGluZygpOwogICAgICAgICAgICAgaWYgKGxhc3RTaWJsaW5nQm94KQogICAgICAgICAgICAg
ICAgIGJveCA9ICZsYXN0U2libGluZ0JveC0+cm9vdCgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMzc0MTdmZGY0N2I5
Li4yNDFkMmFlYzI1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKQEAgLTExMjMsNyArMTEyMyw3IEBAIGJvb2wgUmVuZGVyTGlzdE1hcmtlcjo6
aXNJbWFnZSgpIGNvbnN0CiAKIExheW91dFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6bG9jYWxTZWxl
Y3Rpb25SZWN0KCkKIHsKLSAgICBJbmxpbmVCb3gqIGJveCA9IGlubGluZUJveFdyYXBwZXIoKTsK
KyAgICBMZWdhY3lJbmxpbmVCb3gqIGJveCA9IGlubGluZUJveFdyYXBwZXIoKTsKICAgICBpZiAo
IWJveCkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoKSwgc2l6ZSgpKTsK
ICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5y
b290KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggYWMyMjdi
NzM4MDU3Li5mMjBmNzU5NWQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgRG9jdW1lbnRUaW1lbGluZTsKIGNsYXNzIEhp
dFRlc3RMb2NhdGlvbjsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3Vs
dDsKLWNsYXNzIElubGluZUJveDsKK2NsYXNzIExlZ2FjeUlubGluZUJveDsKIGNsYXNzIFBhdGg7
CiBjbGFzcyBQb3NpdGlvbjsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGY1Yjg5ZTAwZWU1NC4uZmJk
ODZkNjg1MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKCkK
IAogYm9vbCBSb290SW5saW5lQm94Ojppc0h5cGhlbmF0ZWQoKSBjb25zdAogewotICAgIGZvciAo
SW5saW5lQm94KiBib3ggPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7IGJveDsgYm94ID0gYm94LT5u
ZXh0TGVhZk9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdExlYWZEZXNjZW5k
YW50KCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChp
czxJbmxpbmVUZXh0Qm94PigqYm94KSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqYm94KS5o
YXNIeXBoZW4oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEyNyw3ICsx
MjcsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6OmxpbmVDYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJv
b2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgbGluZQogICAgIHJldHVybiBJbmxpbmVGbG93Qm94
OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGx0ciwgYmxvY2tFZGdlLCBlbGxpcHNpc1dpZHRoKTsK
IH0KIAotZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpcyhjb25zdCBBdG9tU3RyaW5n
JiBlbGxpcHNpc1N0ciwgIGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9j
a1JpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgSW5saW5lQm94KiBtYXJrdXBCb3gpCitm
bG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlw
c2lzU3RyLCAgYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRF
ZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBMZWdhY3lJbmxpbmVCb3gqIG1hcmt1cEJveCkKIHsK
ICAgICBpZiAoIWdFbGxpcHNpc0JveE1hcCkKICAgICAgICAgZ0VsbGlwc2lzQm94TWFwID0gbmV3
IEVsbGlwc2lzQm94TWFwKCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBSb290SW5saW5lQm94
OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpCiAgICAgICAgIGVsbGlwc2lzQm94
KCktPmFkanVzdFBvc2l0aW9uKGR4LCBkeSk7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6Y2hp
bGRSZW1vdmVkKElubGluZUJveCogYm94KQordm9pZCBSb290SW5saW5lQm94OjpjaGlsZFJlbW92
ZWQoTGVnYWN5SW5saW5lQm94KiBib3gpCiB7CiAgICAgaWYgKCZib3gtPnJlbmRlcmVyKCkgPT0g
bV9saW5lQnJlYWtPYmopCiAgICAgICAgIHNldExpbmVCcmVha0luZm8obnVsbHB0ciwgMCwgQmlk
aVN0YXR1cygpKTsKQEAgLTQzOCw4ICs0MzgsOCBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94Ojps
aW5lU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQog
CiAgICAgR2FwUmVjdHMgcmVzdWx0OwogCi0gICAgSW5saW5lQm94KiBmaXJzdEJveCA9IGZpcnN0
U2VsZWN0ZWRCb3goKTsKLSAgICBJbmxpbmVCb3gqIGxhc3RCb3ggPSBsYXN0U2VsZWN0ZWRCb3go
KTsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIGZpcnN0Qm94ID0gZmlyc3RTZWxlY3RlZEJveCgpOwor
ICAgIExlZ2FjeUlubGluZUJveCogbGFzdEJveCA9IGxhc3RTZWxlY3RlZEJveCgpOwogICAgIGlm
IChsZWZ0R2FwKSB7CiAgICAgICAgIHJlc3VsdC51bml0ZUxlZnQoYmxvY2tGbG93KCkubG9naWNh
bExlZnRTZWxlY3Rpb25HYXAocm9vdEJsb2NrLCByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBv
ZmZzZXRGcm9tUm9vdEJsb2NrLCAmZmlyc3RCb3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLCBMYXlv
dXRVbml0KGZpcnN0Qm94LT5sb2dpY2FsTGVmdCgpKSwKICAgICAgICAgICAgIHNlbFRvcCwgc2Vs
SGVpZ2h0LCBjYWNoZSwgcGFpbnRJbmZvKSk7CkBAIC00NjAsNyArNDYwLDcgQEAgR2FwUmVjdHMg
Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBMYXlvdXRQb2kKICAgICAgICAgLy8gTm93IGZpbGwgaW4gYW55IGdhcHMgb24gdGhlIGxp
bmUgdGhhdCBvY2N1cnJlZCBiZXR3ZWVuIHR3byBzZWxlY3RlZCBlbGVtZW50cy4KICAgICAgICAg
TGF5b3V0VW5pdCBsYXN0TG9naWNhbExlZnQgeyBmaXJzdEJveC0+bG9naWNhbFJpZ2h0KCkgfTsK
ICAgICAgICAgYm9vbCBpc1ByZXZpb3VzQm94U2VsZWN0ZWQgPSBmaXJzdEJveC0+c2VsZWN0aW9u
U3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lOwotICAgICAgICBm
b3IgKElubGluZUJveCogYm94ID0gZmlyc3RCb3gtPm5leHRMZWFmT25MaW5lKCk7IGJveDsgYm94
ID0gYm94LT5uZXh0TGVhZk9uTGluZSgpKSB7CisgICAgICAgIGZvciAoYXV0byogYm94ID0gZmly
c3RCb3gtPm5leHRMZWFmT25MaW5lKCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgp
KSB7CiAgICAgICAgICAgICBpZiAoYm94LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVj
dDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGxv
Z2ljYWxSZWN0IHsgbGFzdExvZ2ljYWxMZWZ0LCBzZWxUb3AsIExheW91dFVuaXQoYm94LT5sb2dp
Y2FsTGVmdCgpIC0gbGFzdExvZ2ljYWxMZWZ0KSwgc2VsSGVpZ2h0IH07CiAgICAgICAgICAgICAg
ICAgbG9naWNhbFJlY3QubW92ZShyZW5kZXJlcigpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBvZmZzZXRGcm9tUm9vdEJsb2NrIDogTGF5b3V0U2l6ZShvZmZzZXRGcm9tUm9vdEJsb2NrLmhl
aWdodCgpLCBvZmZzZXRGcm9tUm9vdEJsb2NrLndpZHRoKCkpKTsKQEAgLTQ4Niw3ICs0ODYsNyBA
QCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblN0
YXRlKCkKIHsKICAgICAvLyBXYWxrIG92ZXIgYWxsIG9mIHRoZSBzZWxlY3RlZCBib3hlcy4KICAg
ICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpIaWdo
bGlnaHRTdGF0ZTo6Tm9uZTsKLSAgICBmb3IgKElubGluZUJveCogYm94ID0gZmlyc3RMZWFmRGVz
Y2VuZGFudCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExlYWZPbkxpbmUoKSkgeworICAgIGZvciAo
YXV0byogYm94ID0gZmlyc3RMZWFmRGVzY2VuZGFudCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExl
YWZPbkxpbmUoKSkgewogICAgICAgICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIGJveFN0
YXRlID0gYm94LT5zZWxlY3Rpb25TdGF0ZSgpOwogICAgICAgICBpZiAoKGJveFN0YXRlID09IFJl
bmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OlN0YXJ0ICYmIHN0YXRlID09IFJlbmRlck9iamVj
dDo6SGlnaGxpZ2h0U3RhdGU6OkVuZCkKICAgICAgICAgICAgIHx8IChib3hTdGF0ZSA9PSBSZW5k
ZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpFbmQgJiYgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpI
aWdobGlnaHRTdGF0ZTo6U3RhcnQpKQpAQCAtNTA1LDcgKzUwNSw3IEBAIFJlbmRlck9iamVjdDo6
SGlnaGxpZ2h0U3RhdGUgUm9vdElubGluZUJveDo6c2VsZWN0aW9uU3RhdGUoKQogICAgIHJldHVy
biBzdGF0ZTsKIH0KIAotSW5saW5lQm94KiBSb290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94
KCkKK0xlZ2FjeUlubGluZUJveCogUm9vdElubGluZUJveDo6Zmlyc3RTZWxlY3RlZEJveCgpCiB7
CiAgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7IGJveDsgYm94ID0g
Ym94LT5uZXh0TGVhZk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChib3gtPnNlbGVjdGlvblN0YXRl
KCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKQEAgLTUxNCw3ICs1MTQs
NyBAQCBJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6OmZpcnN0U2VsZWN0ZWRCb3goKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1JbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3Rl
ZEJveCgpCitMZWdhY3lJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3RlZEJveCgp
CiB7CiAgICAgZm9yIChhdXRvKiBib3ggPSBsYXN0TGVhZkRlc2NlbmRhbnQoKTsgYm94OyBib3gg
PSBib3gtPnByZXZpb3VzTGVhZk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChib3gtPnNlbGVjdGlv
blN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKQEAgLTc4Miw3
ICs3ODIsNyBAQCBzdGF0aWMgdm9pZCBzZXRBc2NlbnRBbmREZXNjZW50KExheW91dFVuaXQmIGFz
Y2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCwgTGF5b3V0VQogICAgIH0KIH0KIAotdm9pZCBSb290
SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KElubGluZUJveCYgYm94LCBHbHlwaE92
ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIExheW91dFVuaXQmIGFz
Y2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCwKK3ZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5k
RGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVu
aXQmIGRlc2NlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCYgYWZmZWN0c0FzY2VudCwgYm9vbCYgYWZmZWN0c0Rlc2NlbnQpIGNvbnN0CiB7CiAgICAg
Ym9vbCBhc2NlbnREZXNjZW50U2V0ID0gZmFsc2U7CkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBS
b290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KElubGluZUJveCYgYm94LCBHbHlw
aE92ZXJmbG93QW5kRmFsbGIKICAgICB9CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGluZUJveDo6
dmVydGljYWxQb3NpdGlvbkZvckJveChJbmxpbmVCb3gqIGJveCwgVmVydGljYWxQb3NpdGlvbkNh
Y2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpCitMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZl
cnRpY2FsUG9zaXRpb25Gb3JCb3goTGVnYWN5SW5saW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRp
b25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlKQogewogICAgIGlmIChib3gtPnJlbmRlcmVy
KCkuaXNUZXh0T3JMaW5lQnJlYWsoKSkKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoYm94LT5w
YXJlbnQoKS0+bG9naWNhbFRvcCgpKTsKQEAgLTk3MSw3ICs5NzEsNyBAQCBMYXlvdXRVbml0IFJv
b3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5saW5lQm94KiBib3gsIFZlcnRp
Y2FsUG9zaXRpbwogICAgIHJldHVybiB2ZXJ0aWNhbFBvc2l0aW9uOwogfQogCi1ib29sIFJvb3RJ
bmxpbmVCb3g6OmluY2x1ZGVMZWFkaW5nRm9yQm94KElubGluZUJveCYgYm94KSBjb25zdAorYm9v
bCBSb290SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJv
eCkgY29uc3QKIHsKICAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gu
cmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05ODAsNyArOTgwLDcgQEAgYm9vbCBSb290SW5s
aW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChJbmxpbmVCb3gmIGJveCkgY29uc3QKICAgICBy
ZXR1cm4gbGluZUJveENvbnRhaW4uY29udGFpbnMoTGluZUJveENvbnRhaW46OklubGluZSkgfHwg
KCZib3ggPT0gdGhpcyAmJiBsaW5lQm94Q29udGFpbi5jb250YWlucyhMaW5lQm94Q29udGFpbjo6
QmxvY2spKTsKIH0KIAotYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveChJbmxp
bmVCb3gmIGJveCkgY29uc3QKK2Jvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3go
TGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7CiAgICAgaWYgKGJveC5yZW5kZXJlcigpLmlz
UmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94
LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTkxLDcgKzk5
MSw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3goSW5saW5lQm94JiBi
b3gpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5saW5lQm94Q29udGFpbigp
LmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpGb250KTsKIH0KIAotYm9vbCBSb290SW5saW5lQm94
OjppbmNsdWRlR2x5cGhzRm9yQm94KElubGluZUJveCYgYm94KSBjb25zdAorYm9vbCBSb290SW5s
aW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAog
ewogICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigp
LmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6
aW5jbHVkZUdseXBoc0ZvckJveChJbmxpbmVCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gcmVu
ZGVyZXIoKS5zdHlsZSgpLmxpbmVCb3hDb250YWluKCkuY29udGFpbnMoTGluZUJveENvbnRhaW46
OkdseXBocyk7CiB9CiAKLWJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJG
b3JCb3goSW5saW5lQm94JiBib3gpIGNvbnN0Citib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVJ
bml0aWFsTGV0dGVyRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewogICAgIGlm
IChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9y
TGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwMTMsNyArMTAxMyw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUlu
aXRpYWxMZXR0ZXJGb3JCb3goSW5saW5lQm94JiBib3gpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRl
cmVyKCkuc3R5bGUoKS5saW5lQm94Q29udGFpbigpLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJ
bml0aWFsTGV0dGVyKTsKIH0KIAotYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlTWFyZ2luRm9y
Qm94KElubGluZUJveCYgYm94KSBjb25zdAorYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlTWFy
Z2luRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewogICAgIGlmIChib3gucmVu
ZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFr
KCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTEwNDEsNyArMTA0MSw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6b3V0cHV0TGluZUJveChXVEY6
OlRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpCiAgICAgICAgIHN0cmVh
bSA8PCAiICI7CiAgICAgc3RyZWFtIDw8ICJMaW5lOiAodG9wOiAiIDw8IGxpbmVUb3AoKSA8PCAi
IGJvdHRvbTogIiA8PCBsaW5lQm90dG9tKCkgPDwgIikgd2l0aCBsZWFkaW5nICh0b3A6ICIgPDwg
bGluZUJveFRvcCgpIDw8ICIgYm90dG9tOiAiIDw8IGxpbmVCb3hCb3R0b20oKSA8PCAiKSI7CiAg
ICAgc3RyZWFtLm5leHRMaW5lKCk7Ci0gICAgSW5saW5lQm94OjpvdXRwdXRMaW5lQm94KHN0cmVh
bSwgbWFyaywgZGVwdGgpOworICAgIExlZ2FjeUlubGluZUJveDo6b3V0cHV0TGluZUJveChzdHJl
YW0sIG1hcmssIGRlcHRoKTsKIH0KIAogY29uc3QgY2hhciogUm9vdElubGluZUJveDo6Ym94TmFt
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCA5
Y2FkNmFiY2U1NjguLjEwNTVkYzg3ODcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5oCkBAIC05NywxOCArOTcsMTggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxp
bmVCcmVha1BvcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJyZWFrUG9zOyB9CiAgICAgdm9pZCBz
ZXRMaW5lQnJlYWtQb3ModW5zaWduZWQgcCkgeyBtX2xpbmVCcmVha1BvcyA9IHA7IH0KIAotICAg
IHVzaW5nIElubGluZUJveDo6ZW5kc1dpdGhCcmVhazsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNl
dEVuZHNXaXRoQnJlYWs7CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjplbmRzV2l0aEJyZWFr
OworICAgIHVzaW5nIExlZ2FjeUlubGluZUJveDo6c2V0RW5kc1dpdGhCcmVhazsKIAotICAgIHZv
aWQgY2hpbGRSZW1vdmVkKElubGluZUJveCogYm94KTsKKyAgICB2b2lkIGNoaWxkUmVtb3ZlZChM
ZWdhY3lJbmxpbmVCb3gqKTsKIAogICAgIGJvb2wgbGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMo
Ym9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBsaW5lQm94RWRnZSwgaW50IGVsbGlwc2lzV2lk
dGgpOwogICAgIC8vIFJldHVybiB0aGUgdHJ1bmNhdGVkV2lkdGgsIHRoZSB3aWR0aCBvZiB0aGUg
dHJ1bmNhdGVkIHRleHQgKyBlbGxpcHNpcy4KLSAgICBmbG9hdCBwbGFjZUVsbGlwc2lzKGNvbnN0
IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCBib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwg
ZmxvYXQgYmxvY2tSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIElubGluZUJveCogbWFy
a3VwQm94ID0gbnVsbHB0cik7CisgICAgZmxvYXQgcGxhY2VFbGxpcHNpcyhjb25zdCBBdG9tU3Ry
aW5nJiBlbGxpcHNpc1N0ciwgYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJs
b2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBMZWdhY3lJbmxpbmVCb3gqIG1hcmt1
cEJveCA9IG51bGxwdHIpOwogICAgIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIEVsbGlw
c2lzQm94IG9yIC0xLgogICAgIGZsb2F0IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGZsb2F0
IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRo
LCBmbG9hdCAmdHJ1bmNhdGVkV2lkdGgsIGJvb2wmIGZvdW5kQm94KSBmaW5hbDsKIAotICAgIHVz
aW5nIElubGluZUJveDo6aGFzRWxsaXBzaXNCb3g7CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94
OjpoYXNFbGxpcHNpc0JveDsKICAgICBFbGxpcHNpc0JveCogZWxsaXBzaXNCb3goKSBjb25zdDsK
IAogICAgIHZvaWQgcGFpbnRFbGxpcHNpc0JveChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBjb25zdDsKQEAg
LTEyNCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0
aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92
ZXJyaWRlOwogCiAgICAgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBzZWxlY3Rpb25TdGF0
ZSgpIGZpbmFsOwotICAgIElubGluZUJveCogZmlyc3RTZWxlY3RlZEJveCgpOwotICAgIElubGlu
ZUJveCogbGFzdFNlbGVjdGVkQm94KCk7CisgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdFNlbGVj
dGVkQm94KCk7CisgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0U2VsZWN0ZWRCb3goKTsKIAogICAg
IEdhcFJlY3RzIGxpbmVTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3Qg
TGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUm
IG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAgICAgIExheW91dFVuaXQgc2VsVG9wLCBMYXlvdXRV
bml0IHNlbEhlaWdodCwgY29uc3QgTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcyYsIGNvbnN0
IFBhaW50SW5mbyopOwpAQCAtMTYwLDggKzE2MCw4IEBAIHB1YmxpYzoKIAogICAgIExheW91dFJl
Y3QgcGFkZGVkTGF5b3V0T3ZlcmZsb3dSZWN0KExheW91dFVuaXQgZW5kUGFkZGluZykgY29uc3Q7
CiAKLSAgICB2b2lkIGFzY2VudEFuZERlc2NlbnRGb3JCb3goSW5saW5lQm94JiwgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQm
IGRlc2NlbnQsIGJvb2wmIGFmZmVjdHNBc2NlbnQsIGJvb2wmIGFmZmVjdHNEZXNjZW50KSBjb25z
dDsKLSAgICBMYXlvdXRVbml0IHZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5saW5lQm94KiwgVmVy
dGljYWxQb3NpdGlvbkNhY2hlJik7CisgICAgdm9pZCBhc2NlbnRBbmREZXNjZW50Rm9yQm94KExl
Z2FjeUlubGluZUJveCYsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgTGF5b3V0
VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50LCBib29sJiBhZmZlY3RzQXNjZW50LCBi
b29sJiBhZmZlY3RzRGVzY2VudCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0
aW9uRm9yQm94KExlZ2FjeUlubGluZUJveCosIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwogICAg
IGJvb2wgZml0c1RvR2x5cGhzKCkgY29uc3Q7CiAgICAgYm9vbCBpbmNsdWRlc1Jvb3RMaW5lQm94
Rm9udE9yTGVhZGluZygpIGNvbnN0OwogICAgIApAQCAtMTkxLDExICsxOTEsMTEgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBib29sIGlzUm9vdElubGluZUJveCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIGJvb2wgaW5jbHVkZUxlYWRpbmdGb3JCb3goSW5saW5lQm94Jikg
Y29uc3Q7Ci0gICAgYm9vbCBpbmNsdWRlRm9udEZvckJveChJbmxpbmVCb3gmKSBjb25zdDsKLSAg
ICBib29sIGluY2x1ZGVHbHlwaHNGb3JCb3goSW5saW5lQm94JikgY29uc3Q7Ci0gICAgYm9vbCBp
bmNsdWRlSW5pdGlhbExldHRlckZvckJveChJbmxpbmVCb3gmKSBjb25zdDsKLSAgICBib29sIGlu
Y2x1ZGVNYXJnaW5Gb3JCb3goSW5saW5lQm94JikgY29uc3Q7CisgICAgYm9vbCBpbmNsdWRlTGVh
ZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVGb250
Rm9yQm94KExlZ2FjeUlubGluZUJveCYpIGNvbnN0OworICAgIGJvb2wgaW5jbHVkZUdseXBoc0Zv
ckJveChMZWdhY3lJbmxpbmVCb3gmKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVJbml0aWFsTGV0
dGVyRm9yQm94KExlZ2FjeUlubGluZUJveCYpIGNvbnN0OworICAgIGJvb2wgaW5jbHVkZU1hcmdp
bkZvckJveChMZWdhY3lJbmxpbmVCb3gmKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgbGluZVNu
YXBBZGp1c3RtZW50KExheW91dFVuaXQgZGVsdGEgPSAwX2x1KSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMGYyODM1ODU3
N2ViLi5kMGQyYjQwNWRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcApAQCAtNDY1LDcgKzQ2NSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5k
ZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29u
dGVuCiAgICAgQVNTRVJUKCFyb290Qm94LT5uZXh0Um9vdEJveCgpKTsKICAgICBBU1NFUlQoY2hp
bGRyZW5JbmxpbmUoKSk7CiAKLSAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSBkb3duY2FzdDxT
VkdSb290SW5saW5lQm94Pigqcm9vdEJveCkuY2xvc2VzdExlYWZDaGlsZEZvclBvc2l0aW9uKHBv
aW50SW5Db250ZW50cyk7CisgICAgTGVnYWN5SW5saW5lQm94KiBjbG9zZXN0Qm94ID0gZG93bmNh
c3Q8U1ZHUm9vdElubGluZUJveD4oKnJvb3RCb3gpLmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlv
bihwb2ludEluQ29udGVudHMpOwogICAgIGlmICghY2xvc2VzdEJveCkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCmluZGV4
IDJiNDk3MTcwODc4NS4uZTYxNjQ3Y2M5M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBT
VkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWlu
dEluZm8pCiAgICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSk7CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKLSAgICBmb3Ig
KElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChpczxTVkdJbmxp
bmVUZXh0Qm94PigqY2hpbGQpKQogICAgICAgICAgICAgZG93bmNhc3Q8U1ZHSW5saW5lVGV4dEJv
eD4oKmNoaWxkKS5wYWludFNlbGVjdGlvbkJhY2tncm91bmQoY2hpbGRQYWludEluZm8pOwogICAg
ICAgICBlbHNlIGlmIChpczxTVkdJbmxpbmVGbG93Qm94PigqY2hpbGQpKQpAQCAtNTQsNyArNTQs
NyBAQCB2b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCBy
ZW5kZXJpbmdDb250ZXh0KHJlbmRlcmVyKCksIHBhaW50SW5mbywgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNSZW5k
ZXJpbmdQcmVwYXJlZCgpKSB7Ci0gICAgICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKKyAgICAgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRP
bkxpbmUoKSkKICAgICAgICAgICAgIGNoaWxkLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0
LCAwLCAwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSb290SW5saW5lQm94LmNwcAppbmRleCBmZjIxOWU5OTc4MDAuLmEwNjNmOWMwNGE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBQYWludElu
Zm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKICAgICBpZiAoaGFzU2VsZWN0aW9uICYmIHNo
b3VsZFBhaW50U2VsZWN0aW9uSGlnaGxpZ2h0KSB7Ci0gICAgICAgIGZvciAoSW5saW5lQm94KiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkg
eworICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgICAgICBpZiAoaXM8U1ZHSW5saW5lVGV4
dEJveD4oKmNoaWxkKSkKICAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdJbmxpbmVUZXh0Qm94
PigqY2hpbGQpLnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChjaGlsZFBhaW50SW5mbyk7CiAgICAg
ICAgICAgICBlbHNlIGlmIChpczxTVkdJbmxpbmVGbG93Qm94PigqY2hpbGQpKQpAQCAtNzAsNyAr
NzAsNyBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4
dCByZW5kZXJpbmdDb250ZXh0KHJlbmRlclNWR1RleHQoKSwgcGFpbnRJbmZvLCBTVkdSZW5kZXJp
bmdDb250ZXh0OjpTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAgICBpZiAocmVuZGVyaW5nQ29udGV4
dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKLSAgICAgICAgZm9yIChJbmxpbmVCb3gqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKQorICAg
ICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dE9uTGluZSgpKQogICAgICAgICAgICAgY2hpbGQtPnBhaW50KHBhaW50SW5mbywgcGFp
bnRPZmZzZXQsIDAsIDApOwogICAgIH0KIH0KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNWR1Jv
b3RJbmxpbmVCb3g6OmNvbXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpCiAKIHZv
aWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZs
b3dCb3gqIHN0YXJ0LCBTVkdUZXh0TGF5b3V0RW5naW5lJiBjaGFyYWN0ZXJMYXlvdXQpCiB7Ci0g
ICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gc3RhcnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBzdGFy
dC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAg
ICAgICAgIGlmIChpczxTVkdJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBB
U1NFUlQoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4oY2hpbGQtPnJlbmRlcmVyKCkpKTsKICAgICAg
ICAgICAgIGNoYXJhY3RlckxheW91dC5sYXlvdXRJbmxpbmVUZXh0Qm94KGRvd25jYXN0PFNWR0lu
bGluZVRleHRCb3g+KCpjaGlsZCkpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgU1ZHUm9vdElu
bGluZUJveDo6bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZsb3dCb3gqIHN0YXJ0
LCBTVkdUZXh0CiAKIHZvaWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0Q2hpbGRCb3hlcyhJbmxp
bmVGbG93Qm94KiBzdGFydCwgRmxvYXRSZWN0KiBjaGlsZFJlY3QpCiB7Ci0gICAgZm9yIChJbmxp
bmVCb3gqIGNoaWxkID0gc3RhcnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBzdGFydC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIEZsb2F0
UmVjdCBib3hSZWN0OwogICAgICAgICBpZiAoaXM8U1ZHSW5saW5lVGV4dEJveD4oKmNoaWxkKSkg
ewogICAgICAgICAgICAgQVNTRVJUKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KGNoaWxkLT5yZW5k
ZXJlcigpKSk7CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBTVkdSb290SW5saW5lQm94OjpsYXlv
dXRSb290Qm94KGNvbnN0IEZsb2F0UmVjdCYgY2hpbGRSZWN0KQogICAgIHBhcmVudEJsb2NrLnNl
dFNpemUoYm91bmRpbmdSZWN0LnNpemUoKSk7CiAKICAgICAvLyBQb3NpdGlvbiBhbGwgY2hpbGRy
ZW4gcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBibG9jay4KLSAgICBmb3IgKElubGluZUJveCogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsK
KyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIC8vIFNraXAgZ2VuZXJhdGVkIGNvbnRlbnQuCiAg
ICAgICAgIGlmICghY2hpbGQtPnJlbmRlcmVyKCkubm9kZSgpKQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xODgsMTYgKzE4OCwxNiBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dFJv
b3RCb3goY29uc3QgRmxvYXRSZWN0JiBjaGlsZFJlY3QpCiAgICAgc2V0TGluZVRvcEJvdHRvbVBv
c2l0aW9ucygwLCBib3VuZGluZ1JlY3QuaGVpZ2h0KCksIDAsIGJvdW5kaW5nUmVjdC5oZWlnaHQo
KSk7CiB9CiAKLUlubGluZUJveCogU1ZHUm9vdElubGluZUJveDo6Y2xvc2VzdExlYWZDaGlsZEZv
clBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK0xlZ2FjeUlubGluZUJveCogU1ZH
Um9vdElubGluZUJveDo6Y2xvc2VzdExlYWZDaGlsZEZvclBvc2l0aW9uKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkKIHsKLSAgICBJbmxpbmVCb3gqIGZpcnN0TGVhZiA9IGZpcnN0TGVhZkRlc2Nl
bmRhbnQoKTsKLSAgICBJbmxpbmVCb3gqIGxhc3RMZWFmID0gbGFzdExlYWZEZXNjZW5kYW50KCk7
CisgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdExlYWYgPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7
CisgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0TGVhZiA9IGxhc3RMZWFmRGVzY2VuZGFudCgpOwog
ICAgIGlmIChmaXJzdExlYWYgPT0gbGFzdExlYWYpCiAgICAgICAgIHJldHVybiBmaXJzdExlYWY7
CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIHZlcnRpY2FsIHRleHQhCi0gICAgSW5saW5lQm94
KiBjbG9zZXN0TGVhZiA9IG51bGxwdHI7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGxlYWYgPSBmaXJz
dExlYWY7IGxlYWY7IGxlYWYgPSBsZWFmLT5uZXh0TGVhZk9uTGluZSgpKSB7CisgICAgTGVnYWN5
SW5saW5lQm94KiBjbG9zZXN0TGVhZiA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvKiBsZWFmID0g
Zmlyc3RMZWFmOyBsZWFmOyBsZWFmID0gbGVhZi0+bmV4dExlYWZPbkxpbmUoKSkgewogICAgICAg
ICBpZiAoIWxlYWYtPmlzU1ZHSW5saW5lVGV4dEJveCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChwb2ludC55KCkgPCBsZWFmLT55KCkpCkBAIC0yMTUsNyArMjE1LDcgQEAg
SW5saW5lQm94KiBTVkdSb290SW5saW5lQm94OjpjbG9zZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24o
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW4KIAogYm9vbCBTVkdSb290SW5saW5lQm94Ojpub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKLSAgICBmb3IgKElu
bGluZUJveCogbGVhZiA9IGZpcnN0TGVhZkRlc2NlbmRhbnQoKTsgbGVhZjsgbGVhZiA9IGxlYWYt
Pm5leHRMZWFmT25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGxlYWYgPSBmaXJzdExlYWZEZXNj
ZW5kYW50KCk7IGxlYWY7IGxlYWYgPSBsZWFmLT5uZXh0TGVhZk9uTGluZSgpKSB7CiAgICAgICAg
IGlmICghbGVhZi0+aXNTVkdJbmxpbmVUZXh0Qm94KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKGxlYWYtPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20sIGhpdFRl
c3RBY3Rpb24pKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaW5kRmly
c3RBbmRMYXN0QXR0cmlidXRlc0luVmVjdG9yKFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmliCiAg
ICAgQVNTRVJUKGxhc3QpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZUlubGluZUJv
eFJhbmdlQW5kVmFsdWVMaXN0c0lmTmVlZGVkKHZvaWQqIHVzZXJEYXRhLCBWZWN0b3I8SW5saW5l
Qm94Kj46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8SW5saW5lQm94Kj46Oml0ZXJhdG9yIGxhc3Qp
CitzdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZUlubGluZUJveFJhbmdlQW5kVmFsdWVMaXN0c0lm
TmVlZGVkKHZvaWQqIHVzZXJEYXRhLCBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9y
IGZpcnN0LCBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9yIGxhc3QpCiB7CiAgICAg
QVNTRVJUKHVzZXJEYXRhKTsKICAgICBWZWN0b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYg
YXR0cmlidXRlcyA9ICpyZWludGVycHJldF9jYXN0PFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmli
dXRlcyo+Kj4odXNlckRhdGEpOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZOZWVkZWQodm9pZCogdXNlckRh
dGEsIFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFpczxTVkdJbmxpbmVU
ZXh0Qm94PigqKmxhc3QpIHx8ICFpczxTVkdJbmxpbmVUZXh0Qm94PigqKmZpcnN0KSkgewotICAg
ICAgICAgICAgSW5saW5lQm94KiB0ZW1wID0gKmZpcnN0OworICAgICAgICAgICAgTGVnYWN5SW5s
aW5lQm94KiB0ZW1wID0gKmZpcnN0OwogICAgICAgICAgICAgKmZpcnN0ID0gKmxhc3Q7CiAgICAg
ICAgICAgICAqbGFzdCA9IHRlbXA7CiAgICAgICAgICAgICArK2ZpcnN0OwpAQCAtMzAxLDcgKzMw
MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxp
c3RzSWZOZWVkZWQodm9pZCogdXNlckRhdGEsIFZlCiAgICAgICAgICAgICBzd2FwSXRlbXNJbkxh
eW91dEF0dHJpYnV0ZXMoZmlyc3RBdHRyaWJ1dGVzLCBsYXN0QXR0cmlidXRlcywgZmlyc3RUZXh0
Qm94LnN0YXJ0KCksIGxhc3RUZXh0Qm94LnN0YXJ0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
SW5saW5lQm94KiB0ZW1wID0gKmZpcnN0OworICAgICAgICBMZWdhY3lJbmxpbmVCb3gqIHRlbXAg
PSAqZmlyc3Q7CiAgICAgICAgICpmaXJzdCA9ICpsYXN0OwogICAgICAgICAqbGFzdCA9IHRlbXA7
CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZUlubGluZUJv
eFJhbmdlQW5kVmFsdWVMaXN0c0lmTmVlZGVkKHZvaWQqIHVzZXJEYXRhLCBWZQogCiB2b2lkIFNW
R1Jvb3RJbmxpbmVCb3g6OnJlb3JkZXJWYWx1ZUxpc3RzKFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0
cmlidXRlcyo+JiBhdHRyaWJ1dGVzKQogewotICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gbGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXI7CiAgICAgY29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZC
b3hlc0luTG9naWNhbE9yZGVyLCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZO
ZWVkZWQsICZhdHRyaWJ1dGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBmZmM4NDRjOTc2NWMuLmNiNzMzY2E2OWE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wdXRlUGVyQ2hhcmFjdGVy
TGF5b3V0SW5mb3JtYXRpb24oKTsKIAotICAgIElubGluZUJveCogY2xvc2VzdExlYWZDaGlsZEZv
clBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50Jik7CisgICAgTGVnYWN5SW5saW5lQm94KiBjbG9z
ZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIGJvb2wg
bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90
dG9tLCBIaXRUZXN0QWN0aW9uKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UXVlcnkuY3BwCmluZGV4IGZkODkwMjI5NGI2YS4uMWQ3N2MxYTk3MjBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCkBAIC04
OCw3ICs4OCw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojpjb2xsZWN0VGV4dEJveGVzSW5GbG93Qm94
KElubGluZUZsb3dCb3gqIGZsb3dCb3gpCiAgICAgaWYgKCFmbG93Qm94KQogICAgICAgICByZXR1
cm47CiAKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmbG93Qm94LT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gZmxvd0JveC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9u
TGluZSgpKSB7CiAgICAgICAgIGlmIChpczxJbmxpbmVGbG93Qm94PigqY2hpbGQpKSB7CiAgICAg
ICAgICAgICAvLyBTa2lwIGdlbmVyYXRlZCBjb250ZW50LgogICAgICAgICAgICAgaWYgKCFjaGls
ZC0+cmVuZGVyZXIoKS5ub2RlKCkpCg==
</data>
<flag name="commit-queue"
          id="451667"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430270</attachid>
            <date>2021-06-01 09:33:38 -0700</date>
            <delta_ts>2021-06-01 10:22:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>legacy-inline-box-rename-2.patch</filename>
            <type>text/plain</type>
            <size>111318</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OWJiODUwZjlkNmUuLjU4ZTE5NGNhNzc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4OSBAQAorMjAyMS0wNi0wMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZUJveCB0byBMZWdhY3lJbmxpbmVCb3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjUwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vcmUgbGVnYWN5IGxp
bmUgbGF5b3V0IHBhdGggcmVuYW1pbmcuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKiBsYXlvdXQvVmVy
aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y2hlY2tGb3JNYXRjaGlu
Z05vblRleHRSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29sbGVjdEZsb3dCb3hT
dWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Y29sbGVjdElubGluZUJveGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUlu
Zm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcik6CisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9y
TGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTGVnYWN5UGF0aDo6UnVuSXRlcmF0b3JMZWdhY3lQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OmxlZ2FjeUlubGlu
ZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9CaWRpUnVuLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvQmlk
aVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJ1bjo6Ym94KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpZGlSdW46OnNldEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDYXJldFJlY3RGb3JJbmxpbmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGxpcHNpc0JveDo6RWxsaXBzaXNCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNC
b3g6Om1hcmt1cEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFp
bnRNYXJrdXBCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lRWxlbWVudEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRWxlbWVudEJv
eDo6SW5saW5lRWxlbWVudEJveCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVFbGVtZW50Qm94
OjpyZW5kZXJlciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6c2V0SGFzQmFkQ2hpbGRMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmdldEZsb3dTcGFjaW5nTG9naWNhbFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFRvTGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OmV4dHJhY3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OmF0dGFjaExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRqdXN0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6ZGV0ZXJtaW5lU3BhY2lu
Z0ZvckZsb3dCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJv
eFJhbmdlSW5JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6cmVxdWlyZXNJZGVvZ3JhcGhpY0Jhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUZsb3dCb3g6OmFkanVzdE1heEFzY2VudEFuZERlc2NlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lRmxvd0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVj
b3JhdGlvbkxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bWlu
TG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVGbG93Qm94OjpmbGlwTGluZXNJbkJsb2NrRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6Zmly
c3RMZWFmRGVzY2VuZGFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjpsYXN0TGVhZkRlc2NlbmRhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OmNsZWFyVHJ1bmNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpv
dXRwdXRMaW5lVHJlZUFuZE1hcmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxv
d0JveDo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OklubGluZUZsb3dC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cmVuZGVyZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6Zmlyc3RDaGlsZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpsYXN0Q2hpbGQgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6Om1hcmtEaXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OklubGluZVRleHRCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVC
b3g6OmFzc2VydE5vdERlbGV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lQm94Ojp+TGVnYWN5SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGlu
ZUJveDo6c2V0SGFzQmFkUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJv
eDo6aW52YWxpZGF0ZVBhcmVudENoaWxkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVCb3g6OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lQm94Ojpib3hOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJv
eDo6c2hvd05vZGVUcmVlRm9yVGhpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJ
bmxpbmVCb3g6OnNob3dMaW5lVHJlZUZvclRoaXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5SW5saW5lQm94OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpvdXRwdXRMaW5lQm94IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9naWNhbEhlaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpsaW5lSGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6Y2FyZXRNaW5PZmZzZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94OjpjYXJldE1heE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmRpcnR5TGluZUJveGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6YWRqdXN0UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5SW5saW5lQm94Ojpyb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUJveDo6cm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVC
b3g6Om5leHRPbkxpbmVFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5s
aW5lQm94OjpwcmV2aW91c09uTGluZUV4aXN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVCb3g6Om5leHRMZWFmT25MaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeUlubGluZUJveDo6cHJldmlvdXNMZWFmT25MaW5lIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeUlubGluZUJveDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lQm94OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveDo6bG9jYXRpb25JbmNsdWRpbmdGbGlw
cGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OmZsaXBGb3JX
cml0aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChzaG93Tm9kZVRyZWUpOgorICAgICAgICAoc2hv
d0xpbmVUcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94Lmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmguCisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6Om5leHRPbkxpbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lQm94OjpwcmV2aW91c09uTGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3g6OnNldE5leHRPbkxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5SW5saW5lQm94OjpzZXRQcmV2aW91c09uTGluZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lJbmxpbmVCb3g6OkxlZ2FjeUlubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lJbmxpbmVCb3g6On5MZWdhY3lJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5SW5saW5lQm94Ojphc3NlcnROb3REZWxldGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvTGVnYWN5TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lMaW5lTGF5
b3V0OjpjcmVhdGVJbmxpbmVCb3hGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
TGluZUxheW91dDo6Y29uc3RydWN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjppbmxpbmVBbmNl
c3Rvckhhc1N0YXJ0Qm9yZGVyUGFkZGluZ09yTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Omlu
bGluZUFuY2VzdG9ySGFzRW5kQm9yZGVyUGFkZGluZ09yTWFyZ2luKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JT
ZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUxpbmVMYXlvdXQ6OmxheW91dFJ1bnNB
bmRGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6Om91dHB1dExpbmVUcmVlQW5kTWFyayBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om9mZnNldExl
ZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpvZmZzZXRUb3AgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxpbmVGaXJzdExp
bmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjdWxsZWRJbmxp
bmVMYXN0TGluZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpmaXJzdExpbmVCb3hJbmNsdWRpbmdD
dWxsaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGFzdExpbmVC
b3hJbmNsdWRpbmdDdWxsaW5nIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmRpcnR5
TGluZXNGcm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpsb2NhbFNlbGVj
dGlvblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94Ojppc0h5cGhlbmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6cGxhY2VFbGxpcHNpcyk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojpj
aGlsZFJlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bGluZVNlbGVj
dGlvbkdhcCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpzZWxlY3Rpb25TdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3RlZEJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6aW5jbHVkZUxlYWRpbmdGb3JC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6aW5jbHVkZUZvbnRG
b3JCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6aW5jbHVkZUds
eXBoc0ZvckJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjppbmNs
dWRlSW5pdGlhbExldHRlckZvckJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5s
aW5lQm94OjppbmNsdWRlTWFyZ2luRm9yQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJv
b3RJbmxpbmVCb3g6Om91dHB1dExpbmVCb3ggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
b290SW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lRmxvd0JveDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290
SW5saW5lQm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94Ojps
YXlvdXRDaGFyYWN0ZXJzSW5UZXh0Qm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElu
bGluZUJveDo6bGF5b3V0Q2hpbGRCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5s
aW5lQm94OjpsYXlvdXRSb290Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVC
b3g6OmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
b290SW5saW5lQm94Ojpub2RlQXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpyZXZlcnNlSW5s
aW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Um9vdElubGluZUJveDo6cmVvcmRlclZhbHVlTGlzdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUm9vdElubGluZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1
ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRRdWVyeTo6Y29sbGVjdFRleHRCb3hl
c0luRmxvd0JveCk6CisKIDIwMjEtMDYtMDEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbmFtZSBDb21wbGV4TGluZUxheW91dCB0byBMZWdhY3lMaW5lTGF5
b3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBkMTYyYThiN2I1MTIuLmRhMjdiNDE5MTFmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xNTI0LDEyICsxNTI0LDEyIEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKICAg
ICByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmgKLSAgICByZW5kZXJpbmcvSW5saW5lQm94LmgKICAgICByZW5kZXJpbmcvSW5saW5lRWxlbWVu
dEJveC5oCiAgICAgcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAogICAgIHJlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmgKICAgICByZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaAog
ICAgIHJlbmRlcmluZy9MYXllckZyYWdtZW50LmgKKyAgICByZW5kZXJpbmcvTGVnYWN5SW5saW5l
Qm94LmgKICAgICByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5oCiAgICAgcmVuZGVyaW5nL01h
cmtlZFRleHQuaAogICAgIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggNjhiZDZkNDM5NTI0Li40YzQ2MzlmYWU3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjU2LDcg
KzIyNTYsNiBAQCByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcAogcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCiByZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcAogcmVu
ZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCi1yZW5kZXJpbmcvSW5saW5lQm94LmNw
cAogcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guY3BwCiByZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5jcHAKQEAgLTIyNjUsNiArMjI2NCw3IEBA
IHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5jcHAKIHJlbmRlcmluZy9MYXll
ck92ZXJsYXBNYXAuY3BwCiByZW5kZXJpbmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcAogcmVu
ZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAKK3JlbmRlcmluZy9MZWdhY3lJbmxpbmVCb3guY3Bw
CiByZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKIHJlbmRlcmluZy9NYXJrZWRUZXh0LmNw
cAogcmVuZGVyaW5nL01hcmtlZFRleHRTdHlsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjk4N2MxZTE4OTguLmYzNzhk
OWQ5ZjYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzU3NCw3ICszNTc0LDcgQEAKIAkJQThDRkYwNTEwQTE1NEYwOTAwMEE0
MjM0IC8qIFRhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOENGRjA0QzBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCAqLzsg
fTsKIAkJQThDRkY1RTEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNURBMEExNTVBMDUw
MDBBNDIzNCAvKiBSb290SW5saW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZs
b3dCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
Q0ZGNURDMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQThDRkY1RTUwQTE1NUEwNTAwMEE0
MjM0IC8qIElubGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDRkY1REUwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUJveC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE4Q0ZGNUU1MEExNTVB
MDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNURFMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJ
bmxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBOENGRjZCRTBBMTU2MTE4MDAwQTQyMzQgLyogRWxsaXBzaXNCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNkJEMEExNTYxMTgwMDBB
NDIzNCAvKiBFbGxpcHNpc0JveC5oICovOyB9OwogCQlBOENGRjdBMzBBMTU2OTc4MDAwQTQyMzQg
LyogSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDRkY3OTkwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOENG
RjdBNjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjc5QzBBMTU2OTc4MDAwQTQyMzQg
LyogSFRNTEZvbnRFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEzMTYzLDggKzEzMTYzLDggQEAKIAkJQThDRkY1REEwQTE1NUEwNTAw
MEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY1
REMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElubGluZUZsb3dCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQThDRkY1REQwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUZsb3dCb3guY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOENGRjVERTBBMTU1QTA1MDAwQTQyMzQgLyogSW5s
aW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVCb3guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThDRkY1REYwQTE1NUEwNTAwMEE0MjM0IC8q
IElubGluZUJveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5s
aW5lQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThDRkY1REUwQTE1NUEw
NTAwMEE0MjM0IC8qIExlZ2FjeUlubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGVnYWN5SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE4Q0ZGNURGMEExNTVBMDUwMDBBNDIzNCAvKiBMZWdhY3lJbmxpbmVCb3guY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUlubGluZUJveC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGNUUwMEExNTVBMDUwMDBBNDIzNCAvKiBSb290
SW5saW5lQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb290
SW5saW5lQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDRkY2QkQwQTE1
NjExODAwMEE0MjM0IC8qIEVsbGlwc2lzQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbGxpcHNpc0JveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOENG
RjZDQTBBMTU2MUNEMDAwQTQyMzQgLyogRWxsaXBzaXNCb3guY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVsbGlwc2lzQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTMwMTg5LDggKzMwMTg5LDggQEAKIAkJCQk5MzA3RjFENjBBRjJENTkwMDBE
QkEzMUEgLyogSGl0VGVzdFJlc3VsdC5oICovLAogCQkJCUI1MUEyRjQwMTdEN0Q1REEwMDcyNTE3
QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCNTFBMkYzRTE3RDdEM0E0
MDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oICovLAotCQkJCUE4Q0ZGNURGMEEx
NTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVCb3guY3BwICovLAotCQkJCUE4Q0ZGNURFMEExNTVBMDUw
MDBBNDIzNCAvKiBJbmxpbmVCb3guaCAqLywKKwkJCQlBOENGRjVERjBBMTU1QTA1MDAwQTQyMzQg
LyogTGVnYWN5SW5saW5lQm94LmNwcCAqLywKKwkJCQlBOENGRjVERTBBMTU1QTA1MDAwQTQyMzQg
LyogTGVnYWN5SW5saW5lQm94LmggKi8sCiAJCQkJQjU3Q0I1MkMxODJBM0VFRDAwNzlBNjQ3IC8q
IElubGluZUVsZW1lbnRCb3guY3BwICovLAogCQkJCUI1N0NCNTJCMTgyQTM3RjYwMDc5QTY0NyAv
KiBJbmxpbmVFbGVtZW50Qm94LmggKi8sCiAJCQkJQThDRkY1REQwQTE1NUEwNTAwMEE0MjM0IC8q
IElubGluZUZsb3dCb3guY3BwICovLApAQCAtMzMxNDIsNyArMzMxNDIsNyBAQAogCQkJCTUxRUVB
QTc0MUJFRkZBQjEwMDIxODAwOCAvKiBJbmRleFZhbHVlRW50cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEMDYzRjgzMUUyM0ZBODkwMDgxMkJFMyAvKiBJbml0RGF0YVJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBOENGRjVFNTBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5l
Qm94LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOENGRjVFNTBBMTU1QTA1MDAwQTQyMzQgLyogTGVn
YWN5SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzA1OTI2NDFFMjdBM0FEMDBENTdD
OTggLyogSW5saW5lQ2xhc3NpY1NjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFMTk4MTcy
MTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVha2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCNTdDQjUyRTE4MkEzRUZDMDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDRiYTg5MjJmY2VjNy4uMzczYjMyNDRm
YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBUZXh0U3Ry
ZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElubGluZUJveDsKK2NsYXNzIExl
Z2FjeUlubGluZUJveDsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBUZXh0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IDM5Nzg2OWZkNDcxYy4uZTc3ZGMw
OTRmYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtNzAsNyAr
NzAsNyBAQCBzdGF0aWMgYm9vbCBhcmVFc3NlbnRpYWxseUVxdWFsKExheW91dFJlY3QgYSwgTGF5
b3V0UmVjdCBiKQogICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGEuaGVpZ2h0KCksIGIu
aGVpZ2h0KCkpOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMo
Y29uc3QgTGluZVJ1biYgbGluZVJ1biwgY29uc3QgV2ViQ29yZTo6SW5saW5lQm94JiBpbmxpbmVC
b3gpCitzdGF0aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoY29uc3QgTGluZVJ1
biYgbGluZVJ1biwgY29uc3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94JiBpbmxpbmVCb3gpCiB7
CiAgICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LmxlZnQoKSwgbGluZVJ1
bi5sb2dpY2FsTGVmdCgpKQogICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJv
eC5yaWdodCgpLCBsaW5lUnVuLmxvZ2ljYWxSaWdodCgpKQpAQCAtOTAsNyArOTAsNyBAQCBzdGF0
aWMgYm9vbCBjaGVja0Zvck1hdGNoaW5nVGV4dFJ1bnMoY29uc3QgTGluZVJ1biYgbGluZVJ1biwg
Y29uc3QgV2ViQ29yZTo6SW5saQogICAgICAgICAmJiAoaW5saW5lVGV4dEJveC5pc0xpbmVCcmVh
aygpIHx8IChpbmxpbmVUZXh0Qm94LnN0YXJ0KCkgPT0gbGluZVJ1bi50ZXh0KCktPnN0YXJ0KCkg
JiYgaW5saW5lVGV4dEJveC5lbmQoKSA9PSBsaW5lUnVuLnRleHQoKS0+ZW5kKCkpKTsKIH0KIAot
c3RhdGljIHZvaWQgY29sbGVjdEZsb3dCb3hTdWJ0cmVlKGNvbnN0IElubGluZUZsb3dCb3gmIGZs
b3dib3gsIFZlY3RvcjxXZWJDb3JlOjpJbmxpbmVCb3gqPiYgaW5saW5lQm94ZXMpCitzdGF0aWMg
dm9pZCBjb2xsZWN0Rmxvd0JveFN1YnRyZWUoY29uc3QgSW5saW5lRmxvd0JveCYgZmxvd2JveCwg
VmVjdG9yPFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCo+JiBpbmxpbmVCb3hlcykKIHsKICAgICBh
dXRvKiBpbmxpbmVCb3ggPSBmbG93Ym94LmZpcnN0TGVhZkRlc2NlbmRhbnQoKTsKICAgICBhdXRv
KiBsYXN0TGVhZkRlc2NlbmRhbnQgPSBmbG93Ym94Lmxhc3RMZWFmRGVzY2VuZGFudCgpOwpAQCAt
MTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RGbG93Qm94U3VidHJlZShjb25zdCBJ
bmxpbmVGbG93Qm94JiBmbG93Ym94LCBWZWN0b3I8V2ViQ29yZTo6CiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBjb2xsZWN0SW5saW5lQm94ZXMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiByb290LCBW
ZWN0b3I8V2ViQ29yZTo6SW5saW5lQm94Kj4mIGlubGluZUJveGVzKQorc3RhdGljIHZvaWQgY29s
bGVjdElubGluZUJveGVzKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcm9vdCwgVmVjdG9yPFdlYkNv
cmU6OkxlZ2FjeUlubGluZUJveCo+JiBpbmxpbmVCb3hlcykKIHsKICAgICBmb3IgKGF1dG8qIHJv
b3RMaW5lID0gcm9vdC5maXJzdFJvb3RCb3goKTsgcm9vdExpbmU7IHJvb3RMaW5lID0gcm9vdExp
bmUtPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVCb3ggPSByb290
TGluZS0+Zmlyc3RDaGlsZCgpOyBpbmxpbmVCb3g7IGlubGluZUJveCA9IGlubGluZUJveC0+bmV4
dE9uTGluZSgpKSB7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0
Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLAog
ICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVk
Rm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvJiBsaW5lUnVu
cyA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRl
KS5saW5lUnVucygpOwogICAgIC8vIENvbGxlY3QgaW5saW5lYm94ZXMuCi0gICAgVmVjdG9yPFdl
YkNvcmU6OklubGluZUJveCo+IGlubGluZUJveGVzOworICAgIFZlY3RvcjxXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hlczsKICAgICBjb2xsZWN0SW5saW5lQm94ZXMoYmxvY2tG
bG93LCBpbmxpbmVCb3hlcyk7CiAKICAgICBhdXRvIG1pc21hdGNoZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcAppbmRleCBmZWQwNzU0ZDBlYmYuLmRlMWExZjU3
ZmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtMTY3LDcgKzE2
Nyw3IEBAIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5Gb3IoY29uc3QgUmVuZGVyVGV4dCYg
dGV4dCkKIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZvcihjb25zdCBS
ZW5kZXJUZXh0JiB0ZXh0KQogewogICAgIGlmICh0ZXh0LmZpcnN0VGV4dEJveCgpICYmIHRleHQu
Y29udGFpbnNSZXZlcnNlZFRleHQoKSkgewotICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lQm94
Kj4gc29ydGVkVGV4dEJveGVzOworICAgICAgICBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94
Kj4gc29ydGVkVGV4dEJveGVzOwogICAgICAgICBmb3IgKGF1dG8qIHRleHRCb3ggPSB0ZXh0LmZp
cnN0VGV4dEJveCgpOyB0ZXh0Qm94OyB0ZXh0Qm94ID0gdGV4dEJveC0+bmV4dFRleHRCb3goKSkK
ICAgICAgICAgICAgIHNvcnRlZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7CiAgICAgICAgIHN0
ZDo6c29ydChzb3J0ZWRUZXh0Qm94ZXMuYmVnaW4oKSwgc29ydGVkVGV4dEJveGVzLmVuZCgpLCBb
XShhdXRvKiBhLCBhdXRvKiBiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRl
eCAzMmUwZjM1YWZmMjkuLjk3YWU2OGMyNDQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyKCkgY29uc3Q7CiAKICAgICAvLyBGb3IgaW50ZXJtZWRpYXRlIHBvcnRpbmcgc3Rl
cHMgb25seS4KLSAgICBJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0OworICAgIExl
Z2FjeUlubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAg
ICBmcmllbmQgY2xhc3MgUnVuSXRlcmF0b3I7CkBAIC0yNjksNyArMjY5LDcgQEAgaW5saW5lIGNv
bnN0IFJlbmRlck9iamVjdCYgUGF0aFJ1bjo6cmVuZGVyZXIoKSBjb25zdAogICAgIH0pOwogfQog
Ci1pbmxpbmUgSW5saW5lQm94KiBQYXRoUnVuOjpsZWdhY3lJbmxpbmVCb3goKSBjb25zdAoraW5s
aW5lIExlZ2FjeUlubGluZUJveCogUGF0aFJ1bjo6bGVnYWN5SW5saW5lQm94KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7
CiAgICAgICAgIHJldHVybiBwYXRoLmxlZ2FjeUlubGluZUJveCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3JMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaAppbmRleCBlZWNhYzZiMmE3ODcuLjQ2
YWNhOWMxNTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdh
Y3lQYXRoLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsK
IAogY2xhc3MgUnVuSXRlcmF0b3JMZWdhY3lQYXRoIHsKIHB1YmxpYzoKLSAgICBSdW5JdGVyYXRv
ckxlZ2FjeVBhdGgoY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3gsIFZlY3Rvcjxjb25zdCBJbmxp
bmVCb3gqPiYmIHNvcnRlZElubGluZUJveGVzID0geyB9LCBzaXplX3Qgc29ydGVkSW5saW5lQm94
SW5kZXggPSAwKQorICAgIFJ1bkl0ZXJhdG9yTGVnYWN5UGF0aChjb25zdCBMZWdhY3lJbmxpbmVC
b3gqIGlubGluZUJveCwgVmVjdG9yPGNvbnN0IExlZ2FjeUlubGluZUJveCo+JiYgc29ydGVkSW5s
aW5lQm94ZXMgPSB7IH0sIHNpemVfdCBzb3J0ZWRJbmxpbmVCb3hJbmRleCA9IDApCiAgICAgICAg
IDogbV9pbmxpbmVCb3goaW5saW5lQm94KQogICAgICAgICAsIG1fbG9naWNhbE9yZGVyQ2FjaGUo
V1RGTW92ZShzb3J0ZWRJbmxpbmVCb3hlcykpCiAgICAgICAgICwgbV9sb2dpY2FsT3JkZXJDYWNo
ZUluZGV4KHNvcnRlZElubGluZUJveEluZGV4KQpAQCAtMTE5LDE3ICsxMTksMTcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2lubGluZUJveDsgfQogCi0g
ICAgSW5saW5lQm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PElubGluZUJveCo+KG1faW5saW5lQm94KTsgfQorICAgIExlZ2FjeUlubGluZUJveCogbGVnYWN5
SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxMZWdhY3lJbmxpbmVCb3gqPiht
X2lubGluZUJveCk7IH0KICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290SW5saW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3gtPnJvb3QoKTsgfQogCiBwcml2YXRlOgogICAgIGNv
bnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxJbmxpbmVUZXh0Qm94PihtX2lubGluZUJveCk7IH0KIAotICAgIHN0YXRpYyBWZWN0b3I8Y29u
c3QgSW5saW5lQm94Kj4gaW5saW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBSb290SW5saW5l
Qm94JiByb290KQorICAgIHN0YXRpYyBWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4gaW5s
aW5lQm94ZXNJbkxvZ2ljYWxPcmRlcihjb25zdCBSb290SW5saW5lQm94JiByb290KQogICAgIHsK
LSAgICAgICAgVmVjdG9yPElubGluZUJveCo+IGlubGluZUJveGVzOworICAgICAgICBWZWN0b3I8
TGVnYWN5SW5saW5lQm94Kj4gaW5saW5lQm94ZXM7CiAgICAgICAgIHJvb3QuY29sbGVjdExlYWZC
b3hlc0luTG9naWNhbE9yZGVyKGlubGluZUJveGVzKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VmVjdG9yPGNvbnN0IElubGluZUJveCo+Jj4oaW5saW5lQm94ZXMpOworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8Y29uc3QgTGVnYWN5SW5saW5lQm94Kj4m
PihpbmxpbmVCb3hlcyk7CiAgICAgfQogICAgIHZvaWQgaW5pdGlhbGl6ZUxvZ2ljYWxPcmRlckNh
Y2hlRm9yTGluZSgpCiAgICAgewpAQCAtMTQ2LDggKzE0Niw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0cmF2ZXJzZU5leHRJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKICAgICB2b2lkIHRyYXZlcnNl
UHJldmlvdXNJbmxpbmVCb3hJbkNhY2hlT3JkZXIoKTsKIAotICAgIGNvbnN0IElubGluZUJveCog
bV9pbmxpbmVCb3ggeyBudWxscHRyIH07Ci0gICAgUmVmQ291bnRlZEFycmF5PGNvbnN0IElubGlu
ZUJveCo+IG1fbG9naWNhbE9yZGVyQ2FjaGU7CisgICAgY29uc3QgTGVnYWN5SW5saW5lQm94KiBt
X2lubGluZUJveCB7IG51bGxwdHIgfTsKKyAgICBSZWZDb3VudGVkQXJyYXk8Y29uc3QgTGVnYWN5
SW5saW5lQm94Kj4gbV9sb2dpY2FsT3JkZXJDYWNoZTsKICAgICBzaXplX3QgbV9sb2dpY2FsT3Jk
ZXJDYWNoZUluZGV4IHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvck1vZGVyblBhdGguaAppbmRleCAyODhmYmJhYmM1ZjMuLjE3ZGU5MzZjMGU5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKQEAgLTE5
Niw3ICsxOTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4g
bV9ydW5JbmRleCA9PSBydW5zKCkuc2l6ZSgpIHx8ICFydW4oKS5oYXNVbmRlcmx5aW5nTGF5b3V0
KCk7IH0KIAotICAgIElubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QKKyAgICBMZWdh
Y3lJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QmlkaVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5jcHAKaW5kZXgg
YTRlNzU4MzBmMzNlLi42MWFmZWVlMzQ0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9CaWRpUnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1
bi5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkJpZGlSdW4uaCIKLSNpbmNsdWRlICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxp
bmVCb3guaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQmlkaVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JpZGlSdW4uaAppbmRl
eCA4ZWRlMWQ1ZTM0YjEuLmVkNzc0NWQ3ZDFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0JpZGlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1
bi5oCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJpZGlD
b250ZXh0OwotY2xhc3MgSW5saW5lQm94OworY2xhc3MgTGVnYWN5SW5saW5lQm94OwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwogCiBzdHJ1Y3QgQmlkaVJ1biA6IEJpZGlDaGFyYWN0ZXJSdW4gewpAQCAt
MzksMTIgKzM5LDEyIEBAIHN0cnVjdCBCaWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7CiAgICAg
QmlkaVJ1biogbmV4dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpZGlSdW4qPihCaWRpQ2hhcmFj
dGVyUnVuOjpuZXh0KCkpOyB9CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IHRha2VOZXh0
KCk7CiAgICAgUmVuZGVyT2JqZWN0JiByZW5kZXJlcigpIHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0K
LSAgICBJbmxpbmVCb3gqIGJveCgpIHsgcmV0dXJuIG1fYm94OyB9Ci0gICAgdm9pZCBzZXRCb3go
SW5saW5lQm94KiBib3gpIHsgbV9ib3ggPSBib3g7IH0KKyAgICBMZWdhY3lJbmxpbmVCb3gqIGJv
eCgpIHsgcmV0dXJuIG1fYm94OyB9CisgICAgdm9pZCBzZXRCb3goTGVnYWN5SW5saW5lQm94KiBi
b3gpIHsgbV9ib3ggPSBib3g7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QmIG1fcmVu
ZGVyZXI7Ci0gICAgSW5saW5lQm94KiBtX2JveDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIG1fYm94
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NhcmV0UmVjdENvbXB1dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DYXJldFJlY3RDb21wdXRhdGlvbi5jcHAKaW5kZXggZDM3MjY3MGVjMTIyLi42NWE4
MjY0ZWE2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DYXJldFJlY3RD
b21wdXRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NhcmV0UmVjdENv
bXB1dGF0aW9uLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbXB1
dGVDYXJldFJlY3RGb3JJbmxpbmUoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJlcikKIAogICAg
IExheW91dFJlY3QgY2FyZXRSZWN0ID0gY29tcHV0ZUNhcmV0UmVjdEZvckVtcHR5RWxlbWVudChy
ZW5kZXJlciwgcmVuZGVyZXIuaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgMCwg
Q2FyZXRSZWN0TW9kZTo6Tm9ybWFsKTsKIAotICAgIGlmIChJbmxpbmVCb3gqIGZpcnN0Qm94ID0g
cmVuZGVyZXIuZmlyc3RMaW5lQm94KCkpCisgICAgaWYgKExlZ2FjeUlubGluZUJveCogZmlyc3RC
b3ggPSByZW5kZXJlci5maXJzdExpbmVCb3goKSkKICAgICAgICAgY2FyZXRSZWN0Lm1vdmVCeShM
YXlvdXRQb2ludChmaXJzdEJveC0+dG9wTGVmdCgpKSk7CiAKICAgICByZXR1cm4gY2FyZXRSZWN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggMDcwZDMxNDk4
NzliLi5mODU5YTFkMjVkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
bGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChFbGxpcHNpc0JveCk7CiAKLUVsbGlwc2lzQm94OjpFbGxpcHNpc0Jv
eChSZW5kZXJCbG9ja0Zsb3cmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBlbGxpcHNpc1N0
ciwgSW5saW5lRmxvd0JveCogcGFyZW50LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB5LCBi
b29sIGZpcnN0TGluZSwgYm9vbCBpc0hvcml6b250YWwsIElubGluZUJveCogbWFya3VwQm94KQor
RWxsaXBzaXNCb3g6OkVsbGlwc2lzQm94KFJlbmRlckJsb2NrRmxvdyYgcmVuZGVyZXIsIGNvbnN0
IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3aWR0
aCwgaW50IGhlaWdodCwgaW50IHksIGJvb2wgZmlyc3RMaW5lLCBib29sIGlzSG9yaXpvbnRhbCwg
TGVnYWN5SW5saW5lQm94KiBtYXJrdXBCb3gpCiAgICAgOiBJbmxpbmVFbGVtZW50Qm94KHJlbmRl
cmVyLCBGbG9hdFBvaW50KDAsIHkpLCB3aWR0aCwgZmlyc3RMaW5lLCB0cnVlLCBmYWxzZSwgZmFs
c2UsIGlzSG9yaXpvbnRhbCwgMCwgMCwgcGFyZW50KQogICAgICwgbV9zaG91bGRQYWludE1hcmt1
cEJveChtYXJrdXBCb3gpCiAgICAgLCBtX2hlaWdodChoZWlnaHQpCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgcGFpbnRNYXJrdXBCb3gocGFpbnRJbmZvLCBw
YWludE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSwgbGluZVN0eWxlKTsKIH0KIAotSW5saW5l
Qm94KiBFbGxpcHNpc0JveDo6bWFya3VwQm94KCkgY29uc3QKK0xlZ2FjeUlubGluZUJveCogRWxs
aXBzaXNCb3g6Om1hcmt1cEJveCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Nob3VsZFBhaW50TWFy
a3VwQm94KQogICAgICAgICByZXR1cm4gMDsKQEAgLTkzLDcgKzkzLDcgQEAgSW5saW5lQm94KiBF
bGxpcHNpc0JveDo6bWFya3VwQm94KCkgY29uc3QKIAogICAgIC8vIElmIHRoZSBsYXN0IGxpbmUt
Ym94IG9uIHRoZSBsYXN0IGxpbmUgb2YgYSBibG9jayBpcyBhIGxpbmssIC13ZWJraXQtbGluZS1j
bGFtcCBwYWludHMgdGhhdCBib3ggYWZ0ZXIgdGhlIGVsbGlwc2lzLgogICAgIC8vIEl0IGRvZXMg
bm90IGFjdHVhbGx5IG1vdmUgdGhlIGxpbmsuCi0gICAgSW5saW5lQm94KiBhbmNob3JCb3ggPSBs
YXN0TGluZS0+bGFzdENoaWxkKCk7CisgICAgTGVnYWN5SW5saW5lQm94KiBhbmNob3JCb3ggPSBs
YXN0TGluZS0+bGFzdENoaWxkKCk7CiAgICAgaWYgKCFhbmNob3JCb3ggfHwgIWFuY2hvckJveC0+
cmVuZGVyZXIoKS5zdHlsZSgpLmlzTGluaygpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTAy
LDcgKzEwMiw3IEBAIElubGluZUJveCogRWxsaXBzaXNCb3g6Om1hcmt1cEJveCgpIGNvbnN0CiAK
IHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50TWFya3VwQm94KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgSW5saW5l
Qm94KiBtYXJrdXBCb3ggPSB0aGlzLT5tYXJrdXBCb3goKTsKKyAgICBMZWdhY3lJbmxpbmVCb3gq
IG1hcmt1cEJveCA9IHRoaXMtPm1hcmt1cEJveCgpOwogICAgIGlmICghbWFya3VwQm94KQogICAg
ICAgICByZXR1cm47CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIEVsbGlwc2lzQm94Ojpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dQogICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCAr
IExheW91dFBvaW50KHRvcExlZnQoKSk7CiAKICAgICAvLyBIaXQgdGVzdCB0aGUgbWFya3VwIGJv
eC4KLSAgICBpZiAoSW5saW5lQm94KiBtYXJrdXBCb3ggPSB0aGlzLT5tYXJrdXBCb3goKSkgewor
ICAgIGlmIChMZWdhY3lJbmxpbmVCb3gqIG1hcmt1cEJveCA9IHRoaXMtPm1hcmt1cEJveCgpKSB7
CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUo
KTsKICAgICAgICAgTGF5b3V0VW5pdCBtdHggeyBhZGp1c3RlZExvY2F0aW9uLngoKSArIGxvZ2lj
YWxXaWR0aCgpIC0gbWFya3VwQm94LT54KCkgfTsKICAgICAgICAgTGF5b3V0VW5pdCBtdHkgeyBh
ZGp1c3RlZExvY2F0aW9uLnkoKSArIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpIC0g
KG1hcmt1cEJveC0+eSgpICsgbWFya3VwQm94LT5saW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFz
Y2VudCgpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaAppbmRleCA0ZmEy
ZDUwZjcyNDcuLjQ2MTk2ZTJkNjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmgKQEAgLTMwLDIwICszMCwyMCBAQCBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgRWxs
aXBzaXNCb3ggZmluYWwgOiBwdWJsaWMgSW5saW5lRWxlbWVudEJveCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChFbGxpcHNpc0JveCk7CiBwdWJsaWM6Ci0gICAgRWxsaXBzaXNCb3goUmVu
ZGVyQmxvY2tGbG93JiwgY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsIElubGluZUZsb3dC
b3gqIHBhcmVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJzdExpbmUs
IGJvb2wgaXNIb3Jpem9udGFsLCBJbmxpbmVCb3gqIG1hcmt1cEJveCk7CisgICAgRWxsaXBzaXNC
b3goUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsIElubGlu
ZUZsb3dCb3gqIHBhcmVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgeSwgYm9vbCBmaXJz
dExpbmUsIGJvb2wgaXNIb3Jpem9udGFsLCBMZWdhY3lJbmxpbmVCb3gqIG1hcmt1cEJveCk7CiAg
ICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQg
bGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKICAgICBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwg
SGl0VGVzdEFjdGlvbikgZmluYWw7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlIHMpIHsgbV9zZWxlY3Rpb25TdGF0ZSA9IHM7IH0KICAgICBJ
bnRSZWN0IHNlbGVjdGlvblJlY3QoKTsKIAotICAgIFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihJbmxpbmVCb3g6OnJl
bmRlcmVyKCkpOyB9CisgICAgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3coKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KExlZ2FjeUlubGluZUJveDo6cmVuZGVyZXIo
KSk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50TWFya3VwQm94KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20sIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgaW50IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0K
ICAgICB2b2lkIHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOwotICAgIElubGlu
ZUJveCogbWFya3VwQm94KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBtYXJrdXBCb3go
KSBjb25zdDsKIAogICAgIGJvb2wgbV9zaG91bGRQYWludE1hcmt1cEJveDsKICAgICBSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlIG1fc2VsZWN0aW9uU3RhdGUgeyBSZW5kZXJPYmplY3Q6Okhp
Z2hsaWdodFN0YXRlOjpOb25lIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRWxlbWVudEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVs
ZW1lbnRCb3guaAppbmRleCAxNGUxZmY1YmU2MWMuLmFlYTA1ZDk4N2MyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCkBAIC0yNSwyNCArMjUsMjQgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdh
Y3lJbmxpbmVCb3guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbmxpbmVFbGVt
ZW50Qm94IDogcHVibGljIElubGluZUJveCB7CitjbGFzcyBJbmxpbmVFbGVtZW50Qm94IDogcHVi
bGljIExlZ2FjeUlubGluZUJveCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVF
bGVtZW50Qm94KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmxpbmVFbGVtZW50Qm94KFJlbmRl
ckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikKLSAgICAgICAgOiBJbmxpbmVCb3gocmVuZGVyZXIp
CisgICAgICAgIDogTGVnYWN5SW5saW5lQm94KHJlbmRlcmVyKQogICAgIHsKICAgICB9CiAKLSAg
ICBJbmxpbmVFbGVtZW50Qm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEZsb2F0UG9pbnQgdG9w
TGVmdCwgZmxvYXQgbG9naWNhbFdpZHRoLCBib29sIGZpcnN0TGluZSwgYm9vbCBjb25zdHJ1Y3Rl
ZCwgYm9vbCBkaXJ0eSwgYm9vbCBleHRyYWN0ZWQsIGJvb2wgaXNIb3Jpem9udGFsLCBJbmxpbmVC
b3gqIG5leHQsIElubGluZUJveCogcHJldiwgSW5saW5lRmxvd0JveCogcGFyZW50KQotICAgICAg
ICA6IElubGluZUJveChyZW5kZXJlciwgdG9wTGVmdCwgbG9naWNhbFdpZHRoLCBmaXJzdExpbmUs
IGNvbnN0cnVjdGVkLCBkaXJ0eSwgZXh0cmFjdGVkLCBpc0hvcml6b250YWwsIG5leHQsIHByZXYs
IHBhcmVudCkKKyAgICBJbmxpbmVFbGVtZW50Qm94KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEZs
b2F0UG9pbnQgdG9wTGVmdCwgZmxvYXQgbG9naWNhbFdpZHRoLCBib29sIGZpcnN0TGluZSwgYm9v
bCBjb25zdHJ1Y3RlZCwgYm9vbCBkaXJ0eSwgYm9vbCBleHRyYWN0ZWQsIGJvb2wgaXNIb3Jpem9u
dGFsLCBMZWdhY3lJbmxpbmVCb3gqIG5leHQsIExlZ2FjeUlubGluZUJveCogcHJldiwgSW5saW5l
Rmxvd0JveCogcGFyZW50KQorICAgICAgICA6IExlZ2FjeUlubGluZUJveChyZW5kZXJlciwgdG9w
TGVmdCwgbG9naWNhbFdpZHRoLCBmaXJzdExpbmUsIGNvbnN0cnVjdGVkLCBkaXJ0eSwgZXh0cmFj
dGVkLCBpc0hvcml6b250YWwsIG5leHQsIHByZXYsIHBhcmVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KKyAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxS
ZW5kZXJCb3hNb2RlbE9iamVjdD4oTGVnYWN5SW5saW5lQm94OjpyZW5kZXJlcigpKTsgfQogCiAg
ICAgdm9pZCBkZWxldGVMaW5lKCkgZmluYWw7CiAgICAgdm9pZCBleHRyYWN0TGluZSgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDhlMzhi
Y2YwOWVkNC4uODk0NTZkMTI1MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElubGluZUZsb3dCb3gpOwogCi1zdHJ1Y3QgU2FtZVNp
emVBc0lubGluZUZsb3dCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKK3N0cnVjdCBTYW1lU2l6ZUFz
SW5saW5lRmxvd0JveCA6IHB1YmxpYyBMZWdhY3lJbmxpbmVCb3ggewogICAgIHVpbnQzMl90IGJp
dGZpZWxkcyA6IDIzOwogICAgIHZvaWQqIHBvaW50ZXJzWzVdOwogfTsKQEAgLTY3LDcgKzY3LDcg
QEAgdm9pZCBJbmxpbmVGbG93Qm94OjpzZXRIYXNCYWRDaGlsZExpc3QoKQogICAgIGFzc2VydE5v
dERlbGV0ZWQoKTsKICAgICBpZiAobV9oYXNCYWRDaGlsZExpc3QpCiAgICAgICAgIHJldHVybjsK
LSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0T25MaW5lKCkpCisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKICAgICAgICAgY2hpbGQtPnNl
dEhhc0JhZFBhcmVudCgpOwogICAgIG1faGFzQmFkQ2hpbGRMaXN0ID0gdHJ1ZTsKIH0KQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpzZXRIYXNCYWRDaGlsZExpc3QoKQogTGF5
b3V0VW5pdCBJbmxpbmVGbG93Qm94OjpnZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpCiB7CiAg
ICAgTGF5b3V0VW5pdCB0b3RhbFdpZHRoID0gbWFyZ2luQm9yZGVyUGFkZGluZ0xvZ2ljYWxMZWZ0
KCkgKyBtYXJnaW5Cb3JkZXJQYWRkaW5nTG9naWNhbFJpZ2h0KCk7Ci0gICAgZm9yIChJbmxpbmVC
b3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGlu
ZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoaXM8SW5saW5lRmxvd0JveD4o
KmNoaWxkKSkKICAgICAgICAgICAgIHRvdGFsV2lkdGggKz0gZG93bmNhc3Q8SW5saW5lRmxvd0Jv
eD4oKmNoaWxkKS5nZXRGbG93U3BhY2luZ0xvZ2ljYWxXaWR0aCgpOwogICAgIH0KQEAgLTkyLDcg
KzkyLDcgQEAgc3RhdGljIHZvaWQgc2V0SGFzVGV4dERlc2NlbmRhbnRzT25BbmNlc3RvcnMoSW5s
aW5lRmxvd0JveCogYm94KQogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xp
bmUoSW5saW5lQm94KiBjaGlsZCkgCit2b2lkIElubGluZUZsb3dCb3g6OmFkZFRvTGluZShMZWdh
Y3lJbmxpbmVCb3gqIGNoaWxkKSAKIHsKICAgICBBU1NFUlQoIWNoaWxkLT5wYXJlbnQoKSk7CiAg
ICAgQVNTRVJUKCFjaGlsZC0+bmV4dE9uTGluZSgpKTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OmFkZFRvTGluZShJbmxpbmVCb3gqIGNoaWxkKQogICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpyZW1vdmVDaGlsZChJbmxpbmVC
b3gqIGNoaWxkKQordm9pZCBJbmxpbmVGbG93Qm94OjpyZW1vdmVDaGlsZChMZWdhY3lJbmxpbmVC
b3gqIGNoaWxkKQogewogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtMjEzLDggKzIxMyw4
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cmVtb3ZlQ2hpbGQoSW5saW5lQm94KiBjaGlsZCkKIAog
dm9pZCBJbmxpbmVGbG93Qm94OjpkZWxldGVMaW5lKCkKIHsKLSAgICBJbmxpbmVCb3gqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOwotICAgIElubGluZUJveCogbmV4dCA9IG51bGxwdHI7CisgICAgTGVn
YWN5SW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKKyAgICBMZWdhY3lJbmxpbmVCb3gq
IG5leHQgPSBudWxscHRyOwogICAgIHdoaWxlIChjaGlsZCkgewogICAgICAgICBBU1NFUlQodGhp
cyA9PSBjaGlsZC0+cGFyZW50KCkpOwogICAgICAgICBuZXh0ID0gY2hpbGQtPm5leHRPbkxpbmUo
KTsKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmV4dHJhY3RMaW5lKCkK
IHsKICAgICBpZiAoIWV4dHJhY3RlZCgpKQogICAgICAgICBleHRyYWN0TGluZUJveEZyb21SZW5k
ZXJPYmplY3QoKTsKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpCisgICAgZm9yIChhdXRvKiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKICAgICAg
ICAgY2hpbGQtPmV4dHJhY3RMaW5lKCk7CiB9CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmF0dGFjaExpbmUoKQogewogICAgIGlmIChleHRyYWN0ZWQoKSkKICAgICAg
ICAgYXR0YWNoTGluZUJveFRvUmVuZGVyT2JqZWN0KCk7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKQor
ICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGNoaWxkLT5hdHRhY2hMaW5lKCk7CiB9CiAKQEAgLTI2
Niw4ICsyNjYsOCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmF0dGFjaExpbmVCb3hUb1JlbmRlck9i
amVjdCgpCiAKIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZs
b2F0IGR5KQogewotICAgIElubGluZUJveDo6YWRqdXN0UG9zaXRpb24oZHgsIGR5KTsKLSAgICBm
b3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0T25MaW5lKCkpCisgICAgTGVnYWN5SW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihkeCwg
ZHkpOworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGNoaWxkLT5hZGp1c3RQb3NpdGlvbihkeCwg
ZHkpOwogICAgIGlmIChtX292ZXJmbG93KQogICAgICAgICBtX292ZXJmbG93LT5tb3ZlKExheW91
dFVuaXQoZHgpLCBMYXlvdXRVbml0KGR5KSk7IC8vIEZJWE1FOiBSb3VuZGluZyBlcnJvciBoZXJl
IHNpbmNlIG92ZXJmbG93IHdhcyBwaXhlbCBzbmFwcGVkLCBidXQgbm9ib2R5IG90aGVyIHRoYW4g
bGlzdCBtYXJrZXJzIHBhc3NlcyBub24taW50ZWdyYWwgdmFsdWVzIGhlcmUuCkBAIC0zNjMsNyAr
MzYzLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0JveGVz
KGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHkKICAgICBzZXRFZGdlcyhpbmNsdWRlTGVm
dEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOwogCiAgICAgLy8gUmVjdXIgaW50byBvdXIgY2hpbGRy
ZW4uCi0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICBp
ZiAoaXM8SW5saW5lRmxvd0JveD4oKmNoaWxkKSkKICAgICAgICAgICAgIGRvd25jYXN0PElubGlu
ZUZsb3dCb3g+KCpjaGlsZCkuZGV0ZXJtaW5lU3BhY2luZ0ZvckZsb3dCb3hlcyhsYXN0TGluZSwg
aXNMb2dpY2FsbHlMYXN0UnVuV3JhcHBlZCwgbG9naWNhbGx5TGFzdFJ1blJlbmRlcmVyKTsKICAg
ICB9CkBAIC0zODcsMTAgKzM4NywxMCBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVz
SW5JbmxpbmVEaXJlY3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzVwogICAgIHJl
dHVybiBsb2dpY2FsTGVmdDsKIH0KIAotZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5n
ZUluSW5saW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW5lQm94KiBsYXN0
Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYg
bWF4TG9naWNhbFJpZ2h0LCBib29sJiBuZWVkc1dvcmRTcGFjaW5nKQorZmxvYXQgSW5saW5lRmxv
d0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKExlZ2FjeUlubGluZUJveCogZmly
c3RDaGlsZCwgTGVnYWN5SW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0JiBsb2dpY2FsTGVmdCwg
ZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJpZ2h0LCBib29sJiBuZWVk
c1dvcmRTcGFjaW5nKQogewogICAgIGZsb2F0IHRvdGFsRXhwYW5zaW9uID0gMDsKLSAgICBmb3Ig
KElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkOyBjaGlsZCAmJiBjaGlsZCAhPSBsYXN0Q2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQg
PSBmaXJzdENoaWxkOyBjaGlsZCAmJiBjaGlsZCAhPSBsYXN0Q2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGQtPnJlbmRl
cmVyKCkpKSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4
dEJveD4oKmNoaWxkKTsKICAgICAgICAgICAgIFJlbmRlclRleHQmIHJlbmRlclRleHQgPSB0ZXh0
Qm94LnJlbmRlcmVyKCk7CkBAIC00NjAsNyArNDYwLDcgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpy
ZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUoY29uc3QgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm8KICAgICAgICAgfHwgbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5oYXNW
ZXJ0aWNhbEdseXBocygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGZvciAoSW5saW5l
Qm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxp
bmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigp
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0
aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAgICAgICAgIApA
QCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBib29sIHZlcnRpY2FsQWxpZ25BcHBsaWVzKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiAKIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0TWF4
QXNjZW50QW5kRGVzY2VudChMYXlvdXRVbml0JiBtYXhBc2NlbnQsIExheW91dFVuaXQmIG1heERl
c2NlbnQsIExheW91dFVuaXQgbWF4UG9zaXRpb25Ub3AsIExheW91dFVuaXQgbWF4UG9zaXRpb25C
b3R0b20pCiB7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAg
ICAgICAvLyBUaGUgY29tcHV0ZWQgbGluZWhlaWdodCBuZWVkcyB0byBiZSBleHRlbmRlZCBmb3Ig
dGhlCiAgICAgICAgIC8vIHBvc2l0aW9uZWQgZWxlbWVudHMKICAgICAgICAgaWYgKGNoaWxkLT5y
ZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtNTcxLDggKzU3MSw4IEBAIHZv
aWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZUxvZ2ljYWxCb3hIZWlnaHRzKFJvb3RJbmxpbmVCb3gm
IHJvb3RCb3gsIExheW91dFVuaXQmCiAgICAgaWYgKCFjaGVja0NoaWxkcmVuKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBWZWN0b3I8SW5saW5lQm94Kj4gbWF4QXNjZW50SW5saW5lQm94TGlzdDsK
LSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gbWF4
QXNjZW50SW5saW5lQm94TGlzdDsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25z
LgogICAgICAgICAKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBsYWNl
Qm94ZXNJbkJsb2NrRGlyZWN0aW9uKExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IG1heEhlaQog
ICAgICAgICAgICAgYWRqdXN0bWVudEZvckNoaWxkcmVuV2l0aFNhbWVMaW5lSGVpZ2h0QW5kQmFz
ZWxpbmUgKz0gcmVuZGVyZXIoKS5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CiAgICAgfQogCi0g
ICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoY2hp
bGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9u
cy4KIApAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0lu
QmxvY2tEaXJlY3Rpb24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiAKIHZvaWQg
SW5saW5lRmxvd0JveDo6bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9h
dCYgbWF4TG9naWNhbEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRl
cmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uKSBjb25zdAogewot
ICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGNo
aWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29u
dGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlv
bnMuCiAgICAgICAgIApAQCAtODA1LDcgKzgwNSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6bWF4
TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRv
CiAKIHZvaWQgSW5saW5lRmxvd0JveDo6bWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGlu
ZShmbG9hdCYgbWluTG9naWNhbFRvcCwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJl
bmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uKSBjb25zdAog
ewotICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYg
KGNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
Y29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxh
dGlvbnMuCiAgICAgICAgIApAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
ZmxpcExpbmVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluCiAgICAgLy8gRmxpcCB0aGUgYm94IG9uIHRoZSBsaW5lIHN1Y2ggdGhhdCB0aGUgdG9wIGlz
IG5vdyByZWxhdGl2ZSB0byB0aGUgbGluZUJvdHRvbSBpbnN0ZWFkIG9mIHRoZSBsaW5lVG9wLgog
ICAgIHNldExvZ2ljYWxUb3AobGluZUJvdHRvbSAtIChsb2dpY2FsVG9wKCkgLSBsaW5lVG9wKSAt
IGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgCi0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRP
bkxpbmUoKSkgewogICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRl
cnMgYXJlbid0IGFmZmVjdGVkIGhlcmUuCiAgICAgICAgIApAQCAtOTg2LDcgKzk4Niw3IEBAIGlu
bGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZE91dGxpbmVWaXN1YWxPdmVyZmxvdyhMYXlvdXRS
ZWN0JiBsb2dpY2FsVmlzdWFsT3ZlCiAgICAgICAgIGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93
IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93
IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKIH0KIAotaW5saW5lIHZvaWQgSW5saW5lRmxv
d0JveDo6YWRkUmVwbGFjZWRDaGlsZE92ZXJmbG93KGNvbnN0IElubGluZUJveCogaW5saW5lQm94
LCBMYXlvdXRSZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3csIExheW91dFJlY3QmIGxvZ2ljYWxW
aXN1YWxPdmVyZmxvdykKK2lubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hp
bGRPdmVyZmxvdyhjb25zdCBMZWdhY3lJbmxpbmVCb3gqIGlubGluZUJveCwgTGF5b3V0UmVjdCYg
bG9naWNhbExheW91dE92ZXJmbG93LCBMYXlvdXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cp
CiB7CiAgICAgY29uc3QgUmVuZGVyQm94JiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGlubGlu
ZUJveC0+cmVuZGVyZXIoKSk7CiAgICAgCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OmNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSwgRwogICAgIGFkZE91dGxpbmVWaXN1YWxPdmVyZmxvdyhsb2dpY2FsVmlzdWFs
T3ZlcmZsb3cpOwogICAgIGFkZEJvcmRlck91dHNldFZpc3VhbE92ZXJmbG93KGxvZ2ljYWxWaXN1
YWxPdmVyZmxvdyk7CiAKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7
CiAgICAgICAgIGlmIChjaGlsZC0+cmVuZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBh
ZmZlY3QgY2FsY3VsYXRpb25zLgogCkBAIC0xMDk5LDcgKzEwOTksNyBAQCBib29sIElubGluZUZs
b3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZQogICAgIC8vIENoZWNrIGNoaWxkcmVuIGZpcnN0LgogICAgIC8vIFdlIG5lZWQg
dG8gYWNjb3VudCBmb3IgY3VsbGVkIGlubGluZSBwYXJlbnRzIG9mIHRoZSBoaXQtdGVzdGVkIG5v
ZGVzLCBzbyB0aGF0IHRoZXkgbWF5IGFsc28gZ2V0IGluY2x1ZGVkIGluIGFyZWEtYmFzZWQgaGl0
LXRlc3RzLgogICAgIFJlbmRlckVsZW1lbnQqIGN1bGxlZFBhcmVudCA9IG51bGxwdHI7Ci0gICAg
Zm9yIChJbmxpbmVCb3gqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5wcmV2aW91c09uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGxhc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNPbkxpbmUoKSkgewogICAgICAgICBpZiAo
aXM8UmVuZGVyVGV4dD4oY2hpbGQtPnJlbmRlcmVyKCkpIHx8ICFjaGlsZC0+Ym94TW9kZWxPYmpl
Y3QoKS0+aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgUmVuZGVyRWxlbWVu
dCogbmV3UGFyZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIC8vIEN1bGxlZCBwYXJlbnRzIGFy
ZSBvbmx5IHJlbGV2YW50IGZvciBhcmVhLWJhc2VkIGhpdC10ZXN0cywgc28gaWdub3JlIGl0IGlu
IHBvaW50LWJhc2VkIG9uZXMuCkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIElubGluZUZsb3dC
b3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsCiAgICAgCiAgICAgLy8gUGFpbnQgb3VyIGNoaWxkcmVuLgogICAgIGlmIChwYWludFBo
YXNlICE9IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lKSB7Ci0gICAgICAgIGZvciAoSW5saW5lQm94
KiBjdXJyID0gZmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7
CisgICAgICAgIGZvciAoYXV0byogY3VyciA9IGZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNU
ZXh0KCkgfHwgIWN1cnItPmJveE1vZGVsT2JqZWN0KCktPmhhc1NlbGZQYWludGluZ0xheWVyKCkp
CiAgICAgICAgICAgICAgICAgY3Vyci0+cGFpbnQoY2hpbGRJbmZvLCBwYWludE9mZnNldCwgbGlu
ZVRvcCwgbGluZUJvdHRvbSk7CiAgICAgICAgIH0KQEAgLTE1MjAsMTggKzE1MjAsMTggQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFu
c3BhcmVuY3lMYXllcigpOwogfQogCi1JbmxpbmVCb3gqIElubGluZUZsb3dCb3g6OmZpcnN0TGVh
ZkRlc2NlbmRhbnQoKSBjb25zdAorTGVnYWN5SW5saW5lQm94KiBJbmxpbmVGbG93Qm94OjpmaXJz
dExlYWZEZXNjZW5kYW50KCkgY29uc3QKIHsKLSAgICBJbmxpbmVCb3gqIGxlYWYgPSBudWxscHRy
OwotICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQgJiYgIWxl
YWY7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKKyAgICBMZWdhY3lJbmxpbmVCb3gqIGxl
YWYgPSBudWxscHRyOworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
ICYmICFsZWFmOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGxlYWYgPSBj
aGlsZC0+aXNMZWFmKCkgPyBjaGlsZCA6IGRvd25jYXN0PElubGluZUZsb3dCb3g+KCpjaGlsZCku
Zmlyc3RMZWFmRGVzY2VuZGFudCgpOwogICAgIHJldHVybiBsZWFmOwogfQogCi1JbmxpbmVCb3gq
IElubGluZUZsb3dCb3g6Omxhc3RMZWFmRGVzY2VuZGFudCgpIGNvbnN0CitMZWdhY3lJbmxpbmVC
b3gqIElubGluZUZsb3dCb3g6Omxhc3RMZWFmRGVzY2VuZGFudCgpIGNvbnN0CiB7Ci0gICAgSW5s
aW5lQm94KiBsZWFmID0gbnVsbHB0cjsKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBsYXN0
Q2hpbGQoKTsgY2hpbGQgJiYgIWxlYWY7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzT25MaW5lKCkp
CisgICAgTGVnYWN5SW5saW5lQm94KiBsZWFmID0gbnVsbHB0cjsKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gbGFzdENoaWxkKCk7IGNoaWxkICYmICFsZWFmOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91
c09uTGluZSgpKQogICAgICAgICBsZWFmID0gY2hpbGQtPmlzTGVhZigpID8gY2hpbGQgOiBkb3du
Y2FzdDxJbmxpbmVGbG93Qm94PigqY2hpbGQpLmxhc3RMZWFmRGVzY2VuZGFudCgpOwogICAgIHJl
dHVybiBsZWFmOwogfQpAQCAtMTU0Myw3ICsxNTQzLDcgQEAgUmVuZGVyT2JqZWN0OjpIaWdobGln
aHRTdGF0ZSBJbmxpbmVGbG93Qm94OjpzZWxlY3Rpb25TdGF0ZSgpCiAKIGJvb2wgSW5saW5lRmxv
d0JveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50
IGVsbGlwc2lzV2lkdGgpIGNvbnN0CiB7Ci0gICAgZm9yIChJbmxpbmVCb3ggKmJveCA9IGZpcnN0
Q2hpbGQoKTsgYm94OyBib3ggPSBib3gtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byog
Ym94ID0gZmlyc3RDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKSB7CiAgICAg
ICAgIGlmICghYm94LT5jYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGx0ciwgYmxvY2tFZGdlLCBlbGxp
cHNpc1dpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNTU3LDcg
KzE1NTcsNyBAQCBmbG9hdCBJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRy
LCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9jawogICAgIC8vIGJveCBjb250YWluaW5n
IHRoZSBlbGxpcHNpcy4gIEFsbCBib3hlcyBhZnRlciB0aGF0IG9uZSBpbiB0aGUgZmxvdyBhcmUg
aGlkZGVuLgogICAgIC8vIElmIG91ciBmbG93IGlzIGx0ciB0aGVuIGl0ZXJhdGUgb3ZlciB0aGUg
Ym94ZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBvdGhlcndpc2UgaXRlcmF0ZQogICAgIC8vIGZyb20g
cmlnaHQgdG8gbGVmdC4gVmFyeWluZyB0aGUgb3JkZXIgYWxsb3dzIHVzIHRvIGNvcnJlY3RseSBo
aWRlIHRoZSBib3hlcyBmb2xsb3dpbmcgdGhlIGVsbGlwc2lzLgotICAgIElubGluZUJveCogYm94
ID0gbHRyID8gZmlyc3RDaGlsZCgpIDogbGFzdENoaWxkKCk7CisgICAgTGVnYWN5SW5saW5lQm94
KiBib3ggPSBsdHIgPyBmaXJzdENoaWxkKCkgOiBsYXN0Q2hpbGQoKTsKIAogICAgIC8vIE5PVEU6
IHRoZXNlIHdpbGwgY3Jvc3MgYWZ0ZXIgZm91bmRCb3ggPSB0cnVlLgogICAgIGludCB2aXNpYmxl
TGVmdEVkZ2UgPSBibG9ja0xlZnRFZGdlOwpAQCAtMTU4MiwxNCArMTU4MiwxNCBAQCBmbG9hdCBJ
bmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRF
ZGdlLCBmbG9hdCBibG9jawogCiB2b2lkIElubGluZUZsb3dCb3g6OmNsZWFyVHJ1bmNhdGlvbigp
CiB7Ci0gICAgZm9yIChJbmxpbmVCb3ggKmJveCA9IGZpcnN0Q2hpbGQoKTsgYm94OyBib3ggPSBi
b3gtPm5leHRPbkxpbmUoKSkKKyAgICBmb3IgKGF1dG8qIGJveCA9IGZpcnN0Q2hpbGQoKTsgYm94
OyBib3ggPSBib3gtPm5leHRPbkxpbmUoKSkKICAgICAgICAgYm94LT5jbGVhclRydW5jYXRpb24o
KTsKIH0KIAogTGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25B
ZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3dlZFBvc2l0aW9uKSBjb25zdAogewogICAgIExheW91
dFVuaXQgcmVzdWx0OwotICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsK
ICAgICAgICAgaWYgKGNoaWxkLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQog
ICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFm
ZmVjdCBjYWxjdWxhdGlvbnMuCiAgICAgICAgIApAQCAtMTYzNyw3ICsxNjM3LDcgQEAgTGF5b3V0
VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KExheW91
dFVuaXQgYWxsb3dlZFBvc2kKIExheW91dFVuaXQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVy
QW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zaXRpb24pIGNvbnN0CiB7
CiAgICAgTGF5b3V0VW5pdCByZXN1bHQ7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRP
bkxpbmUoKSkgewogICAgICAgICBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRl
cnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KIApAQCAtMTY4Miw5ICsxNjgyLDkgQEAgTGF5
b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChM
YXlvdXRVbml0IGFsbG93ZWRQb3MKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIElubGlu
ZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihWZWN0b3I8SW5saW5lQm94
Kj4mIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLCBDdXN0b21JbmxpbmVCb3hSYW5nZVJldmVyc2Ug
Y3VzdG9tUmV2ZXJzZUltcGxlbWVudGF0aW9uLCB2b2lkKiB1c2VyRGF0YSkgY29uc3QKK3ZvaWQg
SW5saW5lRmxvd0JveDo6Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKFZlY3RvcjxMZWdh
Y3lJbmxpbmVCb3gqPiYgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIsIEN1c3RvbUlubGluZUJveFJh
bmdlUmV2ZXJzZSBjdXN0b21SZXZlcnNlSW1wbGVtZW50YXRpb24sIHZvaWQqIHVzZXJEYXRhKSBj
b25zdAogewotICAgIElubGluZUJveCogbGVhZiA9IGZpcnN0TGVhZkRlc2NlbmRhbnQoKTsKKyAg
ICBMZWdhY3lJbmxpbmVCb3gqIGxlYWYgPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7CiAKICAgICAv
LyBGSVhNRTogVGhlIHJlb3JkZXJpbmcgY29kZSBpcyBhIGNvcHkgb2YgcGFydHMgZnJvbSBCaWRp
UmVzb2x2ZXI6OmNyZWF0ZUJpZGlSdW5zRm9yTGluZSwgb3BlcmF0aW5nIGRpcmVjdGx5IG9uIElu
bGluZUJveGVzLCBpbnN0ZWFkIG9mIEJpZGlSdW5zLgogICAgIC8vIEludmVzdGlnYXRlIG9uIGhv
dyB0aGlzIGNvZGUgY291bGQgcG9zc2libHkgYmUgc2hhcmVkLgpAQCAtMTcwOSwyMiArMTcwOSwy
MiBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihW
ZWN0b3I8SW5saW5lQm94Kj4mIGxlYWZCb3hlcwogICAgIGlmICghKG1pbkxldmVsICUgMikpCiAg
ICAgICAgICsrbWluTGV2ZWw7CiAKLSAgICBWZWN0b3I8SW5saW5lQm94Kj46Oml0ZXJhdG9yIGVu
ZCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLmVuZCgpOworICAgIFZlY3RvcjxMZWdhY3lJbmxp
bmVCb3gqPjo6aXRlcmF0b3IgZW5kID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuZW5kKCk7CiAg
ICAgd2hpbGUgKG1pbkxldmVsIDw9IG1heExldmVsKSB7Ci0gICAgICAgIFZlY3RvcjxJbmxpbmVC
b3gqPjo6aXRlcmF0b3IgaXQgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5iZWdpbigpOworICAg
ICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9yIGl0ID0gbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXIuYmVnaW4oKTsKICAgICAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAg
ICAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICAgICAgICAgIGlmICgoKml0KS0+Ymlk
aUxldmVsKCkgPj0gbWluTGV2ZWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBWZWN0b3I8SW5saW5l
Qm94Kj46Oml0ZXJhdG9yIGZpcnN0ID0gaXQ7CisgICAgICAgICAgICBWZWN0b3I8TGVnYWN5SW5s
aW5lQm94Kj46Oml0ZXJhdG9yIGZpcnN0ID0gaXQ7CiAgICAgICAgICAgICB3aGlsZSAoaXQgIT0g
ZW5kKSB7CiAgICAgICAgICAgICAgICAgaWYgKCgqaXQpLT5iaWRpTGV2ZWwoKSA8IG1pbkxldmVs
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICArK2l0OwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgVmVjdG9yPElubGluZUJveCo+OjppdGVyYXRvciBsYXN0
ID0gaXQ7CisgICAgICAgICAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9yIGxh
c3QgPSBpdDsKICAgICAgICAgICAgIGlmIChjdXN0b21SZXZlcnNlSW1wbGVtZW50YXRpb24pIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQodXNlckRhdGEpOwogICAgICAgICAgICAgICAgICgqY3Vz
dG9tUmV2ZXJzZUltcGxlbWVudGF0aW9uKSh1c2VyRGF0YSwgZmlyc3QsIGxhc3QpOwpAQCAtMTc1
NiwxMCArMTc1NiwxMCBAQCBjb25zdCBjaGFyKiBJbmxpbmVGbG93Qm94Ojpib3hOYW1lKCkgY29u
c3QKICAgICByZXR1cm4gIklubGluZUZsb3dCb3giOwogfQogCi12b2lkIElubGluZUZsb3dCb3g6
Om91dHB1dExpbmVUcmVlQW5kTWFyayhXVEY6OlRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgSW5s
aW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgSW5saW5lRmxvd0JveDo6
b3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMZWdh
Y3lJbmxpbmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAogewotICAgIElubGluZUJv
eDo6b3V0cHV0TGluZVRyZWVBbmRNYXJrKHN0cmVhbSwgbWFya2VkQm94LCBkZXB0aCk7Ci0gICAg
Zm9yIChjb25zdCBJbmxpbmVCb3gqIGJveCA9IGZpcnN0Q2hpbGQoKTsgYm94OyBib3ggPSBib3gt
Pm5leHRPbkxpbmUoKSkKKyAgICBMZWdhY3lJbmxpbmVCb3g6Om91dHB1dExpbmVUcmVlQW5kTWFy
ayhzdHJlYW0sIG1hcmtlZEJveCwgZGVwdGgpOworICAgIGZvciAoY29uc3QgTGVnYWN5SW5saW5l
Qm94KiBib3ggPSBmaXJzdENoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpCiAg
ICAgICAgIGJveC0+b3V0cHV0TGluZVRyZWVBbmRNYXJrKHN0cmVhbSwgbWFya2VkQm94LCBkZXB0
aCArIDEpOwogfQogCkBAIC0xNzcyLDggKzE3NzIsOCBAQCB2b2lkIElubGluZUZsb3dCb3g6OmNo
ZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIGFzc2VydE5vdERlbGV0ZWQoKTsKICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9oYXNCYWRDaGlsZExpc3QpOwogI2lmZGVm
IENIRUNLX0NPTlNJU1RFTkNZCi0gICAgY29uc3QgSW5saW5lQm94KiBwcmV2aW91c0NoaWxkID0g
bnVsbHB0cjsKLSAgICBmb3IgKGNvbnN0IElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBjb25zdCBMZWdhY3lJ
bmxpbmVCb3gqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyOworICAgIGZvciAoY29uc3QgTGVnYWN5
SW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRPbkxpbmUoKSkgewogICAgICAgICBBU1NFUlQoY2hpbGQtPnBhcmVudCgpID09IHRoaXMpOwog
ICAgICAgICBBU1NFUlQoY2hpbGQtPnByZXZpb3VzT25MaW5lKCkgPT0gcHJldmlvdXNDaGlsZCk7
CiAgICAgICAgIHByZXZpb3VzQ2hpbGQgPSBjaGlsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lRmxvd0JveC5oCmluZGV4IDc1ZDMxNzgzNTk0MC4uYzI1ZTkwNTBlZTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTIwLDcgKzIwLDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPdmVyZmxvdy5oIgogI2luY2x1ZGUgIlNoYWRv
d0RhdGEuaCIKIApAQCAtMzcsMTEgKzM3LDExIEBAIHN0cnVjdCBHbHlwaE92ZXJmbG93OwogCiB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgSW5saW5lVGV4dEJveCosIHN0ZDo6cGFpcjxWZWN0b3I8Y29u
c3QgRm9udCo+LCBHbHlwaE92ZXJmbG93Pj4gR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNN
YXA7CiAKLWNsYXNzIElubGluZUZsb3dCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKK2NsYXNzIElu
bGluZUZsb3dCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKElubGluZUZsb3dCb3gpOwogcHVibGljOgogICAgIGV4cGxpY2l0IElubGluZUZs
b3dCb3goUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKQotICAgICAgICA6IElubGluZUJv
eChyZW5kZXJlcikKKyAgICAgICAgOiBMZWdhY3lJbmxpbmVCb3gocmVuZGVyZXIpCiAgICAgICAg
ICwgbV9pbmNsdWRlTG9naWNhbExlZnRFZGdlKGZhbHNlKQogICAgICAgICAsIG1faW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UoZmFsc2UpCiAgICAgICAgICwgbV9oYXNIYXJkTGluZWJyZWFrKGZhbHNl
KQpAQCAtNzIsMTEgKzcyLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRSRUVf
REVCVUdHSU5HKQotICAgIHZvaWQgb3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgb3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IExlZ2FjeUlubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGNvbnN0IGNoYXIqIGJveE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCi0gICAg
UmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyQm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KKyAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSZW5k
ZXJCb3hNb2RlbE9iamVjdD4oTGVnYWN5SW5saW5lQm94OjpyZW5kZXJlcigpKTsgfQogICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUoKSBjb25zdCB7IHJldHVybiBpc0ZpcnN0TGluZSgp
ID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOyB9CiAK
ICAgICBJbmxpbmVGbG93Qm94KiBwcmV2TGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldkxp
bmVCb3g7IH0KQEAgLTg0LDI1ICs4NCwyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXh0TGlu
ZUJveChJbmxpbmVGbG93Qm94KiBuKSB7IG1fbmV4dExpbmVCb3ggPSBuOyB9CiAgICAgdm9pZCBz
ZXRQcmV2aW91c0xpbmVCb3goSW5saW5lRmxvd0JveCogcCkgeyBtX3ByZXZMaW5lQm94ID0gcDsg
fQogCi0gICAgSW5saW5lQm94KiBmaXJzdENoaWxkKCkgY29uc3QgeyBjaGVja0NvbnNpc3RlbmN5
KCk7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KLSAgICBJbmxpbmVCb3gqIGxhc3RDaGlsZCgpIGNv
bnN0IHsgY2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KKyAgICBMZWdh
Y3lJbmxpbmVCb3gqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IGNoZWNrQ29uc2lzdGVuY3koKTsgcmV0
dXJuIG1fZmlyc3RDaGlsZDsgfQorICAgIExlZ2FjeUlubGluZUJveCogbGFzdENoaWxkKCkgY29u
c3QgeyBjaGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiBtX2xhc3RDaGlsZDsgfQogCiAgICAgYm9v
bCBpc0xlYWYoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIAotICAgIElubGlu
ZUJveCogZmlyc3RMZWFmRGVzY2VuZGFudCgpIGNvbnN0OwotICAgIElubGluZUJveCogbGFzdExl
YWZEZXNjZW5kYW50KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdExlYWZEZXNj
ZW5kYW50KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0TGVhZkRlc2NlbmRhbnQo
KSBjb25zdDsKIAotICAgIHR5cGVkZWYgdm9pZCAoKkN1c3RvbUlubGluZUJveFJhbmdlUmV2ZXJz
ZSkodm9pZCogdXNlckRhdGEsIFZlY3RvcjxJbmxpbmVCb3gqPjo6aXRlcmF0b3IgZmlyc3QsIFZl
Y3RvcjxJbmxpbmVCb3gqPjo6aXRlcmF0b3IgbGFzdCk7Ci0gICAgdm9pZCBjb2xsZWN0TGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXIoVmVjdG9yPElubGluZUJveCo+JiwgQ3VzdG9tSW5saW5lQm94UmFu
Z2VSZXZlcnNlIGN1c3RvbVJldmVyc2VJbXBsZW1lbnRhdGlvbiA9IG51bGxwdHIsIHZvaWQqIHVz
ZXJEYXRhID0gbnVsbHB0cikgY29uc3Q7CisgICAgdHlwZWRlZiB2b2lkICgqQ3VzdG9tSW5saW5l
Qm94UmFuZ2VSZXZlcnNlKSh2b2lkKiB1c2VyRGF0YSwgVmVjdG9yPExlZ2FjeUlubGluZUJveCo+
OjppdGVyYXRvciBmaXJzdCwgVmVjdG9yPExlZ2FjeUlubGluZUJveCo+OjppdGVyYXRvciBsYXN0
KTsKKyAgICB2b2lkIGNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihWZWN0b3I8TGVnYWN5
SW5saW5lQm94Kj4mLCBDdXN0b21JbmxpbmVCb3hSYW5nZVJldmVyc2UgY3VzdG9tUmV2ZXJzZUlt
cGxlbWVudGF0aW9uID0gbnVsbHB0ciwgdm9pZCogdXNlckRhdGEgPSBudWxscHRyKSBjb25zdDsK
IAogICAgIHZvaWQgc2V0Q29uc3RydWN0ZWQoKSBmaW5hbAogICAgIHsKLSAgICAgICAgSW5saW5l
Qm94OjpzZXRDb25zdHJ1Y3RlZCgpOwotICAgICAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpCisgICAgICAg
IExlZ2FjeUlubGluZUJveDo6c2V0Q29uc3RydWN0ZWQoKTsKKyAgICAgICAgZm9yIChhdXRvKiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkK
ICAgICAgICAgICAgIGNoaWxkLT5zZXRDb25zdHJ1Y3RlZCgpOwogICAgIH0KIAotICAgIHZvaWQg
YWRkVG9MaW5lKElubGluZUJveCogY2hpbGQpOworICAgIHZvaWQgYWRkVG9MaW5lKExlZ2FjeUlu
bGluZUJveCogY2hpbGQpOwogICAgIHZvaWQgZGVsZXRlTGluZSgpIGZpbmFsOwogICAgIHZvaWQg
ZXh0cmFjdExpbmUoKSBmaW5hbDsKICAgICB2b2lkIGF0dGFjaExpbmUoKSBmaW5hbDsKQEAgLTE3
Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRlcm1pbmVTcGFjaW5nRm9yRmxvd0Jv
eGVzKGJvb2wgbGFzdExpbmUsIGJvb2wgaXNMb2dpY2FsbHlMYXN0UnVuV3JhcHBlZCwgUmVuZGVy
T2JqZWN0KiBsb2dpY2FsbHlMYXN0UnVuUmVuZGVyZXIpOwogICAgIExheW91dFVuaXQgZ2V0Rmxv
d1NwYWNpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBmbG9hdCBwbGFjZUJveGVzSW5JbmxpbmVEaXJl
Y3Rpb24oZmxvYXQgbG9naWNhbExlZnQsIGJvb2wmIG5lZWRzV29yZFNwYWNpbmcpOwotICAgIGZs
b2F0IHBsYWNlQm94UmFuZ2VJbklubGluZURpcmVjdGlvbihJbmxpbmVCb3gqIGZpcnN0Q2hpbGQs
IElubGluZUJveCogbGFzdENoaWxkLCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBtaW5Mb2dp
Y2FsTGVmdCwgZmxvYXQmIG1heExvZ2ljYWxSaWdodCwgYm9vbCYgbmVlZHNXb3JkU3BhY2luZyk7
CisgICAgZmxvYXQgcGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKExlZ2FjeUlubGluZUJv
eCogZmlyc3RDaGlsZCwgTGVnYWN5SW5saW5lQm94KiBsYXN0Q2hpbGQsIGZsb2F0JiBsb2dpY2Fs
TGVmdCwgZmxvYXQmIG1pbkxvZ2ljYWxMZWZ0LCBmbG9hdCYgbWF4TG9naWNhbFJpZ2h0LCBib29s
JiBuZWVkc1dvcmRTcGFjaW5nKTsKICAgICB2b2lkIGJlZ2luUGxhY2luZ0JveFJhbmdlc0luSW5s
aW5lRGlyZWN0aW9uKGZsb2F0IGxvZ2ljYWxMZWZ0KSB7IHNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxM
ZWZ0KTsgfQogICAgIHZvaWQgZW5kUGxhY2luZ0JveFJhbmdlc0luSW5saW5lRGlyZWN0aW9uKGZs
b2F0IGxvZ2ljYWxMZWZ0LCBmbG9hdCBsb2dpY2FsUmlnaHQsIGZsb2F0IG1pbkxvZ2ljYWxMZWZ0
LCBmbG9hdCBtYXhMb2dpY2FsUmlnaHQpCiAgICAgewpAQCAtMjAwLDcgKzIwMCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY29tcHV0ZU92ZXJmbG93KExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYpOwogICAg
IAotICAgIHZvaWQgcmVtb3ZlQ2hpbGQoSW5saW5lQm94KiBjaGlsZCk7CisgICAgdm9pZCByZW1v
dmVDaGlsZChMZWdhY3lJbmxpbmVCb3gqIGNoaWxkKTsKIAogICAgIFJlbmRlck9iamVjdDo6SGln
aGxpZ2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBvdmVycmlkZTsKIApAQCAtMzA2LDcgKzMwNiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRCb3JkZXJPdXRzZXRWaXN1YWxPdmVyZmxvdyhMYXlv
dXRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgYWRkVGV4dEJveFZpc3Vh
bE92ZXJmbG93KElubGluZVRleHRCb3gmLCBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cCYsIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiAgICAgdm9pZCBhZGRPdXRs
aW5lVmlzdWFsT3ZlcmZsb3coTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE92ZXJmbG93KTsKLSAg
ICB2b2lkIGFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxvdyhjb25zdCBJbmxpbmVCb3gqLCBMYXlvdXRS
ZWN0JiBsb2dpY2FsTGF5b3V0T3ZlcmZsb3csIExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVy
Zmxvdyk7CisgICAgdm9pZCBhZGRSZXBsYWNlZENoaWxkT3ZlcmZsb3coY29uc3QgTGVnYWN5SW5s
aW5lQm94KiwgTGF5b3V0UmVjdCYgbG9naWNhbExheW91dE92ZXJmbG93LCBMYXlvdXRSZWN0JiBs
b2dpY2FsVmlzdWFsT3ZlcmZsb3cpOwogICAgIHZvaWQgY29uc3RyYWluVG9MaW5lVG9wQW5kQm90
dG9tSWZOZWVkZWQoTGF5b3V0UmVjdCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMzQzLDggKzM0
Myw4IEBAIHByaXZhdGU6CiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFJlbmRlck92ZXJmbG93PiBt
X292ZXJmbG93OwogCi0gICAgSW5saW5lQm94KiBtX2ZpcnN0Q2hpbGQ7Ci0gICAgSW5saW5lQm94
KiBtX2xhc3RDaGlsZDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIG1fZmlyc3RDaGlsZDsKKyAgICBM
ZWdhY3lJbmxpbmVCb3gqIG1fbGFzdENoaWxkOwogICAgIAogICAgIElubGluZUZsb3dCb3gqIG1f
cHJldkxpbmVCb3g7IC8vIFRoZSBwcmV2aW91cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRl
ck9iamVjdAogICAgIElubGluZUZsb3dCb3gqIG1fbmV4dExpbmVCb3g7IC8vIFRoZSBuZXh0IGJv
eCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggOGU5ODc2YmIzYzQ1Li5jOGJhZDk2OGQ3ZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW5saW5lVGV4dEJveCk7CiAKLXN0cnVjdCBTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCA6IHB1Ymxp
YyBJbmxpbmVCb3ggeworc3RydWN0IFNhbWVTaXplQXNJbmxpbmVUZXh0Qm94IDogcHVibGljIExl
Z2FjeUlubGluZUJveCB7CiAgICAgdW5zaWduZWQgdmFyaWFibGVzWzFdOwogICAgIHVuc2lnbmVk
IHNob3J0IHZhcmlhYmxlczJbMl07CiAgICAgdm9pZCogcG9pbnRlcnNbMl07CkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjptYXJrRGlydHkoYm9vbCBkaXJ0eSkKICAgICAg
ICAgbV9sZW4gPSAwOwogICAgICAgICBtX3N0YXJ0ID0gMDsKICAgICB9Ci0gICAgSW5saW5lQm94
OjptYXJrRGlydHkoZGlydHkpOworICAgIExlZ2FjeUlubGluZUJveDo6bWFya0RpcnR5KGRpcnR5
KTsKIH0KIAogTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94Ojpsb2dpY2FsT3ZlcmZsb3dSZWN0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IGE0ZWVh
ODllMzcwYi4uMDk3ZTgwZjQ1ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJ
bmxpbmVCb3guaCIKKyNpbmNsdWRlICJMZWdhY3lJbmxpbmVCb3guaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogCkBAIC0zOSwxOCArMzksMTggQEAgc3Ry
dWN0IFRleHRQYWludFN0eWxlOwogY29uc3QgdW5zaWduZWQgc2hvcnQgY05vVHJ1bmNhdGlvbiA9
IFVTSFJUX01BWDsKIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNGdWxsVHJ1bmNhdGlvbiA9IFVTSFJU
X01BWCAtIDE7CiAKLWNsYXNzIElubGluZVRleHRCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKK2Ns
YXNzIElubGluZVRleHRCb3ggOiBwdWJsaWMgTGVnYWN5SW5saW5lQm94IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKElubGluZVRleHRCb3gpOwogcHVibGljOgogICAgIGV4cGxpY2l0IElu
bGluZVRleHRCb3goUmVuZGVyVGV4dCYgcmVuZGVyZXIpCi0gICAgICAgIDogSW5saW5lQm94KHJl
bmRlcmVyKQorICAgICAgICA6IExlZ2FjeUlubGluZUJveChyZW5kZXJlcikKICAgICB7CiAgICAg
ICAgIHNldEJlaGF2ZXNMaWtlVGV4dCh0cnVlKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5Jbmxp
bmVUZXh0Qm94KCk7CiAKLSAgICBSZW5kZXJUZXh0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFJlbmRlclRleHQ+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KKyAgICBSZW5k
ZXJUZXh0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHQ+KExl
Z2FjeUlubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGlu
ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gaXNGaXJzdExpbmUoKSA/IHJlbmRlcmVyKCkuZmlyc3RM
aW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsgfQogCiAgICAgSW5saW5lVGV4dEJveCog
cHJldlRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX3ByZXZUZXh0Qm94OyB9CkBAIC03OSwxNiAr
NzksMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrRGlydHkoYm9vbCBkaXJ0eSA9IHRydWUp
IGZpbmFsOwogCi0gICAgdXNpbmcgSW5saW5lQm94OjpoYXNIeXBoZW47Ci0gICAgdXNpbmcgSW5s
aW5lQm94OjpzZXRIYXNIeXBoZW47Ci0gICAgdXNpbmcgSW5saW5lQm94OjpjYW5IYXZlTGVmdEV4
cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uOwot
ICAgIHVzaW5nIElubGluZUJveDo6Y2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOwotICAgIHVzaW5nIElu
bGluZUJveDo6c2V0Q2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOwotICAgIHVzaW5nIElubGluZUJveDo6
Zm9yY2VSaWdodEV4cGFuc2lvbjsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNldEZvcmNlUmlnaHRF
eHBhbnNpb247Ci0gICAgdXNpbmcgSW5saW5lQm94Ojpmb3JjZUxlZnRFeHBhbnNpb247Ci0gICAg
dXNpbmcgSW5saW5lQm94OjpzZXRGb3JjZUxlZnRFeHBhbnNpb247CisgICAgdXNpbmcgTGVnYWN5
SW5saW5lQm94OjpoYXNIeXBoZW47CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpzZXRIYXNI
eXBoZW47CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpjYW5IYXZlTGVmdEV4cGFuc2lvbjsK
KyAgICB1c2luZyBMZWdhY3lJbmxpbmVCb3g6OnNldENhbkhhdmVMZWZ0RXhwYW5zaW9uOworICAg
IHVzaW5nIExlZ2FjeUlubGluZUJveDo6Y2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOworICAgIHVzaW5n
IExlZ2FjeUlubGluZUJveDo6c2V0Q2FuSGF2ZVJpZ2h0RXhwYW5zaW9uOworICAgIHVzaW5nIExl
Z2FjeUlubGluZUJveDo6Zm9yY2VSaWdodEV4cGFuc2lvbjsKKyAgICB1c2luZyBMZWdhY3lJbmxp
bmVCb3g6OnNldEZvcmNlUmlnaHRFeHBhbnNpb247CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94
Ojpmb3JjZUxlZnRFeHBhbnNpb247CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjpzZXRGb3Jj
ZUxlZnRFeHBhbnNpb247CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJ5U3RhcnQo
Y29uc3QgSW5saW5lVGV4dEJveCogZmlyc3QsIGNvbnN0IElubGluZVRleHRCb3gqIHNlY29uZCkg
eyByZXR1cm4gZmlyc3QtPnN0YXJ0KCkgPCBzZWNvbmQtPnN0YXJ0KCk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lQm94LmNwcApzaW1pbGFyaXR5IGluZGV4IDczJQpyZW5h
bWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcApyZW5hbWUgdG8g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5jcHAKaW5kZXggZDg0NGM5
YWRjYjZmLi5jMDIyOGNmOWU4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxp
bmVCb3guY3BwCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIklubGluZUJveC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlubGluZUJveC5oIgogCiAj
aW5jbHVkZSAiRm9udE1ldHJpY3MuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzYsMTAgKzM2
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKElubGluZUJveCk7CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGVnYWN5SW5saW5l
Qm94KTsKIAotc3RydWN0IFNhbWVTaXplQXNJbmxpbmVCb3ggewotICAgIHZpcnR1YWwgflNhbWVT
aXplQXNJbmxpbmVCb3goKSA9IGRlZmF1bHQ7CitzdHJ1Y3QgU2FtZVNpemVBc0xlZ2FjeUlubGlu
ZUJveCB7CisgICAgdmlydHVhbCB+U2FtZVNpemVBc0xlZ2FjeUlubGluZUJveCgpID0gZGVmYXVs
dDsKICAgICB2b2lkKiBhWzNdOwogICAgIFdlYWtQdHI8UmVuZGVyT2JqZWN0PiByOwogICAgIEZs
b2F0UG9pbnQgYjsKQEAgLTUyLDI4ICs1MiwyOCBAQCBzdHJ1Y3QgU2FtZVNpemVBc0lubGluZUJv
eCB7CiAjZW5kaWYKIH07CiAKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihJbmxpbmVCb3gpID09IHNp
emVvZihTYW1lU2l6ZUFzSW5saW5lQm94KSwgSW5saW5lQm94X3NpemVfZ3VhcmQpOworQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKExlZ2FjeUlubGluZUJveCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNMZWdh
Y3lJbmxpbmVCb3gpLCBMZWdhY3lJbmxpbmVCb3hfc2l6ZV9ndWFyZCk7CiAKICNpZiAhQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKIAotdm9pZCBJbmxpbmVCb3g6OmFz
c2VydE5vdERlbGV0ZWQoKSBjb25zdAordm9pZCBMZWdhY3lJbmxpbmVCb3g6OmFzc2VydE5vdERl
bGV0ZWQoKSBjb25zdAogewogICAgIEFTU0VSVChtX2RlbGV0aW9uU2VudGluZWwgPT0gZGVsZXRp
b25TZW50aW5lbE5vdERlbGV0ZWRWYWx1ZSk7CiB9CiAKLUlubGluZUJveDo6fklubGluZUJveCgp
CitMZWdhY3lJbmxpbmVCb3g6On5MZWdhY3lJbmxpbmVCb3goKQogewogICAgIGludmFsaWRhdGVQ
YXJlbnRDaGlsZExpc3QoKTsKICAgICBtX2RlbGV0aW9uU2VudGluZWwgPSBkZWxldGlvblNlbnRp
bmVsRGVsZXRlZFZhbHVlOwogfQogCi12b2lkIElubGluZUJveDo6c2V0SGFzQmFkUGFyZW50KCkK
K3ZvaWQgTGVnYWN5SW5saW5lQm94OjpzZXRIYXNCYWRQYXJlbnQoKQogewogICAgIGFzc2VydE5v
dERlbGV0ZWQoKTsKICAgICBtX2hhc0JhZFBhcmVudCA9IHRydWU7CiB9CiAKLXZvaWQgSW5saW5l
Qm94OjppbnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0KCkKK3ZvaWQgTGVnYWN5SW5saW5lQm94Ojpp
bnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0KCkKIHsKICAgICBhc3NlcnROb3REZWxldGVkKCk7CiAg
ICAgaWYgKCFtX2hhc0JhZFBhcmVudCAmJiBtX3BhcmVudCAmJiBtX2lzRXZlckluQ2hpbGRMaXN0
KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIElubGluZUJveDo6aW52YWxpZGF0ZVBhcmVudENoaWxk
TGlzdCgpCiAKICNlbmRpZgogCi12b2lkIElubGluZUJveDo6cmVtb3ZlRnJvbVBhcmVudCgpCit2
b2lkIExlZ2FjeUlubGluZUJveDo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7IAogICAgIGlmIChwYXJl
bnQoKSkKICAgICAgICAgcGFyZW50KCktPnJlbW92ZUNoaWxkKHRoaXMpOwpAQCAtOTAsMjcgKzkw
LDI3IEBAIHZvaWQgSW5saW5lQm94OjpyZW1vdmVGcm9tUGFyZW50KCkKIAogI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKIAotY29uc3QgY2hhciogSW5saW5lQm94Ojpib3hOYW1lKCkgY29uc3QK
K2NvbnN0IGNoYXIqIExlZ2FjeUlubGluZUJveDo6Ym94TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuICJJbmxpbmVCb3giOwogfQogCi12b2lkIElubGluZUJveDo6c2hvd05vZGVUcmVlRm9yVGhp
cygpIGNvbnN0Cit2b2lkIExlZ2FjeUlubGluZUJveDo6c2hvd05vZGVUcmVlRm9yVGhpcygpIGNv
bnN0CiB7CiAgICAgcmVuZGVyZXIoKS5zaG93Tm9kZVRyZWVGb3JUaGlzKCk7CiB9CiAKLXZvaWQg
SW5saW5lQm94OjpzaG93TGluZVRyZWVGb3JUaGlzKCkgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5l
Qm94OjpzaG93TGluZVRyZWVGb3JUaGlzKCkgY29uc3QKIHsKICAgICByZW5kZXJlcigpLmNvbnRh
aW5pbmdCbG9jaygpLT5zaG93TGluZVRyZWVGb3JUaGlzKCk7CiB9CiAKLXZvaWQgSW5saW5lQm94
OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBJbmxpbmVC
b3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAordm9pZCBMZWdhY3lJbmxpbmVCb3g6Om91
dHB1dExpbmVUcmVlQW5kTWFyayhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExlZ2FjeUlubGlu
ZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0CiB7CiAgICAgb3V0cHV0TGluZUJveChz
dHJlYW0sIG1hcmtlZEJveCA9PSB0aGlzLCBkZXB0aCk7CiB9CiAKLXZvaWQgSW5saW5lQm94Ojpv
dXRwdXRMaW5lQm94KFRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNv
bnN0Cit2b2lkIExlZ2FjeUlubGluZUJveDo6b3V0cHV0TGluZUJveChUZXh0U3RyZWFtJiBzdHJl
YW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAogewogICAgIHN0cmVhbSA8PCAiLS0tLS0t
LS0gIiA8PCAoaXNEaXJ0eSgpID8gIkQiIDogIi0iKSA8PCAiLSI7CiAgICAgaW50IHByaW50ZWRD
aGFyYWN0ZXJzID0gMDsKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIElubGluZUJveDo6b3V0cHV0
TGluZUJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAog
CiAjZW5kaWYgLy8gRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogCi1mbG9hdCBJbmxpbmVCb3g6Omxv
Z2ljYWxIZWlnaHQoKSBjb25zdAorZmxvYXQgTGVnYWN5SW5saW5lQm94Ojpsb2dpY2FsSGVpZ2h0
KCkgY29uc3QKIHsKICAgICBpZiAoaGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuIHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CkBAIC0xNDYsMzQgKzE0NiwzNCBAQCBmbG9h
dCBJbmxpbmVCb3g6OmxvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUxheW91dFVuaXQgSW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUpIGNvbnN0CitMYXlvdXRVbml0IExlZ2FjeUlubGluZUJveDo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAogewogICAgIHJldHVybiBi
b3hNb2RlbE9iamVjdCgpLT5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgbV9iaXRmaWVs
ZHMuZmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNh
bExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiB9CiAKLUxheW91dFVuaXQgSW5saW5l
Qm94OjpsaW5lSGVpZ2h0KCkgY29uc3QKK0xheW91dFVuaXQgTGVnYWN5SW5saW5lQm94OjpsaW5l
SGVpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+bGluZUhlaWdo
dChtX2JpdGZpZWxkcy5maXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIH0KIAotaW50IElu
bGluZUJveDo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdCAKK2ludCBMZWdhY3lJbmxpbmVCb3g6OmNh
cmV0TWluT2Zmc2V0KCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuY2FyZXRNaW5P
ZmZzZXQoKTsKIH0KIAotaW50IElubGluZUJveDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdCAKK2lu
dCBMZWdhY3lJbmxpbmVCb3g6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKIHsgCiAgICAgcmV0dXJu
IHJlbmRlcmVyKCkuY2FyZXRNYXhPZmZzZXQoKTsKIH0KIAotdm9pZCBJbmxpbmVCb3g6OmRpcnR5
TGluZUJveGVzKCkKK3ZvaWQgTGVnYWN5SW5saW5lQm94OjpkaXJ0eUxpbmVCb3hlcygpCiB7CiAg
ICAgbWFya0RpcnR5KCk7CiAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gcGFyZW50KCk7
IGN1cnIgJiYgIWN1cnItPmlzRGlydHkoKTsgY3VyciA9IGN1cnItPnBhcmVudCgpKQogICAgICAg
ICBjdXJyLT5tYXJrRGlydHkoKTsKIH0KIAotdm9pZCBJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9u
KGZsb2F0IGR4LCBmbG9hdCBkeSkKK3ZvaWQgTGVnYWN5SW5saW5lQm94OjphZGp1c3RQb3NpdGlv
bihmbG9hdCBkeCwgZmxvYXQgZHkpCiB7CiAgICAgbV90b3BMZWZ0Lm1vdmUoZHgsIGR5KTsKIApA
QCAtMTg0LDIxICsxODQsMjEgQEAgdm9pZCBJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKGZsb2F0
IGR4LCBmbG9hdCBkeSkKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS5t
b3ZlKExheW91dFVuaXQoZHgpLCBMYXlvdXRVbml0KGR5KSk7CiB9CiAKLWNvbnN0IFJvb3RJbmxp
bmVCb3gmIElubGluZUJveDo6cm9vdCgpIGNvbnN0Citjb25zdCBSb290SW5saW5lQm94JiBMZWdh
Y3lJbmxpbmVCb3g6OnJvb3QoKSBjb25zdAogeyAKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAg
IHJldHVybiBwYXJlbnQoKS0+cm9vdCgpOwogICAgIHJldHVybiBkb3duY2FzdDxSb290SW5saW5l
Qm94PigqdGhpcyk7CiB9CiAKLVJvb3RJbmxpbmVCb3gmIElubGluZUJveDo6cm9vdCgpCitSb290
SW5saW5lQm94JiBMZWdhY3lJbmxpbmVCb3g6OnJvb3QoKQogeyAKICAgICBpZiAocGFyZW50KCkp
CiAgICAgICAgIHJldHVybiBwYXJlbnQoKS0+cm9vdCgpOwogICAgIHJldHVybiBkb3duY2FzdDxS
b290SW5saW5lQm94PigqdGhpcyk7CiB9CiAKLWJvb2wgSW5saW5lQm94OjpuZXh0T25MaW5lRXhp
c3RzKCkgY29uc3QKK2Jvb2wgTGVnYWN5SW5saW5lQm94OjpuZXh0T25MaW5lRXhpc3RzKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYml0ZmllbGRzLmRldGVybWluZWRJZk5leHRPbkxpbmVFeGlzdHMo
KSkgewogICAgICAgICBtX2JpdGZpZWxkcy5zZXREZXRlcm1pbmVkSWZOZXh0T25MaW5lRXhpc3Rz
KHRydWUpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSW5saW5lQm94OjpuZXh0T25MaW5lRXhp
c3RzKCkgY29uc3QKICAgICByZXR1cm4gbV9iaXRmaWVsZHMubmV4dE9uTGluZUV4aXN0cygpOwog
fQogCi1ib29sIElubGluZUJveDo6cHJldmlvdXNPbkxpbmVFeGlzdHMoKSBjb25zdAorYm9vbCBM
ZWdhY3lJbmxpbmVCb3g6OnByZXZpb3VzT25MaW5lRXhpc3RzKCkgY29uc3QKIHsKICAgICBpZiAo
IXBhcmVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjIsMzIgKzIyMiwzMiBAQCBi
b29sIElubGluZUJveDo6cHJldmlvdXNPbkxpbmVFeGlzdHMoKSBjb25zdAogICAgIHJldHVybiBw
YXJlbnQoKS0+cHJldmlvdXNPbkxpbmVFeGlzdHMoKTsKIH0KIAotSW5saW5lQm94KiBJbmxpbmVC
b3g6Om5leHRMZWFmT25MaW5lKCkgY29uc3QKK0xlZ2FjeUlubGluZUJveCogTGVnYWN5SW5saW5l
Qm94OjpuZXh0TGVhZk9uTGluZSgpIGNvbnN0CiB7Ci0gICAgSW5saW5lQm94KiBsZWFmID0gbnVs
bHB0cjsKLSAgICBmb3IgKElubGluZUJveCogYm94ID0gbmV4dE9uTGluZSgpOyBib3ggJiYgIWxl
YWY7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKQorICAgIExlZ2FjeUlubGluZUJveCogbGVhZiA9
IG51bGxwdHI7CisgICAgZm9yIChhdXRvKiBib3ggPSBuZXh0T25MaW5lKCk7IGJveCAmJiAhbGVh
ZjsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpCiAgICAgICAgIGxlYWYgPSBib3gtPmlzTGVhZigp
ID8gYm94IDogZG93bmNhc3Q8SW5saW5lRmxvd0JveD4oKmJveCkuZmlyc3RMZWFmRGVzY2VuZGFu
dCgpOwogICAgIGlmICghbGVhZiAmJiBwYXJlbnQoKSkKICAgICAgICAgbGVhZiA9IHBhcmVudCgp
LT5uZXh0TGVhZk9uTGluZSgpOwogICAgIHJldHVybiBsZWFmOwogfQogICAgIAotSW5saW5lQm94
KiBJbmxpbmVCb3g6OnByZXZpb3VzTGVhZk9uTGluZSgpIGNvbnN0CitMZWdhY3lJbmxpbmVCb3gq
IExlZ2FjeUlubGluZUJveDo6cHJldmlvdXNMZWFmT25MaW5lKCkgY29uc3QKIHsKLSAgICBJbmxp
bmVCb3gqIGxlYWYgPSBudWxscHRyOwotICAgIGZvciAoSW5saW5lQm94KiBib3ggPSBwcmV2aW91
c09uTGluZSgpOyBib3ggJiYgIWxlYWY7IGJveCA9IGJveC0+cHJldmlvdXNPbkxpbmUoKSkKKyAg
ICBMZWdhY3lJbmxpbmVCb3gqIGxlYWYgPSBudWxscHRyOworICAgIGZvciAoYXV0byogYm94ID0g
cHJldmlvdXNPbkxpbmUoKTsgYm94ICYmICFsZWFmOyBib3ggPSBib3gtPnByZXZpb3VzT25MaW5l
KCkpCiAgICAgICAgIGxlYWYgPSBib3gtPmlzTGVhZigpID8gYm94IDogZG93bmNhc3Q8SW5saW5l
Rmxvd0JveD4oKmJveCkubGFzdExlYWZEZXNjZW5kYW50KCk7CiAgICAgaWYgKCFsZWFmICYmIHBh
cmVudCgpKQogICAgICAgICBsZWFmID0gcGFyZW50KCktPnByZXZpb3VzTGVhZk9uTGluZSgpOwog
ICAgIHJldHVybiBsZWFmOwogfQogCi1SZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIElubGlu
ZUJveDo6c2VsZWN0aW9uU3RhdGUoKQorUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBMZWdh
Y3lJbmxpbmVCb3g6OnNlbGVjdGlvblN0YXRlKCkKIHsKICAgICByZXR1cm4gcmVuZGVyZXIoKS5z
ZWxlY3Rpb25TdGF0ZSgpOwogfQogCi1ib29sIElubGluZUJveDo6Y2FuQWNjb21tb2RhdGVFbGxp
cHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpIGNvbnN0Citi
b29sIExlZ2FjeUlubGluZUJveDo6Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50
IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXJlcGxh
Y2VkIGVsZW1lbnRzIGNhbiBhbHdheXMgYWNjb21tb2RhdGUgYW4gZWxsaXBzaXMuCiAgICAgaWYg
KCFyZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkKQEAgLTI1OCwyMSArMjU4LDIxIEBAIGJvb2wgSW5s
aW5lQm94OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBp
bnQgZWxsaXBzaXNXaWR0CiAgICAgcmV0dXJuICEoYm94UmVjdC5pbnRlcnNlY3RzKGVsbGlwc2lz
UmVjdCkpOwogfQogCi1mbG9hdCBJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQmIHRydW5jYXRlZFdpZHRoLCBib29sJikKK2Zsb2F0IExl
Z2FjeUlubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveChib29sLCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCYgdHJ1bmNhdGVkV2lkdGgsIGJvb2wmKQogewogICAgIC8vIFVzZSAtMSB0byBtZWFu
ICJ3ZSBkaWRuJ3Qgc2V0IHRoZSBwb3NpdGlvbi4iCiAgICAgdHJ1bmNhdGVkV2lkdGggKz0gbG9n
aWNhbFdpZHRoKCk7CiAgICAgcmV0dXJuIC0xOwogfQogCi12b2lkIElubGluZUJveDo6Y2xlYXJL
bm93blRvSGF2ZU5vT3ZlcmZsb3coKQordm9pZCBMZWdhY3lJbmxpbmVCb3g6OmNsZWFyS25vd25U
b0hhdmVOb092ZXJmbG93KCkKIHsgCiAgICAgbV9iaXRmaWVsZHMuc2V0S25vd25Ub0hhdmVOb092
ZXJmbG93KGZhbHNlKTsKICAgICBpZiAocGFyZW50KCkgJiYgcGFyZW50KCktPmtub3duVG9IYXZl
Tm9PdmVyZmxvdygpKQogICAgICAgICBwYXJlbnQoKS0+Y2xlYXJLbm93blRvSGF2ZU5vT3ZlcmZs
b3coKTsKIH0KIAotRmxvYXRQb2ludCBJbmxpbmVCb3g6OmxvY2F0aW9uSW5jbHVkaW5nRmxpcHBp
bmcoKSBjb25zdAorRmxvYXRQb2ludCBMZWdhY3lJbmxpbmVCb3g6OmxvY2F0aW9uSW5jbHVkaW5n
RmxpcHBpbmcoKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBl
ZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiB0b3BMZWZ0KCk7CkBAIC0yODIs
MjggKzI4MiwyOCBAQCBGbG9hdFBvaW50IElubGluZUJveDo6bG9jYXRpb25JbmNsdWRpbmdGbGlw
cGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHsgYmxvY2sud2lkdGgoKSAtIHdpZHRoKCkgLSB4KCks
IHkoKSB9OwogfQogCi12b2lkIElubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKK3ZvaWQgTGVnYWN5SW5saW5lQm94OjpmbGlwRm9yV3JpdGluZ01vZGUo
RmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKS5zdHlsZSgpLmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICByb290KCku
YmxvY2tGbG93KCkuZmxpcEZvcldyaXRpbmdNb2RlKHJlY3QpOwogfQogCi1GbG9hdFBvaW50IElu
bGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25z
dAorRmxvYXRQb2ludCBMZWdhY3lJbmxpbmVCb3g6OmZsaXBGb3JXcml0aW5nTW9kZShjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuc3R5bGUoKS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gcG9pbnQ7CiAgICAg
cmV0dXJuIHJvb3QoKS5ibG9ja0Zsb3coKS5mbGlwRm9yV3JpdGluZ01vZGUocG9pbnQpOwogfQog
Ci12b2lkIElubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKExheW91dFJlY3QmIHJlY3QpIGNv
bnN0Cit2b2lkIExlZ2FjeUlubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKExheW91dFJlY3Qm
IHJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJvb3QoKS5ibG9ja0Zsb3co
KS5mbGlwRm9yV3JpdGluZ01vZGUocmVjdCk7CiB9CiAKLUxheW91dFBvaW50IElubGluZUJveDo6
ZmxpcEZvcldyaXRpbmdNb2RlKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKK0xheW91
dFBvaW50IExlZ2FjeUlubGluZUJveDo6ZmxpcEZvcldyaXRpbmdNb2RlKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuc3R5bGUoKS5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gcG9pbnQ7CkBAIC0zMTQsMTQg
KzMxNCwxNCBAQCBMYXlvdXRQb2ludCBJbmxpbmVCb3g6OmZsaXBGb3JXcml0aW5nTW9kZShjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcp
CiAKLXZvaWQgc2hvd05vZGVUcmVlKGNvbnN0IFdlYkNvcmU6OklubGluZUJveCogaW5saW5lQm94
KQordm9pZCBzaG93Tm9kZVRyZWUoY29uc3QgV2ViQ29yZTo6TGVnYWN5SW5saW5lQm94KiBpbmxp
bmVCb3gpCiB7CiAgICAgaWYgKCFpbmxpbmVCb3gpCiAgICAgICAgIHJldHVybjsKICAgICBpbmxp
bmVCb3gtPnNob3dOb2RlVHJlZUZvclRoaXMoKTsKIH0KIAotdm9pZCBzaG93TGluZVRyZWUoY29u
c3QgV2ViQ29yZTo6SW5saW5lQm94KiBpbmxpbmVCb3gpCit2b2lkIHNob3dMaW5lVHJlZShjb25z
dCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gqIGlubGluZUJveCkKIHsKICAgICBpZiAoIWlubGlu
ZUJveCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJv
eC5oCnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVCb3guaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2Fj
eUlubGluZUJveC5oCmluZGV4IGIzMzNmY2E4ODg2OS4uZmFjMGNiZjg3M2EyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUJveC5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFJvb3RJbmxpbmVCb3g7
CiAKLS8vIElubGluZUJveCByZXByZXNlbnRzIGEgcmVjdGFuZ2xlIHRoYXQgb2NjdXJzIG9uIGEg
bGluZS4gIEl0IGNvcnJlc3BvbmRzIHRvCisvLyBMZWdhY3lJbmxpbmVCb3ggcmVwcmVzZW50cyBh
IHJlY3RhbmdsZSB0aGF0IG9jY3VycyBvbiBhIGxpbmUuIEl0IGNvcnJlc3BvbmRzIHRvCiAvLyBz
b21lIFJlbmRlck9iamVjdCAoaS5lLiwgaXQgcmVwcmVzZW50cyBhIHBvcnRpb24gb2YgdGhhdCBS
ZW5kZXJPYmplY3QpLgotY2xhc3MgSW5saW5lQm94IHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKElubGluZUJveCk7CitjbGFzcyBMZWdhY3lJbmxpbmVCb3ggeworICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoTGVnYWN5SW5saW5lQm94KTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Jbmxp
bmVCb3goKTsKKyAgICB2aXJ0dWFsIH5MZWdhY3lJbmxpbmVCb3goKTsKIAogICAgIHZvaWQgYXNz
ZXJ0Tm90RGVsZXRlZCgpIGNvbnN0OwogCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNob3dOb2RlVHJlZUZvclRoaXMoKSBjb25zdDsKICAgICB2b2lkIHNob3dMaW5lVHJlZUZv
clRoaXMoKSBjb25zdDsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgb3V0
cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IElubGluZUJveCogbWFy
a2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBvdXRwdXRMaW5lVHJlZUFuZE1hcmsoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTGVnYWN5SW5s
aW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIG91dHB1dExpbmVCb3goV1RGOjpUZXh0U3RyZWFtJiwgYm9vbCBtYXJrLCBp
bnQgZGVwdGgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgY29uc3QgY2hhciog
Ym94TmFtZSgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMTUsMTQgKzExNSwxNCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIElubGluZUJveCogbmV4dE9uTGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dE9uTGluZTsgfQotICAgIElubGluZUJveCogcHJldmlv
dXNPbkxpbmUoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzT25MaW5lOyB9Ci0gICAgdm9pZCBz
ZXROZXh0T25MaW5lKElubGluZUJveCogbmV4dCkKKyAgICBMZWdhY3lJbmxpbmVCb3gqIG5leHRP
bkxpbmUoKSBjb25zdCB7IHJldHVybiBtX25leHRPbkxpbmU7IH0KKyAgICBMZWdhY3lJbmxpbmVC
b3gqIHByZXZpb3VzT25MaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c09uTGluZTsgfQor
ICAgIHZvaWQgc2V0TmV4dE9uTGluZShMZWdhY3lJbmxpbmVCb3gqIG5leHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9wYXJlbnQgfHwgIW5leHQpOwogICAgICAgICBtX25leHRPbkxpbmUgPSBu
ZXh0OwogICAgIH0KLSAgICB2b2lkIHNldFByZXZpb3VzT25MaW5lKElubGluZUJveCogcHJldmlv
dXMpCisgICAgdm9pZCBzZXRQcmV2aW91c09uTGluZShMZWdhY3lJbmxpbmVCb3gqIHByZXZpb3Vz
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcGFyZW50IHx8ICFwcmV2aW91cyk7CiAgICAgICAg
IG1fcHJldmlvdXNPbkxpbmUgPSBwcmV2aW91czsKQEAgLTEzMiw4ICsxMzIsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IAotICAgIElubGluZUJveCogbmV4dExlYWZPbkxpbmUoKSBjb25zdDsKLSAgICBJbmxpbmVCb3gq
IHByZXZpb3VzTGVhZk9uTGluZSgpIGNvbnN0OworICAgIExlZ2FjeUlubGluZUJveCogbmV4dExl
YWZPbkxpbmUoKSBjb25zdDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIHByZXZpb3VzTGVhZk9uTGlu
ZSgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IEhpZGUgdGhpcyBvbmNlIGFsbCBjYWxsZXJzIGFy
ZSB1c2luZyB0aWdodGVyIHR5cGVzLgogICAgIFJlbmRlck9iamVjdCYgcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiAqbV9yZW5kZXJlcjsgfQpAQCAtMjg1LDggKzI4NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEZvcmNlTGVmdEV4cGFuc2lvbigpIHsgbV9iaXRmaWVsZHMuc2V0Rm9yY2VMZWZ0
RXhwYW5zaW9uKHRydWUpOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5saW5lQm94KiBtX25leHRPbkxp
bmUgeyBudWxscHRyIH07IC8vIFRoZSBuZXh0IGVsZW1lbnQgb24gdGhlIHNhbWUgbGluZSBhcyB1
cy4KLSAgICBJbmxpbmVCb3gqIG1fcHJldmlvdXNPbkxpbmUgeyBudWxscHRyIH07IC8vIFRoZSBw
cmV2aW91cyBlbGVtZW50IG9uIHRoZSBzYW1lIGxpbmUgYXMgdXMuCisgICAgTGVnYWN5SW5saW5l
Qm94KiBtX25leHRPbkxpbmUgeyBudWxscHRyIH07IC8vIFRoZSBuZXh0IGVsZW1lbnQgb24gdGhl
IHNhbWUgbGluZSBhcyB1cy4KKyAgICBMZWdhY3lJbmxpbmVCb3gqIG1fcHJldmlvdXNPbkxpbmUg
eyBudWxscHRyIH07IC8vIFRoZSBwcmV2aW91cyBlbGVtZW50IG9uIHRoZSBzYW1lIGxpbmUgYXMg
dXMuCiAKICAgICBJbmxpbmVGbG93Qm94KiBtX3BhcmVudCB7IG51bGxwdHIgfTsgLy8gVGhlIGJv
eCB0aGF0IGNvbnRhaW5zIHVzLgogCkBAIC0zNzYsMTIgKzM3NiwxMiBAQCBwcml2YXRlOgogICAg
IElubGluZUJveEJpdGZpZWxkcyBtX2JpdGZpZWxkczsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxp
Y2l0IElubGluZUJveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQorICAgIGV4cGxpY2l0IExlZ2Fj
eUlubGluZUJveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogICAgICAgICA6IG1fcmVuZGVyZXIo
bWFrZVdlYWtQdHIocmVuZGVyZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBJbmxpbmVCb3goUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgRmxvYXRQb2ludCB0b3BMZWZ0LCBmbG9hdCBsb2dpY2FsV2lk
dGgsIGJvb2wgZmlyc3RMaW5lLCBib29sIGNvbnN0cnVjdGVkLCBib29sIGRpcnR5LCBib29sIGV4
dHJhY3RlZCwgYm9vbCBpc0hvcml6b250YWwsIElubGluZUJveCogbmV4dCwgSW5saW5lQm94KiBw
cmV2aW91cywgSW5saW5lRmxvd0JveCogcGFyZW50KQorICAgIExlZ2FjeUlubGluZUJveChSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBGbG9hdFBvaW50IHRvcExlZnQsIGZsb2F0IGxvZ2ljYWxXaWR0
aCwgYm9vbCBmaXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQsIGJvb2wgZGlydHksIGJvb2wgZXh0
cmFjdGVkLCBib29sIGlzSG9yaXpvbnRhbCwgTGVnYWN5SW5saW5lQm94KiBuZXh0LCBMZWdhY3lJ
bmxpbmVCb3gqIHByZXZpb3VzLCBJbmxpbmVGbG93Qm94KiBwYXJlbnQpCiAgICAgICAgIDogbV9u
ZXh0T25MaW5lKG5leHQpCiAgICAgICAgICwgbV9wcmV2aW91c09uTGluZShwcmV2aW91cykKICAg
ICAgICAgLCBtX3BhcmVudChwYXJlbnQpCkBAIC00MjMsMTEgKzQyMywxMSBAQCBwcm90ZWN0ZWQ6
CiAKICNpZiBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRAogCi1pbmxp
bmUgSW5saW5lQm94Ojp+SW5saW5lQm94KCkKK2lubGluZSBMZWdhY3lJbmxpbmVCb3g6On5MZWdh
Y3lJbmxpbmVCb3goKQogewogfQogCi1pbmxpbmUgdm9pZCBJbmxpbmVCb3g6OmFzc2VydE5vdERl
bGV0ZWQoKSBjb25zdAoraW5saW5lIHZvaWQgTGVnYWN5SW5saW5lQm94Ojphc3NlcnROb3REZWxl
dGVkKCkgY29uc3QKIHsKIH0KIApAQCAtNDM3LDExICs0MzcsMTEgQEAgaW5saW5lIHZvaWQgSW5s
aW5lQm94Ojphc3NlcnROb3REZWxldGVkKCkgY29uc3QKIAogI2RlZmluZSBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0lOTElORV9CT1goVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VG9WYWx1ZVR5cGVOYW1lKSBcCi0gICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OklubGluZUJveCYgYm94KSB7IHJldHVy
biBib3gucHJlZGljYXRlOyB9IFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6TGVnYWN5SW5saW5lQm94JiBib3gpIHsgcmV0dXJuIGJveC5wcmVkaWNhdGU7IH0gXAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQog
Ly8gT3V0c2lkZSB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgZm9yIGVhc2Ugb2YgaW52b2NhdGlvbiBm
cm9tIHRoZSBkZWJ1Z2dlci4KLXZvaWQgc2hvd05vZGVUcmVlKGNvbnN0IFdlYkNvcmU6OklubGlu
ZUJveCopOwotdm9pZCBzaG93TGluZVRyZWUoY29uc3QgV2ViQ29yZTo6SW5saW5lQm94Kik7Cit2
b2lkIHNob3dOb2RlVHJlZShjb25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gqKTsKK3ZvaWQg
c2hvd0xpbmVUcmVlKGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCopOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5jcHAKaW5kZXggNDVm
NjNhZmQ5MWVlLi5jNWNmNmY4NGIxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MZWdhY3lMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5TGluZUxheW91dC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBSb290SW5saW5lQm94KiBM
ZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKICAgICByZXR1
cm4gcm9vdEJveDsKIH0KIAotSW5saW5lQm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVJbmxp
bmVCb3hGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIGlzT25seVJ1bikK
K0xlZ2FjeUlubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y3JlYXRlSW5saW5lQm94Rm9yUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBpc09ubHlSdW4pCiB7CiAgICAgaWYg
KHJlbmRlcmVyID09ICZtX2Zsb3cpCiAgICAgICAgIHJldHVybiBjcmVhdGVBbmRBcHBlbmRSb290
SW5saW5lQm94KCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIGJvb2wgcGFyZW50SXNDb25z
dHJ1Y3RlZE9ySGF2ZU5leHQoSW5saW5lRmxvd0JveCogcGFyZW50Qm94KQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotSW5saW5lRmxvd0JveCogTGVnYWN5TGluZUxheW91dDo6Y3JlYXRlTGluZUJv
eGVzKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8sIElubGluZUJv
eCogY2hpbGRCb3gpCitJbmxpbmVGbG93Qm94KiBMZWdhY3lMaW5lTGF5b3V0OjpjcmVhdGVMaW5l
Qm94ZXMoUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbywgTGVnYWN5
SW5saW5lQm94KiBjaGlsZEJveCkKIHsKICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhbiB1bmNvbnN0
cnVjdGVkIGxpbmUgYm94IGZvciB0aGlzIG9iamVjdCB0aGF0IGlzIGFsc28KICAgICAvLyB0aGUg
bGFzdCBpdGVtIG9uIHRoZSBsaW5lLgpAQCAtMjMyLDcgKzIzMiw3IEBAIElubGluZUZsb3dCb3gq
IExlZ2FjeUxpbmVMYXlvdXQ6OmNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqIG9iaiwgY29u
c3QgTGluZUluCiAgICAgICAgIGlmIChhbGxvd2VkVG9Db25zdHJ1Y3ROZXdCb3ggJiYgIWNhblVz
ZUV4aXN0aW5nUGFyZW50Qm94KSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBu
ZXcgYm94IGZvciB0aGlzIHJlbmRlciBvYmplY3QuIE9uY2UKICAgICAgICAgICAgIC8vIG1hZGUs
IHdlIG5lZWQgdG8gcGxhY2UgaXQgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaW5lLgotICAg
ICAgICAgICAgSW5saW5lQm94KiBuZXdCb3ggPSBjcmVhdGVJbmxpbmVCb3hGb3JSZW5kZXJlcihv
YmopOworICAgICAgICAgICAgTGVnYWN5SW5saW5lQm94KiBuZXdCb3ggPSBjcmVhdGVJbmxpbmVC
b3hGb3JSZW5kZXJlcihvYmopOwogICAgICAgICAgICAgcGFyZW50Qm94ID0gZG93bmNhc3Q8SW5s
aW5lRmxvd0JveD4obmV3Qm94KTsKICAgICAgICAgICAgIHBhcmVudEJveC0+c2V0SXNGaXJzdExp
bmUobGluZUluZm8uaXNGaXJzdExpbmUoKSk7CiAgICAgICAgICAgICBwYXJlbnRCb3gtPnNldElz
SG9yaXpvbnRhbChtX2Zsb3cuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CkBAIC0zMDYsNyAr
MzA2LDcgQEAgUm9vdElubGluZUJveCogTGVnYWN5TGluZUxheW91dDo6Y29uc3RydWN0TGluZShC
aWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIGMKICAgICAgICAgaWYgKGxpbmVJbmZvLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIElubGluZUJveCogYm94
ID0gY3JlYXRlSW5saW5lQm94Rm9yUmVuZGVyZXIoJnItPnJlbmRlcmVyKCksIGlzT25seVJ1bik7
CisgICAgICAgIExlZ2FjeUlubGluZUJveCogYm94ID0gY3JlYXRlSW5saW5lQm94Rm9yUmVuZGVy
ZXIoJnItPnJlbmRlcmVyKCksIGlzT25seVJ1bik7CiAgICAgICAgIHItPnNldEJveChib3gpOwog
CiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcGFyZW50IGJveCB5ZXQsIG9yIGlmIHRoZSBydW4g
aXMgbm90IHNpbXBseSBhIHNpYmxpbmcsCkBAIC04MDksNyArODA5LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGx5RXhwYW5zaW9uQmVoYXZpb3IoSW5saW5lVGV4dEJveCYgdGV4dEJveCwgRXhw
YW5zaW9uQmVoYXYKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlubGluZUFuY2VzdG9ySGFzU3Rh
cnRCb3JkZXJQYWRkaW5nT3JNYXJnaW4oY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9jaywgY29u
c3QgSW5saW5lQm94JiBib3gpCitzdGF0aWMgYm9vbCBpbmxpbmVBbmNlc3Rvckhhc1N0YXJ0Qm9y
ZGVyUGFkZGluZ09yTWFyZ2luKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGNvbnN0IExl
Z2FjeUlubGluZUJveCYgYm94KQogewogICAgIGJvb2wgaXNMVFIgPSBibG9jay5zdHlsZSgpLmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSBib3gu
cGFyZW50KCk7IGN1cnJlbnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5wYXJlbnQoKSkg
ewpAQCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyBib29sIGlubGluZUFuY2VzdG9ySGFzU3RhcnRC
b3JkZXJQYWRkaW5nT3JNYXJnaW4oY29uc3QgUmVuZGVyQmxvY2tGbG93JiBiCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBpbmxpbmVBbmNlc3Rvckhhc0VuZEJvcmRlclBhZGRp
bmdPck1hcmdpbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBjb25zdCBJbmxpbmVCb3gm
IGJveCkKK3N0YXRpYyBib29sIGlubGluZUFuY2VzdG9ySGFzRW5kQm9yZGVyUGFkZGluZ09yTWFy
Z2luKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGNvbnN0IExlZ2FjeUlubGluZUJveCYg
Ym94KQogewogICAgIGJvb2wgaXNMVFIgPSBibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRCb3ggPSBib3gucGFyZW50KCk7IGN1cnJl
bnRCb3g7IGN1cnJlbnRCb3ggPSBjdXJyZW50Qm94LT5wYXJlbnQoKSkgewpAQCAtODU4LDcgKzg1
OCw3IEBAIEJpZGlSdW4qIExlZ2FjeUxpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Q
b3NpdGlvbnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCCiAgICAgYXV0byBjb2xsZWN0U3BhY2luZ0xv
Z2ljYWxXaWR0aHMgPSBbJl0gKCkgewogICAgICAgICBhdXRvIHRvdGFsU3BhY2luZ1dpZHRoID0g
TGF5b3V0VW5pdCB7IH07CiAgICAgICAgIC8vIENvbGxlY3QgdGhlIHNwYWNpbmcgcG9zaXRpb25z
IChtYXJnaW4sIGJvcmRlciBwYWRkaW5nKSBmb3IgdGhlIHRleHRib3hlcyBieSB0cmF2ZXJzaW5n
IHRoZSBpbmxpbmUgdHJlZSBvZiB0aGUgY3VycmVudCBsaW5lLgotICAgICAgICBWZWN0b3I8SW5s
aW5lQm94Kj4gcXVldWU7CisgICAgICAgIFZlY3RvcjxMZWdhY3lJbmxpbmVCb3gqPiBxdWV1ZTsK
ICAgICAgICAgcXVldWUuYXBwZW5kKGxpbmVCb3gpOwogICAgICAgICAvLyAxLiBWaXNpdCBlYWNo
IGlubGluZSBib3ggaW4gYSBwcmVvcmRlciBmYXNoaW9uCiAgICAgICAgIC8vIDIuIEFjY3VtdWxh
dGUgdGhlIHNwYWNpbmcgd2hlbiB3ZSBmaW5kIGFuIElubGluZUZsb3dCb3ggKGlubGluZSBjb250
YWluZXIgZS5nLiBzcGFuKQpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgdm9pZCBMZWdhY3lMaW5lTGF5
b3V0OjpsYXlvdXRSdW5zQW5kRmxvYXRzKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGJv
b2wgaGEKICAgICAgICAgLy8gSWYgdGhlIGxhc3QgbGluZSBiZWZvcmUgdGhlIHN0YXJ0IGxpbmUg
ZW5kcyB3aXRoIGEgbGluZSBicmVhayB0aGF0IGNsZWFyIGZsb2F0cywKICAgICAgICAgLy8gYWRq
dXN0IHRoZSBoZWlnaHQgYWNjb3JkaW5nbHkuCiAgICAgICAgIC8vIEEgbGluZSBicmVhayBjYW4g
YmUgZWl0aGVyIHRoZSBmaXJzdCBvciB0aGUgbGFzdCBvYmplY3Qgb24gYSBsaW5lLCBkZXBlbmRp
bmcgb24gaXRzIGRpcmVjdGlvbi4KLSAgICAgICAgaWYgKElubGluZUJveCogbGFzdExlYWZEZXNj
ZW5kYW50ID0gbGFzdFJvb3RCb3goKS0+bGFzdExlYWZEZXNjZW5kYW50KCkpIHsKKyAgICAgICAg
aWYgKExlZ2FjeUlubGluZUJveCogbGFzdExlYWZEZXNjZW5kYW50ID0gbGFzdFJvb3RCb3goKS0+
bGFzdExlYWZEZXNjZW5kYW50KCkpIHsKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogbGFzdE9i
amVjdCA9ICZsYXN0TGVhZkRlc2NlbmRhbnQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAo
IWxhc3RPYmplY3QtPmlzQlIoKSkKICAgICAgICAgICAgICAgICBsYXN0T2JqZWN0ID0gJmxhc3RS
b290Qm94KCktPmZpcnN0TGVhZkRlc2NlbmRhbnQoKS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5TGluZUxheW91dC5oCmluZGV4IGM0MzY1ZWE2NGQwZS4uYTYy
MmI4OWMxYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5TGlu
ZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lMaW5lTGF5b3V0
LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQmlkaUNvbnRleHQ7CiBjbGFzcyBGbG9hdGluZ09i
amVjdDsKIGNsYXNzIEZsb2F0V2l0aFJlY3Q7CiBjbGFzcyBGcmFtZVZpZXdMYXlvdXRDb250ZXh0
OwotY2xhc3MgSW5saW5lQm94OworY2xhc3MgTGVnYWN5SW5saW5lQm94OwogY2xhc3MgSW5saW5l
SXRlcmF0b3I7CiBjbGFzcyBMaW5lSW5mbzsKIGNsYXNzIExpbmVMYXlvdXRTdGF0ZTsKQEAgLTc5
LDggKzc5LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElu
bGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgpOwogICAgIFJvb3RJbmxpbmVCb3gqIGNyZWF0
ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKTsKLSAgICBJbmxpbmVCb3gqIGNyZWF0ZUlubGluZUJv
eEZvclJlbmRlcmVyKFJlbmRlck9iamVjdCosIGJvb2wgaXNPbmx5UnVuID0gZmFsc2UpOwotICAg
IElubGluZUZsb3dCb3gqIGNyZWF0ZUxpbmVCb3hlcyhSZW5kZXJPYmplY3QqLCBjb25zdCBMaW5l
SW5mbyYsIElubGluZUJveCopOworICAgIExlZ2FjeUlubGluZUJveCogY3JlYXRlSW5saW5lQm94
Rm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiwgYm9vbCBpc09ubHlSdW4gPSBmYWxzZSk7CisgICAg
SW5saW5lRmxvd0JveCogY3JlYXRlTGluZUJveGVzKFJlbmRlck9iamVjdCosIGNvbnN0IExpbmVJ
bmZvJiwgTGVnYWN5SW5saW5lQm94Kik7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ25tZW50
Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdDsKICAgICB2b2lkIHNldE1hcmdp
bnNGb3JSdWJ5UnVuKEJpZGlSdW4qLCBSZW5kZXJSdWJ5UnVuJiwgUmVuZGVyT2JqZWN0KiBwcmV2
aW91c09iamVjdCwgY29uc3QgTGluZUluZm8mKTsKICAgICB2b2lkIHVwZGF0ZVJ1YnlGb3JKdXN0
aWZpZWRUZXh0KFJlbmRlclJ1YnlSdW4mLCBCaWRpUnVuJiwgY29uc3QgVmVjdG9yPHVuc2lnbmVk
LCAxNj4mIGV4cGFuc2lvbk9wcG9ydHVuaXRpZXMsIHVuc2lnbmVkJiBleHBhbnNpb25PcHBvcnR1
bml0eUNvdW50LCBmbG9hdCYgdG90YWxMb2dpY2FsV2lkdGgsIGZsb2F0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCwgc2l6ZV90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IGZlNzVhNmI0Mjk2OC4uNzBmZjFjODAxZmU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzgxNiw3ICszODE2LDcg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om91dHB1dEZsb2F0aW5nT2JqZWN0cyhXVEY6OlRleHRT
dHJlYW0mIHN0cmVhbSwgaW50IGRlcHRoKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6Om91dHB1dExpbmVUcmVlQW5kTWFyayhXVEY6OlRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
SW5saW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgUmVuZGVyQmxvY2tG
bG93OjpvdXRwdXRMaW5lVHJlZUFuZE1hcmsoV1RGOjpUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExlZ2FjeUlubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0CiB7CiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKGF1dG8qIG1vZGVybkxpbmVM
YXlvdXQgPSB0aGlzLT5tb2Rlcm5MaW5lTGF5b3V0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBhN2YwMWMyM2FlZGMuLmI4ZTdmZDVmOTYyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzY5LDcg
KzM2OSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKICAgICB2b2lk
IG91dHB1dEZsb2F0aW5nT2JqZWN0cyhXVEY6OlRleHRTdHJlYW0mLCBpbnQgZGVwdGgpIGNvbnN0
OwotICAgIHZvaWQgb3V0cHV0TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZvaWQgb3V0cHV0
TGluZVRyZWVBbmRNYXJrKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExlZ2FjeUlubGluZUJveCog
bWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OwogI2VuZGlmCiAKICAgICAvLyBSZXR1cm5zIHRo
ZSBsb2dpY2FsT2Zmc2V0IGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgcGFnZS4gSWYgdGhlIG9mZnNl
dCBwYXNzZWQgaW4gaXMgYWxyZWFkeSBhdCB0aGUgdG9wIG9mIHRoZSBjdXJyZW50IHBhZ2UsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCmluZGV4IDk5ZTkxYmI4MWUwNC4uNzlkZDAzNWJlZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcApAQCAtMTA2OCw3ICsxMDY4LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0b3IsIGJvb2wKIAog
ICAgICAgICAvLyBHZXQgZWxsaXBzaXMgd2lkdGgsIGFuZCBpZiB0aGUgbGFzdCBjaGlsZCBpcyBh
biBhbmNob3IsIGl0IHdpbGwgZ28gYWZ0ZXIgdGhlIGVsbGlwc2lzLCBzbyBhZGQgaW4gYSBzcGFj
ZSBhbmQgdGhlIGFuY2hvciB3aWR0aCB0b28KICAgICAgICAgTGF5b3V0VW5pdCB0b3RhbFdpZHRo
OwotICAgICAgICBJbmxpbmVCb3gqIGFuY2hvckJveCA9IGxhc3RMaW5lLT5sYXN0Q2hpbGQoKTsK
KyAgICAgICAgTGVnYWN5SW5saW5lQm94KiBhbmNob3JCb3ggPSBsYXN0TGluZS0+bGFzdENoaWxk
KCk7CiAgICAgICAgIGF1dG8mIGxhc3RWaXNpYmxlUmVuZGVyZXIgPSBsYXN0VmlzaWJsZUxpbmUt
PmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKGFuY2hvckJveCAmJiBhbmNo
b3JCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKS5pc0xpbmsoKSAmJiAmbGFzdFZpc2libGVSZW5kZXJl
ciAhPSAmYW5jaG9yQm94LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgdG90YWxXaWR0aCA9IGFu
Y2hvckJveC0+bG9naWNhbFdpZHRoKCkgKyBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4oZWxs
aXBzaXNBbmRTcGFjZSwgMiwgc3R5bGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAppbmRleCA2NWZkNzc4ODc3YWIuLjBhZjBlNTZmNzI3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCBM
YXlvdXRVbml0IFJlbmRlcklubGluZTo6b2Zmc2V0TGVmdCgpIGNvbnN0CiAgICAgICAgIGxpbmVM
YXlvdXQtPmZsb3coKS5lbnN1cmVMaW5lQm94ZXMoKTsKICNlbmRpZgogICAgIExheW91dFBvaW50
IHRvcExlZnQ7Ci0gICAgaWYgKElubGluZUJveCogZmlyc3RCb3ggPSBmaXJzdExpbmVCb3hJbmNs
dWRpbmdDdWxsaW5nKCkpCisgICAgaWYgKExlZ2FjeUlubGluZUJveCogZmlyc3RCb3ggPSBmaXJz
dExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkpCiAgICAgICAgIHRvcExlZnQgPSBmbG9vcmVkTGF5
b3V0UG9pbnQoZmlyc3RCb3gtPnRvcExlZnQoKSk7CiAgICAgcmV0dXJuIGFkanVzdGVkUG9zaXRp
b25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KHRvcExlZnQpLngoKTsKIH0KQEAgLTQ2MSw3ICs0NjEs
NyBAQCBMYXlvdXRVbml0IFJlbmRlcklubGluZTo6b2Zmc2V0VG9wKCkgY29uc3QKICAgICAgICAg
bGluZUxheW91dC0+ZmxvdygpLmVuc3VyZUxpbmVCb3hlcygpOwogI2VuZGlmCiAgICAgTGF5b3V0
UG9pbnQgdG9wTGVmdDsKLSAgICBpZiAoSW5saW5lQm94KiBmaXJzdEJveCA9IGZpcnN0TGluZUJv
eEluY2x1ZGluZ0N1bGxpbmcoKSkKKyAgICBpZiAoTGVnYWN5SW5saW5lQm94KiBmaXJzdEJveCA9
IGZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSkKICAgICAgICAgdG9wTGVmdCA9IGZsb29y
ZWRMYXlvdXRQb2ludChmaXJzdEJveC0+dG9wTGVmdCgpKTsKICAgICByZXR1cm4gYWRqdXN0ZWRQ
b3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQodG9wTGVmdCkueSgpOwogfQpAQCAtNjcyLDcg
KzY3Miw3IEBAIEludFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbmxpbmVCb3gqIFJlbmRlcklubGluZTo6Y3VsbGVk
SW5saW5lRmlyc3RMaW5lQm94KCkgY29uc3QKK0xlZ2FjeUlubGluZUJveCogUmVuZGVySW5saW5l
OjpjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdAogewogICAgIGZvciAoYXV0byYgY3Vy
cmVudCA6IGNoaWxkcmVuT2ZUeXBlPFJlbmRlck9iamVjdD4oKnRoaXMpKSB7CiAgICAgICAgIGlm
IChjdXJyZW50LmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTY5MCw3ICs2
OTAsNyBAQCBJbmxpbmVCb3gqIFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lRmlyc3RMaW5lQm94
KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyQlIuaW5saW5lQm94V3JhcHBl
cigpOwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlcklubGluZT4oY3VycmVudCkpIHsKICAg
ICAgICAgICAgIGF1dG8mIHJlbmRlcklubGluZSA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oY3Vy
cmVudCk7Ci0gICAgICAgICAgICBpZiAoSW5saW5lQm94KiByZXN1bHQgPSByZW5kZXJJbmxpbmUu
Zmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpKQorICAgICAgICAgICAgaWYgKExlZ2FjeUlu
bGluZUJveCogcmVzdWx0ID0gcmVuZGVySW5saW5lLmZpcnN0TGluZUJveEluY2x1ZGluZ0N1bGxp
bmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9IGVsc2UgaWYg
KGlzPFJlbmRlclRleHQ+KGN1cnJlbnQpKSB7CiAgICAgICAgICAgICBhdXRvJiByZW5kZXJUZXh0
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oY3VycmVudCk7CkBAIC03MDEsNyArNzAxLDcgQEAgSW5s
aW5lQm94KiBSZW5kZXJJbmxpbmU6OmN1bGxlZElubGluZUZpcnN0TGluZUJveCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUlubGluZUJveCogUmVuZGVySW5saW5lOjpjdWxsZWRJ
bmxpbmVMYXN0TGluZUJveCgpIGNvbnN0CitMZWdhY3lJbmxpbmVCb3gqIFJlbmRlcklubGluZTo6
Y3VsbGVkSW5saW5lTGFzdExpbmVCb3goKSBjb25zdAogewogICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjdXJyZW50ID0gbGFzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wcmV2
aW91c1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoY3VycmVudC0+aXNGbG9hdGluZ09yT3V0T2ZG
bG93UG9zaXRpb25lZCgpKQpAQCAtNzE5LDcgKzcxOSw3IEBAIElubGluZUJveCogUmVuZGVySW5s
aW5lOjpjdWxsZWRJbmxpbmVMYXN0TGluZUJveCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlbmRlckJSLmlubGluZUJveFdyYXBwZXIoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxS
ZW5kZXJJbmxpbmU+KCpjdXJyZW50KSkgewogICAgICAgICAgICAgUmVuZGVySW5saW5lJiByZW5k
ZXJJbmxpbmUgPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpjdXJyZW50KTsKLSAgICAgICAgICAg
IGlmIChJbmxpbmVCb3gqIHJlc3VsdCA9IHJlbmRlcklubGluZS5sYXN0TGluZUJveEluY2x1ZGlu
Z0N1bGxpbmcoKSkKKyAgICAgICAgICAgIGlmIChMZWdhY3lJbmxpbmVCb3gqIHJlc3VsdCA9IHJl
bmRlcklubGluZS5sYXN0TGluZUJveEluY2x1ZGluZ0N1bGxpbmcoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclRleHQ+KCpjdXJy
ZW50KSkgewogICAgICAgICAgICAgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJl
bmRlclRleHQ+KCpjdXJyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aAppbmRleCAyNTJlMTk4ODgxOWIuLmJjMDNlZDZiMzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBJbmxp
bmVGbG93Qm94KiBmaXJzdExpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlcy5maXJz
dExpbmVCb3goKTsgfQogICAgIElubGluZUZsb3dCb3gqIGxhc3RMaW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9saW5lQm94ZXMubGFzdExpbmVCb3goKTsgfQotICAgIElubGluZUJveCogZmlyc3RM
aW5lQm94SW5jbHVkaW5nQ3VsbGluZygpIGNvbnN0IHsgcmV0dXJuIGFsd2F5c0NyZWF0ZUxpbmVC
b3hlcygpID8gZmlyc3RMaW5lQm94KCkgOiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKTsgfQot
ICAgIElubGluZUJveCogbGFzdExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkgY29uc3QgeyByZXR1
cm4gYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkgPyBsYXN0TGluZUJveCgpIDogY3VsbGVkSW5saW5l
TGFzdExpbmVCb3goKTsgfQorICAgIExlZ2FjeUlubGluZUJveCogZmlyc3RMaW5lQm94SW5jbHVk
aW5nQ3VsbGluZygpIGNvbnN0IHsgcmV0dXJuIGFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpID8gZmly
c3RMaW5lQm94KCkgOiBjdWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKTsgfQorICAgIExlZ2FjeUlu
bGluZUJveCogbGFzdExpbmVCb3hJbmNsdWRpbmdDdWxsaW5nKCkgY29uc3QgeyByZXR1cm4gYWx3
YXlzQ3JlYXRlTGluZUJveGVzKCkgPyBsYXN0TGluZUJveCgpIDogY3VsbGVkSW5saW5lTGFzdExp
bmVCb3goKTsgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIGFic29sdXRl
UXVhZHNGb3JTZWxlY3Rpb24oVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTEwNSw4ICsxMDUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBjdWxsZWRJ
bmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3Q7Ci0gICAgSW5saW5lQm94KiBj
dWxsZWRJbmxpbmVGaXJzdExpbmVCb3goKSBjb25zdDsKLSAgICBJbmxpbmVCb3gqIGN1bGxlZElu
bGluZUxhc3RMaW5lQm94KCkgY29uc3Q7CisgICAgTGVnYWN5SW5saW5lQm94KiBjdWxsZWRJbmxp
bmVGaXJzdExpbmVCb3goKSBjb25zdDsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIGN1bGxlZElubGlu
ZUxhc3RMaW5lQm94KCkgY29uc3Q7CiAKICAgICB2b2lkIGFic29sdXRlUXVhZHNJZ25vcmluZ0Nv
bnRpbnVhdGlvbihjb25zdCBGbG9hdFJlY3QmLCBWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggYWIxNzk1MzdiZjI4Li4zZGMzZmY0MjY5NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcApAQCAt
MzExLDcgKzMxMSw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hh
bmdlZENoaWxkKFJlbmRlckJveE1vZGVsT2JqZWN0JiBjb250YWluCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlbmRlcklubGluZSogaW5saW5lQ29udGFpbmVyID0gaXM8UmVuZGVySW5saW5lPihj
b250YWluZXIpID8gJmRvd25jYXN0PFJlbmRlcklubGluZT4oY29udGFpbmVyKSA6IG51bGxwdHI7
Ci0gICAgSW5saW5lQm94KiBmaXJzdEJveCA9IGlubGluZUNvbnRhaW5lciA/IGlubGluZUNvbnRh
aW5lci0+Zmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpIDogZmlyc3RMaW5lQm94KCk7Cisg
ICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdEJveCA9IGlubGluZUNvbnRhaW5lciA/IGlubGluZUNv
bnRhaW5lci0+Zmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpIDogZmlyc3RMaW5lQm94KCk7
CiAKICAgICAvLyBJZiB3ZSBoYXZlIG5vIGZpcnN0IGxpbmUgYm94LCB0aGVuIGp1c3QgYmFpbCBl
YXJseS4KICAgICBpZiAoIWZpcnN0Qm94KSB7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBSZW5k
ZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyQm94TW9kZWxP
YmplY3QmIGNvbnRhaW4KICAgICAgICAgICAgIGlmIChJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94ID0g
ZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmN1cnJlbnQpLmxhc3RUZXh0Qm94KCkpCiAgICAgICAgICAg
ICAgICAgYm94ID0gJnRleHRCb3gtPnJvb3QoKTsKICAgICAgICAgfSBlbHNlIGlmIChpczxSZW5k
ZXJJbmxpbmU+KCpjdXJyZW50KSkgewotICAgICAgICAgICAgSW5saW5lQm94KiBsYXN0U2libGlu
Z0JveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmN1cnJlbnQpLmxhc3RMaW5lQm94SW5jbHVk
aW5nQ3VsbGluZygpOworICAgICAgICAgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0U2libGluZ0Jv
eCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmN1cnJlbnQpLmxhc3RMaW5lQm94SW5jbHVkaW5n
Q3VsbGluZygpOwogICAgICAgICAgICAgaWYgKGxhc3RTaWJsaW5nQm94KQogICAgICAgICAgICAg
ICAgIGJveCA9ICZsYXN0U2libGluZ0JveC0+cm9vdCgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMzc0MTdmZGY0N2I5
Li4yNDFkMmFlYzI1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKQEAgLTExMjMsNyArMTEyMyw3IEBAIGJvb2wgUmVuZGVyTGlzdE1hcmtlcjo6
aXNJbWFnZSgpIGNvbnN0CiAKIExheW91dFJlY3QgUmVuZGVyTGlzdE1hcmtlcjo6bG9jYWxTZWxl
Y3Rpb25SZWN0KCkKIHsKLSAgICBJbmxpbmVCb3gqIGJveCA9IGlubGluZUJveFdyYXBwZXIoKTsK
KyAgICBMZWdhY3lJbmxpbmVCb3gqIGJveCA9IGlubGluZUJveFdyYXBwZXIoKTsKICAgICBpZiAo
IWJveCkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoKSwgc2l6ZSgpKTsK
ICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5y
b290KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggYWMyMjdi
NzM4MDU3Li5mMjBmNzU5NWQ1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgRG9jdW1lbnRUaW1lbGluZTsKIGNsYXNzIEhp
dFRlc3RMb2NhdGlvbjsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3Vs
dDsKLWNsYXNzIElubGluZUJveDsKK2NsYXNzIExlZ2FjeUlubGluZUJveDsKIGNsYXNzIFBhdGg7
CiBjbGFzcyBQb3NpdGlvbjsKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGY1Yjg5ZTAwZWU1NC4uZmJk
ODZkNjg1MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6Y2xlYXJUcnVuY2F0aW9uKCkK
IAogYm9vbCBSb290SW5saW5lQm94Ojppc0h5cGhlbmF0ZWQoKSBjb25zdAogewotICAgIGZvciAo
SW5saW5lQm94KiBib3ggPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7IGJveDsgYm94ID0gYm94LT5u
ZXh0TGVhZk9uTGluZSgpKSB7CisgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdExlYWZEZXNjZW5k
YW50KCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChp
czxJbmxpbmVUZXh0Qm94PigqYm94KSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqYm94KS5o
YXNIeXBoZW4oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEyNyw3ICsx
MjcsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6OmxpbmVDYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJv
b2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgbGluZQogICAgIHJldHVybiBJbmxpbmVGbG93Qm94
OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGx0ciwgYmxvY2tFZGdlLCBlbGxpcHNpc1dpZHRoKTsK
IH0KIAotZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpcyhjb25zdCBBdG9tU3RyaW5n
JiBlbGxpcHNpc1N0ciwgIGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9j
a1JpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgSW5saW5lQm94KiBtYXJrdXBCb3gpCitm
bG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlw
c2lzU3RyLCAgYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRF
ZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBMZWdhY3lJbmxpbmVCb3gqIG1hcmt1cEJveCkKIHsK
ICAgICBpZiAoIWdFbGxpcHNpc0JveE1hcCkKICAgICAgICAgZ0VsbGlwc2lzQm94TWFwID0gbmV3
IEVsbGlwc2lzQm94TWFwKCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBSb290SW5saW5lQm94
OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpCiAgICAgICAgIGVsbGlwc2lzQm94
KCktPmFkanVzdFBvc2l0aW9uKGR4LCBkeSk7CiB9CiAKLXZvaWQgUm9vdElubGluZUJveDo6Y2hp
bGRSZW1vdmVkKElubGluZUJveCogYm94KQordm9pZCBSb290SW5saW5lQm94OjpjaGlsZFJlbW92
ZWQoTGVnYWN5SW5saW5lQm94KiBib3gpCiB7CiAgICAgaWYgKCZib3gtPnJlbmRlcmVyKCkgPT0g
bV9saW5lQnJlYWtPYmopCiAgICAgICAgIHNldExpbmVCcmVha0luZm8obnVsbHB0ciwgMCwgQmlk
aVN0YXR1cygpKTsKQEAgLTQzOCw4ICs0MzgsOCBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94Ojps
aW5lU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQog
CiAgICAgR2FwUmVjdHMgcmVzdWx0OwogCi0gICAgSW5saW5lQm94KiBmaXJzdEJveCA9IGZpcnN0
U2VsZWN0ZWRCb3goKTsKLSAgICBJbmxpbmVCb3gqIGxhc3RCb3ggPSBsYXN0U2VsZWN0ZWRCb3go
KTsKKyAgICBMZWdhY3lJbmxpbmVCb3gqIGZpcnN0Qm94ID0gZmlyc3RTZWxlY3RlZEJveCgpOwor
ICAgIExlZ2FjeUlubGluZUJveCogbGFzdEJveCA9IGxhc3RTZWxlY3RlZEJveCgpOwogICAgIGlm
IChsZWZ0R2FwKSB7CiAgICAgICAgIHJlc3VsdC51bml0ZUxlZnQoYmxvY2tGbG93KCkubG9naWNh
bExlZnRTZWxlY3Rpb25HYXAocm9vdEJsb2NrLCByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBv
ZmZzZXRGcm9tUm9vdEJsb2NrLCAmZmlyc3RCb3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLCBMYXlv
dXRVbml0KGZpcnN0Qm94LT5sb2dpY2FsTGVmdCgpKSwKICAgICAgICAgICAgIHNlbFRvcCwgc2Vs
SGVpZ2h0LCBjYWNoZSwgcGFpbnRJbmZvKSk7CkBAIC00NjAsNyArNDYwLDcgQEAgR2FwUmVjdHMg
Um9vdElubGluZUJveDo6bGluZVNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBMYXlvdXRQb2kKICAgICAgICAgLy8gTm93IGZpbGwgaW4gYW55IGdhcHMgb24gdGhlIGxp
bmUgdGhhdCBvY2N1cnJlZCBiZXR3ZWVuIHR3byBzZWxlY3RlZCBlbGVtZW50cy4KICAgICAgICAg
TGF5b3V0VW5pdCBsYXN0TG9naWNhbExlZnQgeyBmaXJzdEJveC0+bG9naWNhbFJpZ2h0KCkgfTsK
ICAgICAgICAgYm9vbCBpc1ByZXZpb3VzQm94U2VsZWN0ZWQgPSBmaXJzdEJveC0+c2VsZWN0aW9u
U3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lOwotICAgICAgICBm
b3IgKElubGluZUJveCogYm94ID0gZmlyc3RCb3gtPm5leHRMZWFmT25MaW5lKCk7IGJveDsgYm94
ID0gYm94LT5uZXh0TGVhZk9uTGluZSgpKSB7CisgICAgICAgIGZvciAoYXV0byogYm94ID0gZmly
c3RCb3gtPm5leHRMZWFmT25MaW5lKCk7IGJveDsgYm94ID0gYm94LT5uZXh0TGVhZk9uTGluZSgp
KSB7CiAgICAgICAgICAgICBpZiAoYm94LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVj
dDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGxv
Z2ljYWxSZWN0IHsgbGFzdExvZ2ljYWxMZWZ0LCBzZWxUb3AsIExheW91dFVuaXQoYm94LT5sb2dp
Y2FsTGVmdCgpIC0gbGFzdExvZ2ljYWxMZWZ0KSwgc2VsSGVpZ2h0IH07CiAgICAgICAgICAgICAg
ICAgbG9naWNhbFJlY3QubW92ZShyZW5kZXJlcigpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBvZmZzZXRGcm9tUm9vdEJsb2NrIDogTGF5b3V0U2l6ZShvZmZzZXRGcm9tUm9vdEJsb2NrLmhl
aWdodCgpLCBvZmZzZXRGcm9tUm9vdEJsb2NrLndpZHRoKCkpKTsKQEAgLTQ4Niw3ICs0ODYsNyBA
QCBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIFJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblN0
YXRlKCkKIHsKICAgICAvLyBXYWxrIG92ZXIgYWxsIG9mIHRoZSBzZWxlY3RlZCBib3hlcy4KICAg
ICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpIaWdo
bGlnaHRTdGF0ZTo6Tm9uZTsKLSAgICBmb3IgKElubGluZUJveCogYm94ID0gZmlyc3RMZWFmRGVz
Y2VuZGFudCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExlYWZPbkxpbmUoKSkgeworICAgIGZvciAo
YXV0byogYm94ID0gZmlyc3RMZWFmRGVzY2VuZGFudCgpOyBib3g7IGJveCA9IGJveC0+bmV4dExl
YWZPbkxpbmUoKSkgewogICAgICAgICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIGJveFN0
YXRlID0gYm94LT5zZWxlY3Rpb25TdGF0ZSgpOwogICAgICAgICBpZiAoKGJveFN0YXRlID09IFJl
bmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OlN0YXJ0ICYmIHN0YXRlID09IFJlbmRlck9iamVj
dDo6SGlnaGxpZ2h0U3RhdGU6OkVuZCkKICAgICAgICAgICAgIHx8IChib3hTdGF0ZSA9PSBSZW5k
ZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpFbmQgJiYgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpI
aWdobGlnaHRTdGF0ZTo6U3RhcnQpKQpAQCAtNTA1LDcgKzUwNSw3IEBAIFJlbmRlck9iamVjdDo6
SGlnaGxpZ2h0U3RhdGUgUm9vdElubGluZUJveDo6c2VsZWN0aW9uU3RhdGUoKQogICAgIHJldHVy
biBzdGF0ZTsKIH0KIAotSW5saW5lQm94KiBSb290SW5saW5lQm94OjpmaXJzdFNlbGVjdGVkQm94
KCkKK0xlZ2FjeUlubGluZUJveCogUm9vdElubGluZUJveDo6Zmlyc3RTZWxlY3RlZEJveCgpCiB7
CiAgICAgZm9yIChhdXRvKiBib3ggPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7IGJveDsgYm94ID0g
Ym94LT5uZXh0TGVhZk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChib3gtPnNlbGVjdGlvblN0YXRl
KCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKQEAgLTUxNCw3ICs1MTQs
NyBAQCBJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6OmZpcnN0U2VsZWN0ZWRCb3goKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1JbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3Rl
ZEJveCgpCitMZWdhY3lJbmxpbmVCb3gqIFJvb3RJbmxpbmVCb3g6Omxhc3RTZWxlY3RlZEJveCgp
CiB7CiAgICAgZm9yIChhdXRvKiBib3ggPSBsYXN0TGVhZkRlc2NlbmRhbnQoKTsgYm94OyBib3gg
PSBib3gtPnByZXZpb3VzTGVhZk9uTGluZSgpKSB7CiAgICAgICAgIGlmIChib3gtPnNlbGVjdGlv
blN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSkKQEAgLTc4Miw3
ICs3ODIsNyBAQCBzdGF0aWMgdm9pZCBzZXRBc2NlbnRBbmREZXNjZW50KExheW91dFVuaXQmIGFz
Y2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCwgTGF5b3V0VQogICAgIH0KIH0KIAotdm9pZCBSb290
SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KElubGluZUJveCYgYm94LCBHbHlwaE92
ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCYgdGV4dEJveERhdGFNYXAsIExheW91dFVuaXQmIGFz
Y2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCwKK3ZvaWQgUm9vdElubGluZUJveDo6YXNjZW50QW5k
RGVzY2VudEZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxi
YWNrRm9udHNNYXAmIHRleHRCb3hEYXRhTWFwLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVu
aXQmIGRlc2NlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCYgYWZmZWN0c0FzY2VudCwgYm9vbCYgYWZmZWN0c0Rlc2NlbnQpIGNvbnN0CiB7CiAgICAg
Ym9vbCBhc2NlbnREZXNjZW50U2V0ID0gZmFsc2U7CkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBS
b290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KElubGluZUJveCYgYm94LCBHbHlw
aE92ZXJmbG93QW5kRmFsbGIKICAgICB9CiB9CiAKLUxheW91dFVuaXQgUm9vdElubGluZUJveDo6
dmVydGljYWxQb3NpdGlvbkZvckJveChJbmxpbmVCb3gqIGJveCwgVmVydGljYWxQb3NpdGlvbkNh
Y2hlJiB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpCitMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZl
cnRpY2FsUG9zaXRpb25Gb3JCb3goTGVnYWN5SW5saW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRp
b25DYWNoZSYgdmVydGljYWxQb3NpdGlvbkNhY2hlKQogewogICAgIGlmIChib3gtPnJlbmRlcmVy
KCkuaXNUZXh0T3JMaW5lQnJlYWsoKSkKICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoYm94LT5w
YXJlbnQoKS0+bG9naWNhbFRvcCgpKTsKQEAgLTk3MSw3ICs5NzEsNyBAQCBMYXlvdXRVbml0IFJv
b3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5saW5lQm94KiBib3gsIFZlcnRp
Y2FsUG9zaXRpbwogICAgIHJldHVybiB2ZXJ0aWNhbFBvc2l0aW9uOwogfQogCi1ib29sIFJvb3RJ
bmxpbmVCb3g6OmluY2x1ZGVMZWFkaW5nRm9yQm94KElubGluZUJveCYgYm94KSBjb25zdAorYm9v
bCBSb290SW5saW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmIGJv
eCkgY29uc3QKIHsKICAgICBpZiAoYm94LnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpIHx8IChib3gu
cmVuZGVyZXIoKS5pc1RleHRPckxpbmVCcmVhaygpICYmICFib3guYmVoYXZlc0xpa2VUZXh0KCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05ODAsNyArOTgwLDcgQEAgYm9vbCBSb290SW5s
aW5lQm94OjppbmNsdWRlTGVhZGluZ0ZvckJveChJbmxpbmVCb3gmIGJveCkgY29uc3QKICAgICBy
ZXR1cm4gbGluZUJveENvbnRhaW4uY29udGFpbnMoTGluZUJveENvbnRhaW46OklubGluZSkgfHwg
KCZib3ggPT0gdGhpcyAmJiBsaW5lQm94Q29udGFpbi5jb250YWlucyhMaW5lQm94Q29udGFpbjo6
QmxvY2spKTsKIH0KIAotYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlRm9udEZvckJveChJbmxp
bmVCb3gmIGJveCkgY29uc3QKK2Jvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3go
TGVnYWN5SW5saW5lQm94JiBib3gpIGNvbnN0CiB7CiAgICAgaWYgKGJveC5yZW5kZXJlcigpLmlz
UmVwbGFjZWQoKSB8fCAoYm94LnJlbmRlcmVyKCkuaXNUZXh0T3JMaW5lQnJlYWsoKSAmJiAhYm94
LmJlaGF2ZXNMaWtlVGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTkxLDcgKzk5
MSw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUZvbnRGb3JCb3goSW5saW5lQm94JiBi
b3gpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5saW5lQm94Q29udGFpbigp
LmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpGb250KTsKIH0KIAotYm9vbCBSb290SW5saW5lQm94
OjppbmNsdWRlR2x5cGhzRm9yQm94KElubGluZUJveCYgYm94KSBjb25zdAorYm9vbCBSb290SW5s
aW5lQm94OjppbmNsdWRlR2x5cGhzRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAog
ewogICAgIGlmIChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigp
LmlzVGV4dE9yTGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6
aW5jbHVkZUdseXBoc0ZvckJveChJbmxpbmVCb3gmIGJveCkgY29uc3QKICAgICByZXR1cm4gcmVu
ZGVyZXIoKS5zdHlsZSgpLmxpbmVCb3hDb250YWluKCkuY29udGFpbnMoTGluZUJveENvbnRhaW46
OkdseXBocyk7CiB9CiAKLWJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUluaXRpYWxMZXR0ZXJG
b3JCb3goSW5saW5lQm94JiBib3gpIGNvbnN0Citib29sIFJvb3RJbmxpbmVCb3g6OmluY2x1ZGVJ
bml0aWFsTGV0dGVyRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewogICAgIGlm
IChib3gucmVuZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9y
TGluZUJyZWFrKCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwMTMsNyArMTAxMyw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZUlu
aXRpYWxMZXR0ZXJGb3JCb3goSW5saW5lQm94JiBib3gpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRl
cmVyKCkuc3R5bGUoKS5saW5lQm94Q29udGFpbigpLmNvbnRhaW5zKExpbmVCb3hDb250YWluOjpJ
bml0aWFsTGV0dGVyKTsKIH0KIAotYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlTWFyZ2luRm9y
Qm94KElubGluZUJveCYgYm94KSBjb25zdAorYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlTWFy
Z2luRm9yQm94KExlZ2FjeUlubGluZUJveCYgYm94KSBjb25zdAogewogICAgIGlmIChib3gucmVu
ZGVyZXIoKS5pc1JlcGxhY2VkKCkgfHwgKGJveC5yZW5kZXJlcigpLmlzVGV4dE9yTGluZUJyZWFr
KCkgJiYgIWJveC5iZWhhdmVzTGlrZVRleHQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTEwNDEsNyArMTA0MSw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6b3V0cHV0TGluZUJveChXVEY6
OlRleHRTdHJlYW0mIHN0cmVhbSwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpCiAgICAgICAgIHN0cmVh
bSA8PCAiICI7CiAgICAgc3RyZWFtIDw8ICJMaW5lOiAodG9wOiAiIDw8IGxpbmVUb3AoKSA8PCAi
IGJvdHRvbTogIiA8PCBsaW5lQm90dG9tKCkgPDwgIikgd2l0aCBsZWFkaW5nICh0b3A6ICIgPDwg
bGluZUJveFRvcCgpIDw8ICIgYm90dG9tOiAiIDw8IGxpbmVCb3hCb3R0b20oKSA8PCAiKSI7CiAg
ICAgc3RyZWFtLm5leHRMaW5lKCk7Ci0gICAgSW5saW5lQm94OjpvdXRwdXRMaW5lQm94KHN0cmVh
bSwgbWFyaywgZGVwdGgpOworICAgIExlZ2FjeUlubGluZUJveDo6b3V0cHV0TGluZUJveChzdHJl
YW0sIG1hcmssIGRlcHRoKTsKIH0KIAogY29uc3QgY2hhciogUm9vdElubGluZUJveDo6Ym94TmFt
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCA5
Y2FkNmFiY2U1NjguLjEwNTVkYzg3ODcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5oCkBAIC05NywxOCArOTcsMTggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxp
bmVCcmVha1BvcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJyZWFrUG9zOyB9CiAgICAgdm9pZCBz
ZXRMaW5lQnJlYWtQb3ModW5zaWduZWQgcCkgeyBtX2xpbmVCcmVha1BvcyA9IHA7IH0KIAotICAg
IHVzaW5nIElubGluZUJveDo6ZW5kc1dpdGhCcmVhazsKLSAgICB1c2luZyBJbmxpbmVCb3g6OnNl
dEVuZHNXaXRoQnJlYWs7CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94OjplbmRzV2l0aEJyZWFr
OworICAgIHVzaW5nIExlZ2FjeUlubGluZUJveDo6c2V0RW5kc1dpdGhCcmVhazsKIAotICAgIHZv
aWQgY2hpbGRSZW1vdmVkKElubGluZUJveCogYm94KTsKKyAgICB2b2lkIGNoaWxkUmVtb3ZlZChM
ZWdhY3lJbmxpbmVCb3gqKTsKIAogICAgIGJvb2wgbGluZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMo
Ym9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBsaW5lQm94RWRnZSwgaW50IGVsbGlwc2lzV2lk
dGgpOwogICAgIC8vIFJldHVybiB0aGUgdHJ1bmNhdGVkV2lkdGgsIHRoZSB3aWR0aCBvZiB0aGUg
dHJ1bmNhdGVkIHRleHQgKyBlbGxpcHNpcy4KLSAgICBmbG9hdCBwbGFjZUVsbGlwc2lzKGNvbnN0
IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCBib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwg
ZmxvYXQgYmxvY2tSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIElubGluZUJveCogbWFy
a3VwQm94ID0gbnVsbHB0cik7CisgICAgZmxvYXQgcGxhY2VFbGxpcHNpcyhjb25zdCBBdG9tU3Ry
aW5nJiBlbGxpcHNpc1N0ciwgYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJs
b2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBMZWdhY3lJbmxpbmVCb3gqIG1hcmt1
cEJveCA9IG51bGxwdHIpOwogICAgIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIEVsbGlw
c2lzQm94IG9yIC0xLgogICAgIGZsb2F0IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGZsb2F0
IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRo
LCBmbG9hdCAmdHJ1bmNhdGVkV2lkdGgsIGJvb2wmIGZvdW5kQm94KSBmaW5hbDsKIAotICAgIHVz
aW5nIElubGluZUJveDo6aGFzRWxsaXBzaXNCb3g7CisgICAgdXNpbmcgTGVnYWN5SW5saW5lQm94
OjpoYXNFbGxpcHNpc0JveDsKICAgICBFbGxpcHNpc0JveCogZWxsaXBzaXNCb3goKSBjb25zdDsK
IAogICAgIHZvaWQgcGFpbnRFbGxpcHNpc0JveChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBjb25zdDsKQEAg
LTEyNCw4ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0
aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92
ZXJyaWRlOwogCiAgICAgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBzZWxlY3Rpb25TdGF0
ZSgpIGZpbmFsOwotICAgIElubGluZUJveCogZmlyc3RTZWxlY3RlZEJveCgpOwotICAgIElubGlu
ZUJveCogbGFzdFNlbGVjdGVkQm94KCk7CisgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdFNlbGVj
dGVkQm94KCk7CisgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0U2VsZWN0ZWRCb3goKTsKIAogICAg
IEdhcFJlY3RzIGxpbmVTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3Qg
TGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUm
IG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAgICAgIExheW91dFVuaXQgc2VsVG9wLCBMYXlvdXRV
bml0IHNlbEhlaWdodCwgY29uc3QgTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcyYsIGNvbnN0
IFBhaW50SW5mbyopOwpAQCAtMTYwLDggKzE2MCw4IEBAIHB1YmxpYzoKIAogICAgIExheW91dFJl
Y3QgcGFkZGVkTGF5b3V0T3ZlcmZsb3dSZWN0KExheW91dFVuaXQgZW5kUGFkZGluZykgY29uc3Q7
CiAKLSAgICB2b2lkIGFzY2VudEFuZERlc2NlbnRGb3JCb3goSW5saW5lQm94JiwgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQm
IGRlc2NlbnQsIGJvb2wmIGFmZmVjdHNBc2NlbnQsIGJvb2wmIGFmZmVjdHNEZXNjZW50KSBjb25z
dDsKLSAgICBMYXlvdXRVbml0IHZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5saW5lQm94KiwgVmVy
dGljYWxQb3NpdGlvbkNhY2hlJik7CisgICAgdm9pZCBhc2NlbnRBbmREZXNjZW50Rm9yQm94KExl
Z2FjeUlubGluZUJveCYsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwJiwgTGF5b3V0
VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50LCBib29sJiBhZmZlY3RzQXNjZW50LCBi
b29sJiBhZmZlY3RzRGVzY2VudCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0
aW9uRm9yQm94KExlZ2FjeUlubGluZUJveCosIFZlcnRpY2FsUG9zaXRpb25DYWNoZSYpOwogICAg
IGJvb2wgZml0c1RvR2x5cGhzKCkgY29uc3Q7CiAgICAgYm9vbCBpbmNsdWRlc1Jvb3RMaW5lQm94
Rm9udE9yTGVhZGluZygpIGNvbnN0OwogICAgIApAQCAtMTkxLDExICsxOTEsMTEgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBib29sIGlzUm9vdElubGluZUJveCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIGJvb2wgaW5jbHVkZUxlYWRpbmdGb3JCb3goSW5saW5lQm94Jikg
Y29uc3Q7Ci0gICAgYm9vbCBpbmNsdWRlRm9udEZvckJveChJbmxpbmVCb3gmKSBjb25zdDsKLSAg
ICBib29sIGluY2x1ZGVHbHlwaHNGb3JCb3goSW5saW5lQm94JikgY29uc3Q7Ci0gICAgYm9vbCBp
bmNsdWRlSW5pdGlhbExldHRlckZvckJveChJbmxpbmVCb3gmKSBjb25zdDsKLSAgICBib29sIGlu
Y2x1ZGVNYXJnaW5Gb3JCb3goSW5saW5lQm94JikgY29uc3Q7CisgICAgYm9vbCBpbmNsdWRlTGVh
ZGluZ0ZvckJveChMZWdhY3lJbmxpbmVCb3gmKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVGb250
Rm9yQm94KExlZ2FjeUlubGluZUJveCYpIGNvbnN0OworICAgIGJvb2wgaW5jbHVkZUdseXBoc0Zv
ckJveChMZWdhY3lJbmxpbmVCb3gmKSBjb25zdDsKKyAgICBib29sIGluY2x1ZGVJbml0aWFsTGV0
dGVyRm9yQm94KExlZ2FjeUlubGluZUJveCYpIGNvbnN0OworICAgIGJvb2wgaW5jbHVkZU1hcmdp
bkZvckJveChMZWdhY3lJbmxpbmVCb3gmKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgbGluZVNu
YXBBZGp1c3RtZW50KExheW91dFVuaXQgZGVsdGEgPSAwX2x1KSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMGYyODM1ODU3
N2ViLi5kMGQyYjQwNWRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcApAQCAtNDY1LDcgKzQ2NSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5k
ZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29u
dGVuCiAgICAgQVNTRVJUKCFyb290Qm94LT5uZXh0Um9vdEJveCgpKTsKICAgICBBU1NFUlQoY2hp
bGRyZW5JbmxpbmUoKSk7CiAKLSAgICBJbmxpbmVCb3gqIGNsb3Nlc3RCb3ggPSBkb3duY2FzdDxT
VkdSb290SW5saW5lQm94Pigqcm9vdEJveCkuY2xvc2VzdExlYWZDaGlsZEZvclBvc2l0aW9uKHBv
aW50SW5Db250ZW50cyk7CisgICAgTGVnYWN5SW5saW5lQm94KiBjbG9zZXN0Qm94ID0gZG93bmNh
c3Q8U1ZHUm9vdElubGluZUJveD4oKnJvb3RCb3gpLmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb3NpdGlv
bihwb2ludEluQ29udGVudHMpOwogICAgIGlmICghY2xvc2VzdEJveCkKICAgICAgICAgcmV0dXJu
IGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCmluZGV4
IDJiNDk3MTcwODc4NS4uZTYxNjQ3Y2M5M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBT
VkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWlu
dEluZm8pCiAgICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSk7CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKLSAgICBmb3Ig
KElubGluZUJveCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChpczxTVkdJbmxp
bmVUZXh0Qm94PigqY2hpbGQpKQogICAgICAgICAgICAgZG93bmNhc3Q8U1ZHSW5saW5lVGV4dEJv
eD4oKmNoaWxkKS5wYWludFNlbGVjdGlvbkJhY2tncm91bmQoY2hpbGRQYWludEluZm8pOwogICAg
ICAgICBlbHNlIGlmIChpczxTVkdJbmxpbmVGbG93Qm94PigqY2hpbGQpKQpAQCAtNTQsNyArNTQs
NyBAQCB2b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCBy
ZW5kZXJpbmdDb250ZXh0KHJlbmRlcmVyKCksIHBhaW50SW5mbywgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNSZW5k
ZXJpbmdQcmVwYXJlZCgpKSB7Ci0gICAgICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkKKyAgICAgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRP
bkxpbmUoKSkKICAgICAgICAgICAgIGNoaWxkLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0
LCAwLCAwKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSb290SW5saW5lQm94LmNwcAppbmRleCBmZjIxOWU5OTc4MDAuLmEwNjNmOWMwNGE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBQYWludElu
Zm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKICAgICBpZiAoaGFzU2VsZWN0aW9uICYmIHNo
b3VsZFBhaW50U2VsZWN0aW9uSGlnaGxpZ2h0KSB7Ci0gICAgICAgIGZvciAoSW5saW5lQm94KiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkg
eworICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgICAgICBpZiAoaXM8U1ZHSW5saW5lVGV4
dEJveD4oKmNoaWxkKSkKICAgICAgICAgICAgICAgICBkb3duY2FzdDxTVkdJbmxpbmVUZXh0Qm94
PigqY2hpbGQpLnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChjaGlsZFBhaW50SW5mbyk7CiAgICAg
ICAgICAgICBlbHNlIGlmIChpczxTVkdJbmxpbmVGbG93Qm94PigqY2hpbGQpKQpAQCAtNzAsNyAr
NzAsNyBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4
dCByZW5kZXJpbmdDb250ZXh0KHJlbmRlclNWR1RleHQoKSwgcGFpbnRJbmZvLCBTVkdSZW5kZXJp
bmdDb250ZXh0OjpTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAgICBpZiAocmVuZGVyaW5nQ29udGV4
dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKLSAgICAgICAgZm9yIChJbmxpbmVCb3gqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKQorICAg
ICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dE9uTGluZSgpKQogICAgICAgICAgICAgY2hpbGQtPnBhaW50KHBhaW50SW5mbywgcGFp
bnRPZmZzZXQsIDAsIDApOwogICAgIH0KIH0KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNWR1Jv
b3RJbmxpbmVCb3g6OmNvbXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpCiAKIHZv
aWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZs
b3dCb3gqIHN0YXJ0LCBTVkdUZXh0TGF5b3V0RW5naW5lJiBjaGFyYWN0ZXJMYXlvdXQpCiB7Ci0g
ICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gc3RhcnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBzdGFy
dC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAg
ICAgICAgIGlmIChpczxTVkdJbmxpbmVUZXh0Qm94PigqY2hpbGQpKSB7CiAgICAgICAgICAgICBB
U1NFUlQoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4oY2hpbGQtPnJlbmRlcmVyKCkpKTsKICAgICAg
ICAgICAgIGNoYXJhY3RlckxheW91dC5sYXlvdXRJbmxpbmVUZXh0Qm94KGRvd25jYXN0PFNWR0lu
bGluZVRleHRCb3g+KCpjaGlsZCkpOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgU1ZHUm9vdElu
bGluZUJveDo6bGF5b3V0Q2hhcmFjdGVyc0luVGV4dEJveGVzKElubGluZUZsb3dCb3gqIHN0YXJ0
LCBTVkdUZXh0CiAKIHZvaWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0Q2hpbGRCb3hlcyhJbmxp
bmVGbG93Qm94KiBzdGFydCwgRmxvYXRSZWN0KiBjaGlsZFJlY3QpCiB7Ci0gICAgZm9yIChJbmxp
bmVCb3gqIGNoaWxkID0gc3RhcnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRPbkxpbmUoKSkgeworICAgIGZvciAoYXV0byogY2hpbGQgPSBzdGFydC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIEZsb2F0
UmVjdCBib3hSZWN0OwogICAgICAgICBpZiAoaXM8U1ZHSW5saW5lVGV4dEJveD4oKmNoaWxkKSkg
ewogICAgICAgICAgICAgQVNTRVJUKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KGNoaWxkLT5yZW5k
ZXJlcigpKSk7CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBTVkdSb290SW5saW5lQm94OjpsYXlv
dXRSb290Qm94KGNvbnN0IEZsb2F0UmVjdCYgY2hpbGRSZWN0KQogICAgIHBhcmVudEJsb2NrLnNl
dFNpemUoYm91bmRpbmdSZWN0LnNpemUoKSk7CiAKICAgICAvLyBQb3NpdGlvbiBhbGwgY2hpbGRy
ZW4gcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBibG9jay4KLSAgICBmb3IgKElubGluZUJveCogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsK
KyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIC8vIFNraXAgZ2VuZXJhdGVkIGNvbnRlbnQuCiAg
ICAgICAgIGlmICghY2hpbGQtPnJlbmRlcmVyKCkubm9kZSgpKQogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xODgsMTYgKzE4OCwxNiBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dFJv
b3RCb3goY29uc3QgRmxvYXRSZWN0JiBjaGlsZFJlY3QpCiAgICAgc2V0TGluZVRvcEJvdHRvbVBv
c2l0aW9ucygwLCBib3VuZGluZ1JlY3QuaGVpZ2h0KCksIDAsIGJvdW5kaW5nUmVjdC5oZWlnaHQo
KSk7CiB9CiAKLUlubGluZUJveCogU1ZHUm9vdElubGluZUJveDo6Y2xvc2VzdExlYWZDaGlsZEZv
clBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK0xlZ2FjeUlubGluZUJveCogU1ZH
Um9vdElubGluZUJveDo6Y2xvc2VzdExlYWZDaGlsZEZvclBvc2l0aW9uKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkKIHsKLSAgICBJbmxpbmVCb3gqIGZpcnN0TGVhZiA9IGZpcnN0TGVhZkRlc2Nl
bmRhbnQoKTsKLSAgICBJbmxpbmVCb3gqIGxhc3RMZWFmID0gbGFzdExlYWZEZXNjZW5kYW50KCk7
CisgICAgTGVnYWN5SW5saW5lQm94KiBmaXJzdExlYWYgPSBmaXJzdExlYWZEZXNjZW5kYW50KCk7
CisgICAgTGVnYWN5SW5saW5lQm94KiBsYXN0TGVhZiA9IGxhc3RMZWFmRGVzY2VuZGFudCgpOwog
ICAgIGlmIChmaXJzdExlYWYgPT0gbGFzdExlYWYpCiAgICAgICAgIHJldHVybiBmaXJzdExlYWY7
CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIHZlcnRpY2FsIHRleHQhCi0gICAgSW5saW5lQm94
KiBjbG9zZXN0TGVhZiA9IG51bGxwdHI7Ci0gICAgZm9yIChJbmxpbmVCb3gqIGxlYWYgPSBmaXJz
dExlYWY7IGxlYWY7IGxlYWYgPSBsZWFmLT5uZXh0TGVhZk9uTGluZSgpKSB7CisgICAgTGVnYWN5
SW5saW5lQm94KiBjbG9zZXN0TGVhZiA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvKiBsZWFmID0g
Zmlyc3RMZWFmOyBsZWFmOyBsZWFmID0gbGVhZi0+bmV4dExlYWZPbkxpbmUoKSkgewogICAgICAg
ICBpZiAoIWxlYWYtPmlzU1ZHSW5saW5lVGV4dEJveCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChwb2ludC55KCkgPCBsZWFmLT55KCkpCkBAIC0yMTUsNyArMjE1LDcgQEAg
SW5saW5lQm94KiBTVkdSb290SW5saW5lQm94OjpjbG9zZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24o
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW4KIAogYm9vbCBTVkdSb290SW5saW5lQm94Ojpub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKLSAgICBmb3IgKElu
bGluZUJveCogbGVhZiA9IGZpcnN0TGVhZkRlc2NlbmRhbnQoKTsgbGVhZjsgbGVhZiA9IGxlYWYt
Pm5leHRMZWFmT25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGxlYWYgPSBmaXJzdExlYWZEZXNj
ZW5kYW50KCk7IGxlYWY7IGxlYWYgPSBsZWFmLT5uZXh0TGVhZk9uTGluZSgpKSB7CiAgICAgICAg
IGlmICghbGVhZi0+aXNTVkdJbmxpbmVUZXh0Qm94KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKGxlYWYtPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20sIGhpdFRl
c3RBY3Rpb24pKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaW5kRmly
c3RBbmRMYXN0QXR0cmlidXRlc0luVmVjdG9yKFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmliCiAg
ICAgQVNTRVJUKGxhc3QpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZUlubGluZUJv
eFJhbmdlQW5kVmFsdWVMaXN0c0lmTmVlZGVkKHZvaWQqIHVzZXJEYXRhLCBWZWN0b3I8SW5saW5l
Qm94Kj46Oml0ZXJhdG9yIGZpcnN0LCBWZWN0b3I8SW5saW5lQm94Kj46Oml0ZXJhdG9yIGxhc3Qp
CitzdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZUlubGluZUJveFJhbmdlQW5kVmFsdWVMaXN0c0lm
TmVlZGVkKHZvaWQqIHVzZXJEYXRhLCBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9y
IGZpcnN0LCBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj46Oml0ZXJhdG9yIGxhc3QpCiB7CiAgICAg
QVNTRVJUKHVzZXJEYXRhKTsKICAgICBWZWN0b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYg
YXR0cmlidXRlcyA9ICpyZWludGVycHJldF9jYXN0PFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmli
dXRlcyo+Kj4odXNlckRhdGEpOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZOZWVkZWQodm9pZCogdXNlckRh
dGEsIFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFpczxTVkdJbmxpbmVU
ZXh0Qm94PigqKmxhc3QpIHx8ICFpczxTVkdJbmxpbmVUZXh0Qm94PigqKmZpcnN0KSkgewotICAg
ICAgICAgICAgSW5saW5lQm94KiB0ZW1wID0gKmZpcnN0OworICAgICAgICAgICAgTGVnYWN5SW5s
aW5lQm94KiB0ZW1wID0gKmZpcnN0OwogICAgICAgICAgICAgKmZpcnN0ID0gKmxhc3Q7CiAgICAg
ICAgICAgICAqbGFzdCA9IHRlbXA7CiAgICAgICAgICAgICArK2ZpcnN0OwpAQCAtMzAxLDcgKzMw
MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxp
c3RzSWZOZWVkZWQodm9pZCogdXNlckRhdGEsIFZlCiAgICAgICAgICAgICBzd2FwSXRlbXNJbkxh
eW91dEF0dHJpYnV0ZXMoZmlyc3RBdHRyaWJ1dGVzLCBsYXN0QXR0cmlidXRlcywgZmlyc3RUZXh0
Qm94LnN0YXJ0KCksIGxhc3RUZXh0Qm94LnN0YXJ0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
SW5saW5lQm94KiB0ZW1wID0gKmZpcnN0OworICAgICAgICBMZWdhY3lJbmxpbmVCb3gqIHRlbXAg
PSAqZmlyc3Q7CiAgICAgICAgICpmaXJzdCA9ICpsYXN0OwogICAgICAgICAqbGFzdCA9IHRlbXA7
CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZUlubGluZUJv
eFJhbmdlQW5kVmFsdWVMaXN0c0lmTmVlZGVkKHZvaWQqIHVzZXJEYXRhLCBWZQogCiB2b2lkIFNW
R1Jvb3RJbmxpbmVCb3g6OnJlb3JkZXJWYWx1ZUxpc3RzKFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0
cmlidXRlcyo+JiBhdHRyaWJ1dGVzKQogewotICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICBWZWN0b3I8TGVnYWN5SW5saW5lQm94Kj4gbGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXI7CiAgICAgY29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZC
b3hlc0luTG9naWNhbE9yZGVyLCByZXZlcnNlSW5saW5lQm94UmFuZ2VBbmRWYWx1ZUxpc3RzSWZO
ZWVkZWQsICZhdHRyaWJ1dGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guaAppbmRleCBmZmM4NDRjOTc2NWMuLmNiNzMzY2E2OWE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wdXRlUGVyQ2hhcmFjdGVy
TGF5b3V0SW5mb3JtYXRpb24oKTsKIAotICAgIElubGluZUJveCogY2xvc2VzdExlYWZDaGlsZEZv
clBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50Jik7CisgICAgTGVnYWN5SW5saW5lQm94KiBjbG9z
ZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIGJvb2wg
bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90
dG9tLCBIaXRUZXN0QWN0aW9uKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UXVlcnkuY3BwCmluZGV4IGZkODkwMjI5NGI2YS4uMWQ3N2MxYTk3MjBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCkBAIC04
OCw3ICs4OCw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojpjb2xsZWN0VGV4dEJveGVzSW5GbG93Qm94
KElubGluZUZsb3dCb3gqIGZsb3dCb3gpCiAgICAgaWYgKCFmbG93Qm94KQogICAgICAgICByZXR1
cm47CiAKLSAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmbG93Qm94LT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gZmxvd0JveC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9u
TGluZSgpKSB7CiAgICAgICAgIGlmIChpczxJbmxpbmVGbG93Qm94PigqY2hpbGQpKSB7CiAgICAg
ICAgICAgICAvLyBTa2lwIGdlbmVyYXRlZCBjb250ZW50LgogICAgICAgICAgICAgaWYgKCFjaGls
ZC0+cmVuZGVyZXIoKS5ub2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzUy
ZmQ5MjgwNjM3Li5hMzZjNzA2YjZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAyMS0wNi0wMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIElubGluZUJveCB0byBMZWdhY3lJbmxpbmVCb3gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjUwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbToKKwogMjAyMS0wNS0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRp
b25hbCwgdXNpbmcgdGhhdCBjbGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCAw
OWRkZWYzYTc3MDIuLmViMzk0MWYyNjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC01MCw3ICs1MCw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvSW5saW5lQm94Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVUcmF2ZXJzYWwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyQmxvY2suaD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>