<?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>95163</bug_id>
          
          <creation_ts>2012-08-27 19:29:50 -0700</creation_ts>
          <short_desc>REGRESSION(r126836): Broke all Apple ports, EFL, and Qt. (Requested by tkent on #webkit).</short_desc>
          <delta_ts>2012-08-27 19:39: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706000</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 19:29:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/126836 broke the build:
Broke all Apple ports, EFL, and Qt. (Requested by tkent on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706002</commentid>
    <comment_count>1</comment_count>
      <attachid>160885</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 19:30:54 -0700</bug_when>
    <thetext>Created attachment 160885
ROLLOUT of r126836

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706004</commentid>
    <comment_count>2</comment_count>
      <attachid>160885</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-27 19:39:17 -0700</bug_when>
    <thetext>Comment on attachment 160885
ROLLOUT of r126836

Clearing flags on attachment: 160885

Committed r126837: &lt;http://trac.webkit.org/changeset/126837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706005</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-08-27 19:39:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160885</attachid>
            <date>2012-08-27 19:30:54 -0700</date>
            <delta_ts>2012-08-27 19:39:17 -0700</delta_ts>
            <desc>ROLLOUT of r126836</desc>
            <filename>bug-95163-20120828023713.patch</filename>
            <type>text/plain</type>
            <size>703388</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTExY2IwNzc4ZWRkZTBhMzYxMWM1ZTlmZjc3MzJmMGIwNWRkZTAzLi5lMzc1ODZjM2NkNTdkZjM2
MjU3NDdjOTEwNzlmOWQ3NzVmYjY0YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjAgQEAKKzIwMTItMDgtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY4MzYuCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjgzNgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxNjMKKworICAgICAgICBC
cm9rZSBhbGwgQXBwbGUgcG9ydHMsIEVGTCwgYW5kIFF0LiAoUmVxdWVzdGVkIGJ5IHRrZW50IG9u
CisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFw
OjpnZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0
YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OnNldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBBUEkvSlNDbGFzc1Jl
Zi5jcHA6CisgICAgICAgIChPcGFxdWVKU0NsYXNzOjp+T3BhcXVlSlNDbGFzcyk6CisgICAgICAg
IChPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSk6Cisg
ICAgICAgIChPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YSk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAg
KEpTQzo6RXZhbENvZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6Om5hbWVGb3JSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvZGUvSnVtcFRhYmxlLmg6
CisgICAgICAgIChKU0M6OlN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAg
ICAoSlNDOjpTdHJpbmdKdW1wVGFibGU6OmN0aUZvclZhbHVlKToKKyAgICAgICAgKiBieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5k
VmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL1Nh
bXBsaW5nVG9vbC5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nVG9vbDo6ZHVtcCk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjphZGRHbG9iYWxWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRk
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29uc3RhbnRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TGF6eU5ld0Z1bmN0aW9uKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6
CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisgICAg
ICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6b2JzZXJ2ZUJhZEFy
Z3VtZW50c1VzZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25Q
aGFzZTo6b2JzZXJ2ZVByb3BlckFyZ3VtZW50c1VzZSk6CisgICAgICAgIChKU0M6OkRGRzo6QXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6aXNPS1RvT3B0aW1pemUpOgorICAgICAgICAoSlND
OjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJlbW92ZUFyZ3VtZW50c1JlZmVy
ZW5jaW5nUGhhbnRvbUNoaWxkKToKKyAgICAgICAgKiBkZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmRlY29kZWRDb2RlTWFwRm9y
KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlQ2FjaGU6On5CeXRlQ29kZUNhY2hlKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZUNhY2hlOjpnZXQpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmNlbGxDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZTo6cnVuKToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2U6Om5vdGljZVN0
cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVDaGVja0hvaXN0aW5n
UGhhc2U6Om5vdGljZUNsb2JiZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6Om1hcmtQcm90ZWN0ZWRPYmplY3RzKToKKyAgICAgICAgKiBoZWFwL0hlYXAu
aDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Zm9yRWFjaFByb3RlY3RlZENlbGwpOgorICAgICAgICAq
IGhlYXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGlu
ZVNldDo6bWFya1Nsb3cpOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZVNldDo6ZGVsZXRl
VW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFj
ay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFjazo6aW50ZXJuYWxBcHBlbmQpOgorICAgICAg
ICAqIGhlYXAvV2Vhay5oOgorICAgICAgICAoSlNDOjp3ZWFrUmVtb3ZlKToKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAg
ICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlTdHViKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmlj
dE9iamVjdExpdGVyYWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGUuY3BwOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvbk5hbWVDb3VudFBhaXJDb21wYXJhdG9yKToKKyAgICAgICAgKEpTQzo6
UHJvZmlsZTo6ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZSk6CisgICAgICAgICogcnVudGltZS9J
ZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkKToKKyAgICAgICAg
KiBydW50aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6
Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9s
VGFibGVQdXRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoK
KyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KToKKyAgICAgICAgKEpTQzo6
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJy
YXlWYWx1ZU1hcDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmVudGVy
RGljdGlvbmFyeU1vZGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpkZWZpbmVPd25OdW1lcmlj
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnQpOgorICAgICAgICAo
SlNDOjpKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlUHV0KToK
KyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cENhY2hlOjppbnZh
bGlkYXRlQ29kZSk6CisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKyAgICAgICAgKEpT
Qzo6V2Vha0dDTWFwOjpjbGVhcik6CisgICAgICAgIChKU0M6OldlYWtHQ01hcDo6c2V0KToKKyAg
ICAgICAgKiB0b29scy9Qcm9maWxlVHJlZU5vZGUuaDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZVRy
ZWVOb2RlOjpzYW1wbGVDaGlsZCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVUcmVlTm9kZTo6Y2hp
bGRDb3VudCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVUcmVlTm9kZTo6ZHVtcEludGVybmFsKToK
KyAgICAgICAgKEpTQzo6UHJvZmlsZVRyZWVOb2RlOjpjb21wYXJlRW50cmllcyk6CisKIDIwMTIt
MDgtMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBp
biBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNjg4MzI2Yzc1NmVkMGVjNGJkNTgyNGRkZThiNTZj
YmQwNGEyYTk1Li5lYmYxMWEwNjJkZWYwYmM2ZWUwZWUwMWJjMWQ3YzBjYmRiMDJlNzc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYwIEBACisyMDEyLTA4LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2ODM2
LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjY4MzYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTYzCisKKyAgICAg
ICAgQnJva2UgYWxsIEFwcGxlIHBvcnRzLCBFRkwsIGFuZCBRdC4gKFJlcXVlc3RlZCBieSB0a2Vu
dCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIHd0Zi9IYXNoQ291bnRlZFNldC5o
OgorICAgICAgICAoV1RGOjo6OmFkZCk6CisgICAgICAgIChXVEY6Ojo6cmVtb3ZlKToKKyAgICAg
ICAgKFdURjo6Y29weVRvVmVjdG9yKToKKyAgICAgICAgKiB3dGYvSGFzaEl0ZXJhdG9ycy5oOgor
ICAgICAgICAoV1RGOjpIYXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAg
KFdURjo6SGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKFdURjo6
SGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I6OmdldCk6CisgICAgICAgICogd3RmL0hhc2hNYXAuaDoK
KyAgICAgICAgKFdURjo6S2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yOjpleHRyYWN0KToKKyAgICAg
ICAgKFdURjo6SGFzaE1hcFZhbHVlVHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAoV1RG
OjpIYXNoTWFwVHJhbnNsYXRvcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdURjo6SGFzaE1hcFRy
YW5zbGF0b3JBZGFwdGVyOjp0cmFuc2xhdGUpOgorICAgICAgICAoV1RGOjo6OnNldCk6CisgICAg
ICAgIChXVEY6Ojo6Z2V0KToKKyAgICAgICAgKFdURjo6Ojp0YWtlKToKKyAgICAgICAgKFdURjo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpkZWxldGVBbGxQYWly
U2Vjb25kcyk6CisgICAgICAgIChXVEY6OmRlbGV0ZUFsbFZhbHVlcyk6CisgICAgICAgIChXVEY6
OmRlbGV0ZUFsbFBhaXJGaXJzdHMpOgorICAgICAgICAoV1RGOjpkZWxldGVBbGxLZXlzKToKKyAg
ICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChXVEY6Omhhc2hUYWJsZVN3YXApOgor
ICAgICAgICAoV1RGOjo6OmNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUpOgorICAgICAg
ICAqIHd0Zi9IYXNoVHJhaXRzLmg6CisgICAgICAgIChXVEY6OktleVZhbHVlUGFpcjo6S2V5VmFs
dWVQYWlyKToKKyAgICAgICAgKEtleVZhbHVlUGFpcik6CisgICAgICAgIChXVEY6OktleVZhbHVl
UGFpckhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Oktl
eVZhbHVlUGFpckhhc2hUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKiB3dGYvTWV0
YUFsbG9jYXRvci5jcHA6CisgICAgICAgIChXVEY6Ok1ldGFBbGxvY2F0b3I6OmFkZEZyZWVTcGFj
ZSk6CisgICAgICAgIChXVEY6Ok1ldGFBbGxvY2F0b3I6OmluY3JlbWVudFBhZ2VPY2N1cGFuY3kp
OgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9yOjpkZWNyZW1lbnRQYWdlT2NjdXBhbmN5KToK
KyAgICAgICAgKiB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcDoKKyAgICAgICAgKFdURjo6
UmVmQ291bnRlZExlYWtDb3VudGVyOjp+UmVmQ291bnRlZExlYWtDb3VudGVyKToKKyAgICAgICAg
KiB3dGYvUmVmUHRySGFzaE1hcC5oOgorICAgICAgICAoV1RGOjo6OnNldCk6CisgICAgICAgIChX
VEY6Ojo6Z2V0KToKKyAgICAgICAgKFdURjo6OjppbmxpbmVHZXQpOgorICAgICAgICAoV1RGOjo6
OnRha2UpOgorICAgICAgICAqIHd0Zi9TcGVjdHJ1bS5oOgorICAgICAgICAoV1RGOjpTcGVjdHJ1
bTo6YWRkKToKKyAgICAgICAgKFdURjo6U3BlY3RydW06OmdldCk6CisgICAgICAgIChXVEY6OlNw
ZWN0cnVtOjpidWlsZExpc3QpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6
CisgICAgICAgIChXVEY6OmlkZW50aWZpZXJCeVB0aHJlYWRIYW5kbGUpOgorCiAyMDEyLTA4LTI3
ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4gSGFz
aE1hcCBpdGVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1N2Q4ZGZmZmZlNzE4ZDdhZDZkZDRkM2RmOTQz
MDY4OTUzMTZmYzg3Li5kMjcyN2UwYWU2NjQ5YzMzZTZiNzE0MDVjNTM4MjEzN2JlMWQ2ZTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsODY5IEBACisyMDEyLTA4LTI3ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI2ODM2LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MjY4MzYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MTYzCisKKyAgICAgICAgQnJva2UgYWxsIEFwcGxlIHBvcnRzLCBFRkwsIGFuZCBRdC4gKFJlcXVl
c3RlZCBieSB0a2VudCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIE1vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b246OldhdGNoZXJzOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpXYXRj
aGVyczo6cmVtb3ZlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1ha2VJbmRleFdyaXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmVEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpvbkFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJp
ZnkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2Vz
Rm9yQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Vc2FnZVJl
Y29yZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5Vc2FnZVJlY29yZDo6ZGlza1VzYWdl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6YWNx
dWlyZUxvY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6
cmVsZWFzZUxvY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
cjo6c2h1dGRvd24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vRGF0
YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpRdW90YVRyYWNrZXI6OmdldERhdGFiYXNlU2l6ZUFuZFNwYWNlQXZhaWxhYmxlVG9PcmlnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6UXVvdGFUcmFja2VyOjp1cGRhdGVEYXRhYmFzZVNpemUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vz
c1Jlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjphcHBlbmRBY2NlcHRlZEV4dGVuc2lvbik6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
On5BWE9iamVjdENhY2hlKToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0RPTU9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmNsZWFyQnlGcmFtZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmg6CisgICAgICAg
IChXZWJDb3JlOjpET01PYmplY3RIYXNoVGFibGVNYXA6On5ET01PYmplY3RIYXNoVGFibGVNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NT2JqZWN0SGFzaFRhYmxlTWFwOjpnZXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNo
ZURPTVN0cnVjdHVyZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRET01Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZy
YW1lRGF0YTo6cmVzdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1No
ZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnVwZGF0ZURvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2xlYW51cFNjcmlwdE9i
amVjdHNGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2xl
YXJTY3JpcHRPYmplY3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjp3aW5kb3dTaGVsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGlzdGluZ1dpbmRvd1NoZWxsKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
U2VyaWFsaXplcjo6Y2hlY2tGb3JEdXBsaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVT
ZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlh
bGl6ZXI6OndyaXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOEZsb2F0NjRBcnJheTo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhG
bG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OkdldFJhd1RlbXBsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0SW50ZXJmYWNlOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RJbnRlcmZhY2U6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRUZW1wbGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0UmF3
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OkdldFJhd1RlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpH
ZXRUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFJhd1RlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVt
cGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmRlYWxsb2NhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV3JhcHBlcldvcmxkOjpnZXRPckNyZWF0ZUlzb2xhdGVkV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZnJlZVY4
TlBPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6bnBDcmVhdGVWOFNjcmlwdE9iamVjdCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cmVzZXRJc29sYXRlZFdvcmxkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2xlYW51cFNjcmlw
dE9iamVjdHNGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
Y29sbGVjdElzb2xhdGVkQ29udGV4dHMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYWtSZWZlcmVuY2VNYXA6OnJlbW92ZUlmUHJlc2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWFrUmVmZXJlbmNlTWFwOjp2aXNpdCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW51bWVyYXRlR2xv
YmFsSGFuZGxlcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpkaXNwb3NlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwOgorICAgICAgICAqIGJyaWRnZS9JZGVudGlmaWVy
UmVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkZW50aWZpZXJSZXA6OmdldCk6CisgICAgICAg
ICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKE9iamVjdE1hcDo6YWRkKToKKyAg
ICAgICAgKE9iamVjdE1hcDo6cmVtb3ZlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZh
Q2xhc3NKU0MuY3BwOgorICAgICAgICAoSmF2YUNsYXNzOjp+SmF2YUNsYXNzKToKKyAgICAgICAg
KiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6V2Vh
a01hcDo6c2V0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q6OmludmFsaWRhdGUpOgorICAgICAgICAqIGNzcy9D
U1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2Fu
dmFzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzUmVz
aXplZCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb3VudGVyVG9DU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpj
cm9zc2ZhZGVDaGFuZ2VkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRT
ZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxl
Y3Rvcjo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmFkZENsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZW1vdmVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Z2V0SW1hZ2Up
OgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9D
U1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cGFyc2VQc2V1
ZG9UeXBlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVQb29sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ZhbHVlUG9vbDo6Y3JlYXRlQ29sb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUpOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFuZENhY2hlRm9yQ1NTT00pOgorICAgICAgICAq
IGNzcy9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNv
dW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlDb3VudGVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0RmVhdHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZVNldEZvclNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN3ZWVwTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpwYXJzZXJBZGROYW1lc3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpkZXRlcm1pbmVOYW1lc3BhY2UpOgorICAg
ICAgICAqIGRvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
ZWNrZWRSYWRpb0J1dHRvbnM6OmFkZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpDaGVja2Vk
UmFkaW9CdXR0b25zOjpyZW1vdmVCdXR0b24pOgorICAgICAgICAqIGRvbS9DaGlsZExpc3RNdXRh
dGlvblNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTGlzdE11dGF0aW9uU2NvcGU6
Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjpjaGlsZEFkZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjp3
aWxsUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRMaXN0TXV0YXRpb25TY29w
ZTo6TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OmluY3JlbWVudFNjb3BpbmdMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFjY3VtdWxh
dGlvblJvdXRlcjo6ZGVjcmVtZW50U2NvcGluZ0xldmVsKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VHcm91cFVzZXJTaGVldHMp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudCk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6Om1hcmtlckNvbnRhaW5pbmdQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2Vycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlcGFpbnRNYXJrZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6aW52YWxpZGF0
ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjo6c2hvd01hcmtlcnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dE9yZGVyZWRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpy
ZW1vdmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjplbnN1cmVBdHRyTGlzdEZvckVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FdmVu
dERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWxhdGVkVGFyZ2V0QWRq
dXN0ZXI6OmZpbmRSZWxhdGVkVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpldmVudFR5cGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRM
aXN0ZW5lck1hcDo6ZmluZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpy
ZW1vdmVGaXJzdEV2ZW50TGlzdGVuZXJDcmVhdGVkRnJvbU1hcmt1cCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudExpc3RlbmVyTWFwOjpjb3B5RXZlbnRMaXN0ZW5lcnNOb3RDcmVhdGVkRnJvbU1h
cmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJJdGVyYXRvcjo6
bmV4dExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpyZW1vdmVP
YnNlcnZlcik6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRy
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1
bWVudGVkTWFwVmFsdWVzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA6OmlzT2xkVmFsdWVSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA6OmVucXVldWVNdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZHVtcFN0YXRpc3RpY3MpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlTGlzdHNOb2RlRGF0YTo6aW52YWxpZGF0ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbik6CisgICAgICAgICogZG9t
L05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmFk
ZENhY2hlV2l0aEF0b21pY05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURh
dGE6OmFkZENhY2hlV2l0aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURh
dGE6OmFkZENhY2hlV2l0aFF1YWxpZmllZE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxp
c3RzTm9kZURhdGE6OmFkb3B0VHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
Y2hlY2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFkanVzdE1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZCk6CisgICAgICAgICogZG9tL1NwYWNlU3BsaXRT
dHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxl
cjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCk6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6c2VyaWFsaXplVG8pOgor
ICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3JtU3RhdGU6OmFwcGVuZENvbnRyb2xTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6dGFrZUNvbnRyb2xTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3JtS2V5R2VuZXJhdG9yOjpmb3JtS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6Zm9ybUVsZW1lbnRzU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKToKKyAg
ICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b2xsZWN0aW9uQ2FjaGVCYXNlOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6Z2V0
QXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpyZW1vdmVB
dHRhY2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xG
cmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1
ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVm
ZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6cmVtb3ZlQ2hpbGRBbmRNb3ZlVG9OZXcpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcklkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRJZEZvcik6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3Rl
ZFNjcmlwdHNGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpy
ZWxlYXNlT2JqZWN0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOjppbmplY3RlZFNjcmlwdEZvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rv
clRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9T
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc3NlcnRT
dHlsZVNoZWV0Rm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJl
c2V0UHNldWRvU3RhdGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRp
bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzdG9yYWdlSWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlUmVzb3VyY2VGb3JJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZFVzZURPTVN0b3Jh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjptZW1vcnlC
eXRlc1VzZWRCeVN0b3JhZ2VDYWNoZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRh
dGFiYXNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Zmlu
ZEJ5RmlsZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6
ZGF0YWJhc2VGb3JJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJl
YWtwb2ludEJ5VXJsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhY2hlZFJlc291cmNlc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVEZXRhY2hlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9m
aWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckhlYWRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3RhdGU6OmdldEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3RhdGU6Omdl
dFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6Z2V0TG9uZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6Z2V0RG91YmxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclN0YXRlOjpnZXRPYmplY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxl
OjpzdHlsZVdpdGhQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxl
U2hlZXQ6Omluc3BlY3RvclN0eWxlRm9ySWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6Z2V0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdEJhc2U6OndyaXRlSlNPTik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50Ojp3b3JrZXJDb250ZXh0VGVybWluYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlV29ya2VyRnJvbnRl
bmRDaGFubmVsc0ZvckV4aXN0aW5nV29ya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JXb3JrZXJBZ2VudDo6ZGVzdHJveVdvcmtlckZyb250ZW5kQ2hhbm5lbHMpOgorICAgICAgICAq
IGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2ltcGxlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2Vzc0Nv
bnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzQ3Jvc3NPcmlnaW5IZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGln
aHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Z2V0U3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZTo6cmVtb3ZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZTo6Y2xlYXJTdG9yYWdlSUQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZTo6ZHVtcCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZp
bmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OnN0YXJ0TG9hZGluZ0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6YWRkRW50cnkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6ZmlsbFJlc291cmNlTGlzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmVzdGltYXRlZFNpemVJblN0b3JhZ2UpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3Vw
Rm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZW1wdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU9mQ2Fj
aGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYW5SZXVzZSk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0aW9uKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyOjpDYWNoZWRSZXNvdXJj
ZUNsaWVudFdhbGtlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVk
UmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2V0QXV0b0xvYWRJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlbW92ZUNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpnZXRPcmlnaW5zV2l0aENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpnZXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hl
OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2V0
RGlzYWJsZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJlbW92ZUFsbEljb25zKToKKyAgICAgICAgKFdl
YkNvcmU6Okljb25EYXRhYmFzZTo6aWNvblJlY29yZENvdW50V2l0aERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVy
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ0JlZm9yZVVubG9hZEV2ZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cyk6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0cyk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpwYWdlR3Jv
dXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjbG9zZUxvY2FsU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmNsZWFyTG9jYWxTdG9yYWdlRm9yQWxsT3JpZ2lu
cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmNsZWFyTG9jYWxTdG9yYWdlRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6c3luY0xvY2FsU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKToK
KyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTZXJpYWxpemVyOjp1cmxGb3JCbGFua0ZyYW1lKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0R2VuZXJpY0ZvbnRGYW1pbHlNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAq
IHBhZ2UvU3BlZWNoSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoSW5wdXQ6OnJl
Z2lzdGVyTGlzdGVuZXIpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2luZG93RmVhdHVyZXM6OmJvb2xGZWF0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzOjpmbG9hdEZlYXR1cmUpOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnJlc3Vt
ZUFuaW1hdGlvbnNGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdl
L2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlQW5pbWF0aW9uOjpjbGVhclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0ZUFuaW1hdGlvbjo6Z2V0QW5pbWF0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OnNldEFuaW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NpdGVBbmltYXRpb246OnRpbWVUb05leHRTZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0ZUFuaW1hdGlvbjo6Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpvdmVycmlkZUltcGxpY2l0QW5pbWF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnJlc3VtZU92ZXJyaWRkZW5J
bXBsaWNpdEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9u
Ojppc0FuaW1hdGluZ1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1h
dGlvbjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5n
dWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsYW5ndWFnZURpZENoYW5nZSk6CisgICAgICAg
ICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29uY2F0ZW5h
dGVkSW1wdWxzZVJlc3BvbnNlc0ZvclN1YmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5hZ2Vy
OjpnZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llTWFuYWdlcjo6cmVtb3ZlQWxsQ29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Db29raWVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFwOjpyZW1vdmVP
bGRlc3RDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFwOjpnZXRBbGxDaGlsZENv
b2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0JpbmFyeVByb3BlcnR5TGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0ZUludGVnZXJBcnJh
eSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8u
Y3BwOgorICAgICAgICAoV2ViS2l0OjphZGRIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViVVJMUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFJlcXVlc3Q6OnZpc2l0SFRUUEhlYWRlckZpZWxkcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFJlc3BvbnNlOjphZGRIVFRQSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZTo6dmlzaXRIVFRQSGVhZGVyRmllbGRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZW5zdXJlTW9uaXRvckZvckNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjp1bnJlZ2lzdGVyQ2xpZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpyZWxlYXNlRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dseXBoUGFnZVRyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZVRyZWVO
b2RlOjp0cmVlR2x5cGhQYWdlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJl
ZU5vZGU6OnBhZ2VDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZTo6
cHJ1bmVUcmVlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlVHJl
ZU5vZGU6OnBydW5lVHJlZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZVRy
ZWVOb2RlOjpwcnVuZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFn
ZVRyZWVOb2RlOjpwcnVuZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZVRy
ZWVOb2RlOjpzaG93U3VidHJlZSk6CisgICAgICAgIChzaG93R2x5cGhQYWdlVHJlZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRnZVRpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRLZWVwUmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmF2ZldyYXBwZXJGb3JD
YWxsYmFja0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjpsYXllclZpc2li
aWxpdHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6OnVwbG9hZFRleHR1
cmVzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6YWRkVGlsZUpvYik6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjpkZWxldGVUZXh0dXJlcyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRpbGVyOjpwcnVuZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGlsZXI6OmJpbmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVGb3JU
aWxlZENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5n
VGhyZWFkOjp0ZXh0dXJlRm9yQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
Om1vdmVPckNvcHlBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjps
YXllckRpZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRh
dGVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNoaWxk
cmVuVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRl
TWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUNvbnRlbnRzVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvbnRlbnRzT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZUxheWVyRHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZU1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpyZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eUludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlT3BhY2l0eU9uTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpU
aWxlQ2FjaGU6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6
OnNldFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6c2V0QWNjZWxlcmF0ZXNE
cmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6c2V0VGlsZURlYnVnQm9yZGVy
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNhY2hlOjpzZXRUaWxlRGVidWdCb3JkZXJD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6
CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAo
cmVzdWJtaXRBbGxBbmltYXRpb25zKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6YW5pbWF0
aW9uRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2Fj
aGVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb29rdXBBbHROYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZvbnRDb250YWluc0NoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RGVyaXZlZEZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVDb250ZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXRVcGRhdGVTdGF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDRGFtYWdlVHJhY2tlcjo6dHJhY2tEYW1hZ2VGcm9tTGVmdG92ZXJS
ZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RS
ZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RpcmVjdFJlbmRlcmVyOjpkZWNpZGVS
ZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRpbGluZ0RhdGE6OnNldEJvdW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6fkNDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnN0YXJ0UmF0ZUxpbWl0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpzdG9wUmF0ZUxpbWl0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjppblVzZUJ5Q29uc3VtZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OmRlbGV0ZU93bmVkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVz
b3VyY2VQcm92aWRlcjo6cmVzb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3Vy
Y2VQcm92aWRlcjo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6bG9ja0ZvclJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp1
bmxvY2tGb3JSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6bG9j
a0ZvcldyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6dW5sb2Nr
Rm9yV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpkZXN0cm95
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpnZXRDaGlsZFRv
UGFyZW50TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6cHJlcGFy
ZVNlbmRUb1BhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OnBy
ZXBhcmVTZW5kVG9DaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6
OnJlY2VpdmVGcm9tQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVy
OjpyZWNlaXZlRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OnRyYW5zZmVyUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3Zp
ZGVyOjp0cmltTWFpbGJveERlcXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6fkN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6Z2V0Q29tcGlsZWRQcm9n
cmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBy
b2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6bm90aWZ5
Q2xpZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEhhcmZidXp6RmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpyZWxlYXNlQ2FjaGVkSGFyZmJ1enpGYWNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIYXJmQnV6ek5HRmFjZTo6SGFyZkJ1enpOR0ZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SGFyZkJ1enpOR0ZhY2U6On5IYXJmQnV6ek5HRmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlRm9udERhdGE6OmdldENGU3RyaW5nQXR0cmlidXRlcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlRm9udERhdGE6OmNhblJlbmRlckNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbjo6Z2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9FR0xEaXNwbGF5T3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVH
TERpc3BsYXlPcGVuVkc6On5FR0xEaXNwbGF5T3BlblZHKToKKyAgICAgICAgKFdlYkNvcmU6OkVH
TERpc3BsYXlPcGVuVkc6OmRlc3Ryb3lTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVHTERp
c3BsYXlPcGVuVkc6OmNvbnRleHRGb3JTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6Y3VycmVudFNoYXJlZEdMRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6On5TaGFyZWRH
TERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVy
TWFuYWdlcjo6Z2V0U2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyU2hhZGVyTWFuYWdlcjo6Z2V0U2hhZGVyRm9yRmlsdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9Gb250UGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpeGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EYXRh
T2JqZWN0R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmZvckNsaXBi
b2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVHZXREcmFnRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0xl
YXZlKToKKyAgICAgICAgKFdlYkNvcmU6Okd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFn
TW90aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVE
cmFnRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okd0a0RyYWdBbmREcm9wSGVscGVy
OjpoYW5kbGVEcmFnRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
My5jcHA6CisgICAgICAgIChXZWJDb3JlOjpndGtTdHlsZUNoYW5nZWRDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRTdHlsZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAgKCtbV2ViU2Nyb2xsYmFyUHJlZnNPYnNlcnZl
ciBhcHBlYXJhbmNlUHJlZnNDaGFuZ2VkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3Jh
Z2U6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcDo6Y29weURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhl
YWRlck1hcDo6Z2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJh
c2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnRhcmdldFR5cGVGcm9tTWltZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojppbml0aWFsaXplUGxhdGZvcm1SZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZUZpbmFsUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRI
ZWFkZXJGaWVsZHMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
Ojppbml0aWFsaXplSGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZVJlcXVlc3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jl
c291cmNlUmVxdWVzdFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6
dG9OZXR3b3JrUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZW5kUmVxdWVzdENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnRDZXJ0aWZpY2F0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnRvU291cE1lc3NhZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjp0b1NvdXBNZXNzYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1J1bkxvb3BRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjpUaW1lckJhc2U6
OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBw
aW5nRGVmYXVsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JpcHROYW1lVG9Db2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmxvY2FsZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJ1bmVCbGFja2xpc3RlZENvZGVjcyk6CisgICAgICAgIChXZWJDb3JlOjpkdW1w
VGV4dEVuY29kaW5nTmFtZU1hcCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVy
L0ZvbnRUcmFuc2NvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRUcmFuc2NvZGVyOjpj
b252ZXJ0ZXJUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFuZ3VhZ2VNYW5hZ2VyOjpMYW5ndWFnZU1hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29kZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjV2luOjpyZWdpc3RlckV4dGVuZGVkRW5jb2RpbmdOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q29kZWNXaW46OnJlZ2lzdGVyRXh0ZW5kZWRDb2RlY3MpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjV2luOjplbnVtZXJhdGVTdXBwb3J0ZWRFbmNvZGluZ3MpOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0RGF0YU1hcEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2xpcGJvYXJkRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDbGlwYm9hcmREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFdp
bjo6dHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9SdW5Mb29wV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6dGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW5jZS9NSU1FVHlwZVJlZ2lzdHJ5V2luQ0UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlN
RVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0NvbnRleHRNZW51V3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OmFwcGVuZEl0ZW0pOgorICAgICAgICAqIHBsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJl
ZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9yRXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpyZW1vdmUpOgorICAg
ICAgICAqIHBsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hlZHVsZUNhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6ZGlzcGF0Y2hDYWxscyk6Cisg
ICAgICAgICogcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luU3RyZWFtOjpzdGFydFN0cmVhbSk6CisgICAgICAgICogcGx1Z2lucy9ibGFja2JlcnJ5L1Bs
dWdpbkRhdGFCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6Omlu
aXRQbHVnaW5zKToKKyAgICAgICAgKiBwbHVnaW5zL3d4L1BsdWdpbkRhdGFXeC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgICogcmVuZGVy
aW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb3dUaHJl
YWRDb250cm9sbGVyOjp1bnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudE5vZGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y2xl
YXJGbG9hdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OnVwZGF0ZUNvdW50ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50
ZXI6OnJlbmRlcmVyU3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdp
b25SYW5nZUZvckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpnZXRS
ZWdpb25SYW5nZUZvckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpwZXJmb3JtT3ZlcmxhcFRlc3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5mbzo6
ZmlsdGVySW5mb0ZvclJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
RmlsdGVySW5mbzo6Y3JlYXRlRmlsdGVySW5mb0ZvclJlbmRlckxheWVySWZOZWVkZWQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkZXBlbmRzT24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lv
bjo6c2V0UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdp
b246OnNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZWdpb246OnJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSZWdpb246OmNvbXB1dGVDaGlsZHJlblN0eWxlSW5SZWdpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWNoZWRDb2xsYXBzZWRCb3JkZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpzeXN0ZW1Db2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnJl
c3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERl
c2NlbnRGb3JCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9WZXJ0aWNhbFBvc2l0aW9uQ2FjaGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlZlcnRpY2FsUG9zaXRpb25DYWNoZTo6Z2V0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXcmFw
U2hhcGVJbmZvOjplbnN1cmVXcmFwU2hhcGVJbmZvRm9yUmVuZGVyQmxvY2spOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFydHNOZXdUZXh0Q2h1bmspOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBs
eVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFw
cGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OnJlc291cmNlRGVzdHJv
eWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3dhcEl0ZW1zSW5MYXlvdXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjpkdW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmJ1aWxkQ2hhcmFjdGVyRGF0YU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmZpbGxD
aGFyYWN0ZXJEYXRhTWFwKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVuZ2luZTo6bGF5b3V0
VGV4dE9uTGluZU9yUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmlj
c0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpt
ZWFzdXJlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OnN5bmNUaW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OnN5bmMpOgorICAgICAgICAqIHN0b3JhZ2Uv
U3RvcmFnZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTWFwOjprZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZU1hcDo6c2V0SXRlbSk6CisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6
Y2xlYXJBbGxPcmlnaW5zRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN5bmMpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbmlt
YXRpb25FbGVtZW50RnJvbVRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OnJlbW92ZUFsbEFuaW1hdGlvbkVsZW1lbnRzRnJvbVRhcmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzRWxlbWVudFBlbmRpbmdS
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1v
dmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpzZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxUYXJnZXRSZWZlcmVu
Y2VzRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCk6
CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2VDYWNoZTo6flNWR0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VD
YWNoZTo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
Q2FjaGU6OnJlcXVlc3RlZFNpemVBbmRTY2FsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VDYWNoZTo6aW1hZ2VDb250ZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUNhY2hlOjpyZWRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDYWNoZTo6bG9va3Vw
T3JDcmVhdGVCaXRtYXBJbWFnZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJC
dWlsZGVyOjplZmZlY3RSZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1
aWxkZXI6OmFkZEJ1aWx0aW5FZmZlY3RzKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5
Ojp+U1ZHQW5pbWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwOjphZGRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJp
YnV0ZVRvUHJvcGVydHlNYXA6OnN5bmNocm9uaXplUHJvcGVydGllcyk6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6
Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmNsb3NlKToKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OnNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiB4bWwvWFBhdGhG
dW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmNyZWF0ZUZ1bmN0aW9uKToK
KyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuY3BwOgorICAgICAgICAoaXNBeGlzTmFtZSk6Cisg
ICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnhzbHRQYXJhbUFycmF5RnJvbVBhcmFtZXRlck1hcCk6CisgICAgICAgICogeG1sL1hTTFRQcm9j
ZXNzb3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjp0cmFuc2Zvcm1U
b1N0cmluZyk6CisKIDIwMTItMDgtMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAg
PGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vj
b25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKaW5kZXggNTBlYzhiM2IwYzg2ZjAyYWY1MDQ1NGI0OTM2ZmNjNjQ1OTVmMmZmMy4u
Mzk3ZDhiYmZmODE0ZjI3MTY5ODg4M2ExMDExNTA0ZjVmZWYyNTk3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDgtMjcgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjY4MzYuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzEyNjgzNgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTUxNjMKKworICAgICAgICBCcm9rZSBhbGwgQXBwbGUgcG9ydHMsIEVGTCwgYW5kIFF0LiAo
UmVxdWVzdGVkIGJ5IHRrZW50IG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICogQXBp
L0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVJlY3QpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjp2aXNpYmxlVGlsZXNSZWN0KToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzZXRUaWxlcyk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRp
bGVzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6
dXBkYXRlVGlsZXNGb3JTY3JvbGxPck5vdFJlbmRlcmVkUmVnaW9uKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6bWFwRnJvbVRyYW5zZm9ybWVkQ29u
dGVudHNUb1RpbGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlcklt
cGw6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBs
OjpvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
SW1wbDo6bm90aWZpY2F0aW9uQ2xpY2tlZCk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9BYm91
dERhdGEuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpkdW1wSlNDVHlwZUNvdW50
U2V0VG9UYWJsZUhUTUwpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuY3Bw
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpGcmFtZUxheWVyczo6cmVtb3ZlTGF5ZXJC
eUZyYW1lKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RnJhbWVMYXllcnM6OmNvbW1p
dE9uV2ViS2l0VGhyZWFkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6RnJhbWVMYXll
cnM6OmNhbGN1bGF0ZVJvb3RMYXllcik6CisKIDIwMTItMDgtMjcgIENhaW8gTWFyY2VsbyBkZSBP
bGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBS
ZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmYWMzNTVmNzhjZWQwOGZlYzA0MmRjNzNhNzJjN2Fh
OGVmY2UzYmQ5Li42OWE0ZGRiOWEyNWY0NWZhOWU4MzhjODRmMzAyMTgyZGUwMDUyNmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA4LTI3ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI2ODM2LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjY4MzYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1MTYzCisKKyAgICAgICAgQnJva2UgYWxsIEFwcGxlIHBvcnRzLCBFRkwsIGFu
ZCBRdC4gKFJlcXVlc3RlZCBieSB0a2VudCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAg
ICAqIHNyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6cmVtb3ZlKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJN
ZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEpOgorICAgICAgICAqIHNyYy9XZWJJbnRlbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnQ6OmV4dHJhc1ZhbHVlKToKKyAgICAgICAgKiB0ZXN0
cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpURVNUX0YpOgorCiAyMDEyLTA4LTI3ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGZpcnN0L3Nl
Y29uZCB0byBrZXkvdmFsdWUgaW4gSGFzaE1hcCBpdGVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCA0OGViZTNjZDUxYmYyODIzNjQxODAxMzJmYmE4NTlkNWNmMTJmOGI4Li4xOWQ2M2ZhODZkYmE3
MjAxOGI5ZGUxMGRkMjRiZjljYTllNTQ1NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTItMDgtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY4MzYuCisgICAgICAg
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNjgzNgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxNjMKKworICAgICAgICBCcm9rZSBh
bGwgQXBwbGUgcG9ydHMsIEVGTCwgYW5kIFF0LiAoUmVxdWVzdGVkIGJ5IHRrZW50IG9uCisgICAg
ICAgICN3ZWJraXQpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVh
dGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0VmbC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6Omdl
dFBsdWdpbkluZm8pOgorICAgICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDoKKyAgICAgICAgKGV3
a19pbnRlbnRfZXh0cmFfZ2V0KToKKwogMjAxMi0wOC0yNyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZl
aXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlbmFt
ZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3JzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggOTYwZmE5ZTUyZmQ5ZTQ1YWI0MDQ5MjljOWI3ZDFiODZiMzQ0ODA5NC4uZDdh
ZGIwOTJiYmYxMzY1NmYyNDg3NzIxOWY3YzNiMTRlYmEyY2U2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2ODM2
LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjY4MzYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTYzCisKKyAgICAg
ICAgQnJva2UgYWxsIEFwcGxlIHBvcnRzLCBFRkwsIGFuZCBRdC4gKFJlcXVlc3RlZCBieSB0a2Vu
dCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0d0ay5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Omdl
dFBsdWdpbkluZm8pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3Bw
OgorICAgICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlSW1wb3J0RmluaXNoZWQpOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwOgorICAgICAgICAod2Via2l0X3dlYl9wbHVn
aW5fZ2V0X21pbWV0eXBlcyk6CisKIDIwMTItMDgtMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWly
YSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUg
Zmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDkwMDMwNzViZWZjMWJjMDhjYThjNGMwNTQ0OTNkZGVhYTlkNmI3ODYuLjU5MDdh
MzY1N2MzYzZjMjVmMDA0ZTM2ZTUyY2U3YzJkZTEyMzJjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0NiBAQAorMjAxMi0wOC0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjgzNi4K
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2ODM2CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE2MworCisgICAgICAg
IEJyb2tlIGFsbCBBcHBsZSBwb3J0cywgRUZMLCBhbmQgUXQuIChSZXF1ZXN0ZWQgYnkgdGtlbnQg
b24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06
CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIHJlbW92ZUl0ZW1Gcm9tRGF0ZUNhY2hlczpd
KToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgb3JkZXJlZExhc3RWaXNpdGVkRGF5c10p
OgorICAgICAgICAoV2ViSGlzdG9yeVdyaXRlcjo6V2ViSGlzdG9yeVdyaXRlcik6CisgICAgICAg
ICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3Rp
Y3MgamF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHNdKToKKyAgICAgICAgKCtbV2Vi
Q29yZVN0YXRpc3RpY3MgamF2YVNjcmlwdE9iamVjdFR5cGVDb3VudHNdKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpob3N0Rm9yUGx1Z2luKToKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6cGx1Z2luSG9zdERpZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpkaWRDcmVhdGVXaW5kb3cp
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkhvc3RQcm94eTo6cGx1Z2luSG9zdERpZWQp
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9i
amVjdE1hcDo6aWRGb3JPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpyZXRhaW4pOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpyZWxlYXNlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1h
cDo6Zm9yZ2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjpkZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Ojp3ZWJGcmFtZURpZEZpbmlzaExvYWRXaXRoUmVhc29uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjYW5jZWxDaGVja0lmQWxsb3dlZFRvTG9hZFVSTCk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdl
YktpdDo6UHJveHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJv
eHlJbnN0YW5jZTo6ZmllbGROYW1lZCk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzdG9wVGltZXJz
XSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzdGFydFRpbWVyc10pOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbToKKyAgICAgICAg
KFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGll
bnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgICogV2ViVmlldy9XZWJI
VE1MVmlldy5tbToKKyAgICAgICAgKGNvbW1hbmROYW1lRm9yU2VsZWN0b3IpOgorCiAyMDEyLTA4
LTI3ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5i
b3NzYS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4g
SGFzaE1hcCBpdGVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYTk2ZmVhZTc0OGM0NjM2OTM1OTlm
MWE0ZmIzN2ZkZTAwYjJkN2YzZC4uNzNhNzkzZWNlNTZmNTY1OWE0Y2RkNzUxODViNzU5NGI5ZDUz
MDJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yNyAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyNjgzNi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTI2ODM2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTE2MworCisgICAgICAgIEJyb2tlIGFsbCBBcHBsZSBwb3J0cywgRUZMLCBhbmQg
UXQuIChSZXF1ZXN0ZWQgYnkgdGtlbnQgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZXh0cmFjdENvbnRlbnRUeXBlRnJvbVBsdWdp
blZlY3Rvcik6CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6CisgICAgICAg
IChRV2ViUGx1Z2luSW5mbzo6bWltZVR5cGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Z2V0UGx1Z2luSW5mbyk6CisKIDIwMTItMDgtMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBG
aWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmly
c3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CmluZGV4IGM4NjcxZjgwYjZmMWI5MDUyNDY3NzRkMTU0MmMwM2Y1NTFmNDMwMjguLjFjMzViZmI2
NTZmOGI5MWY4Mjg4Y2Q5MzRmMjYwOThkZGY5YjhkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxMi0wOC0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjgzNi4KKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2ODM2CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE2MworCisgICAgICAgIEJy
b2tlIGFsbCBBcHBsZSBwb3J0cywgRUZMLCBhbmQgUXQuIChSZXF1ZXN0ZWQgYnkgdGtlbnQgb24K
KyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBDT01Qcm9wZXJ0eUJhZy5oOgorICAgICAg
ICAoOjpSZWFkKToKKyAgICAgICAgKDo6R2V0UHJvcGVydHlJbmZvKToKKyAgICAgICAgKiBXZWJD
b3JlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlw
dFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFBsdWdpbkluZm8pOgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgorICAgICAgICAoV2Vi
SGlzdG9yeTo6cmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzKToKKyAgICAgICAgKiBXZWJLaXRDT01B
UEkuY3BwOgorICAgICAgICAoY2xhc3NGYWN0b3J5KToKKyAgICAgICAgKiBXZWJLaXRTdGF0aXN0
aWNzLmNwcDoKKyAgICAgICAgKFdlYktpdFN0YXRpc3RpY3M6OmNvbUNsYXNzTmFtZUNvdW50cyk6
CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYk5vdGlm
aWNhdGlvbkNlbnRlcjo6cG9zdE5vdGlmaWNhdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpyZW1vdmVPYnNlcnZlcik6CisKIDIwMTItMDgtMjcgIENhaW8gTWFyY2VsbyBkZSBP
bGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBS
ZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZwppbmRleCAxY2Y2YWUxZjYyYzgxN2ZlZTRlZjRjNzhjYjkzYmNjMGEzYjhl
Y2IxLi4yZTVkOGFkMjk5ZTc1Mzg1MmM0NzhkMjZiZDc4NjFmZDQyOTg0ZTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTI3ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI2ODM2LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MjY4MzYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MTYzCisKKyAgICAgICAgQnJva2UgYWxsIEFwcGxlIHBvcnRzLCBFRkwsIGFuZCBRdC4gKFJlcXVl
c3RlZCBieSB0a2VudCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFOjpnZXRQbHVnaW5JbmZvKToKKwogMjAxMi0wOC0yNyAgQ2FpbyBNYXJjZWxv
IGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIFJlbmFtZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhhc2hNYXAgaXRlcmF0b3Jz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggM2FjYzY5ZWYxZmIzYjRkYzY4OWYyY2I5NDY0ZDhmN2UxZjczMGZlOC4u
NTRkZTMxYWM4N2RlZTQ5ODFkZjZhMzdiNzVkMTkwYWJhYzIwZTMwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzMSBAQAorMjAxMi0wOC0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjgzNi4K
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2ODM2CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE2MworCisgICAgICAg
IEJyb2tlIGFsbCBBcHBsZSBwb3J0cywgRUZMLCBhbmQgUXQuIChSZXF1ZXN0ZWQgYnkgdGtlbnQg
b24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6OmdldE9yQ3Jl
YXRlKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAg
ICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAg
ICAgICAqIFBsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwOgorICAgICAgICAoV29ya1F1ZXVl
OjpyZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OnVucmVn
aXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL21hYy9Xb3JrUXVl
dWVNYWMuY3BwOgorICAgICAgICAoV29ya1F1ZXVlOjp1bnJlZ2lzdGVyTWFjaFBvcnRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RNYXA6OnBsdWdpbkRlc3Ryb3llZCk6Cisg
ICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZXNzYWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0Ojp2YWx1ZUZvcktleSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OmdldEJvb2xWYWx1ZUZvcktleSk6CisgICAg
ICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChD
b3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQu
Y3BwOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9zb3Vw
L1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNv
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5j
cHA6CisgICAgICAgIChfRXdrX0JhY2tfRm9yd2FyZF9MaXN0Ojp+X0V3a19CYWNrX0ZvcndhcmRf
TGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAg
ICAgICAoX0V3a19Db250ZXh0Ojp+X0V3a19Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9sb2FkaW5nX3Jl
c291cmNlc19jbGVhcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZXhw
ZWN0ZWRQcmV2aWV3Q2FsbGJhY2tGb3JSZWN0Ol0pOgorICAgICAgICAocGFnZURpZERyYXdUb1BE
Rik6CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9kcmF3UHJldmlldzpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgIChjb21tYW5kTmFtZUZvclNl
bGVjdG9yKToKKyAgICAgICAgKC1bV0tWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6
dXBkYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0
ZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlVGlsZUZvckxheWVyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjphZGp1c3RQb3NpdGlvbkZvckZp
eGVkTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52
YXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJl
bik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjphc3NpZ25JbWFnZVRvTGF5ZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclNlcnZlcjo6fldlYkluc3BlY3RvclNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclNlcnZlcjo6cmVnaXN0ZXJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kSFRUUFJlc3BvbnNlSGVhZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3F0L1dlYkluc3BlY3RvclNl
cnZlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBh
Z2VMaXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRP
ckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmNyZWF0ZURpY3Rpb25hcnlGcm9tSGFzaE1hcCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkljb25E
YXRhYmFzZTo6ZGlkRmluaXNoVVJMSW1wb3J0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW50
ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmV4dHJhcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmZyYW1lQ291bnRJblBhZ2UpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlcjo6Y2FuY2VsUmVxdWVzdEZvckdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBl
cm1pc3Npb25EZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpwb2xpY3lGb3JPcmlnaW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVtb3ZlTm90aWZpY2F0
aW9uRnJvbUNvbnRleHRNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmpl
Y3RNYXA6OmludmFsaWRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpk
ZXN0cm95U3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnVuc2NoZWR1
bGVUaW1lcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpmcmFtZURpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6ZnJhbWVEaWRGYWls
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmJ1aWxkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
Ojp+UGx1Z2luVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6bGF5ZXJCeUlEKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjphZG9wdEltYWdlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJ
bWFnZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OnJlbW92ZUl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6YWxsVmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJQYWdl
R3JvdXApOgorICAgICAgICAoV2ViS2l0Ojpmcm9tQ291bnRlZFNldFRvSGFzaE1hcCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFRleHRDaGVja2VyU3RhdGUpOgorCiAyMDEyLTA4
LTI3ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5i
b3NzYS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4g
SGFzaE1hcCBpdGVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgKaW5kZXggODg4NmYxMTE1MDRlZGRmMjcyY2M4ODc2ZjA0ZmMwNWE0YzgyODBjNi4u
MmMzZTBlODU5ZjE2ZTg5NTgxYTJmYTM1NmI4NDkyZjIwMzc5MjA3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTgzLDEzICs4MywxMyBAQCBz
dHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEgOiBXZWFrSGFuZGxlT3duZXIgewogICAgICAgICAg
ICAgUHJpdmF0ZVByb3BlcnR5TWFwOjpjb25zdF9pdGVyYXRvciBsb2NhdGlvbiA9IG1fcHJvcGVy
dHlNYXAuZmluZChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAgICAgICAgIGlmIChsb2NhdGlv
biA9PSBtX3Byb3BlcnR5TWFwLmVuZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYXRpb24tPnZhbHVlLmdldCgpOworICAgICAgICAg
ICAgcmV0dXJuIGxvY2F0aW9uLT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gZW1wdHk7
Ci0gICAgICAgICAgICBtX3Byb3BlcnR5TWFwLmFkZChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBlbXB0
eSkuaXRlcmF0b3ItPnZhbHVlLnNldChnbG9iYWxEYXRhLCBvd25lciwgdmFsdWUpOworICAgICAg
ICAgICAgbV9wcm9wZXJ0eU1hcC5hZGQocHJvcGVydHlOYW1lLmltcGwoKSwgZW1wdHkpLml0ZXJh
dG9yLT5zZWNvbmQuc2V0KGdsb2JhbERhdGEsIG93bmVyLCB2YWx1ZSk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKQEAgLTEwMCw4ICsxMDAsOCBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgOiBXZWFrSGFuZGxlT3duZXIgewogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoUHJpdmF0
ZVByb3BlcnR5TWFwOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5TWFwLmJlZ2luKCk7IHB0ciAh
PSBtX3Byb3BlcnR5TWFwLmVuZCgpOyArK3B0cikgewotICAgICAgICAgICAgICAgIGlmIChwdHIt
PnZhbHVlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT52YWx1ZSk7
CisgICAgICAgICAgICAgICAgaWYgKHB0ci0+c2Vjb25kKQorICAgICAgICAgICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmcHRyLT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmgKaW5kZXggMmNhZTIxYzUyYTg4YThiMjJmNWMzZjM2MDM0NWJkZjAyZWI3OTVmMy4u
MTYwZjQ4ODg3Yjg3MmMyOWJjM2UyYWRiZWRjOTFlZmFmY2Q0ZDkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAg
LTQ2NSw4ICs0NjUsOCBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqCiAgICAgICAgICAgICB0eXBl
ZGVmIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0
b3I7CiAgICAgICAgICAgICBpdGVyYXRvciBlbmQgPSBzdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAg
ICAgICAgICAgZm9yIChpdGVyYXRvciBpdCA9IHN0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5rZXku
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBpdC0+dmFs
dWUuZ2V0KCk7CisgICAgICAgICAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IGl0LT5maXJzdC5n
ZXQoKTsKKyAgICAgICAgICAgICAgICBTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IGl0LT5zZWNv
bmQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5nZXRQcm9wZXJ0eSAmJiAoIShl
bnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0pIHx8IChtb2Rl
ID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSkKICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CiAgICAgICAgICAgICB9CkBA
IC00NzYsOCArNDc2LDggQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKgogICAgICAgICAgICAgdHlw
ZWRlZiBPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0
ZXJhdG9yOwogICAgICAgICAgICAgaXRlcmF0b3IgZW5kID0gc3RhdGljRnVuY3Rpb25zLT5lbmQo
KTsKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBzdGF0aWNGdW5jdGlvbnMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUg
PSBpdC0+a2V5LmdldCgpOwotICAgICAgICAgICAgICAgIFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVu
dHJ5ID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICAgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUg
PSBpdC0+Zmlyc3QuZ2V0KCk7CisgICAgICAgICAgICAgICAgU3RhdGljRnVuY3Rpb25FbnRyeSog
ZW50cnkgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LT5h
dHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSkgfHwgKG1vZGUgPT0gSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXIoZXhlYywgbmFtZSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggOTY1ZWVkZDRmMWI4NmRhZGIzNGU2
NGJlYjAzODdhZGMzMDEyMGM2ZC4uMTM0NDMxNjU0Nzg5MTVmOGExM2E0ZGJkMzgwNDQxZWQyNGJj
NGQyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCkBAIC0xMDcs
MTMgKzEwNywxMyBAQCBPcGFxdWVKU0NsYXNzOjp+T3BhcXVlSlNDbGFzcygpCiAgICAgaWYgKG1f
c3RhdGljVmFsdWVzKSB7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAgICAgICBmb3Ig
KE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0
YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgQVNTRVJU
KCFpdC0+a2V5LT5pc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoIWl0LT5maXJz
dC0+aXNJZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIGlmIChtX3N0YXRpY0Z1bmN0aW9ucykg
ewogICAgICAgICBPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1fc3RhdGljRnVuY3Rpb25zLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGF0aWNG
dW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIEFTU0VSVCgh
aXQtPmtleS0+aXNJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgQVNTRVJUKCFpdC0+Zmlyc3Qt
PmlzSWRlbnRpZmllcigpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTE0Nyw4ICsxNDcsOCBA
QCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6
OkpTR2xvYmFsRGF0YSYsIE9wYXF1ZUpTQwogICAgICAgICBzdGF0aWNWYWx1ZXMgPSBhZG9wdFB0
cihuZXcgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKTsKICAgICAgICAgT3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNzLT5tX3N0
YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVl
c1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVzLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNJ
ZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQoU3RyaW5nSW1wbDo6
Y3JlYXRlKGl0LT5rZXktPmNoYXJhY3RlcnMoKSwgaXQtPmtleS0+bGVuZ3RoKCkpLCBhZG9wdFB0
cihuZXcgU3RhdGljVmFsdWVFbnRyeShpdC0+dmFsdWUtPmdldFByb3BlcnR5LCBpdC0+dmFsdWUt
PnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKSk7CisgICAgICAgICAgICBBU1NF
UlQoIWl0LT5maXJzdC0+aXNJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVz
LT5hZGQoU3RyaW5nSW1wbDo6Y3JlYXRlKGl0LT5maXJzdC0+Y2hhcmFjdGVycygpLCBpdC0+Zmly
c3QtPmxlbmd0aCgpKSwgYWRvcHRQdHIobmV3IFN0YXRpY1ZhbHVlRW50cnkoaXQtPnNlY29uZC0+
Z2V0UHJvcGVydHksIGl0LT5zZWNvbmQtPnNldFByb3BlcnR5LCBpdC0+c2Vjb25kLT5hdHRyaWJ1
dGVzKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTYsMTUgKzE1NiwxNSBAQCBPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6OkpTR2xvYmFs
RGF0YSYsIE9wYXF1ZUpTQwogICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBhZG9wdFB0cihuZXcg
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKTsKICAgICAgICAgT3BhcXVlSlNDbGFz
c1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNzLT5tX3N0
YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1
bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rp
b25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEFTU0VSVCghaXQt
PmtleS0+aXNJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5hZGQo
U3RyaW5nSW1wbDo6Y3JlYXRlKGl0LT5rZXktPmNoYXJhY3RlcnMoKSwgaXQtPmtleS0+bGVuZ3Ro
KCkpLCBhZG9wdFB0cihuZXcgU3RhdGljRnVuY3Rpb25FbnRyeShpdC0+dmFsdWUtPmNhbGxBc0Z1
bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKSk7CisgICAgICAgICAgICBBU1NFUlQoIWl0
LT5maXJzdC0+aXNJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5h
ZGQoU3RyaW5nSW1wbDo6Y3JlYXRlKGl0LT5maXJzdC0+Y2hhcmFjdGVycygpLCBpdC0+Zmlyc3Qt
Pmxlbmd0aCgpKSwgYWRvcHRQdHIobmV3IFN0YXRpY0Z1bmN0aW9uRW50cnkoaXQtPnNlY29uZC0+
Y2FsbEFzRnVuY3Rpb24sIGl0LT5zZWNvbmQtPmF0dHJpYnV0ZXMpKSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CiAKIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3BhcXVlSlNDbGFzczo6Y29udGV4
dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewotICAgIE93blB0cjxPcGFxdWVKU0NsYXNzQ29udGV4
dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5vcGFxdWVKU0NsYXNzRGF0
YS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgIE93blB0cjxPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5vcGFx
dWVKU0NsYXNzRGF0YS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBp
ZiAoIWNvbnRleHREYXRhKQogICAgICAgICBjb250ZXh0RGF0YSA9IGFkb3B0UHRyKG5ldyBPcGFx
dWVKU0NsYXNzQ29udGV4dERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzKSk7CiAgICAgcmV0
dXJuICpjb250ZXh0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggNWZhZDllNzI1ZTM3NjkzMDdkNzk4YWE4NzY2Yjg2YzdjOTkwOTllYS4u
ZDQ1MmJkNDQ2MmE2ZWFkZTY0ZDk1ZTdmNzVlYzY4ODQ2MWJiZTZhZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBkYXRhTG9n
KCIgICUxZCA9IHtcbiIsIGkpOwogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdP
ZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgZm9yIChTdHJp
bmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygiXHRcdFwiJXNc
IiA9PiAlMDRkXG4iLCBVU3RyaW5nKGl0ZXItPmtleSkudXRmOCgpLmRhdGEoKSwgaXRlci0+dmFs
dWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJcdFx0XCIlc1wiID0+
ICUwNGRcbiIsIFVTdHJpbmcoaXRlci0+Zmlyc3QpLnV0ZjgoKS5kYXRhKCksIGl0ZXItPnNlY29u
ZC5icmFuY2hPZmZzZXQpOwogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgfVxuIik7CiAgICAg
ICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKQEAgLTE4OTMsNyArMTg5Myw3IEBAIHZvaWQgRXZhbENv
ZGVDYWNoZTo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgRXZh
bENhY2hlTWFwOjppdGVyYXRvciBlbmQgPSBtX2NhY2hlTWFwLmVuZCgpOwogICAgIGZvciAoRXZh
bENhY2hlTWFwOjppdGVyYXRvciBwdHIgPSBtX2NhY2hlTWFwLmJlZ2luKCk7IHB0ciAhPSBlbmQ7
ICsrcHRyKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT52YWx1ZSk7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZwdHItPnNlY29uZCk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFn
Z3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTMwMDgsOCArMzAwOCw4IEBAIFVTdHJp
bmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoaW50IHJlZ2lzdGVyTnVtYmVyKQogewogICAg
IFN5bWJvbFRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3N5bWJvbFRhYmxlLT5lbmQoKTsKICAgICBm
b3IgKFN5bWJvbFRhYmxlOjppdGVyYXRvciBwdHIgPSBtX3N5bWJvbFRhYmxlLT5iZWdpbigpOyBw
dHIgIT0gZW5kOyArK3B0cikgewotICAgICAgICBpZiAocHRyLT52YWx1ZS5nZXRJbmRleCgpID09
IHJlZ2lzdGVyTnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuIFVTdHJpbmcocHRyLT5rZXkpOwor
ICAgICAgICBpZiAocHRyLT5zZWNvbmQuZ2V0SW5kZXgoKSA9PSByZWdpc3Rlck51bWJlcikKKyAg
ICAgICAgICAgIHJldHVybiBVU3RyaW5nKHB0ci0+Zmlyc3QpOwogICAgIH0KICAgICBpZiAobmVl
ZHNBY3RpdmF0aW9uKCkgJiYgcmVnaXN0ZXJOdW1iZXIgPT0gYWN0aXZhdGlvblJlZ2lzdGVyKCkp
CiAgICAgICAgIHJldHVybiAiYWN0aXZhdGlvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSnVtcFRhYmxlLmgKaW5kZXggNjAzNmNkYTUxZDViY2Y1NjVlYWU5N2U4ZGIyNjU1MWM5
MDI1NWM3My4uNWJiZTA0NzEwN2Y1YjAxYzAyODliZWEzMzE4NmUxZjg0YTNhYWZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApAQCAtNTcsNyArNTcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9p
dGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChs
b2MgPT0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAg
ICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0OworICAgICAgICAgICAgcmV0dXJu
IGxvYy0+c2Vjb25kLmJyYW5jaE9mZnNldDsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkK
QEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBTdHJpbmdPZmZz
ZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAg
ICAgICAgICAgICBpZiAobG9jID09IGVuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gY3RpRGVm
YXVsdDsKLSAgICAgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmN0aU9mZnNldDsKKyAgICAgICAg
ICAgIHJldHVybiBsb2MtPnNlY29uZC5jdGlPZmZzZXQ7CiAgICAgICAgIH0KICNlbmRpZgogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCBmOTIzZTRhMjhiYmNiMDAzOWE1MzczZTk2Zjg0
NTIzZTc5Y2VlMDg4Li41OWYwZDAyMzQzNDE3YTc0MWJjODI1NzM3ZDI2MTEzY2RjN2EzMjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUqIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQoCiAgICAg
aWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHJl
dHVybiBpdGVyLT52YWx1ZTsKKyAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogfQogCiBTcGVjdWxh
dGVkVHlwZSBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJlZGljdGlvbigKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKaW5kZXggZjli
ODI0NWU1NDc3YThmMzBlZDUyMWMzMTI2YmYwMTlkNWNiMmU2Ny4uZjA3ZGM3OWZiNzgyNThkODYx
ZDRmNDg1MTdmMWI1NWIyOTYzOTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFNhbXBsaW5n
VG9vbDo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVmVjdG9yPFNjcmlwdFNhbXBsZVJlY29y
ZCo+IGNvZGVCbG9ja1NhbXBsZXMoc2NvcGVDb3VudCk7CiAgICAgU2NyaXB0U2FtcGxlUmVjb3Jk
TWFwOjppdGVyYXRvciBpdGVyID0gbV9zY29wZVNhbXBsZU1hcC0+YmVnaW4oKTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHNjb3BlQ291bnQ7ICsraSwgKytpdGVyKQotICAgICAgICBjb2RlQmxv
Y2tTYW1wbGVzW2ldID0gaXRlci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIGNvZGVCbG9ja1NhbXBs
ZXNbaV0gPSBpdGVyLT5zZWNvbmQuZ2V0KCk7CiAKICAgICBxc29ydChjb2RlQmxvY2tTYW1wbGVz
LmJlZ2luKCksIHNjb3BlQ291bnQsIHNpemVvZihTY3JpcHRTYW1wbGVSZWNvcmQqKSwgY29tcGFy
ZVNjcmlwdFNhbXBsZVJlY29yZHMpOwogCkBAIC00NDYsOCArNDQ2LDggQEAgdm9pZCBTYW1wbGlu
Z1Rvb2w6OmR1bXAoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIFZlY3RvcjxMaW5l
Q291bnRJbmZvPiBsaW5lQ291bnRJbmZvKGxpbmVzQ291bnQpOwogICAgICAgICAgICAgICAgIGlu
dCBsaW5lbm8gPSAwOwogICAgICAgICAgICAgICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCx1bnNp
Z25lZD46Oml0ZXJhdG9yIGl0ZXIgPSBsaW5lQ291bnRzLmJlZ2luKCk7IGl0ZXIgIT0gbGluZUNv
dW50cy5lbmQoKTsgKytpdGVyLCArK2xpbmVubykgewotICAgICAgICAgICAgICAgICAgICBsaW5l
Q291bnRJbmZvW2xpbmVub10ubGluZSA9IGl0ZXItPmtleTsKLSAgICAgICAgICAgICAgICAgICAg
bGluZUNvdW50SW5mb1tsaW5lbm9dLmNvdW50ID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICAg
ICAgICAgIGxpbmVDb3VudEluZm9bbGluZW5vXS5saW5lID0gaXRlci0+Zmlyc3Q7CisgICAgICAg
ICAgICAgICAgICAgIGxpbmVDb3VudEluZm9bbGluZW5vXS5jb3VudCA9IGl0ZXItPnNlY29uZDsK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBxc29ydChsaW5lQ291bnRJbmZv
LmJlZ2luKCksIGxpbmVzQ291bnQsIHNpemVvZihMaW5lQ291bnRJbmZvKSwgY29tcGFyZUxpbmVD
b3VudEluZm9TYW1wbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4YmZjODRlZjIyOWNjMmEx
ZGU4NTdmMDY3Yjk3YTE2YTNlODVkYjAuLjA1ZGY5Y2FmYmMzMzQxMTdjYzMzN2RhMjQ4NzFkOGNl
M2JiZGFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBCeXRl
Y29kZUdlbmVyYXRvcjo6YWRkVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBib29sIGlzQ29u
c3RhbnQsIFJlZ2lzdGUKICAgICBTeW1ib2xUYWJsZTo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJv
bFRhYmxlKCkuYWRkKGlkZW50LmltcGwoKSwgbmV3RW50cnkpOwogCiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkgewotICAgICAgICByMCA9ICZyZWdpc3RlckZvcihyZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldEluZGV4KCkpOworICAgICAgICByMCA9ICZyZWdpc3RlckZvcihyZXN1bHQuaXRl
cmF0b3ItPnNlY29uZC5nZXRJbmRleCgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtMjQ4LDggKzI0OCw4IEBAIGludCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkR2xvYmFsVmFy
KAogICAgICAgICBuZXdFbnRyeS5hdHRlbXB0VG9XYXRjaCgpOwogICAgIFN5bWJvbFRhYmxlOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQoaWRlbnQuaW1wbCgpLCBuZXdFbnRy
eSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLm5vdGlmeVdyaXRlKCk7Ci0gICAgICAgIGluZGV4ID0gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5nZXRJbmRleCgpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5ub3Rp
ZnlXcml0ZSgpOworICAgICAgICBpbmRleCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldElu
ZGV4KCk7CiAgICAgfQogICAgIHJldHVybiBpbmRleDsKIH0KQEAgLTEwNjMsNyArMTA2Myw3IEBA
IHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudChjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIG1fY29kZUJsb2Nr
LT5hZGRJZGVudGlmaWVyKElkZW50aWZpZXIobV9nbG9iYWxEYXRhLCByZXApKTsKIAotICAgIHJl
dHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnNlY29uZDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50
VmFsdWUoSlNWYWx1ZSB2KQpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50VmFsdWUoSlNWYWx1ZSB2KQogICAgICAgICArK21fbmV4
dENvbnN0YW50T2Zmc2V0OwogICAgICAgICBtX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQoSlNWYWx1
ZSh2KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGluZGV4ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKKyAgICAgICAgaW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIHJldHVy
biAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogfQpAQCAtMTIyMyw3ICsxMjIzLDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRz
dCwgZG91YmxlIG51bWJlcikKICAgICAvLyB3b3JrIGNvcnJlY3RseSB3aXRoIE5hTiBhcyBhIGtl
eS4KICAgICBpZiAoaXNuYW4obnVtYmVyKSB8fCBudW1iZXIgPT0gSGFzaFRyYWl0czxkb3VibGU+
OjplbXB0eVZhbHVlKCkgfHwgSGFzaFRyYWl0czxkb3VibGU+Ojppc0RlbGV0ZWRWYWx1ZShudW1i
ZXIpKQogICAgICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBqc051bWJlcihudW1iZXIpKTsKLSAg
ICBKU1ZhbHVlJiB2YWx1ZUluTWFwID0gbV9udW1iZXJNYXAuYWRkKG51bWJlciwgSlNWYWx1ZSgp
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgSlNWYWx1ZSYgdmFsdWVJbk1hcCA9IG1fbnVtYmVyTWFw
LmFkZChudW1iZXIsIEpTVmFsdWUoKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXZhbHVl
SW5NYXApCiAgICAgICAgIHZhbHVlSW5NYXAgPSBqc051bWJlcihudW1iZXIpOwogICAgIHJldHVy
biBlbWl0TG9hZChkc3QsIHZhbHVlSW5NYXApOwpAQCAtMTIzMSw3ICsxMjMxLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgZG91Ymxl
IG51bWJlcikKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lz
dGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBKU1N0cmlu
ZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFw
LmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXN0
cmluZ0luTWFwKQogICAgICAgICBzdHJpbmdJbk1hcCA9IGpzT3duZWRTdHJpbmcoZ2xvYmFsRGF0
YSgpLCBpZGVudGlmaWVyLnVzdHJpbmcoKSk7CiAgICAgcmV0dXJuIGVtaXRMb2FkKGRzdCwgSlNW
YWx1ZShzdHJpbmdJbk1hcCkpOwpAQCAtMTc3Myw3ICsxNzczLDcgQEAgdW5zaWduZWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkKIAogSlNTdHJp
bmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogewotICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmluZ01h
cC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBKU1N0cmlu
ZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApIHsKICAgICAgICAgc3RyaW5n
SW5NYXAgPSBqc1N0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0cmluZygpKTsKICAg
ICAgICAgYWRkQ29uc3RhbnRWYWx1ZShzdHJpbmdJbk1hcCk7CkBAIC0xODQ1LDggKzE4NDUsOCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExhenlOZXdGdW5jdGlvbihSZWdp
c3RlcklEKiBkc3QsIEZ1bmN0aW9uQm9keQogewogICAgIEZ1bmN0aW9uT2Zmc2V0TWFwOjpBZGRS
ZXN1bHQgcHRyID0gbV9mdW5jdGlvbk9mZnNldHMuYWRkKGZ1bmN0aW9uLCAwKTsKICAgICBpZiAo
cHRyLmlzTmV3RW50cnkpCi0gICAgICAgIHB0ci5pdGVyYXRvci0+dmFsdWUgPSBtX2NvZGVCbG9j
ay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihtX2dsb2JhbERhdGEsIGZ1bmN0aW9uKSk7
Ci0gICAgcmV0dXJuIGVtaXROZXdGdW5jdGlvbkludGVybmFsKGRzdCwgcHRyLml0ZXJhdG9yLT52
YWx1ZSwgdHJ1ZSk7CisgICAgICAgIHB0ci5pdGVyYXRvci0+c2Vjb25kID0gbV9jb2RlQmxvY2st
PmFkZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24obV9nbG9iYWxEYXRhLCBmdW5jdGlvbikpOwor
ICAgIHJldHVybiBlbWl0TmV3RnVuY3Rpb25JbnRlcm5hbChkc3QsIHB0ci5pdGVyYXRvci0+c2Vj
b25kLCB0cnVlKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdG
dW5jdGlvbkludGVybmFsKFJlZ2lzdGVySUQqIGRzdCwgdW5zaWduZWQgaW5kZXgsIGJvb2wgZG9O
dWxsQ2hlY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggMGNhYjM5NmE0YzA2YmIzN2Q5NGExOTMwMmUyNDYyZmNjOWZj
NTNhZi4uOWRhNTlhMDA5YjhiYzIxOGIxNDJhZTg0YWNiMWVhNmZiZTA1OTQyMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMjYxLDcgKzI2MSw3IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgICAgICBH
ZXR0ZXJTZXR0ZXJQYWlyIHBhaXIobm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlKj4oMCkp
OwogICAgICAgICAgICAgR2V0dGVyU2V0dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLmFk
ZChub2RlLT5uYW1lKCkuaW1wbCgpLCBwYWlyKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0Lmlz
TmV3RW50cnkpCi0gICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZWNvbmQg
PSBub2RlOworICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLnNlY29uZCA9
IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlbWFpbmlu
ZyBwcm9wZXJ0aWVzIGluIHRoZSBsaXN0LgpAQCAtMjc5LDcgKzI3OSw3IEBAIFJlZ2lzdGVySUQq
IFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlCiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+bV90eXBlID09IFByb3BlcnR5
Tm9kZTo6R2V0dGVyIHx8IG5vZGUtPm1fdHlwZSA9PSBQcm9wZXJ0eU5vZGU6OlNldHRlcik7CiAg
ICAgICAgICAgICBHZXR0ZXJTZXR0ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQobm9kZS0+
bmFtZSgpLmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLSAg
ICAgICAgICAgIEdldHRlclNldHRlclBhaXImIHBhaXIgPSBpdC0+dmFsdWU7CisgICAgICAgICAg
ICBHZXR0ZXJTZXR0ZXJQYWlyJiBwYWlyID0gaXQtPnNlY29uZDsKIAogICAgICAgICAgICAgLy8g
V2FzIHRoaXMgYWxyZWFkeSBnZW5lcmF0ZWQgYXMgYSBwYXJ0IG9mIGl0cyBwYXJ0bmVyPwogICAg
ICAgICAgICAgaWYgKHBhaXIuc2Vjb25kID09IG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCA1NDgzZDJlMGU3NGE3NDZiZjZiZGQ1ZjI2MzE5
MWIxOWMwM2FmOWE1Li4wYTY2ZDZmMzRlNmY0YmM5Y2M2ZDA0N2JmOTg2ZGZiNDFiNzBlYmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTU5LDcg
KzU5LDcgQEAgaW5saW5lIFJlY29tcGlsZXI6On5SZWNvbXBpbGVyKCkKICAgICAvLyBKYXZhU2Ny
aXB0IGluIHRoZSBpbnNwZWN0b3IuCiAgICAgU291cmNlUHJvdmlkZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1fc291cmNlUHJvdmlkZXJzLmVuZCgpOwogICAgIGZvciAoU291cmNlUHJvdmlk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3NvdXJjZVByb3ZpZGVycy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICBtX2RlYnVnZ2VyLT5zb3VyY2VQYXJzZWQoaXRl
ci0+dmFsdWUsIGl0ZXItPmtleSwgLTEsIFVTdHJpbmcoKSk7CisgICAgICAgIG1fZGVidWdnZXIt
PnNvdXJjZVBhcnNlZChpdGVyLT5zZWNvbmQsIGl0ZXItPmZpcnN0LCAtMSwgVVN0cmluZygpKTsK
IH0KIAogaW5saW5lIHZvaWQgUmVjb21waWxlcjo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNT
aW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCBhZWUyNTI3MDIyNzlmZTE4NmJlNjE2YzNjMzYz
MWIyODBkNTUwMjUwLi42NDBhMGE5NjY1YjE2ZWI1NDVkYjUzNWIwYTc4NGJjZWMzOTM4ZTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZp
Y2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBpZiBpdCdzIGEgdmFyaWFi
bGUgdGhhdCB3ZSB0aGluayBpcyBhbGlhc2VkIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0aGUgYXJndW1lbnRzLCB0aGF0IHdlIGtub3cgdGhhdCBpdCBtaWdodCBhY3R1YWxseSBub3Qg
YmUuCiAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEg
PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2
YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kOwogICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZU5vbkFyZ3VtZW50c0Fzc2lnbm1lbnQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4dChub2RlLmNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50c0Fs
aWFzaW5nRGF0YSYgZGF0YSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50c0Fs
aWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vj
b25kOwogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQXJndW1lbnRzQXNzaWdubWVudCgp
OwogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdmFyaWFibGUn
cyB1c2VzIGFyZSBpbiB0aGUgc2FtZSBjb250ZXh0IGFzCiAgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSBhcmd1bWVudHMgaXQgaXMgYWxpYXNpbmcuCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVk
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
QXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
YXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vz
c0RhdGEpLT5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVyZ2VDYWxsQ29udGV4
dChub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIEFyZ3Vt
ZW50c0FsaWFzaW5nRGF0YSYgZGF0YSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2FyZ3Vt
ZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRh
KS0+c2Vjb25kOwogICAgICAgICAgICAgICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQobm9k
ZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAvLyBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSBmbHVzaCB0aGVu
IGJ5IGRlZmluaXRpb24gaXQgZXNjYXBlcy4KQEAgLTI3MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBBcmd1
bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQotICAgICAgICAgICAgICAgICAgICAgICAgbV9hcmd1
bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0
YSktPnNlY29uZDsKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZU5vbkFyZ3VtZW50c0Fz
c2lnbm1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXJnZUNhbGxDb250ZXh0KG5v
ZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTM1NCw3ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIEFyZ3VtZW50c0FsaWFzaW5nRGF0YSYgZGF0YSA9
Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFj
Y2Vzc0RhdGEpLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHNBbGlhc2lu
Zy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZDsKICAgICAgICAgICAgICAgICBpZiAo
ZGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIApAQCAtMzczLDcgKzM3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJDYXB0dXJlZCIpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQXJn
dW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0KLSAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVu
dHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlOworICAgICAgICAgICAg
ICAgICAgICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vj
b25kOwogICAgICAgICAgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGlmIChkYXRhLmNhbGxDb250ZXh0SXNWYWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghZmlyc3QpCkBAIC00NTQsNyArNDU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAvLyB0aGluZ3MuIE5vdGUgYWxzbyB0aGF0IHRoZSBTZXRMb2NhbCBzaG91bGQgYmVjb21lIGRl
YWQgYXMgc29vbiBhcwogICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIGFsbCB1c2Vz
IG9mIHRoaXMgdmFyaWFibGUgd2l0aCBHZXRNeUFyZ3VtZW50c0xlbmd0aCBhbmQKICAgICAgICAg
ICAgICAgICAgICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsLgotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9hcmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVl
LmlzVmFsaWQoKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3VtZW50c0FsaWFz
aW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kLmlzVmFsaWQoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQXJndW1l
bnRzQWxpYXModHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTcxNCw3ICs3MTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKHZhcmlh
YmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPSBtX2Fy
Z3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+dmFsdWU7CisgICAgICAg
ICAgICBBcmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPSBtX2FyZ3VtZW50c0FsaWFzaW5nLmZp
bmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kOwogICAgICAgICAgICAgZGF0YS5lc2NhcGVz
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03NjEsNyArNzYxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgQXJndW1lbnRzQWxpYXNpbmdEYXRhJiBkYXRhID0gbV9hcmd1bWVudHNBbGlhc2luZy5m
aW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlOworICAgICAgICBBcmd1bWVudHNBbGlhc2lu
Z0RhdGEmIGRhdGEgPSBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRh
KS0+c2Vjb25kOwogICAgICAgICBkYXRhLm1lcmdlQ2FsbENvbnRleHQobm9kZS5jb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZSk7CiAgICAgfQogICAgIApAQCAtNzg0LDcgKzc4NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBB
cmd1bWVudHNBbGlhc2luZ0RhdGEmIGRhdGEgPQotICAgICAgICAgICAgICAgIG1fYXJndW1lbnRz
QWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kOwog
ICAgICAgICAgICAgaWYgKCFkYXRhLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTgyMCw3ICs4MjAsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICYmICFtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMoY2hpbGQu
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAgICAgYm9vbCBpc0FsaWFzZWRB
cmd1bWVudHNSZWdpc3RlciA9CiAgICAgICAgICAgICAgICAgIXZhcmlhYmxlQWNjZXNzRGF0YS0+
aXNDYXB0dXJlZCgpCi0gICAgICAgICAgICAgICAgJiYgbV9hcmd1bWVudHNBbGlhc2luZy5maW5k
KHZhcmlhYmxlQWNjZXNzRGF0YSktPnZhbHVlLmlzVmFsaWQoKQorICAgICAgICAgICAgICAgICYm
IG1fYXJndW1lbnRzQWxpYXNpbmcuZmluZCh2YXJpYWJsZUFjY2Vzc0RhdGEpLT5zZWNvbmQuaXNW
YWxpZCgpCiAgICAgICAgICAgICAgICAgJiYgIW1fY3JlYXRlc0FyZ3VtZW50cy5jb250YWlucyhj
aGlsZC5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBpZiAoIWlzRGVh
ZEFyZ3VtZW50c1JlZ2lzdGVyICYmICFpc0FsaWFzZWRBcmd1bWVudHNSZWdpc3RlcikKICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmNwcAppbmRleCBiNWI2Njg0MThhNjNhN2M5NDRkZjVkYzQ3YTYwNGIxZTUz
NTc0MWQ3Li43Nzk5ZWU1MDU5MzVhZDRlMTNiYzNjZTE4ZDBiNzMyYTNhYTQyOTZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCkBAIC00
OSw5ICs0OSw5IEBAIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBBc3NlbWJseUhl
bHBlcnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayoKICAgICBIYXNoTWFwPENvZGVCbG9j
ayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQg
PSBtX2RlY29kZWRDb2RlTWFwcy5hZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0PigpKTsKICAgICAKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
IGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7
CisgICAgICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUocmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQpOwogICAgIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
IHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZUNhY2hlLmgK
aW5kZXggOGVkMTU3OGYyNmQzYTRlNzVlMjNhOWQ4ZWVmZjA5YWI0YWI2MDA5Yy4uZjZhNzQ1YzY2
NTg3MTMzYjEyY2JkNDRmZjNhOTI5YTkzYzFiYTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZUNhY2hlLmgKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgTWFwOjppdGVyYXRvciBiZWdpbiA9IG1fbWFwLmJlZ2luKCk7CiAgICAgICAgIE1h
cDo6aXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7CiAgICAgICAgIGZvciAoTWFwOjppdGVyYXRv
ciBpdGVyID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmICgh
aXRlci0+dmFsdWUuY29kZUJsb2NrKQorICAgICAgICAgICAgaWYgKCFpdGVyLT5zZWNvbmQuY29k
ZUJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGl0ZXIt
PnZhbHVlLm93bmVkKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGl0ZXItPnZhbHVlLmNvZGVC
bG9jazsKKyAgICAgICAgICAgIGlmIChpdGVyLT5zZWNvbmQub3duZWQpIHsKKyAgICAgICAgICAg
ICAgICBkZWxldGUgaXRlci0+c2Vjb25kLmNvZGVCbG9jazsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoa2V5KTsK
ICAgICAgICAgaWYgKGl0ZXIgIT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWUuY29kZUJsb2NrOworICAgICAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZC5jb2Rl
QmxvY2s7CiAgICAgICAgIAogICAgICAgICBCeXRlQ29kZUNhY2hlVmFsdWUgdmFsdWU7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCAzZWUzYmQyYmU0ZjlkMTg3Zjk3M2FlNWJkOTE2ZWJjNDg5NmQ4ZjgzLi5kZjE5YzMw
ODJkN2M1YmEyYzY1OGQ1OTIxMjQwZWYwNmRjMzg4M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjYwLDkgKzY2MCw5IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBIYXNoTWFwPEpTQ2VsbCosIE5vZGVJbmRleD46OkFkZFJl
c3VsdCByZXN1bHQgPSBtX2NlbGxDb25zdGFudE5vZGVzLmFkZChjZWxsLCBOb05vZGUpOwogICAg
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gYWRkVG9HcmFwaChXZWFrSlNDb25zdGFudCwgT3BJbmZvKGNlbGwpKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gYWRkVG9HcmFwaChXZWFrSlNDb25zdGFu
dCwgT3BJbmZvKGNlbGwpKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
fQogICAgIAogICAgIENvZGVPcmlnaW4gY3VycmVudENvZGVPcmlnaW4oKQpAQCAtMzIwOSw3ICsz
MjA5LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50
cnkoCiAgICAgICAgICAgICBJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYnl0ZUNv
ZGVQYXJzZXItPm1faWRlbnRpZmllck1hcC5hZGQocmVwLCBieXRlQ29kZVBhcnNlci0+bV9jb2Rl
QmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5h
ZGRJZGVudGlmaWVyKElkZW50aWZpZXIoYnl0ZUNvZGVQYXJzZXItPm1fZ2xvYmFsRGF0YSwgcmVw
KSk7Ci0gICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CisgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IHJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kOwogICAgICAgICB9CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29k
ZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7ICsraSkgewogICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay0+Z2V0Q29uc3RhbnQoaSArIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KTsKQEAgLTMyMjcsNyArMzIyNyw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxp
bmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAgICAgICAgIGJ5dGVDb2Rl
UGFyc2VyLT5tX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQodmFsdWUpOwogICAgICAgICAgICAgICAg
IGJ5dGVDb2RlUGFyc2VyLT5tX2NvbnN0YW50cy5hcHBlbmQoQ29uc3RhbnRSZWNvcmQoKSk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2NvbnN0YW50UmVtYXBbaV0gPSByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOworICAgICAgICAgICAgbV9jb25zdGFudFJlbWFwW2ldID0gcmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZHbG9iYWxSZXNvbHZlSW5mb3MoKTsgKytpKQogICAgICAg
ICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCmluZGV4IGNjZDViZGM1YTc4MjY2ODE2M2NjMDkxOGYzYTEzNWY4MmY3MTU3YzguLmRlYzJl
NDlmNzI2MWMzZTI3MzU0NDQ4MDdiOGMxZjUzNWFiZDRlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFz
ZS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkYXRhTG9nKCJa
ZXJvaW5nIHRoZSBzdHJ1Y3R1cmUgdG8gaG9pc3QgZm9yICVzIGJlY2F1c2UgdGhlIHJhdGlvIGlz
ICVsZi5cbiIsCiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubmFtZU9mVmFyaWFibGVBY2Nl
c3NEYXRhKHZhcmlhYmxlKSwgdmFyaWFibGUtPnZvdGVSYXRpbygpKTsKICNlbmRpZgotICAgICAg
ICAgICAgaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgPSAwOworICAgICAgICAgICAgaXRlci0+c2Vj
b25kLm1fc3RydWN0dXJlID0gMDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGlz
YWJsZSBzdHJ1Y3R1cmUgY2hlY2sgaG9pc3RpbmcgZm9yIHZhcmlhYmxlcyB0aGF0IGNyb3NzIHRo
ZSBPU1IgZW50cnkgdGhhdApAQCAtMzM5LDkgKzMzOSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRv
ciBpdGVyID0gbV9tYXAuZmluZCh2YXJpYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChp
dGVyID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpCisgICAgICAgICAg
ICAgICAgICAgIGlmICghaXRlci0+c2Vjb25kLm1fc3RydWN0dXJlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5tX2lz
Q2xvYmJlcmVkICYmICFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9p
bnRTZXRJc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnNlY29u
ZC5tX2lzQ2xvYmJlcmVkICYmICFpdGVyLT5zZWNvbmQubV9zdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG5vZGUucmVmKCk7
CkBAIC0zNTUsNyArMzU1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LmFwcGVuZChnZXRMb2NhbCk7CiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5hcHBl
bmQoaW5kZXhJbkJsb2NrICsgMSwgZ2V0TG9jYWxJbmRleCk7CiAgICAgICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICBOb2RlIGNoZWNrU3RydWN0dXJlKENoZWNrU3RydWN0dXJl
LCBjb2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoaXRlci0+dmFsdWUu
bV9zdHJ1Y3R1cmUpKSwgZ2V0TG9jYWxJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUg
Y2hlY2tTdHJ1Y3R1cmUoQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmlnaW4sIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldChpdGVyLT5zZWNvbmQubV9zdHJ1Y3R1cmUpKSwgZ2V0TG9jYWxJbmRl
eCk7CiAgICAgICAgICAgICAgICAgICAgIGNoZWNrU3RydWN0dXJlLnJlZigpOwogICAgICAgICAg
ICAgICAgICAgICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1fZ3JhcGguc2l6ZSgp
OwogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0cnVjdHVyZSk7CkBA
IC0zNzUsOSArMzc1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPFZh
cmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5k
KHZhcmlhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVy
LT5zZWNvbmQubV9zdHJ1Y3R1cmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGl0ZXItPnZhbHVlLm1faXNDbG9iYmVyZWQgJiYgIWl0ZXIt
PnZhbHVlLm1fc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldElzU3RpbGxWYWxpZCgp
KQorICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+c2Vjb25kLm1faXNDbG9iYmVyZWQgJiYg
IWl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxs
VmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAg
ICAgICAgIC8vIEZpcnN0IGluc2VydCBhIGRlYWQgU2V0TG9jYWwgdG8gdGVsbCBPU1IgdGhhdCB0
aGUgY2hpbGQncyB2YWx1ZSBzaG91bGQKQEAgLTM5NCw3ICszOTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGhbY2hpbGQxXS5yZWYoKTsKICAgICAgICAgICAgICAgICAg
ICAgLy8gVXNlIGEgRm9yd2FyZENoZWNrU3RydWN0dXJlIHRvIGluZGljYXRlIHRoYXQgd2Ugc2hv
dWxkIGV4aXQgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgYnl0ZWNvZGUgaW5z
dHJ1Y3Rpb24gcmF0aGVyIHRoYW4gcmVleGVjdXRpbmcgdGhlIGN1cnJlbnQgb25lLgotICAgICAg
ICAgICAgICAgICAgICBOb2RlIGNoZWNrU3RydWN0dXJlKEZvcndhcmRDaGVja1N0cnVjdHVyZSwg
Y29kZU9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGl0ZXItPnZhbHVlLm1f
c3RydWN0dXJlKSksIGNoaWxkMSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGUgY2hlY2tTdHJ1
Y3R1cmUoRm9yd2FyZENoZWNrU3RydWN0dXJlLCBjb2RlT3JpZ2luLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQoaXRlci0+c2Vjb25kLm1fc3RydWN0dXJlKSksIGNoaWxkMSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNoZWNrU3RydWN0dXJlLnJlZigpOwogICAgICAgICAgICAgICAgICAg
ICBOb2RlSW5kZXggY2hlY2tTdHJ1Y3R1cmVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVja1N0cnVjdHVyZSk7CkBAIC00MTAsMTYg
KzQxMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8VmFyaWFibGVB
Y2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoY2hpbGQu
dmFyaWFibGVBY2Nlc3NEYXRhKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBt
X21hcC5lbmQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1faXNDbG9iYmVy
ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT5zZWNvbmQubV9pc0Nsb2JiZXJl
ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhQ
aGFudG9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLnJlZkNvdW50KCkg
PT0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldElzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnNlY29uZC5tX3N0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJ
c1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgPT0gbm9kZS5zdHJ1Y3R1
cmVTZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpdGVyLT5zZWNvbmQubV9zdHJ1Y3R1cmUgPT0gbm9kZS5zdHJ1Y3R1cmVTZXQoKS5zaW5nbGV0
b25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUuY29udmVydFRvU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnQoKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQyLDkgKzQ0Miw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBtX21hcC5hZGQodmFyaWFibGUsIENoZWNrRGF0YShzdHJ1Y3R1
cmUsIGZhbHNlKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgaWYgKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUg
PT0gc3RydWN0dXJlKQorICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQubV9zdHJ1
Y3R1cmUgPT0gc3RydWN0dXJlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQubV9zdHJ1Y3R1cmUgPSAwOwogICAgIH0KICAgICAKICAgICB2b2lkIG5vdGljZVN0
cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIGNvbnN0IFN0cnVjdHVy
ZVNldCYgc2V0KQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX21h
cC5maW5kKHZhcmlhYmxlKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGl0ZXItPnZhbHVlLm1faXNDbG9iYmVyZWQgPSB0cnVl
OworICAgICAgICBpdGVyLT5zZWNvbmQubV9pc0Nsb2JiZXJlZCA9IHRydWU7CiAgICAgfQogICAg
IAogICAgIHZvaWQgY2xvYmJlcihjb25zdCBPcGVyYW5kczxWYXJpYWJsZUFjY2Vzc0RhdGEqPiYg
bGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggOWUxYzQ3Y2FiNmY5MmZk
ODE1ZGQ2ZGViZWY4ODU2MzczMGFkY2ZkYS4uNjY5MTc4ODA0ZTYzZjhlNzVhNzM2ZWU0YWVhZTNi
MmM4Y2QxNjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTM0NSw3ICsz
NDUsNyBAQCB2b2lkIEhlYXA6Om1hcmtQcm90ZWN0ZWRPYmplY3RzKEhlYXBSb290VmlzaXRvciYg
aGVhcFJvb3RWaXNpdG9yKQogewogICAgIFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgZW5kID0g
bV9wcm90ZWN0ZWRWYWx1ZXMuZW5kKCk7CiAgICAgZm9yIChQcm90ZWN0Q291bnRTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV9wcm90ZWN0ZWRWYWx1ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAg
ICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoJml0LT5rZXkpOworICAgICAgICBoZWFwUm9vdFZp
c2l0b3IudmlzaXQoJml0LT5maXJzdCk7CiB9CiAKIHZvaWQgSGVhcDo6cHVzaFRlbXBTb3J0VmVj
dG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+KiB0ZW1wVmVjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCmluZGV4IGQ3MTAxMGJmMjNkN2IwYjVlZmVmZGU4NWE0YTQ3MGU0YjJlY2M5NWIu
LjZmMTNhZmI3MjVhOTk5OWU3M2VjZjAzODQ3NDM2ZTVjM2EzM2YyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKQEAgLTM0OCw3ICszNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgICAgIFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgZW5kID0gbV9wcm90ZWN0ZWRWYWx1
ZXMuZW5kKCk7CiAgICAgICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1f
cHJvdGVjdGVkVmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGZ1
bmN0b3IoaXQtPmtleSk7CisgICAgICAgICAgICBmdW5jdG9yKGl0LT5maXJzdCk7CiAgICAgICAg
IG1faGFuZGxlU2V0LmZvckVhY2hTdHJvbmdIYW5kbGUoZnVuY3RvciwgbV9wcm90ZWN0ZWRWYWx1
ZXMpOwogCiAgICAgICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAKaW5kZXggOGUyNzkx
ZmM3MTkwM2FiZDI2NjhjNDgyNmZiMmVjNGYxNzQwMjUwYy4uMDU0YmYwNmRkY2ZhYTQ3ZWY3ZjYy
YTkxNTAzMzkzNGIzMThhMWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0pJVFN0dWJSb3V0aW5lU2V0LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEpJVFN0dWJSb3V0
aW5lU2V0OjptYXJrU2xvdyh1aW50cHRyX3QgYWRkcmVzcykKICAgICBpZiAoaXRlciA9PSBtX2Fk
ZHJlc3NUb1JvdXRpbmVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpdGVy
LT52YWx1ZS0+bV9tYXlCZUV4ZWN1dGluZyA9IHRydWU7CisgICAgaXRlci0+c2Vjb25kLT5tX21h
eUJlRXhlY3V0aW5nID0gdHJ1ZTsKIH0KIAogdm9pZCBKSVRTdHViUm91dGluZVNldDo6ZGVsZXRl
VW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBK
SVRTdHViUm91dGluZVNldDo6ZGVsZXRlVW5tYXJrZWRKZXR0aXNvbmVkU3R1YlJvdXRpbmVzKCkK
ICAgICAgICAgdWludHB0cl90IHN0ZXAgPSBKSVRTdHViUm91dGluZTo6YWRkcmVzc1N0ZXAoKTsK
ICAgICAgICAgZm9yICh1aW50cHRyX3QgaXRlciA9IHN0YXJ0OyBpdGVyIDwgZW5kOyBpdGVyICs9
IHN0ZXApIHsKICAgICAgICAgICAgIEFTU0VSVChtX2FkZHJlc3NUb1JvdXRpbmVNYXAuZmluZChp
dGVyKSAhPSBtX2FkZHJlc3NUb1JvdXRpbmVNYXAuZW5kKCkpOwotICAgICAgICAgICAgQVNTRVJU
KG1fYWRkcmVzc1RvUm91dGluZU1hcC5maW5kKGl0ZXIpLT52YWx1ZSA9PSByb3V0aW5lKTsKKyAg
ICAgICAgICAgIEFTU0VSVChtX2FkZHJlc3NUb1JvdXRpbmVNYXAuZmluZChpdGVyKS0+c2Vjb25k
ID09IHJvdXRpbmUpOwogICAgICAgICAgICAgbV9hZGRyZXNzVG9Sb3V0aW5lTWFwLnJlbW92ZShp
dGVyKTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCmluZGV4IGUzNThiYmYzN2Y0Y2VkMGRiMjE0ZDQzNWExMDliZTE1ZWM3NDQyYjUu
LmIzMTM2NjQzYjRlZGI3OGYxYWYxMTUzYzc5NWVjMjMxMDE0Yzk1OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcApAQCAtNTMzLDcgKzUzMyw3IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBNYXJrU3RhY2s6OmludGVybmFsQXBwZW5kKEpTVmFsdWUqIHNsb3QpCiAgICAg
ICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICAgICAgc3RyaW5n
LT5zZXRIYXNoQ29uc3RTaW5nbGV0b24oKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIEpTVmFsdWUgZXhpc3RpbmdKU1ZhbHVlID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGV4aXN0aW5nSlNWYWx1ZSA9IGFkZFJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kOwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBleGlzdGluZ0pT
VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGpzQ2FzdDxKU1N0cmluZyo+KGV4aXN0aW5nSlNW
YWx1ZS5hc0NlbGwoKSktPmNsZWFySGFzaENvbnN0U2luZ2xldG9uKCk7CiAgICAgICAgICAgICAg
ICAgKnNsb3QgPSBleGlzdGluZ0pTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgKaW5k
ZXggM2MzZDFkMGNlZmUxODEyNjU5YzVmYTczYzc0ZDE5OTQ4YzE4ZmZlYi4uMDc2OThmZDA2YjA2
Yzc1MDE0YmI2NWJmMjVmYzMxYzI4YTlhMDY4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vhay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsu
aApAQCAtMTY0LDggKzE2NCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAmCiAgICAgdHlwZW5h
bWUgTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKGtleSk7CiAgICAgQVNTRVJUX1VOVVNFRCh2
YWx1ZSwgdmFsdWUpOwogICAgIEFTU0VSVChpdCAhPSBtYXAuZW5kKCkpOwotICAgIEFTU0VSVChp
dC0+dmFsdWUud2FzKHZhbHVlKSk7Ci0gICAgQVNTRVJUKCFpdC0+dmFsdWUpOworICAgIEFTU0VS
VChpdC0+c2Vjb25kLndhcyh2YWx1ZSkpOworICAgIEFTU0VSVCghaXQtPnNlY29uZCk7CiAgICAg
bWFwLnJlbW92ZShpdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA4Mzdi
OGQyMWUzYjUxMmZkZmMzNTJkZmE3ZWExMzMyYjUxZGQ2ZGU1Li41MmE3MTU4ZTY2MDZhZmRmNzRh
ZTMyNmRlODA5OTAyYTQxOTMzNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC03
MTEsOCArNzExLDggQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0
aW9uRW50cnlBcml0eUNoZWNrLCBKSVRDb21waWxhdGlvbkVmZm8KIAogICAgICAgICAgICAgU3Ry
aW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gcmVjb3JkLmp1
bXBUYWJsZS5zdHJpbmdKdW1wVGFibGUtPm9mZnNldFRhYmxlLmVuZCgpOyAgICAgICAgICAgIAog
ICAgICAgICAgICAgZm9yIChTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVy
YXRvciBpdCA9IHJlY29yZC5qdW1wVGFibGUuc3RyaW5nSnVtcFRhYmxlLT5vZmZzZXRUYWJsZS5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZz
ZXQgPSBpdC0+dmFsdWUuYnJhbmNoT2Zmc2V0OwotICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5j
dGlPZmZzZXQgPSBvZmZzZXQgPyBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mKG1fbGFiZWxzW2J5dGVj
b2RlT2Zmc2V0ICsgb2Zmc2V0XSkgOiByZWNvcmQuanVtcFRhYmxlLnN0cmluZ0p1bXBUYWJsZS0+
Y3RpRGVmYXVsdDsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBpdC0+c2Vjb25k
LmJyYW5jaE9mZnNldDsKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLmN0aU9mZnNldCA9IG9m
ZnNldCA/IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YobV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXQgKyBv
ZmZzZXRdKSA6IHJlY29yZC5qdW1wVGFibGUuc3RyaW5nSnVtcFRhYmxlLT5jdGlEZWZhdWx0Owog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAppbmRleCA5NzU3OWZiNDJlYTVlMGY5MzNiZDgwNWI1NDY3NGE5ZGNhM2I5M2Vi
Li5jYzg5OTU4N2YwNjlmYjJmM2ZmZmIxMTg3MDI5ZGEwOTczZjY2YmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzQ1OSw4ICszNDU5LDggQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIEpJVFRodW5rczo6Y3RpU3R1YihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IFRodW5rR2VuZXJhdG8KIHsKICAgICBDVElTdHViTWFwOjpBZGRSZXN1bHQgZW50cnkgPSBtX2N0
aVN0dWJNYXAuYWRkKGdlbmVyYXRvciwgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCkpOwogICAgIGlm
IChlbnRyeS5pc05ld0VudHJ5KQotICAgICAgICBlbnRyeS5pdGVyYXRvci0+dmFsdWUgPSBnZW5l
cmF0b3IoZ2xvYmFsRGF0YSk7Ci0gICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICAgICAgZW50cnkuaXRlcmF0b3ItPnNlY29uZCA9IGdlbmVyYXRvcihnbG9iYWxEYXRhKTsKKyAg
ICByZXR1cm4gZW50cnkuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogTmF0aXZlRXhlY3V0YWJsZSog
SklUVGh1bmtzOjpob3N0RnVuY3Rpb25TdHViKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI5MzY4MWZmNDk3OTUxZjAzNzZl
N2IxNWU1ZjI2NWE2NzIwYmM4YjEuLjRmZDY3MWZiNzM1ZjFkZDIxNTExMTI5MzMwMzIxODRmMzhi
Yzc0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTEzNjQs
MTAgKzEzNjQsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKICAgICAgICAgaWYgKCFtX3N5
bnRheEFscmVhZHlWYWxpZGF0ZWQpIHsKICAgICAgICAgICAgIE9iamVjdFZhbGlkYXRpb25NYXA6
OkFkZFJlc3VsdCBwcm9wZXJ0eUVudHJ5ID0gb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0Lmdl
dE5hbWUocHJvcGVydHkpLmltcGwoKSwgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7CiAgICAg
ICAgICAgICBpZiAoIXByb3BlcnR5RW50cnkuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgICAg
IGZhaWxJZlRydWUocHJvcGVydHlFbnRyeS5pdGVyYXRvci0+dmFsdWUgPT0gUHJvcGVydHlOb2Rl
OjpDb25zdGFudCk7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShwcm9wZXJ0eUVudHJ5Lml0
ZXJhdG9yLT5zZWNvbmQgPT0gUHJvcGVydHlOb2RlOjpDb25zdGFudCk7CiAgICAgICAgICAgICAg
ICAgZmFpbElmVHJ1ZShjb250ZXh0LmdldFR5cGUocHJvcGVydHkpID09IFByb3BlcnR5Tm9kZTo6
Q29uc3RhbnQpOwotICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHBy
b3BlcnR5KSAmIHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgICAgICAg
ICBwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9yLT52YWx1ZSB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVy
dHkpOworICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoY29udGV4dC5nZXRUeXBlKHByb3BlcnR5
KSAmIHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KHByb3BlcnR5TG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAppbmRleCA0NGRkNTJkMjQyMzg4ZjJm
MzY3MGI4ZGFlNmY1ZjYzMzUyMjQ4YjI0Li45MmUzMmM0YmE2NjRhNDFmNDFhODhlOTI5Y2EzZjBj
ZThiZjcwNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3Bw
CkBAIC0xMTEsNyArMTExLDcgQEAgdHlwZWRlZiBXVEY6OktleVZhbHVlUGFpcjxGdW5jdGlvbkNh
bGxIYXNoQ291bnQ6OlZhbHVlVHlwZSwgdW5zaWduZWQ+IE5hbWVDb3VudFAKIAogc3RhdGljIGlu
bGluZSBib29sIGZ1bmN0aW9uTmFtZUNvdW50UGFpckNvbXBhcmF0b3IoY29uc3QgTmFtZUNvdW50
UGFpciYgYSwgY29uc3QgTmFtZUNvdW50UGFpciYgYikKIHsKLSAgICByZXR1cm4gYS52YWx1ZSA+
IGIudmFsdWU7CisgICAgcmV0dXJuIGEuc2Vjb25kID4gYi5zZWNvbmQ7CiB9CiAKIHZvaWQgUHJv
ZmlsZTo6ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZSgpIGNvbnN0CkBAIC0xMjgsNyArMTI4LDcg
QEAgdm9pZCBQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxlKCkgY29uc3QKIAogICAg
IHN0ZDo6c29ydChzb3J0ZWRGdW5jdGlvbnMuYmVnaW4oKSwgc29ydGVkRnVuY3Rpb25zLmVuZCgp
LCBmdW5jdGlvbk5hbWVDb3VudFBhaXJDb21wYXJhdG9yKTsKICAgICBmb3IgKE5hbWVDb3VudFBh
aXJWZWN0b3I6Oml0ZXJhdG9yIGl0ID0gc29ydGVkRnVuY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHNv
cnRlZEZ1bmN0aW9ucy5lbmQoKTsgKytpdCkKLSAgICAgICAgZGF0YUxvZygiICAgICAgICAlLTEy
ZCVzXG4iLCAoKml0KS52YWx1ZSwgVVN0cmluZygoKml0KS5rZXkpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBkYXRhTG9nKCIgICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnNlY29uZCwgVVN0cmlu
ZygoKml0KS5maXJzdCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBkYXRhTG9nKCJcblNvcnQgYnkg
dG9wIG9mIHN0YWNrLCBzYW1lIGNvbGxhcHNlZCAod2hlbiA+PSA1KTpcbiIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCA0OGE3YWRmMGNm
MGM2OGNiN2RkNDE0MWNmMmQ2ZTFmNmUwZTBjYjJhLi4wZmM1NGYzYzZmZDg3NWIzOWIxYzVmMDUz
NmYzZmViNjgzMTgyMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gSWRl
bnRpZmllcjo6YWRkKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogYykKIAog
ICAgIGNvbnN0IExpdGVyYWxJZGVudGlmaWVyVGFibGU6Oml0ZXJhdG9yJiBpdGVyID0gbGl0ZXJh
bElkZW50aWZpZXJUYWJsZS5maW5kKGMpOwogICAgIGlmIChpdGVyICE9IGxpdGVyYWxJZGVudGlm
aWVyVGFibGUuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAgICAgICAgcmV0
dXJuIGl0ZXItPnNlY29uZDsKIAogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQg
YWRkUmVzdWx0ID0gaWRlbnRpZmllclRhYmxlLmFkZDxjb25zdCBMQ2hhciosIElkZW50aWZpZXJB
U0NJSVN0cmluZ1RyYW5zbGF0b3I+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmlu
ZGV4IDE4YzMwNzkzOWMxZjgxYzVjNTNlMzU0YjJhN2E4ZjM0YTA4YzE2MzguLmEyMjZiNDE2Zjkw
ZmQ3YjgyZGI3MDcyNDY1OWJjOTI2YTE0NzJkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtMTQwLDExICsxNDAsMTEgQEAgdm9pZCBK
U0FjdGl2YXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXIKIAogICAgIFN5bWJvbFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQg
PSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQoKTsKICAgICBmb3IgKFN5bWJvbFRhYmxl
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMo
KSAmIERvbnRFbnVtICYmIG1vZGUgIT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykKKyAgICAg
ICAgaWYgKGl0LT5zZWNvbmQuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0gJiYgbW9kZSAhPSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChpdC0+dmFsdWUuZ2V0SW5kZXgoKSA+PSB0aGlzT2JqZWN0LT5tX251bUNhcHR1cmVkVmFy
cykKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQuZ2V0SW5kZXgoKSA+PSB0aGlzT2JqZWN0LT5tX251
bUNhcHR1cmVkVmFycykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKKyAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+Zmlyc3QuZ2V0KCkpKTsKICAgICB9CiAg
ICAgLy8gU2tpcCB0aGUgSlNWYXJpYWJsZU9iamVjdCBpbXBsZW1lbnRhdGlvbiBvZiBnZXRPd25Q
cm9wZXJ0eU5hbWVzCiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgaW5saW5l
IGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwKICAgICBTeW1ib2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJv
bFRhYmxlKCktPmZpbmQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKGl0ZXIg
PT0gc3ltYm9sVGFibGUoKS0+ZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTeW1i
b2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOworICAgIFN5bWJvbFRhYmxlRW50cnkm
IGVudHJ5ID0gaXRlci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAg
IGlmIChlbnRyeS5nZXRJbmRleCgpID49IG1fbnVtQ2FwdHVyZWRWYXJzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4
IGY1ODQ4ZDkyZjhmMTE2MGY1ODhlOWRlZjYwY2Q5NGQyNzEzMWNjMmEuLjcyMTg2MDRkMTEyYzc4
YjU3MTJiNDU0NDM4ZjI5YjEwYjUyMDg0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgaW5saW5lIFNwYXJzZUFycmF5VmFs
dWVNYXA6OkFkZFJlc3VsdCBTcGFyc2VBcnJheVZhbHVlTWFwOjphZGQoSlNBcnJheSogYXJyYXks
IHUKIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVjU3RhdGUqIGV4ZWMs
IEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQogewogICAgIEFkZFJlc3VsdCByZXN1bHQgPSBhZGQoYXJyYXksIGkpOwotICAgIFNwYXJz
ZUFycmF5RW50cnkmIGVudHJ5ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBTcGFyc2VB
cnJheUVudHJ5JiBlbnRyeSA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gVG8g
c2F2ZSBhIHNlcGFyYXRlIGZpbmQgJiBhZGQsIHdlIGZpcnN0IGFsd2F5cyBhZGQgdG8gdGhlIHNw
YXJzZSBtYXAuCiAgICAgLy8gSW4gdGhlIHVuY29tbW9uIGNhc2UgdGhhdCB0aGlzIGlzIGEgbmV3
IHByb3BlcnR5LCBhbmQgdGhlIGFycmF5IGlzIG5vdApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGlubGlu
ZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkq
IGFycmF5LCB1bnNpZ25lZCBpCiBpbmxpbmUgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXRE
aXJlY3QoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRk
KGFycmF5LCBpKTsKLSAgICBTcGFyc2VBcnJheUVudHJ5JiBlbnRyeSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CisgICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSByZXN1bHQuaXRlcmF0b3It
PnNlY29uZDsKIAogICAgIC8vIFRvIHNhdmUgYSBzZXBhcmF0ZSBmaW5kICYgYWRkLCB3ZSBmaXJz
dCBhbHdheXMgYWRkIHRvIHRoZSBzcGFyc2UgbWFwLgogICAgIC8vIEluIHRoZSB1bmNvbW1vbiBj
YXNlIHRoYXQgdGhpcyBpcyBhIG5ldyBwcm9wZXJ0eSwgYW5kIHRoZSBhcnJheSBpcyBub3QKQEAg
LTMxMyw3ICszMTMsNyBAQCBpbmxpbmUgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjp2aXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGl0ZXJhdG9yIGVuZCA9IG1fbWFw
LmVuZCgpOwogICAgIGZvciAoaXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpdC0+dmFsdWUpOworICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmaXQtPnNlY29uZCk7CiB9CiAKIHZvaWQgSlNBcnJheTo6YWxsb2NhdGVTcGFy
c2VNYXAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQg
SlNBcnJheTo6ZW50ZXJEaWN0aW9uYXJ5TW9kZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAg
ICAgICAgIC8vIFRoaXMgd2lsbCBhbHdheXMgYmUgYSBuZXcgZW50cnkgaW4gdGhlIG1hcCwgc28g
bm8gbmVlZCB0byBjaGVjayB3ZSBjYW4gd3JpdGUsCiAgICAgICAgIC8vIGFuZCBhdHRyaWJ1dGVz
IGFyZSBkZWZhdWx0IHNvIG5vIG5lZWQgdG8gc2V0IHRoZW0uCiAgICAgICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgICAgIG1hcC0+YWRkKHRoaXMsIGkpLml0ZXJhdG9yLT52YWx1ZS5zZXQoZ2xvYmFs
RGF0YSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAgbWFwLT5hZGQodGhpcywgaSkuaXRlcmF0
b3ItPnNlY29uZC5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwogICAgIH0KIAogICAgIHZv
aWQqIG5ld1Jhd1N0b3JhZ2UgPSAwOwpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgSlNBcnJheTo6
ZGVmaW5lT3duTnVtZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgs
IFByb3BlcnR5CiAKICAgICAvLyAxLiBMZXQgY3VycmVudCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIHByb3Bl
cnR5IG5hbWUgUC4KICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0g
bWFwLT5hZGQodGhpcywgaW5kZXgpOwotICAgIFNwYXJzZUFycmF5RW50cnkqIGVudHJ5SW5NYXAg
PSAmcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBTcGFyc2VBcnJheUVudHJ5KiBlbnRyeUlu
TWFwID0gJnJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogCiAgICAgLy8gMi4gTGV0IGV4dGVuc2li
bGUgYmUgdGhlIHZhbHVlIG9mIHRoZSBbW0V4dGVuc2libGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBv
ZiBPLgogICAgIC8vIDMuIElmIGN1cnJlbnQgaXMgdW5kZWZpbmVkIGFuZCBleHRlbnNpYmxlIGlz
IGZhbHNlLCB0aGVuIFJlamVjdC4KQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIEpTQXJyYXk6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkCiAgICAgfSBlbHNlIGlmIChTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSB0aGlzT2Jq
ZWN0LT5tX3NwYXJzZVZhbHVlTWFwKSB7CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0
ZXJhdG9yIGl0ID0gbWFwLT5maW5kKGkpOwogICAgICAgICBpZiAoaXQgIT0gbWFwLT5ub3RGb3Vu
ZCgpKSB7Ci0gICAgICAgICAgICBpdC0+dmFsdWUuZ2V0KHNsb3QpOworICAgICAgICAgICAgaXQt
PnNlY29uZC5nZXQoc2xvdCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTcwMiw3ICs3MDIsNyBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgICAg
ICB9IGVsc2UgaWYgKFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IHRoaXNPYmplY3QtPm1fc3Bh
cnNlVmFsdWVNYXApIHsKICAgICAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJhdG9y
IGl0ID0gbWFwLT5maW5kKGkpOwogICAgICAgICAgICAgaWYgKGl0ICE9IG1hcC0+bm90Rm91bmQo
KSkgewotICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5nZXQoZGVzY3JpcHRvcik7CisgICAgICAg
ICAgICAgICAgaXQtPnNlY29uZC5nZXQoZGVzY3JpcHRvcik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTgzNCw3ICs4MzQsNyBAQCB2
b2lkIEpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpLCBKU1ZhbHVlCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3Ig
PSBzdG9yYWdlLT5tX3ZlY3RvcjsKICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
dmVjdG9yW2l0LT5rZXldLnNldChnbG9iYWxEYXRhLCB0aGlzLCBpdC0+dmFsdWUuZ2V0Tm9uU3Bh
cnNlTW9kZSgpKTsKKyAgICAgICAgdmVjdG9yW2l0LT5maXJzdF0uc2V0KGdsb2JhbERhdGEsIHRo
aXMsIGl0LT5zZWNvbmQuZ2V0Tm9uU3BhcnNlTW9kZSgpKTsKICAgICBkZWFsbG9jYXRlU3BhcnNl
TWFwKCk7CiAKICAgICAvLyBTdG9yZSB0aGUgbmV3IHByb3BlcnR5IGludG8gdGhlIHZlY3Rvci4K
QEAgLTkwNCw3ICs5MDQsNyBAQCBib29sIEpTQXJyYXk6OnB1dERpcmVjdEluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYQogICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogdmVjdG9yID0gc3RvcmFnZS0+bV92ZWN0b3I7CiAgICAgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLT5lbmQoKTsKICAgICBmb3IgKFNw
YXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIHZlY3RvcltpdC0+a2V5XS5zZXQoZ2xvYmFsRGF0YSwgdGhp
cywgaXQtPnZhbHVlLmdldE5vblNwYXJzZU1vZGUoKSk7CisgICAgICAgIHZlY3RvcltpdC0+Zmly
c3RdLnNldChnbG9iYWxEYXRhLCB0aGlzLCBpdC0+c2Vjb25kLmdldE5vblNwYXJzZU1vZGUoKSk7
CiAgICAgZGVhbGxvY2F0ZVNwYXJzZU1hcCgpOwogCiAgICAgLy8gU3RvcmUgdGhlIG5ldyBwcm9w
ZXJ0eSBpbnRvIHRoZSB2ZWN0b3IuCkBAIC05NDcsNyArOTQ3LDcgQEAgYm9vbCBKU0FycmF5Ojpk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGkpCiAgICAgfSBlbHNlIGlmIChTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSB0aGlzT2Jq
ZWN0LT5tX3NwYXJzZVZhbHVlTWFwKSB7CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0
ZXJhdG9yIGl0ID0gbWFwLT5maW5kKGkpOwogICAgICAgICBpZiAoaXQgIT0gbWFwLT5ub3RGb3Vu
ZCgpKSB7Ci0gICAgICAgICAgICBpZiAoaXQtPnZhbHVlLmF0dHJpYnV0ZXMgJiBEb250RGVsZXRl
KQorICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQuYXR0cmlidXRlcyAmIERvbnREZWxldGUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgbWFwLT5yZW1vdmUoaXQp
OwogICAgICAgICB9CkBAIC05ODUsOCArOTg1LDggQEAgdm9pZCBKU0FycmF5OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW0K
ICAgICAgICAgCiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyB8fCAhKGl0LT52YWx1ZS5h
dHRyaWJ1dGVzICYgRG9udEVudW0pKQotICAgICAgICAgICAgICAgIGtleXMuYXBwZW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpdC0+a2V5KSk7CisgICAgICAgICAgICBpZiAobW9kZSA9PSBJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzIHx8ICEoaXQtPnNlY29uZC5hdHRyaWJ1dGVzICYgRG9udEVu
dW0pKQorICAgICAgICAgICAgICAgIGtleXMuYXBwZW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
dC0+Zmlyc3QpKTsKICAgICAgICAgfQogCiAgICAgICAgIHFzb3J0KGtleXMuYmVnaW4oKSwga2V5
cy5zaXplKCksIHNpemVvZih1bnNpZ25lZCksIGNvbXBhcmVLZXlzRm9yUVNvcnQpOwpAQCAtMTE3
OSw3ICsxMTc5LDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRpb24KICAgICAgICAgICAgIGtleXMu
cmVzZXJ2ZUNhcGFjaXR5KG1pbihtYXAtPnNpemUoKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5n
dGggLSBuZXdMZW5ndGgpKSk7CiAgICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChTcGFyc2VBcnJh
eVZhbHVlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaXQtPmtleSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaXQtPmZpcnN0KTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBs
ZW5ndGggJiYgaW5kZXggPj0gbmV3TGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICBrZXlzLmFw
cGVuZChpbmRleCk7CiAgICAgICAgICAgICB9CkBAIC0xMTk0LDcgKzExOTQsNyBAQCBib29sIEpT
QXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9v
bCB0aHJvd0V4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGtl
eXNbLS1pXTsKICAgICAgICAgICAgICAgICAgICAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0
b3IgaXQgPSBtYXAtPmZpbmQoaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXQg
IT0gbWFwLT5ub3RGb3VuZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS5h
dHRyaWJ1dGVzICYgRG9udERlbGV0ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXQtPnNl
Y29uZC5hdHRyaWJ1dGVzICYgRG9udERlbGV0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmFnZS0+bV9sZW5ndGggPSBpbmRleCArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVqZWN0KGV4ZWMsIHRocm93RXhjZXB0aW9uLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4iKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgdm9p
ZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24s
IENhbGxUeXBlIGNhbGxUeXBlLAogCiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1tudW1EZWZpbmVkXS52YWx1
ZSA9IGl0LT52YWx1ZS5nZXROb25TcGFyc2VNb2RlKCk7CisgICAgICAgICAgICB0cmVlLmFic3Ry
YWN0b3IoKS5tX25vZGVzW251bURlZmluZWRdLnZhbHVlID0gaXQtPnNlY29uZC5nZXROb25TcGFy
c2VNb2RlKCk7CiAgICAgICAgICAgICB0cmVlLmluc2VydChudW1EZWZpbmVkKTsKICAgICAgICAg
ICAgICsrbnVtRGVmaW5lZDsKICAgICAgICAgfQpAQCAtMTc4NCw3ICsxNzg0LDcgQEAgdW5zaWdu
ZWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQog
CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC0+
ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHN0b3JhZ2Ut
Pm1fdmVjdG9yW251bURlZmluZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmllcihpdC0+dmFsdWUu
Z2V0Tm9uU3BhcnNlTW9kZSgpKTsKKyAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW251bURl
ZmluZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmllcihpdC0+c2Vjb25kLmdldE5vblNwYXJzZU1v
ZGUoKSk7CiAKICAgICAgICAgZGVhbGxvY2F0ZVNwYXJzZU1hcCgpOwogICAgIH0KQEAgLTE4MzEs
MTMgKzE4MzEsMTMgQEAgdm9pZCBKU0FycmF5OjpjaGVja0NvbnNpc3RlbmN5KENvbnNpc3RlbmN5
Q2hlY2tUeXBlIHR5cGUpCiAgICAgaWYgKG1fc3BhcnNlVmFsdWVNYXApIHsKICAgICAgICAgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zcGFyc2VWYWx1ZU1hcC0+
ZW5kKCk7CiAgICAgICAgIGZvciAoU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX3NwYXJzZVZhbHVlTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGluZGV4ID0gaXQtPmtleTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gaXQtPmZpcnN0OwogICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgc3RvcmFnZS0+bV9s
ZW5ndGgpOwogICAgICAgICAgICAgQVNTRVJUKGluZGV4ID49IG1fdmVjdG9yTGVuZ3RoKTsKICAg
ICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpOwotICAgICAgICAgICAg
QVNTRVJUKGl0LT52YWx1ZSk7CisgICAgICAgICAgICBBU1NFUlQoaXQtPnNlY29uZCk7CiAgICAg
ICAgICAgICBpZiAodHlwZSAhPSBEZXN0cnVjdG9yQ29uc2lzdGVuY3lDaGVjaykKLSAgICAgICAg
ICAgICAgICBpdC0+dmFsdWUuZ2V0Tm9uU3BhcnNlTW9kZSgpLmlzVW5kZWZpbmVkKCk7IC8vIExp
a2VseSB0byBjcmFzaCBpZiB0aGUgb2JqZWN0IHdhcyBkZWFsbG9jYXRlZC4KKyAgICAgICAgICAg
ICAgICBpdC0+c2Vjb25kLmdldE5vblNwYXJzZU1vZGUoKS5pc1VuZGVmaW5lZCgpOyAvLyBMaWtl
bHkgdG8gY3Jhc2ggaWYgdGhlIG9iamVjdCB3YXMgZGVhbGxvY2F0ZWQuCiAgICAgICAgIH0KICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwCmluZGV4IDM3Y2MxYWUwNDE2YjVkYzg3NWU0ZGE0OTFmOTFjYjc1YjY5
NjMwZTYuLjIzMzRhMDhjYWU4YWFjZWZmOGY2NTVkMTc5ZTFkNjljZjRjMzU2MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
Y3BwCkBAIC02MSw4ICs2MSw4IEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiAgICAgSlNTeW1i
b2xUYWJsZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N5bWJvbFRhYmxlT2JqZWN0Kj4o
b2JqZWN0KTsKICAgICBTeW1ib2xUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+ZW5kKCk7CiAgICAgZm9yIChTeW1ib2xUYWJsZTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRF
bnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKLSAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOworICAg
ICAgICBpZiAoIShpdC0+c2Vjb25kLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9k
ZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKKyAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmZpcnN0LmdldCgpKSk7CiAgICAgfQogICAgIAog
ICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IDUwYTY0OTU3OTNhMWUwY2I5MmE1N2E2YmNmNjRm
OTgwOTg1YjY2NTYuLjFhOTliMTk5ZmZlMWI2N2E3Y2RiY2RmY2M5NjkzZjRmMWUxZDRkOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmgKQEAgLTc3LDcgKzc3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAg
U3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0
ZXItPnZhbHVlOworICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNv
bmQ7CiAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmpl
Y3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0SW5kZXgoKSkuZ2V0KCkpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtOTEsNyArOTEsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKICAgICBTeW1i
b2xUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQocHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+
dmFsdWU7CisgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnNlY29uZDsK
ICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3IoCiAgICAgICAgIG9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKS5nZXQoKSwg
ZW50cnkuZ2V0QXR0cmlidXRlcygpIHwgRG9udERlbGV0ZSk7CkBAIC0xMDcsNyArMTA3LDcgQEAg
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiAgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZS5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlm
IChpdGVyID09IHN5bWJvbFRhYmxlLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
U3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOworICAgIFN5bWJvbFRh
YmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT5zZWNvbmQ7CiAgICAgQVNTRVJUKCFlbnRyeS5p
c051bGwoKSk7CiAgICAgc2xvdC5zZXRWYWx1ZShvYmplY3QtPnJlZ2lzdGVyQXQoZW50cnkuZ2V0
SW5kZXgoKSkuZ2V0KCkpOwogICAgIHNsb3RJc1dyaXRlYWJsZSA9ICFlbnRyeS5pc1JlYWRPbmx5
KCk7CkBAIC0xMjcsNyArMTI3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBib29sIHdhc0ZhdDsKLSAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGZhc3RFbnRyeSA9IGl0
ZXItPnZhbHVlLmdldEZhc3Qod2FzRmF0KTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGZh
c3RFbnRyeSA9IGl0ZXItPnNlY29uZC5nZXRGYXN0KHdhc0ZhdCk7CiAgICAgQVNTRVJUKCFmYXN0
RW50cnkuaXNOdWxsKCkpOwogICAgIGlmIChmYXN0RW50cnkuaXNSZWFkT25seSgpKSB7CiAgICAg
ICAgIGlmIChzaG91bGRUaHJvdykKQEAgLTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgYm9vbCBzeW1i
b2xUYWJsZVB1dCgKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChVTkxJS0VM
WSh3YXNGYXQpKQotICAgICAgICBpdGVyLT52YWx1ZS5ub3RpZnlXcml0ZSgpOworICAgICAgICBp
dGVyLT5zZWNvbmQubm90aWZ5V3JpdGUoKTsKICAgICBvYmplY3QtPnJlZ2lzdGVyQXQoZmFzdEVu
dHJ5LmdldEluZGV4KCkpLnNldChnbG9iYWxEYXRhLCBvYmplY3QsIHZhbHVlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTE1MCw3ICsxNTAsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKAogICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBpdGVyID0gb2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5maW5kKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlm
IChpdGVyID09IG9iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOworICAgIFN5
bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+c2Vjb25kOwogICAgIEFTU0VSVCghZW50cnku
aXNOdWxsKCkpOwogICAgIGVudHJ5Lm5vdGlmeVdyaXRlKCk7CiAgICAgZW50cnkuc2V0QXR0cmli
dXRlcyhhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENhY2hlLmNwcAppbmRleCBhYjRmOTg3OGE5OTk4ZDQ5ODQwMmU2YjRkY2U3MDliZDI4ZTJjZWU4
Li41M2ExM2E0YjU5Yjc3ZTc2YTRiODgwY2ZlNzViMzYwNmM4N2UxZmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgUmVnRXhwQ2FjaGU6OmludmFsaWRhdGVDb2RlKCkKIAogICAgIFJlZ0V4cENhY2hlTWFw
OjppdGVyYXRvciBlbmQgPSBtX3dlYWtDYWNoZS5lbmQoKTsKICAgICBmb3IgKFJlZ0V4cENhY2hl
TWFwOjppdGVyYXRvciBpdCA9IG1fd2Vha0NhY2hlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgUmVn
RXhwKiByZWdFeHAgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoIXJlZ0V4cCkgLy8g
U2tpcCB6b21iaWVzLgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHJlZ0V4cC0+aW52
YWxpZGF0ZUNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtHQ01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgK
aW5kZXggNTJlNWUyOTQ2ZmQxMDNiN2ZlYWY2MjFmNmZkMmE1MGQwNTM0OWQwMy4uNjkyNjE2NWE3
ODVhNzY3ZGEzNzdhY2ViMjUzOTcwY2VjM2I5YTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha0dDTWFwLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgdHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgZW5kID0gbV9tYXAuZW5kKCk7CiAgICAg
ICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgcHRyID0gbV9tYXAuYmVnaW4oKTsg
cHRyICE9IGVuZDsgKytwdHIpCi0gICAgICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKHB0ci0+
dmFsdWUpOworICAgICAgICAgICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShwdHItPnNlY29uZCk7CiAg
ICAgICAgIG1fbWFwLmNsZWFyKCk7CiAgICAgfQogCkBAIC04MCw4ICs4MCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLmFwaUxvY2soKS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKICAgICAgICAgdHlwZW5hbWUgTWFwVHlwZTo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIDApOwogICAgICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICAgICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdlYWtTZXQ6
OmFsbG9jYXRlKHZhbHVlLCB0aGlzLCBGaW5hbGl6ZXJDYWxsYmFjazo6ZmluYWxpemVyQ29udGV4
dEZvcihrZXkpKTsKKyAgICAgICAgICAgIFdlYWtTZXQ6OmRlYWxsb2NhdGUocmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IFdlYWtTZXQ6
OmFsbG9jYXRlKHZhbHVlLCB0aGlzLCBGaW5hbGl6ZXJDYWxsYmFjazo6ZmluYWxpemVyQ29udGV4
dEZvcihrZXkpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZShjb25zdCBLZXlUeXBlJiBrZXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvUHJvZmlsZVRyZWVOb2RlLmgKaW5kZXgg
N2I1YTk1ZWM0MDQ0YjYzZjIxMTEzNjEyMmQ5MjNjYTg4OTQ2MGEzNi4uN2I1MWVmYjg1ZGIzNDQx
YTIyMjYzYjQyNDk3YTMxNzUyYjViNTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1Byb2ZpbGVUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9Qcm9maWxlVHJlZU5vZGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgICAgIFByb2ZpbGVUcmVlTm9kZSBuZXdFbnRyeTsKICAgICAgICAgTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9jaGlsZHJlbi0+YWRkKFN0cmluZyhuYW1lKSwgbmV3RW50cnkpOwotICAgICAg
ICBQcm9maWxlVHJlZU5vZGUqIGNoaWxkSW5NYXAgPSAmcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsK
KyAgICAgICAgUHJvZmlsZVRyZWVOb2RlKiBjaGlsZEluTWFwID0gJnJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kOwogICAgICAgICArK2NoaWxkSW5NYXAtPm1fY291bnQ7CiAgICAgICAgIHJldHVybiBj
aGlsZEluTWFwOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIHVpbnQ2NF90IGNoaWxkQ291bnQgPSAwOwogICAgICAgICBmb3Ig
KE1hcDo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLT5iZWdpbigpOyBpdCAhPSBtX2NoaWxkcmVu
LT5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIGNoaWxkQ291bnQgKz0gaXQtPnZhbHVlLmNvdW50
KCk7CisgICAgICAgICAgICBjaGlsZENvdW50ICs9IGl0LT5zZWNvbmQuY291bnQoKTsKICAgICAg
ICAgcmV0dXJuIGNoaWxkQ291bnQ7CiAgICAgfQogICAgIApAQCAtOTcsMTkgKzk3LDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5kZW50OyArK2kp
CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICIpOwogICAgICAgICAgICAgZGF0YUxvZygi
JSA4bGxkOiAlcyAoJWxsZCBzdGFjayB0b3ApXG4iLAotICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4oZW50cnktPnZhbHVlLmNvdW50KCkpLAotICAgICAgICAgICAgICAgIGVu
dHJ5LT5rZXkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KGVudHJ5LT52YWx1ZS5jb3VudCgpIC0gZW50cnktPnZhbHVlLmNoaWxkQ291bnQoKSkp
OworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZW50cnktPnNlY29uZC5j
b3VudCgpKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+Zmlyc3QudXRmOCgpLmRhdGEoKSwKKyAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGVudHJ5LT5zZWNvbmQuY291bnQo
KSAtIGVudHJ5LT5zZWNvbmQuY2hpbGRDb3VudCgpKSk7CiAKICAgICAgICAgICAgIC8vIFJlY3Vy
c2l2ZWx5IGR1bXAgdGhlIGNoaWxkIG5vZGVzLgotICAgICAgICAgICAgZW50cnktPnZhbHVlLmR1
bXBJbnRlcm5hbChpbmRlbnQgKyAxKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZWNvbmQuZHVtcElu
dGVybmFsKGluZGVudCArIDEpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgc3RhdGljIGludCBj
b21wYXJlRW50cmllcyhjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQogICAgIHsKLSAgICAg
ICAgdWludDY0X3QgZGEgPSAoKnN0YXRpY19jYXN0PE1hcEVudHJ5KiBjb25zdCAqPihhKSktPnZh
bHVlLmNvdW50KCk7Ci0gICAgICAgIHVpbnQ2NF90IGRiID0gKCpzdGF0aWNfY2FzdDxNYXBFbnRy
eSogY29uc3QgKj4oYikpLT52YWx1ZS5jb3VudCgpOworICAgICAgICB1aW50NjRfdCBkYSA9ICgq
c3RhdGljX2Nhc3Q8TWFwRW50cnkqIGNvbnN0ICo+KGEpKS0+c2Vjb25kLmNvdW50KCk7CisgICAg
ICAgIHVpbnQ2NF90IGRiID0gKCpzdGF0aWNfY2FzdDxNYXBFbnRyeSogY29uc3QgKj4oYikpLT5z
ZWNvbmQuY291bnQoKTsKICAgICAgICAgcmV0dXJuIChkYSA8IGRiKSAtIChkYSA+IGRiKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCmluZGV4IGVmZjRhMjkzZTljNzM5YjEyYzQzYjY4
OTEyNmQwYzg0NTBiY2QwMGEuLmVmODliZGJjNzUyNjE4NWRlMDE3NTNlMDNlOWY2YjBiNzdlM2Uw
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKKysrIGIvU291
cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaApAQCAtMTU0LDcgKzE1NCw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIGlubGluZSB0eXBlbmFtZSBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6QWRkUmVzdWx0IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHM+OjphZGQoY29uc3QgVmFsdWVUeXBlICZ2YWx1ZSkKICAgICB7CiAgICAg
ICAgIEFkZFJlc3VsdCByZXN1bHQgPSBtX2ltcGwuYWRkKHZhbHVlLCAwKTsKLSAgICAgICAgKyty
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICArK3Jlc3VsdC5pdGVyYXRvci0+c2Vjb25k
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKQEAgLTE3MCwxMSArMTcwLDEx
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpZiAoaXQgPT0gZW5kKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgdW5zaWduZWQgb2xkVmFsID0gaXQtPnZhbHVlOwor
ICAgICAgICB1bnNpZ25lZCBvbGRWYWwgPSBpdC0+c2Vjb25kOwogICAgICAgICBBU1NFUlQob2xk
VmFsKTsKICAgICAgICAgdW5zaWduZWQgbmV3VmFsID0gb2xkVmFsIC0gMTsKICAgICAgICAgaWYg
KG5ld1ZhbCkgewotICAgICAgICAgICAgaXQtPnZhbHVlID0gbmV3VmFsOworICAgICAgICAgICAg
aXQtPnNlY29uZCA9IG5ld1ZhbDsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCkBAIC0yMjYsNyArMjI2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGl0ZXJhdG9y
IGl0ID0gY29sbGVjdGlvbi5iZWdpbigpOwogICAgICAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0
aW9uLmVuZCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpdCAhPSBlbmQ7ICsraXQs
ICsraSkKLSAgICAgICAgICAgIHZlY3RvcltpXSA9ICgqaXQpLmtleTsKKyAgICAgICAgICAgIHZl
Y3RvcltpXSA9ICgqaXQpLmZpcnN0OwogICAgIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoSXRlcmF0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoSXRlcmF0b3JzLmgKaW5k
ZXggM2E4NDE4YWFkZWY3ODNiOWFiYzAzNGE5ZWUwYTRhZTdhYjhiMTZhMS4uNjM5ZmY3MjUwYTFl
ZjBmYjNmODI0ZGM5MTY4ODQ5NmI4OWI2NWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
SGFzaEl0ZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hJdGVyYXRvcnMuaApAQCAt
OTEsNyArOTEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEhhc2hU
YWJsZUNvbnN0S2V5c0l0ZXJhdG9yKGNvbnN0IENvbnN0SXRlcmF0b3ImIGltcGwpIDogbV9pbXBs
KGltcGwpIHt9CiAgICAgICAgIAotICAgICAgICBjb25zdCBLZXlUeXBlKiBnZXQoKSBjb25zdCB7
IHJldHVybiAmKG1faW1wbC5nZXQoKS0+a2V5KTsgfQorICAgICAgICBjb25zdCBLZXlUeXBlKiBn
ZXQoKSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+Zmlyc3QpOyB9CiAgICAgICAgIGNv
bnN0IEtleVR5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpnZXQoKTsgfQogICAgICAg
ICBjb25zdCBLZXlUeXBlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KIApA
QCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAg
SGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvcihjb25zdCBDb25zdEl0ZXJhdG9yJiBpbXBsKSA6
IG1faW1wbChpbXBsKSB7fQogICAgICAgICAKLSAgICAgICAgY29uc3QgTWFwcGVkVHlwZSogZ2V0
KCkgY29uc3QgeyByZXR1cm4gJihtX2ltcGwuZ2V0KCktPnZhbHVlKTsgfQorICAgICAgICBjb25z
dCBNYXBwZWRUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+c2Vjb25k
KTsgfQogICAgICAgICBjb25zdCBNYXBwZWRUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biAqZ2V0KCk7IH0KICAgICAgICAgY29uc3QgTWFwcGVkVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIGdldCgpOyB9CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEhhc2hUYWJsZVZhbHVlc0l0ZXJhdG9yKGNvbnN0IEl0ZXJh
dG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQogICAgICAgICAKLSAgICAgICAgTWFwcGVkVHlw
ZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gJihtX2ltcGwuZ2V0KCktPnZhbHVlKTsgfQorICAgICAg
ICBNYXBwZWRUeXBlKiBnZXQoKSBjb25zdCB7IHJldHVybiAmKG1faW1wbC5nZXQoKS0+c2Vjb25k
KTsgfQogICAgICAgICBNYXBwZWRUeXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0
KCk7IH0KICAgICAgICAgTWFwcGVkVHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hNYXAuaAppbmRleCAxMGVlNDI1ZGE5NTk2YmFhZGYzNGU1NzhlZjVhYmU1NzBm
OWFlMGQ2Li45MDEwNDc0YzgyNTU2M2VmODQxYjk2ODdmZWZmNDk0YWE2NTViNGU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH07CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgS2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yIHsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIFQ6OktleVR5cGUmIGV4dHJhY3QoY29uc3QgVCYgcCkg
eyByZXR1cm4gcC5rZXk7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIFQ6OktleVR5
cGUmIGV4dHJhY3QoY29uc3QgVCYgcCkgeyByZXR1cm4gcC5maXJzdDsgfQogICAgIH07CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUg
SGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsCkBAIC0yMTEsNyAr
MjExLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lz
RW1wdHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKICAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZh
bHVlKGNvbnN0IHR5cGVuYW1lIEtleVZhbHVlUGFpckhhc2hUcmFpdHM8S2V5VHJhaXRzLCBNYXBw
ZWRUcmFpdHM+OjpUcmFpdFR5cGUmIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gaXNIYXNoVHJhaXRzRW1wdHlWYWx1ZTxLZXlUcmFpdHM+KHZhbHVlLmtleSk7CisgICAgICAg
ICAgICByZXR1cm4gaXNIYXNoVHJhaXRzRW1wdHlWYWx1ZTxLZXlUcmFpdHM+KHZhbHVlLmZpcnN0
KTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTIyMSw4ICsyMjEsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1
YWwoYSwgYik7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBjb25zdCBVJiBrZXks
IGNvbnN0IFYmIG1hcHBlZCkKICAgICAgICAgewotICAgICAgICAgICAgbG9jYXRpb24ua2V5ID0g
a2V5OwotICAgICAgICAgICAgVmFsdWVUcmFpdHM6OlZhbHVlVHJhaXRzOjpzdG9yZShtYXBwZWQs
IGxvY2F0aW9uLnZhbHVlKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLmZpcnN0ID0ga2V5OworICAg
ICAgICAgICAgVmFsdWVUcmFpdHM6OlZhbHVlVHJhaXRzOjpzdG9yZShtYXBwZWQsIGxvY2F0aW9u
LnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0yMzIsOCArMjMyLDggQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIFRyYW5zbGF0b3I6
OmVxdWFsKGEsIGIpOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgY29uc3QgVSYg
a2V5LCBjb25zdCBWJiBtYXBwZWQsIHVuc2lnbmVkIGhhc2hDb2RlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBUcmFuc2xhdG9yOjp0cmFuc2xhdGUobG9jYXRpb24ua2V5LCBrZXksIGhhc2hDb2Rl
KTsKLSAgICAgICAgICAgIFZhbHVlVHJhaXRzOjpWYWx1ZVRyYWl0czo6c3RvcmUobWFwcGVkLCBs
b2NhdGlvbi52YWx1ZSk7CisgICAgICAgICAgICBUcmFuc2xhdG9yOjp0cmFuc2xhdGUobG9jYXRp
b24uZmlyc3QsIGtleSwgaGFzaENvZGUpOworICAgICAgICAgICAgVmFsdWVUcmFpdHM6OlZhbHVl
VHJhaXRzOjpzdG9yZShtYXBwZWQsIGxvY2F0aW9uLnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9
OwogCkBAIC0zNDEsNyArMzQxLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIEFkZFJlc3Vs
dCByZXN1bHQgPSBpbmxpbmVBZGQoa2V5LCBtYXBwZWQpOwogICAgICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KSB7CiAgICAgICAgICAgICAvLyBUaGUgaW5saW5lQWRkIGNhbGwgYWJvdmUgZm91
bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBlbnRyeTsgd2UgbmVlZCB0byBzZXQgdGhlIG1hcHBl
ZCB2YWx1ZS4KLSAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVkLCByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgICAgIE1hcHBlZFRyYWl0czo6c3RvcmUobWFwcGVk
LCByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CkBAIC0zNjgsNyArMzY4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IFZhbHVlVHlwZSogZW50cnkgPSBjb25zdF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLmxv
b2t1cChrZXkpOwogICAgICAgICBpZiAoIWVudHJ5KQogICAgICAgICAgICAgcmV0dXJuIE1hcHBl
ZFRyYWl0czo6cGVlayhNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIHJldHVy
biBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnktPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIE1hcHBl
ZFRyYWl0czo6cGVlayhlbnRyeS0+c2Vjb25kKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgpA
QCAtMzk5LDcgKzM5OSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpdGVyYXRvciBpdCA9
IGZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICAgcmV0dXJu
IE1hcHBlZFRyYWl0czo6cGFzc091dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAg
ICAgIE1hcHBlZFBhc3NPdXRUeXBlIHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+
dmFsdWUpOworICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSByZXN1bHQgPSBNYXBwZWRUcmFpdHM6
OnBhc3NPdXQoaXQtPnNlY29uZCk7CiAgICAgICAgIHJlbW92ZShpdCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQpAQCAtNDIxLDggKzQyMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICBjb25zdF9pdGVyYXRvciBlbmQgPSBhLmVuZCgpOwogICAgICAgICBjb25zdF9pdGVyYXRv
ciBub3RGb3VuZCA9IGIuZW5kKCk7CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXQgPSBh
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgY29uc3RfaXRlcmF0b3Ig
YlBvcyA9IGIuZmluZChpdC0+a2V5KTsKLSAgICAgICAgICAgIGlmIChiUG9zID09IG5vdEZvdW5k
IHx8IGl0LT52YWx1ZSAhPSBiUG9zLT52YWx1ZSkKKyAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IGJQb3MgPSBiLmZpbmQoaXQtPmZpcnN0KTsKKyAgICAgICAgICAgIGlmIChiUG9zID09IG5vdEZv
dW5kIHx8IGl0LT5zZWNvbmQgIT0gYlBvcy0+c2Vjb25kKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCkBAIC00MzUsMjIgKzQzNSwzNCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgcmV0dXJuICEoYSA9PSBiKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBIYXNoVGFibGVUeXBlPgorICAgIHZvaWQgZGVsZXRlQWxsUGFpclNlY29uZHMoSGFzaFRh
YmxlVHlwZSYgY29sbGVjdGlvbikKKyAgICB7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFz
aFRhYmxlVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3I7CisgICAgICAgIGl0ZXJhdG9yIGVu
ZCA9IGNvbGxlY3Rpb24uZW5kKCk7CisgICAgICAgIGZvciAoaXRlcmF0b3IgaXQgPSBjb2xsZWN0
aW9uLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGRlbGV0ZSBpdC0+c2Vj
b25kOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiAgICAgaW5saW5lIHZvaWQgZGVsZXRlQWxs
VmFsdWVzKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24pCiAgICAgewot
ICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0
ZXJhdG9yIGl0ZXJhdG9yOworICAgICAgICBkZWxldGVBbGxQYWlyU2Vjb25kcyhjb2xsZWN0aW9u
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlPgorICAgIHZv
aWQgZGVsZXRlQWxsUGFpckZpcnN0cyhIYXNoVGFibGVUeXBlJiBjb2xsZWN0aW9uKQorICAgIHsK
KyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBp
dGVyYXRvcjsKICAgICAgICAgaXRlcmF0b3IgZW5kID0gY29sbGVjdGlvbi5lbmQoKTsKICAgICAg
ICAgZm9yIChpdGVyYXRvciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICAgICAgZGVsZXRlIGl0LT52YWx1ZTsKKyAgICAgICAgICAgIGRlbGV0ZSBpdC0+
Zmlyc3Q7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICBpbmxpbmUgdm9pZCBkZWxldGVB
bGxLZXlzKGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24pCiAgICAgewot
ICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0
ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9uLmVuZCgp
OwotICAgICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gY29sbGVjdGlvbi5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICBkZWxldGUgaXQtPmtleTsKKyAgICAgICAgZGVsZXRlQWxs
UGFpckZpcnN0cyhjb2xsZWN0aW9uKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgdHlw
ZW5hbWUgWT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggMTZmZGQ5ZTgxZDI4M2I2OWU2MWQ0NmJhNmY5NWZk
MTJlMjQ2OWM2Ni4uMWNlM2M1Y2Y2ODhlZjBhODFlMTA2MWJjNmNlMjYyMGJlM2Q5ODAwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmgKQEAgLTI4Niw4ICsyODYsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIGhhc2hUYWJsZVN3YXAo
S2V5VmFsdWVQYWlyPFQsIFU+JiBhLCBLZXlWYWx1ZVBhaXI8VCwgVT4mIGIpCiAgICAgewotICAg
ICAgICBzd2FwKGEua2V5LCBiLmtleSk7Ci0gICAgICAgIHN3YXAoYS52YWx1ZSwgYi52YWx1ZSk7
CisgICAgICAgIHN3YXAoYS5maXJzdCwgYi5maXJzdCk7CisgICAgICAgIHN3YXAoYS5zZWNvbmQs
IGIuc2Vjb25kKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIHVzZVN3
YXA+IHN0cnVjdCBNb3ZlcjsKQEAgLTEyNDYsNyArMTI0Niw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICAgICAgQVNTRVJUKGVudHJ5ID09IGl0Lm1fcG9zaXRpb24pOwogICAgICAgICAgICAg
Kytjb3VudDsKIAotICAgICAgICAgICAgVmFsdWVDaGVjazxLZXk+OjpjaGVja0NvbnNpc3RlbmN5
KGl0LT5rZXkpOworICAgICAgICAgICAgVmFsdWVDaGVjazxLZXk+OjpjaGVja0NvbnNpc3RlbmN5
KGl0LT5maXJzdCk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoY291bnQgPT0gbV9rZXlD
b3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVHJhaXRzLmgKaW5kZXggNzNiZjJiZWFhMmU1ZWY0ZWZlZDlkYjBjMmRlYWYz
ZjExMmViNGFhZC4uZWJlNzk1ZWIxYTg5OWUyYzYxZWU1ZGMzNjQ3MzdiMjliODU3MGEwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0hhc2hUcmFpdHMuaApAQCAtMTkzLDIwICsxOTMsMjEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIH0KIAogICAgICAgICBLZXlWYWx1ZVBhaXIoY29uc3QgS2V5VHlwZUFyZyYga2V5LCBjb25z
dCBWYWx1ZVR5cGVBcmcmIHZhbHVlKQotICAgICAgICAgICAgOiBrZXkoa2V5KQotICAgICAgICAg
ICAgLCB2YWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgIDogZmlyc3Qoa2V5KQorICAgICAgICAgICAg
LCBzZWNvbmQodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBPdGhlcktleVR5cGUsIHR5cGVuYW1lIE90aGVyVmFsdWVUeXBlPgogICAgICAg
ICBLZXlWYWx1ZVBhaXIoY29uc3QgS2V5VmFsdWVQYWlyPE90aGVyS2V5VHlwZSwgT3RoZXJWYWx1
ZVR5cGU+JiBvdGhlcikKLSAgICAgICAgICAgIDoga2V5KG90aGVyLmtleSkKLSAgICAgICAgICAg
ICwgdmFsdWUob3RoZXIudmFsdWUpCisgICAgICAgICAgICA6IGZpcnN0KG90aGVyLmZpcnN0KQor
ICAgICAgICAgICAgLCBzZWNvbmQob3RoZXIuc2Vjb25kKQogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICBLZXlUeXBlQXJnIGtleTsKLSAgICAgICAgVmFsdWVUeXBlQXJnIHZhbHVlOwor
ICAgICAgICAvLyBUT0RPOiBSZW5hbWUgdGhlc2UgdG8ga2V5IGFuZCB2YWx1ZS4gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjc4NC4KKyAgICAgICAgS2V5VHlw
ZUFyZyBmaXJzdDsKKyAgICAgICAgVmFsdWVUeXBlQXJnIHNlY29uZDsKICAgICB9OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBWYWx1ZVRyYWl0c0FyZz4K
QEAgLTIyMyw4ICsyMjQsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzdGF0aWMgY29u
c3QgaW50IG1pbmltdW1UYWJsZVNpemUgPSBLZXlUcmFpdHM6Om1pbmltdW1UYWJsZVNpemU7CiAK
LSAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFRyYWl0VHlwZSYgc2xv
dCkgeyBLZXlUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90LmtleSk7IH0KLSAgICAg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyBy
ZXR1cm4gS2V5VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5rZXkpOyB9CisgICAgICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUcmFpdFR5cGUmIHNsb3QpIHsgS2V5VHJh
aXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5maXJzdCk7IH0KKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVHJhaXRUeXBlJiB2YWx1ZSkgeyByZXR1cm4gS2V5
VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSh2YWx1ZS5maXJzdCk7IH0KICAgICB9OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01ldGFBbGxvY2F0b3IuY3BwIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5j
cHAKaW5kZXggNzNiMzZhYTQyMWY4YTk1NTA3YWFkOTZhM2E0YmFmODJhZTExZDUzZi4uOWVmY2Zm
MmViMTNmNzJjY2I1OTc3NTFjODQzYmI0Mjk1MWZjNzRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvTWV0YUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRv
ci5jcHAKQEAgLTMwOCw5ICszMDgsOSBAQCB2b2lkIE1ldGFBbGxvY2F0b3I6OmFkZEZyZWVTcGFj
ZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5dGVzKQogICAgICAgICAvLyBXZSBoYXZlIHNv
bWV0aGluZyB3ZSBjYW4gY29hbGVzY2Ugd2l0aCBvbiB0aGUgbGVmdC4gUmVtb3ZlIGl0IGZyb20g
dGhlIHRyZWUsIGFuZAogICAgICAgICAvLyByZW1vdmUgaXRzIGVuZCBmcm9tIHRoZSBlbmQgYWRk
cmVzcyBtYXAuCiAgICAgICAgIAotICAgICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxlZnROZWlnaGJvci0+dmFsdWUtPm1fc3Rh
cnQpICsgbGVmdE5laWdoYm9yLT52YWx1ZS0+bV9zaXplSW5CeXRlcykgPT0gbGVmdE5laWdoYm9y
LT5rZXkpOworICAgICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGxlZnROZWlnaGJvci0+c2Vjb25kLT5tX3N0YXJ0KSArIGxlZnRO
ZWlnaGJvci0+c2Vjb25kLT5tX3NpemVJbkJ5dGVzKSA9PSBsZWZ0TmVpZ2hib3ItPmZpcnN0KTsK
ICAgICAgICAgCi0gICAgICAgIEZyZWVTcGFjZU5vZGUqIGxlZnROb2RlID0gbGVmdE5laWdoYm9y
LT52YWx1ZTsKKyAgICAgICAgRnJlZVNwYWNlTm9kZSogbGVmdE5vZGUgPSBsZWZ0TmVpZ2hib3It
PnNlY29uZDsKICAgICAgICAgCiAgICAgICAgIHZvaWQqIGxlZnRTdGFydCA9IGxlZnROb2RlLT5t
X3N0YXJ0OwogICAgICAgICBzaXplX3QgbGVmdFNpemUgPSBsZWZ0Tm9kZS0+bV9zaXplSW5CeXRl
czsKQEAgLTMyNiwxMCArMzI2LDEwIEBAIHZvaWQgTWV0YUFsbG9jYXRvcjo6YWRkRnJlZVNwYWNl
KHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpCiAgICAgICAgICAgICAvLyBGcmVlaW5n
IHNvbWV0aGluZyBpbiB0aGUgbWlkZGxlIG9mIGZyZWUgYmxvY2tzLiBDb2FsZXNjZSBib3RoIGxl
ZnQgYW5kCiAgICAgICAgICAgICAvLyByaWdodCwgd2hpbHN0IHJlbW92aW5nIHRoZSByaWdodCBu
ZWlnaGJvciBmcm9tIHRoZSBtYXBzLgogICAgICAgICAgICAgCi0gICAgICAgICAgICBBU1NFUlQo
cmlnaHROZWlnaGJvci0+dmFsdWUtPm1fc3RhcnQgPT0gcmlnaHROZWlnaGJvci0+a2V5KTsKKyAg
ICAgICAgICAgIEFTU0VSVChyaWdodE5laWdoYm9yLT5zZWNvbmQtPm1fc3RhcnQgPT0gcmlnaHRO
ZWlnaGJvci0+Zmlyc3QpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBGcmVlU3BhY2VOb2Rl
KiByaWdodE5vZGUgPSByaWdodE5laWdoYm9yLT52YWx1ZTsKLSAgICAgICAgICAgIHZvaWQqIHJp
Z2h0U3RhcnQgPSByaWdodE5laWdoYm9yLT5rZXk7CisgICAgICAgICAgICBGcmVlU3BhY2VOb2Rl
KiByaWdodE5vZGUgPSByaWdodE5laWdoYm9yLT5zZWNvbmQ7CisgICAgICAgICAgICB2b2lkKiBy
aWdodFN0YXJ0ID0gcmlnaHROZWlnaGJvci0+Zmlyc3Q7CiAgICAgICAgICAgICBzaXplX3Qgcmln
aHRTaXplID0gcmlnaHROb2RlLT5tX3NpemVJbkJ5dGVzOwogICAgICAgICAgICAgdm9pZCogcmln
aHRFbmQgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ocmlnaHRTdGFydCkgKyByaWdodFNpemUpOwogICAgICAgICAgICAgCkBAIC0zNTYsOCArMzU2
LDggQEAgdm9pZCBNZXRhQWxsb2NhdG9yOjphZGRGcmVlU3BhY2Uodm9pZCogc3RhcnQsIHNpemVf
dCBzaXplSW5CeXRlcykKICAgICAgICAgLy8gQ2Fubm90IGNvYWxlc2NlIHdpdGggbGVmdDsgdHJ5
IHRvIHNlZSBpZiB3ZSBjYW4gY29hbGVzY2Ugd2l0aCByaWdodC4KICAgICAgICAgCiAgICAgICAg
IGlmIChyaWdodE5laWdoYm9yICE9IG1fZnJlZVNwYWNlU3RhcnRBZGRyZXNzTWFwLmVuZCgpKSB7
Ci0gICAgICAgICAgICBGcmVlU3BhY2VOb2RlKiByaWdodE5vZGUgPSByaWdodE5laWdoYm9yLT52
YWx1ZTsKLSAgICAgICAgICAgIHZvaWQqIHJpZ2h0U3RhcnQgPSByaWdodE5laWdoYm9yLT5rZXk7
CisgICAgICAgICAgICBGcmVlU3BhY2VOb2RlKiByaWdodE5vZGUgPSByaWdodE5laWdoYm9yLT5z
ZWNvbmQ7CisgICAgICAgICAgICB2b2lkKiByaWdodFN0YXJ0ID0gcmlnaHROZWlnaGJvci0+Zmly
c3Q7CiAgICAgICAgICAgICBzaXplX3QgcmlnaHRTaXplID0gcmlnaHROb2RlLT5tX3NpemVJbkJ5
dGVzOwogICAgICAgICAgICAgdm9pZCogcmlnaHRFbmQgPSByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmlnaHRTdGFydCkgKyByaWdodFNpemUpOwog
ICAgICAgICAgICAgCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBNZXRhQWxsb2NhdG9yOjppbmNy
ZW1lbnRQYWdlT2NjdXBhbmN5KHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplSW5CeXRlcykKICAg
ICAgICAgICAgIG1fYnl0ZXNDb21taXR0ZWQgKz0gbV9wYWdlU2l6ZTsKICAgICAgICAgICAgIG5v
dGlmeU5lZWRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhZ2UgPDwgbV9sb2dQYWdlU2l6
ZSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGl0ZXItPnZhbHVlKys7CisgICAgICAg
ICAgICBpdGVyLT5zZWNvbmQrKzsKICAgICB9CiB9CiAKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lk
IE1ldGFBbGxvY2F0b3I6OmRlY3JlbWVudFBhZ2VPY2N1cGFuY3kodm9pZCogYWRkcmVzcywgc2l6
ZV90IHNpemVJbkJ5dGVzKQogICAgIGZvciAodWludHB0cl90IHBhZ2UgPSBmaXJzdFBhZ2U7IHBh
Z2UgPD0gbGFzdFBhZ2U7ICsrcGFnZSkgewogICAgICAgICBIYXNoTWFwPHVpbnRwdHJfdCwgc2l6
ZV90Pjo6aXRlcmF0b3IgaXRlciA9IG1fcGFnZU9jY3VwYW5jeU1hcC5maW5kKHBhZ2UpOwogICAg
ICAgICBBU1NFUlQoaXRlciAhPSBtX3BhZ2VPY2N1cGFuY3lNYXAuZW5kKCkpOwotICAgICAgICBp
ZiAoIS0tKGl0ZXItPnZhbHVlKSkgeworICAgICAgICBpZiAoIS0tKGl0ZXItPnNlY29uZCkpIHsK
ICAgICAgICAgICAgIG1fcGFnZU9jY3VwYW5jeU1hcC5yZW1vdmUoaXRlcik7CiAgICAgICAgICAg
ICBtX2J5dGVzQ29tbWl0dGVkIC09IG1fcGFnZVNpemU7CiAgICAgICAgICAgICBub3RpZnlQYWdl
SXNGcmVlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhZ2UgPDwgbV9sb2dQYWdlU2l6ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKaW5kZXggNGEwNDUyODI0ODlm
ZTk1YTE3ZTIzOTE5NzczZDM3Y2IyNDQxMGJlNS4uNjcwZjJhMGNlYzU5OWM2ZDRmMzE2NDRlYmVi
NTg3NDE1ZWY0MzIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZExlYWtD
b3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIFJlZkNvdW50ZWRMZWFrQ291bnRlcjo6flJlZkNvdW50ZWRMZWFr
Q291bnRlcigpCiAgICAgICAgICAgICBMT0coUmVmQ291bnRlZExlYWtzLCAiTEVBSzogJXUgJXMi
LCBtX2NvdW50LCBtX2Rlc2NyaXB0aW9uKTsKICAgICAgICAgZWxzZSBpZiAoIWxvZ2dlZFN1cHBy
ZXNzaW9uUmVhc29uKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGxvZ3Mgb25seSBvbmUgcmVhc29u
LiBMYXRlciB3ZSBjb3VsZCBjaGFuZ2UgaXQgc28gd2UgbG9nIGFsbCB0aGUgcmVhc29ucy4KLSAg
ICAgICAgICAgIExPRyhSZWZDb3VudGVkTGVha3MsICJObyBsZWFrIGNoZWNraW5nIGRvbmU6ICVz
IiwgbGVha01lc3NhZ2VTdXBwcmVzc2lvblJlYXNvbnMtPmJlZ2luKCktPmtleSk7CisgICAgICAg
ICAgICBMT0coUmVmQ291bnRlZExlYWtzLCAiTm8gbGVhayBjaGVja2luZyBkb25lOiAlcyIsIGxl
YWtNZXNzYWdlU3VwcHJlc3Npb25SZWFzb25zLT5iZWdpbigpLT5maXJzdCk7CiAgICAgICAgICAg
ICBsb2dnZWRTdXBwcmVzc2lvblJlYXNvbiA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9S
ZWZQdHJIYXNoTWFwLmgKaW5kZXggOTU0MTgzN2UyYTZmMjliOWYwNmMzYzk1NjJhMTMzNDZiMDFk
NGNlMS4uNWZhZTkwZThjZDQ3MTEyOWU4OWRjYzhlN2FlNjYzOGFkYTE1NGQzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jl
ZlB0ckhhc2hNYXAuaApAQCAtMjE2LDcgKzIxNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKICAgICAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhlIGlubGluZUFkZCBjYWxs
IGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5lZWQgdG8gc2V0
IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0b3JlKG1hcHBl
ZCwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0
b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMjI4LDcgKzIyOCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgbWFwcGVkKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgLy8gVGhlIGlubGlu
ZUFkZCBjYWxsIGFib3ZlIGZvdW5kIGFuIGV4aXN0aW5nIGhhc2ggdGFibGUgZW50cnk7IHdlIG5l
ZWQgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUuCi0gICAgICAgICAgICBNYXBwZWRUcmFpdHM6OnN0
b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgICAgICBNYXBwZWRU
cmFpdHM6OnN0b3JlKG1hcHBlZCwgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMjU0LDcgKzI1NCw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFi
bGVUeXBlJj4obV9pbXBsKS5sb29rdXAoa2V5KTsKICAgICAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoTWFwcGVkVHJhaXRzOjplbXB0eVZhbHVl
KCkpOwotICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpwZWVrKGVudHJ5LT52YWx1ZSk7Cisg
ICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnktPnNlY29uZCk7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgpAQCAtMjY0LDcgKzI2NCw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxIYXNoVGFibGVU
eXBlJj4obV9pbXBsKS50ZW1wbGF0ZSBsb29rdXA8VHJhbnNsYXRvcj4oa2V5KTsKICAgICAgICAg
aWYgKCFlbnRyeSkKICAgICAgICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoTWFwcGVk
VHJhaXRzOjplbXB0eVZhbHVlKCkpOwotICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpwZWVr
KGVudHJ5LT52YWx1ZSk7CisgICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnkt
PnNlY29uZCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgpAQCAtMzA4LDcg
KzMwOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5
KTsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIE1hcHBlZFRy
YWl0czo6cGFzc091dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUoKSk7Ci0gICAgICAgIE1hcHBl
ZFBhc3NPdXRUeXBlIHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFzc091dChpdC0+dmFsdWUpOwor
ICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSByZXN1bHQgPSBNYXBwZWRUcmFpdHM6OnBhc3NPdXQo
aXQtPnNlY29uZCk7CiAgICAgICAgIHJlbW92ZShpdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpAQCAtMzIwLDcgKzMyMCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpdGVy
YXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGFzc091dChNYXBwZWRUcmFpdHM6OmVtcHR5VmFsdWUo
KSk7Ci0gICAgICAgIE1hcHBlZFBhc3NPdXRUeXBlIHJlc3VsdCA9IE1hcHBlZFRyYWl0czo6cGFz
c091dChpdC0+dmFsdWUpOworICAgICAgICBNYXBwZWRQYXNzT3V0VHlwZSByZXN1bHQgPSBNYXBw
ZWRUcmFpdHM6OnBhc3NPdXQoaXQtPnNlY29uZCk7CiAgICAgICAgIHJlbW92ZShpdCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3Bl
Y3RydW0uaCBiL1NvdXJjZS9XVEYvd3RmL1NwZWN0cnVtLmgKaW5kZXggM2U2ZmE0YTYzM2ZhZDQy
ZGViNGRjNDgzMzI1OTIzNDFlODRiM2EwMS4uNWU3YTQ4NGNkODc2NmJjYWYyMmNhNGM5M2RkY2U5
NzBkZDJiYTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3BlY3RydW0uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TcGVjdHJ1bS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8VCwgdW5zaWduZWQgbG9uZz46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBjb3VudCk7CiAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpCi0gICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IGNvdW50OworICAg
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gY291bnQ7CiAgICAgfQogICAgIAog
ICAgIHVuc2lnbmVkIGxvbmcgZ2V0KGNvbnN0IFQmIGtleSkgY29uc3QKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgICAgICBjb25zdF9pdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChrZXkp
OwogICAgICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdGVyLT5zZWNv
bmQ7CiAgICAgfQogICAgIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVn
aW4oKTsgfQpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBWZWN0b3I8
S2V5QW5kQ291bnQ+IGxpc3Q7CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IgaXRlciA9IGJl
Z2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKEtl
eUFuZENvdW50KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpKTsKKyAgICAgICAgICAgIGxpc3QuYXBw
ZW5kKEtleUFuZENvdW50KGl0ZXItPmZpcnN0LCBpdGVyLT5zZWNvbmQpKTsKICAgICAgICAgCiAg
ICAgICAgIHN0ZDo6c29ydChsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwogICAgICAgICByZXR1
cm4gbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCBkZGMzM2I0YWNm
OTJhNWM2NDc3ZmIyMzM4NjIyOGRjZWExNzA4MzJmLi4yMjZlY2JkNDhjMDI5ODc5ZDExYzk1MjNk
NTA1MzQ0ZTU2ODBmODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhy
ZWFkcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0x
NTAsOCArMTUwLDggQEAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckJ5UHRocmVh
ZEhhbmRsZShjb25zdCBwdGhyZWFkX3QmIHB0aHJlYWRIYW5kbGUKIAogICAgIFRocmVhZE1hcDo6
aXRlcmF0b3IgaSA9IHRocmVhZE1hcCgpLmJlZ2luKCk7CiAgICAgZm9yICg7IGkgIT0gdGhyZWFk
TWFwKCkuZW5kKCk7ICsraSkgewotICAgICAgICBpZiAocHRocmVhZF9lcXVhbChpLT52YWx1ZS0+
cHRocmVhZEhhbmRsZSgpLCBwdGhyZWFkSGFuZGxlKSAmJiAhaS0+dmFsdWUtPmhhc0V4aXRlZCgp
KQotICAgICAgICAgICAgcmV0dXJuIGktPmtleTsKKyAgICAgICAgaWYgKHB0aHJlYWRfZXF1YWwo
aS0+c2Vjb25kLT5wdGhyZWFkSGFuZGxlKCksIHB0aHJlYWRIYW5kbGUpICYmICFpLT5zZWNvbmQt
Pmhhc0V4aXRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGktPmZpcnN0OwogICAgIH0KIAogICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uLmNwcAppbmRleCBhM2VmNDAyNmRkMDk5YWFjNzEwNjQ2NDk0YmRjZDViOTY4NTVk
YTNkLi41N2NhZjMxNTJhY2M4OWQ2OTdhYThmNjQ1Y2M4ZjAxMzU5YmNiMTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAt
MTkyLDcgKzE5Miw3IEBAIEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllciogR2VvbG9jYXRpb246Oldh
dGNoZXJzOjpmaW5kKGludCBpZCkKICAgICBJZFRvTm90aWZpZXJNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX2lkVG9Ob3RpZmllck1hcC5maW5kKGlkKTsKICAgICBpZiAoaXRlciA9PSBtX2lkVG9Ob3Rp
Zmllck1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGl0ZXItPnZhbHVl
LmdldCgpOworICAgIHJldHVybiBpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHZvaWQgR2VvbG9j
YXRpb246OldhdGNoZXJzOjpyZW1vdmUoaW50IGlkKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQg
R2VvbG9jYXRpb246OldhdGNoZXJzOjpyZW1vdmUoaW50IGlkKQogICAgIElkVG9Ob3RpZmllck1h
cDo6aXRlcmF0b3IgaXRlciA9IG1faWRUb05vdGlmaWVyTWFwLmZpbmQoaWQpOwogICAgIGlmIChp
dGVyID09IG1faWRUb05vdGlmaWVyTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9u
b3RpZmllclRvSWRNYXAucmVtb3ZlKGl0ZXItPnZhbHVlKTsKKyAgICBtX25vdGlmaWVyVG9JZE1h
cC5yZW1vdmUoaXRlci0+c2Vjb25kKTsKICAgICBtX2lkVG9Ob3RpZmllck1hcC5yZW1vdmUoaXRl
cik7CiB9CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpXYXRjaGVyczo6
cmVtb3ZlKEdlb05vdGlmaWVyKiBub3RpZmllcikKICAgICBOb3RpZmllclRvSWRNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBtX25vdGlmaWVyVG9JZE1hcC5maW5kKG5vdGlmaWVyKTsKICAgICBpZiAoaXRl
ciA9PSBtX25vdGlmaWVyVG9JZE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1faWRU
b05vdGlmaWVyTWFwLnJlbW92ZShpdGVyLT52YWx1ZSk7CisgICAgbV9pZFRvTm90aWZpZXJNYXAu
cmVtb3ZlKGl0ZXItPnNlY29uZCk7CiAgICAgbV9ub3RpZmllclRvSWRNYXAucmVtb3ZlKGl0ZXIp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKaW5kZXggODExY2Y0YTJmNjk3N2Y4MzJhZjMxYThjMjA3MDI2OTE5NzA2YmIxMi4uYWE5
M2U2YTgyYzc1NDhjOThiMTk5NDI1YWEwMGIyY2VjMzllODg5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMTA4LDcgKzEwOCw3
IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFt
ZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVz
ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRh
OjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVjdFN0
b3Jlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkK
LSAgICAgICAgb2JqZWN0U3RvcmVOYW1lcy0+YXBwZW5kKGl0LT5rZXkpOworICAgICAgICBvYmpl
Y3RTdG9yZU5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICBvYmplY3RTdG9yZU5hbWVzLT5z
b3J0KCk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcAppbmRleCA3NTM4MDdmZDhlODdmZjY0NDVjNTYxNWJhNTg1MjUxZDFkOThk
ODRiLi44MTEwYzI0YzEzYjNjNDYzZWUzN2IyMGQ0Y2ZmYTcxMjQyNDRiNjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIElEQkRhdGFiYXNlTWV0YWRhdGEgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewogICAgIElEQkRhdGFiYXNl
TWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbik7CiAgICAg
Zm9yIChPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5i
ZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgbWV0YWRh
dGEub2JqZWN0U3RvcmVzLnNldChpdC0+a2V5LCBpdC0+dmFsdWUtPm1ldGFkYXRhKCkpOworICAg
ICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0
YWRhdGEoKSk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApp
bmRleCAxNjA2NjljZDI2YTk4NTMwZGM0ODNjNzA5ODUxNGE0NmMzODdhMjUxLi44ZGE1YzAyZTQy
M2Y2ZjY0ZTU3OTczMGRiNzNmYTI5ZWMyYmU0NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIGlmIChpdCAhPSBt
X2RhdGFiYXNlQmFja2VuZE1hcC5lbmQoKSkgewogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55
IGNvbm5lY3Rpb25zIHRvIHRoZSBkYXRhYmFzZSwgZGlyZWN0bHkgZGVsZXRlIHRoZQogICAgICAg
ICAvLyBkYXRhYmFzZS4KLSAgICAgICAgaXQtPnZhbHVlLT5kZWxldGVEYXRhYmFzZShjYWxsYmFj
a3MpOworICAgICAgICBpdC0+c2Vjb25kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzQsNyArMTM0LDcgQEAgUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZShQYXNz
UmVmUHRyPFMKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmU7CiAgICAg
SURCQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdDIgPSBtX2JhY2tpbmdTdG9yZU1hcC5maW5k
KGZpbGVJZGVudGlmaWVyKTsKICAgICBpZiAoaXQyICE9IG1fYmFja2luZ1N0b3JlTWFwLmVuZCgp
KQotICAgICAgICBiYWNraW5nU3RvcmUgPSBpdDItPnZhbHVlOworICAgICAgICBiYWNraW5nU3Rv
cmUgPSBpdDItPnNlY29uZDsKICAgICBlbHNlIHsKICNpZiBVU0UoTEVWRUxEQikKICAgICAgICAg
YmFja2luZ1N0b3JlID0gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdp
bi5nZXQoKSwgZGF0YURpcmVjdG9yeSwgZmlsZUlkZW50aWZpZXIsIHRoaXMpOwpAQCAtMTcyLDcg
KzE3Miw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gaXQtPnZhbHVl
OworICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKHZlcnNp
b24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQogICAgICAgICBkYXRhYmFz
ZUJhY2tlbmQtPm9wZW5Db25uZWN0aW9uKGNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMGJmZGY5MWVm
MDNkNTQ0NzY4NDIzNzUzZGFhYTMyYTVkMGRlODdiNS4uYzMwYTI1M2E0MDY1M2U4OTZiMjRkM2Y3
NThkN2NhNTg5MzYxMjg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKICAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzIik7CiAgICAgUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKElE
Qk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0
YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsr
aXQpCi0gICAgICAgIGluZGV4TmFtZXMtPmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgaW5kZXhO
YW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7CiAgICAgaW5kZXhOYW1lcy0+c29ydCgpOwogICAgIHJl
dHVybiBpbmRleE5hbWVzLnJlbGVhc2UoKTsKIH0KQEAgLTIwNiw4ICsyMDYsOCBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlOjpQdXRNbwogICAgIFZlY3RvcjxJbmRleEtleXM+IGluZGV4S2V5czsKICAgICBm
b3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fbWV0YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5k
KCk7ICsraXQpIHsKICAgICAgICAgSW5kZXhLZXlzIGtleXM7Ci0gICAgICAgIGdlbmVyYXRlSW5k
ZXhLZXlzRm9yVmFsdWUoaXQtPnZhbHVlLCB2YWx1ZSwgJmtleXMpOwotICAgICAgICBpbmRleE5h
bWVzLmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShp
dC0+c2Vjb25kLCB2YWx1ZSwgJmtleXMpOworICAgICAgICBpbmRleE5hbWVzLmFwcGVuZChpdC0+
Zmlyc3QpOwogICAgICAgICBpbmRleEtleXMuYXBwZW5kKGtleXMpOwogICAgIH0KICAgICBBU1NF
UlQoaW5kZXhLZXlzLnNpemUoKSA9PSBpbmRleE5hbWVzLnNpemUoKSk7CkBAIC00NDgsNyArNDQ4
LDcgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIElEQkluZGV4TWFwOjppdGVyYXRv
ciBpdCA9IG1faW5kZXhNYXAuZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gbV9pbmRleE1hcC5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNv
bmQ7CiAKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tlbmQg
PSBtX2JhY2tlbmQtPmluZGV4KG5hbWUsIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAh
PSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0
ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgpAQCAtNDU4LDcgKzQ1OCw3IEBA
IFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5k
ZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIG1kaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuZmluZChuYW1l
KTsKICAgICBBU1NFUlQobWRpdCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCkpOwogCi0gICAg
UmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWRpdC0+dmFsdWUsIGlu
ZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIFJl
ZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1kaXQtPnNlY29uZCwgaW5k
ZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9p
bmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9
CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWVjKSB7CiAgICAg
ICAgIElEQkluZGV4TWFwOjppdGVyYXRvciBpdCA9IG1faW5kZXhNYXAuZmluZChuYW1lKTsKICAg
ICAgICAgaWYgKGl0ICE9IG1faW5kZXhNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIGl0LT52YWx1
ZS0+bWFya0RlbGV0ZWQoKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtEZWxldGVkKCk7
CiAgICAgICAgICAgICBtX2luZGV4TWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDBlYjQ4MDQ4MzgxZmI3YzdhM2Q2ZWM3YWFkODFh
MTk3MWJjNDkwYTUuLmI2ZDBlYTBhNTBkZTIwZGRlYWM1MTVmNjRmNmQ4NTkzYTY3MjQzZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC03NCw3ICs3NCw3IEBAIElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAog
ewogICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgs
IG1fYXV0b0luY3JlbWVudCk7CiAgICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0KQotICAgICAg
ICBtZXRhZGF0YS5pbmRleGVzLnNldChpdC0+a2V5LCBpdC0+dmFsdWUtPm1ldGFkYXRhKCkpOwor
ICAgICAgICBtZXRhZGF0YS5pbmRleGVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFk
YXRhKCkpOwogICAgIHJldHVybiBtZXRhZGF0YTsKIH0KIApAQCAtMjMwLDExICsyMzAsMTEgQEAg
c3RhdGljIGJvb2wgbWFrZUluZGV4V3JpdGVycyhJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBv
YmplY3RTdG9yZSwgUGFzc1JlZlB0cjwKIAogICAgIGZvciAoSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6SW5kZXhNYXA6Oml0ZXJhdG9yIGl0ID0gb2JqZWN0U3RvcmUtPml0ZXJJbmRleGVzQmVn
aW4oKTsgaXQgIT0gb2JqZWN0U3RvcmUtPml0ZXJJbmRleGVzRW5kKCk7ICsraXQpIHsKIAotICAg
ICAgICBjb25zdCBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4mIGluZGV4ID0gaXQtPnZhbHVl
OworICAgICAgICBjb25zdCBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4mIGluZGV4ID0gaXQt
PnNlY29uZDsKICAgICAgICAgaWYgKCFpbmRleC0+aGFzVmFsaWRJZCgpKQogICAgICAgICAgICAg
Y29udGludWU7IC8vIFRoZSBpbmRleCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgYnV0IGRvZXMg
bm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZSB5ZXQuCiAKLSAgICAgICAgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXMga2V5cyA9IGluZGV4S2V5TWFwLmdldChpdC0+a2V5
KTsKKyAgICAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleXMga2V5
cyA9IGluZGV4S2V5TWFwLmdldChpdC0+Zmlyc3QpOwogICAgICAgICAvLyBJZiB0aGUgb2JqZWN0
U3RvcmUgaXMgdXNpbmcgYXV0b0luY3JlbWVudCwgdGhlbiBhbnkgaW5kZXhlcyB3aXRoIGFuIGlk
ZW50aWNhbCBrZXlQYXRoIG5lZWQgdG8gYWxzbyB1c2UgdGhlIHByaW1hcnkgKGdlbmVyYXRlZCkg
a2V5IGFzIGEga2V5LgogICAgICAgICBpZiAoa2V5V2FzR2VuZXJhdGVkKSB7CiAgICAgICAgICAg
ICBjb25zdCBJREJLZXlQYXRoJiBpbmRleEtleVBhdGggPSBpbmRleC0+a2V5UGF0aCgpOwpAQCAt
NDA0LDEwICs0MDQsMTAgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlAKICAgICAgICAgICAgIHJl
Y29yZElkZW50aWZpZXIgPSBiYWNraW5nU3RvcmVDdXJzb3ItPm9iamVjdFN0b3JlUmVjb3JkSWRl
bnRpZmllcigpOwogCiAgICAgICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OkluZGV4TWFwOjppdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsg
aXQgIT0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAg
ICAgIGlmICghaXQtPnZhbHVlLT5oYXNWYWxpZElkKCkpCisgICAgICAgICAgICAgICAgaWYgKCFp
dC0+c2Vjb25kLT5oYXNWYWxpZElkKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAv
LyBUaGUgaW5kZXggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBkb2VzIG5vdCBleGlzdCBp
biB0aGUgZGF0YWJhc2UgeWV0LgogCi0gICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0
U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT52YWx1ZS0+aWQoKSwg
cmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0g
b2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2Jq
ZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT5zZWNvbmQtPmlk
KCksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBiNTM0Njc3
NDFiNDQyN2YxZDZjZDA0OWY5YTA0NjE5YTA1MzZiMWEzLi4yMWU1ZjMyOGUzNDU1Mzg5Y2UwODU2
NjIwNzBlZWVhMTQ2NTVmNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXAKIAogICAgIElEQk9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1f
b2JqZWN0U3RvcmVNYXAuZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gbV9vYmplY3RTdG9yZU1h
cC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmpl
Y3RTdG9yZUJhY2tlbmQgPSBtX2JhY2tlbmQtPm9iamVjdFN0b3JlKG5hbWUsIGVjKTsKICAgICBB
U1NFUlQoIW9iamVjdFN0b3JlQmFja2VuZCAhPSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGEg
c3RvcmUsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2Ug
dmVyc2EuCkBAIC0xNjIsNyArMTYyLDcgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURC
VHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgbWRpdCA9
IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5maW5kKG5hbWUpOwogICAgIEFTU0VSVChtZGl0ICE9IG1l
dGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKSk7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShtZGl0LT52YWx1ZSwgb2JqZWN0
U3RvcmVCYWNrZW5kLCB0aGlzKTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0
b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShtZGl0LT5zZWNvbmQsIG9iamVjdFN0b3JlQmFj
a2VuZCwgdGhpcyk7CiAgICAgb2JqZWN0U3RvcmVDcmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsK
ICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBJREJPYmplY3RTdG9yZU1h
cDo6aXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3JlTWFwLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0
ICE9IG1fb2JqZWN0U3RvcmVNYXAuZW5kKCkpIHsKLSAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0
b3JlPiBvYmplY3RTdG9yZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0
b3JlPiBvYmplY3RTdG9yZSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIG1fb2JqZWN0U3RvcmVNYXAu
cmVtb3ZlKG5hbWUpOwogICAgICAgICBvYmplY3RTdG9yZS0+bWFya0RlbGV0ZWQoKTsKICAgICAg
ICAgbV9vYmplY3RTdG9yZUNsZWFudXBNYXAuc2V0KG9iamVjdFN0b3JlLCBvYmplY3RTdG9yZS0+
bWV0YWRhdGEoKSk7CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25B
Ym9ydCgpCiAKICAgICBpZiAoaXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgZm9yIChJREJP
YmplY3RTdG9yZU1ldGFkYXRhTWFwOjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVDbGVhbnVw
TWFwLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmVuZCgpOyArK2l0KQot
ICAgICAgICAgICAgaXQtPmtleS0+c2V0TWV0YWRhdGEoaXQtPnZhbHVlKTsKKyAgICAgICAgICAg
IGl0LT5maXJzdC0+c2V0TWV0YWRhdGEoaXQtPnNlY29uZCk7CiAgICAgfQogICAgIG1fb2JqZWN0
U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMzc4
LDcgKzM3OCw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCiAKICAgICAvLyBCcmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAgIGZv
ciAoSURCT2JqZWN0U3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZU1hcC5iZWdp
bigpOyBpdCAhPSBtX29iamVjdFN0b3JlTWFwLmVuZCgpOyArK2l0KQotICAgICAgICBpdC0+dmFs
dWUtPnRyYW5zYWN0aW9uRmluaXNoZWQoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+dHJhbnNhY3Rp
b25GaW5pc2hlZCgpOwogICAgIG1fb2JqZWN0U3RvcmVNYXAuY2xlYXIoKTsKIAogICAgIFZlY3Rv
cjxSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gdGFyZ2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCmluZGV4IDYyOTA3
ZTNlMWNlNmIwOTE1YzJiMDM0NzYwOWU1MDdlOGMwMWNlYjYuLmM3NTM5YzZlMTEyYjllMWU2YmYx
ZTJjZDNmMDJhZTBjYmEyYmVhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcApAQCAtMjgyLDcgKzI4Miw3IEBA
IGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRT
ZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwKICAgICAgICAgR3VpZFZlcnNpb25NYXA6Oml0ZXJhdG9y
IGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgaWYgKGVu
dHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkgewogICAgICAgICAgICAgLy8gTWFwIG51
bGwgc3RyaW5nIHRvIGVtcHR5IHN0cmluZyAoc2VlIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKCkpLgot
ICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBlbnRyeS0+dmFsdWUuaXNOdWxsKCkgPyBlbXB0
eVN0cmluZygpIDogZW50cnktPnZhbHVlLmlzb2xhdGVkQ29weSgpOworICAgICAgICAgICAgY3Vy
cmVudFZlcnNpb24gPSBlbnRyeS0+c2Vjb25kLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IGVu
dHJ5LT5zZWNvbmQuaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwg
IkN1cnJlbnQgY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkgaXMgJXMiLCBtX2d1aWQsIGN1cnJl
bnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpKTsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDViZDVlN2IzZDJlMWM0MDIxMWIwMWE2MWQwYmY3ODNjYjM1MjYyMjguLjQ2
ZDI4MTI5MmQ5YjdlNDM3YjVkZTBmMzI1ZmFmMjQ1YzgxNjNhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAg
LTI1MCw3ICsyNTAsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6aW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZQogCiAgICAgICAgIERhdGFi
YXNlTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgZGJOYW1lTWFwRW5kSXQgPSBuYW1lTWFwLT5lbmQo
KTsKICAgICAgICAgZm9yIChEYXRhYmFzZU5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFtZU1h
cEl0ID0gbmFtZU1hcC0+YmVnaW4oKTsgZGJOYW1lTWFwSXQgIT0gZGJOYW1lTWFwRW5kSXQ7ICsr
ZGJOYW1lTWFwSXQpIHsKLSAgICAgICAgICAgIERhdGFiYXNlU2V0KiBkYXRhYmFzZVNldCA9IGRi
TmFtZU1hcEl0LT52YWx1ZTsKKyAgICAgICAgICAgIERhdGFiYXNlU2V0KiBkYXRhYmFzZVNldCA9
IGRiTmFtZU1hcEl0LT5zZWNvbmQ7CiAgICAgICAgICAgICBEYXRhYmFzZVNldDo6Y29uc3RfaXRl
cmF0b3IgZGJTZXRFbmRJdCA9IGRhdGFiYXNlU2V0LT5lbmQoKTsKICAgICAgICAgICAgIGZvciAo
RGF0YWJhc2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGRiU2V0SXQgPSBkYXRhYmFzZVNldC0+YmVnaW4o
KTsgZGJTZXRJdCAhPSBkYlNldEVuZEl0OyArK2RiU2V0SXQpIHsKICAgICAgICAgICAgICAgICBp
ZiAoKCpkYlNldEl0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IGNvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVj
b3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuY3BwCmluZGV4IDJiZjhhZjRhZTAwOTkyODBhY2ExNzU3NzQ4YmEyMWNmOTBiNzAyZGIu
LjQ0MzU1MGE1NzMwOWYzMzYzZjBmY2E5OGY1MDhjMDI3NmQwZDk5ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmQu
Y3BwCkBAIC05Myw3ICs5Myw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBPcmlnaW5Vc2FnZVJlY29y
ZDo6ZGlza1VzYWdlKCkKICAgICBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VFbnRyeT46Oml0ZXJh
dG9yIGlEYXRhYmFzZSA9IG1fZGF0YWJhc2VNYXAuYmVnaW4oKTsKICAgICBIYXNoTWFwPFN0cmlu
ZywgRGF0YWJhc2VFbnRyeT46Oml0ZXJhdG9yIGVuZERhdGFiYXNlID0gbV9kYXRhYmFzZU1hcC5l
bmQoKTsKICAgICBmb3IgKDsgaURhdGFiYXNlICE9IGVuZERhdGFiYXNlOyArK2lEYXRhYmFzZSkK
LSAgICAgICAgbV9jYWNoZWREaXNrVXNhZ2UgKz0gaURhdGFiYXNlLT52YWx1ZS5zaXplOworICAg
ICAgICBtX2NhY2hlZERpc2tVc2FnZSArPSBpRGF0YWJhc2UtPnNlY29uZC5zaXplOwogCiAgICAg
bV9jYWNoZWREaXNrVXNhZ2VJc1ZhbGlkID0gdHJ1ZTsKICAgICByZXR1cm4gbV9jYWNoZWREaXNr
VXNhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBkYTNhN2VlNzViOGMw
MTI1OTQ2NmVjNGE3ZWFkYTk3YmQxYzIzYmY0Li44MzdiOGZiZDIyMDVhZGM5NzQ4NmRkM2YwZThm
MDIwNzM4MGY4ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKQEAgLTc4LDcg
Kzc4LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjphY3F1aXJlTG9jayhTUUxU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgICAgIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRv
ciA9IG1fY29vcmRpbmF0aW9uSW5mb01hcC5hZGQoZGJJZGVudGlmaWVyLCBDb29yZGluYXRpb25J
bmZvKCkpLml0ZXJhdG9yOwogICAgIH0KIAotICAgIENvb3JkaW5hdGlvbkluZm8mIGluZm8gPSBj
b29yZGluYXRpb25JbmZvSXRlcmF0b3ItPnZhbHVlOworICAgIENvb3JkaW5hdGlvbkluZm8mIGlu
Zm8gPSBjb29yZGluYXRpb25JbmZvSXRlcmF0b3ItPnNlY29uZDsKICAgICBpbmZvLnBlbmRpbmdU
cmFuc2FjdGlvbnMuYXBwZW5kKHRyYW5zYWN0aW9uKTsKICAgICBwcm9jZXNzUGVuZGluZ1RyYW5z
YWN0aW9ucyhpbmZvKTsKIH0KQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yOjpyZWxlYXNlTG9jayhTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAKICAg
ICBDb29yZGluYXRpb25JbmZvTWFwOjppdGVyYXRvciBjb29yZGluYXRpb25JbmZvSXRlcmF0b3Ig
PSBtX2Nvb3JkaW5hdGlvbkluZm9NYXAuZmluZChkYklkZW50aWZpZXIpOwogICAgIEFTU0VSVChj
b29yZGluYXRpb25JbmZvSXRlcmF0b3IgIT0gbV9jb29yZGluYXRpb25JbmZvTWFwLmVuZCgpKTsK
LSAgICBDb29yZGluYXRpb25JbmZvJiBpbmZvID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJhdG9yLT52
YWx1ZTsKKyAgICBDb29yZGluYXRpb25JbmZvJiBpbmZvID0gY29vcmRpbmF0aW9uSW5mb0l0ZXJh
dG9yLT5zZWNvbmQ7CiAKICAgICBpZiAodHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewogICAg
ICAgICBBU1NFUlQoaW5mby5hY3RpdmVSZWFkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0
aW9uKSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
OjpzaHV0ZG93bigpCiAgICAgLy8gTm90aWZ5IGFsbCB0cmFuc2FjdGlvbnMgaW4gcHJvZ3Jlc3Mg
dGhhdCB0aGUgZGF0YWJhc2UgdGhyZWFkIGlzIHNodXR0aW5nIGRvd24KICAgICBmb3IgKENvb3Jk
aW5hdGlvbkluZm9NYXA6Oml0ZXJhdG9yIGNvb3JkaW5hdGlvbkluZm9JdGVyYXRvciA9IG1fY29v
cmRpbmF0aW9uSW5mb01hcC5iZWdpbigpOwogICAgICAgICAgY29vcmRpbmF0aW9uSW5mb0l0ZXJh
dG9yICE9IG1fY29vcmRpbmF0aW9uSW5mb01hcC5lbmQoKTsgKytjb29yZGluYXRpb25JbmZvSXRl
cmF0b3IpIHsKLSAgICAgICAgQ29vcmRpbmF0aW9uSW5mbyYgaW5mbyA9IGNvb3JkaW5hdGlvbklu
Zm9JdGVyYXRvci0+dmFsdWU7CisgICAgICAgIENvb3JkaW5hdGlvbkluZm8mIGluZm8gPSBjb29y
ZGluYXRpb25JbmZvSXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgaWYgKGluZm8uYWN0aXZlV3Jp
dGVUcmFuc2FjdGlvbikKICAgICAgICAgICAgIGluZm8uYWN0aXZlV3JpdGVUcmFuc2FjdGlvbi0+
bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwogICAgICAgICBmb3IgKEhhc2hT
ZXQ8UmVmUHRyPFNRTFRyYW5zYWN0aW9uPiA+OjppdGVyYXRvciBhY3RpdmVSZWFkVHJhbnNhY3Rp
b25zSXRlcmF0b3IgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNw
cAppbmRleCA2MGE3NmNhNWM5NTk4MmJlYTk0Y2UwN2JhZjY2ZWRhNWQ4MjdjNWFiLi4xMTdmZGJl
ZWQzMWQ2M2I2NGI5NDE4MDNiOGVhZGNkOTk4NWNlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL0Rh
dGFiYXNlVHJhY2tlckNocm9taXVtLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4
ZWN1dGlvbkNvbnRlCiAKICAgICBEYXRhYmFzZU5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGRiTmFt
ZU1hcEVuZEl0ID0gbmFtZU1hcC0+ZW5kKCk7CiAgICAgZm9yIChEYXRhYmFzZU5hbWVNYXA6OmNv
bnN0X2l0ZXJhdG9yIGRiTmFtZU1hcEl0ID0gbmFtZU1hcC0+YmVnaW4oKTsgZGJOYW1lTWFwSXQg
IT0gZGJOYW1lTWFwRW5kSXQ7ICsrZGJOYW1lTWFwSXQpIHsKLSAgICAgICAgRGF0YWJhc2VTZXQq
IGRhdGFiYXNlU2V0ID0gZGJOYW1lTWFwSXQtPnZhbHVlOworICAgICAgICBEYXRhYmFzZVNldCog
ZGF0YWJhc2VTZXQgPSBkYk5hbWVNYXBJdC0+c2Vjb25kOwogICAgICAgICBEYXRhYmFzZVNldDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gZGF0YWJhc2VTZXQtPmVuZCgpOwogICAgICAgICBmb3IgKERh
dGFiYXNlU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGRhdGFiYXNlU2V0LT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIGlmICgoKml0KS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpID09IGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5jcHAKaW5kZXggMzgyYTNmYjhi
NTc4NjI1NWNlYmEwZTdmODU5YjE0MmFlYzFkOTUxOS4uMDM0NGNhOGY2NTZhNjVkMzdiMzA0YmI3
ZTM5ODg5ZmNlMzZmOGY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmNwcApAQCAtNTMsOCArNTMs
OCBAQCB2b2lkIFF1b3RhVHJhY2tlcjo6Z2V0RGF0YWJhc2VTaXplQW5kU3BhY2VBdmFpbGFibGVU
b09yaWdpbigKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja0RhdGEobV9kYXRhR3VhcmQpOwogICAg
ICAgICBBU1NFUlQobV9kYXRhYmFzZVNpemVzLmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKTsK
ICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFNpemVNYXA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
ZGF0YWJhc2VTaXplcy5maW5kKG9yaWdpbklkZW50aWZpZXIpOwotICAgICAgICBBU1NFUlQoaXQt
PnZhbHVlLmNvbnRhaW5zKGRhdGFiYXNlTmFtZSkpOwotICAgICAgICAqZGF0YWJhc2VTaXplID0g
aXQtPnZhbHVlLmdldChkYXRhYmFzZU5hbWUpOworICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5j
b250YWlucyhkYXRhYmFzZU5hbWUpKTsKKyAgICAgICAgKmRhdGFiYXNlU2l6ZSA9IGl0LT5zZWNv
bmQuZ2V0KGRhdGFiYXNlTmFtZSk7CiAKICAgICAgICAgaWYgKG1fc3BhY2VBdmFpbGFibGVUb09y
aWdpbnMuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpIHsKICAgICAgICAgICAgICpzcGFjZUF2
YWlsYWJsZSA9IG1fc3BhY2VBdmFpbGFibGVUb09yaWdpbnMuZ2V0KG9yaWdpbklkZW50aWZpZXIp
OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFF1b3RhVHJhY2tlcjo6dXBkYXRlRGF0YWJhc2VTaXpl
KAogewogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhKG1fZGF0YUd1YXJkKTsKICAgICBIYXNoTWFw
PFN0cmluZywgU2l6ZU1hcD46Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVNpemVzLmFkZChvcmln
aW5JZGVudGlmaWVyLCBTaXplTWFwKCkpLml0ZXJhdG9yOwotICAgIGl0LT52YWx1ZS5zZXQoZGF0
YWJhc2VOYW1lLCBkYXRhYmFzZVNpemUpOworICAgIGl0LT5zZWNvbmQuc2V0KGRhdGFiYXNlTmFt
ZSwgZGF0YWJhc2VTaXplKTsKIH0KIAogdm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0ZVNwYWNlQXZh
aWxhYmxlVG9PcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1bnNpZ25lZCBs
b25nIGxvbmcgc3BhY2VBdmFpbGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggNjdi
YjNkYWExMjk5ODg0NTExMTA2OTBlMTkyZWEwZGEwMDc2NmNkOS4uNzZjMDQwZDFjOTM3MmFiNzBl
MjI2NDYwYTg3ZDJhNTVmMmM4OGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtODcs
NyArODcsNyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vzc1Jl
c3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbgogICAgIGludCB3aW5kb3dCaXRzID0g
MTU7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHBhcmFtZXRl
ciA9IHNlcnZlclBhcmFtZXRlcnMuZmluZCgibWF4X3dpbmRvd19iaXRzIik7CiAgICAgaWYgKHBh
cmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7Ci0gICAgICAgIHdpbmRvd0JpdHMg
PSBwYXJhbWV0ZXItPnZhbHVlLnRvSW50KCk7CisgICAgICAgIHdpbmRvd0JpdHMgPSBwYXJhbWV0
ZXItPnNlY29uZC50b0ludCgpOwogICAgICAgICBpZiAod2luZG93Qml0cyA8IDggfHwgd2luZG93
Qml0cyA+IDE1KSB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52
YWxpZCBtYXhfd2luZG93X2JpdHMgcGFyYW1ldGVyIjsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU6
OnByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW4KICAgICBXZWJTb2Nr
ZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlID0gV2ViU29ja2V0RGVmbGF0ZXI6
OlRha2VPdmVyQ29udGV4dDsKICAgICBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQo
Im5vX2NvbnRleHRfdGFrZW92ZXIiKTsKICAgICBpZiAocGFyYW1ldGVyICE9IHNlcnZlclBhcmFt
ZXRlcnMuZW5kKCkpIHsKLSAgICAgICAgaWYgKCFwYXJhbWV0ZXItPnZhbHVlLmlzTnVsbCgpKSB7
CisgICAgICAgIGlmICghcGFyYW1ldGVyLT5zZWNvbmQuaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG5vX2NvbnRleHRfdGFrZW92ZXIg
cGFyYW1ldGVyIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCmluZGV4IDU2MDlmNjU4MWFhYjk3NDJiMGZkODVm
ZjE1ZDE1ZmE1MGVkMjlmNWIuLjdjNTkyYWQxYmYyODA2OGM4MzAzMzY5YjYwNjU2NzNiNmJhN2U5
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKQEAgLTE4MSwxMCArMTgx
LDEwIEBAIHZvaWQgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YXBwZW5kQWNjZXB0ZWRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpCiAgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ug
TGlzdEhhc2hTZXQgdG8ga2VlcCB0aGUgb3JkZXIgb2YgdGhlIHBhcmFtZXRlcnMuCiAgICAgZm9y
IChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3IgPSBleHRl
bnNpb25QYXJhbWV0ZXJzLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGV4dGVuc2lvblBhcmFtZXRlcnMu
ZW5kKCk7ICsraXRlcmF0b3IpIHsKICAgICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVy
LmFwcGVuZCgiOyAiKTsKLSAgICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVu
ZChpdGVyYXRvci0+a2V5KTsKLSAgICAgICAgaWYgKCFpdGVyYXRvci0+dmFsdWUuaXNOdWxsKCkp
IHsKKyAgICAgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyLmFwcGVuZChpdGVyYXRvci0+
Zmlyc3QpOworICAgICAgICBpZiAoIWl0ZXJhdG9yLT5zZWNvbmQuaXNOdWxsKCkpIHsKICAgICAg
ICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoIj0iKTsKLSAgICAgICAg
ICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPnZhbHVlKTsK
KyAgICAgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoaXRlcmF0b3It
PnNlY29uZCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCA4ZTMyZWI1MDEwMTMzZjllZTg3M2U3OTU4
Y2U0YjNiNmM3YmVhMGVmLi42YzA4YmUyMWYwZTMxNjcxMjdhYjNmMmI0Yjk1N2Y5YjRlYmNmODIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogewogICAg
IEhhc2hNYXA8QVhJRCwgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+ID46Oml0ZXJhdG9yIGVu
ZCA9IG1fb2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QVhJRCwgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSAoKml0KS52
YWx1ZS5nZXQoKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gKCppdCkuc2Vj
b25kLmdldCgpOwogICAgICAgICBkZXRhY2hXcmFwcGVyKG9iaik7CiAgICAgICAgIG9iai0+ZGV0
YWNoKCk7CiAgICAgICAgIHJlbW92ZUFYSUQob2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvRE9NT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5jcHAKaW5kZXggZGQ3ZDA0OTcxOGM4MTIy
ZjI0YjM4ZGI4ODNlNWI2YjY0ZTJlYzA2Ni4uMmU3ZjEwNmU3OWUzMWM3MzE1NGFiOWNmYWExOWE1
ODllOWRlN2RkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9E
T01PYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9E
T01PYmplY3RDYWNoZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6
Y2xlYXJCeUZyYW1lKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAgICAvLyBpdGVyYXRpbmcgdGhl
IGNhY2hlIGl0c2VsZi4KICAgICBET01PYmplY3RNYXA6Oml0ZXJhdG9yIGVuZCA9IGRvbU9iamVj
dHMoKS5lbmQoKTsKICAgICBmb3IgKERPTU9iamVjdE1hcDo6aXRlcmF0b3IgaXRlciA9IGRvbU9i
amVjdHMoKS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIERPTU9iamVj
dENhY2hlRGF0YSogZGF0YSA9IGl0ZXItPnZhbHVlOworICAgICAgICBET01PYmplY3RDYWNoZURh
dGEqIGRhdGEgPSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgIEFTU0VSVChkYXRhKTsKICAgICAgICAg
aWYgKCghZnJhbWUgfHwgZGF0YS0+ZnJhbWUgPT0gZnJhbWUpICYmIGRhdGEtPnRpbWVzUmV0dXJu
ZWQpCiAgICAgICAgICAgICB0b1VucmVmLmFwcGVuZChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKaW5kZXggNzUzYzA0ZDJm
YzU3NzJlMDk1OWRjZWY1YWM2MWJhMzBjOTZlMTc4Zi4uNjQ4MjhkNjk4OGY3ZTQzYjNlOWE0NjM2
OTA4Y2QyMTI1NDdhMmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKQEAgLTM5LDE1ICszOSwxNSBAQCBwdWJsaWM6CiAgICAg
fkRPTU9iamVjdEhhc2hUYWJsZU1hcCgpCiAgICAgewogICAgICAgICBmb3IgKEhhc2hNYXA8Y29u
c3QgSlNDOjpIYXNoVGFibGUqLCBKU0M6Okhhc2hUYWJsZT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21h
cC5iZWdpbigpOyBpdGVyICE9IG1fbWFwLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICBpdGVy
LT52YWx1ZS5kZWxldGVUYWJsZSgpOworICAgICAgICAgICAgaXRlci0+c2Vjb25kLmRlbGV0ZVRh
YmxlKCk7CiAgICAgfQogCiAgICAgY29uc3QgSlNDOjpIYXNoVGFibGUqIGdldChjb25zdCBKU0M6
Okhhc2hUYWJsZSogc3RhdGljVGFibGUpCiAgICAgewogICAgICAgICBIYXNoTWFwPGNvbnN0IEpT
Qzo6SGFzaFRhYmxlKiwgSlNDOjpIYXNoVGFibGU+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmlu
ZChzdGF0aWNUYWJsZSk7CiAgICAgICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKQotICAgICAg
ICAgICAgcmV0dXJuICZpdGVyLT52YWx1ZTsKLSAgICAgICAgcmV0dXJuICZtX21hcC5zZXQoc3Rh
dGljVGFibGUsIHN0YXRpY1RhYmxlLT5jb3B5KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAg
ICAgIHJldHVybiAmaXRlci0+c2Vjb25kOworICAgICAgICByZXR1cm4gJm1fbWFwLnNldChzdGF0
aWNUYWJsZSwgc3RhdGljVGFibGUtPmNvcHkoKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApp
bmRleCAxM2M5M2Y2YTliODRhOGFmNWQ2MTBkZDU0OTk0NjE4ZWY4NDU0ZjZjLi42NTUxZDY2ODdk
ZmY4MjhlOTU0YmMyY2YxZjRhYTZjOGZhMjQ2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBTdHJ1Y3R1cmUqIGNh
Y2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dQogewogICAgIEpTRE9NU3RydWN0dXJlTWFwJiBzdHJ1Y3R1cmVzID0gZ2xvYmFs
T2JqZWN0LT5zdHJ1Y3R1cmVzKCk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNs
YXNzSW5mbykpOwotICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gc3RydWN0dXJl
cy5zZXQoY2xhc3NJbmZvLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPihnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5pdGVyYXRvci0+c2Vjb25kLmdl
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggZDNjNDI5YTUwOGQ5MTBkZTdi
ZDJlZWJlZDY3ZDc3NWMyNWVjN2IxOC4uMzYxMDQ4MDhiYjYwOWU1N2IwNDgxMTg1MmU4OTVkYWQ3
MTMwYTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcApAQCAtODgsMTEgKzg4LDExIEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAgIEpT
RE9NU3RydWN0dXJlTWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKCku
ZW5kKCk7CiAgICAgZm9yIChKU0RPTVN0cnVjdHVyZU1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmVzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmaXQtPnZhbHVlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0LT5zZWNv
bmQpOwogCiAgICAgSlNET01Db25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgZW5kMiA9IHRoaXNPYmpl
Y3QtPmNvbnN0cnVjdG9ycygpLmVuZCgpOwogICAgIGZvciAoSlNET01Db25zdHJ1Y3Rvck1hcDo6
aXRlcmF0b3IgaXQyID0gdGhpc09iamVjdC0+Y29uc3RydWN0b3JzKCkuYmVnaW4oKTsgaXQyICE9
IGVuZDI7ICsraXQyKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQyLT52YWx1ZSk7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZpdDItPnNlY29uZCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnNldEN1cnJlbnRFdmVudChFdmVudCogY3VycmVudEV2ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggOWNjMTcxYmMyODg3
NGE4MzllZjgzM2QyMTRmNmY4ZjUxODlmNDc2OC4uYmRhYjU2OGYwMjQ1M2IxNDRmMjNkNDdjYTQ3
ZTlkNDY5M2Y1NWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5oCkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUo
ZXhlYywgQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIEFTU0VSVCghY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmNvbnRhaW5zKCZDb25zdHJ1Y3Rv
ckNsYXNzOjpzX2luZm8pKTsKICAgICAgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU09iamVj
dD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCktPmNvbnN0cnVjdG9ycygpLmFkZCgmQ29uc3RydWN0b3JDbGFzczo6c19pbmZvLCB0ZW1w
KS5pdGVyYXRvci0+dmFsdWUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBj
b25zdHJ1Y3Rvcik7CisgICAgICAgIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5hZGQoJkNvbnN0cnVjdG9yQ2xhc3M6OnNfaW5mbywg
dGVtcCkuaXRlcmF0b3ItPnNlY29uZC5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QsIGNvbnN0cnVjdG9yKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKaW5kZXggZWQ3NDNjYzllOWVjNTFjMGQ1MzE2MTA5NGYzM2Q5YzkyYWRiMTBkNi4uZmYw
YWVlZmI1MGE2MDhjOTIxMDMzZDk4NzkzM2NkYzY1ZmNmZDJjOSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC04Miw3
ICs4Miw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihTY3JpcHRE
ZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnCiAgICAgQVNTRVJUX0FSRyhsaXN0ZW5l
ciwgbGlzdGVuZXIpOwogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAKLSAgICBPd25QdHI8
TGlzdGVuZXJTZXQ+JiBsaXN0ZW5lcnMgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBPd25QdHI8TGlzdGVuZXJTZXQ+JiBsaXN0ZW5l
cnMgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNv
bmQ7CiAgICAgaWYgKCFsaXN0ZW5lcnMpCiAgICAgICAgIGxpc3RlbmVycyA9IGFkb3B0UHRyKG5l
dyBMaXN0ZW5lclNldCk7CiAgICAgbGlzdGVuZXJzLT5hZGQobGlzdGVuZXIpOwpAQCAtMTAwLDcg
KzEwMCw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcihTY3Jp
cHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSoKICAgICBpZiAoaXQgPT0gbV9wYWdlTGlz
dGVuZXJzTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMaXN0ZW5lclNldCogbGlz
dGVuZXJzID0gaXQtPnZhbHVlLmdldCgpOworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBp
dC0+c2Vjb25kLmdldCgpOwogICAgIGxpc3RlbmVycy0+cmVtb3ZlKGxpc3RlbmVyKTsKICAgICBp
ZiAobGlzdGVuZXJzLT5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9wYWdlTGlzdGVuZXJzTWFwLnJl
bW92ZShpdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
YWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmNwcAppbmRleCBjNjI0ODdlODA1ZmRjYzFiNzAxYzViYmY1ZDk2OTRjYmZi
ZDc0NGRjLi5kZWY3OWNmMmMxNmJhNzZlNTFiZDhmMDFmZjA3MDA5ZmVkMjBjYzZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5j
cHAKQEAgLTUzLDggKzUzLDggQEAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3JpcHRDYWNoZWRG
cmFtZURhdGEoRnJhbWUqIGZyYW1lKQogCiAgICAgU2NyaXB0Q29udHJvbGxlcjo6U2hlbGxNYXA6
Oml0ZXJhdG9yIHdpbmRvd1NoZWxsc0VuZCA9IHdpbmRvd1NoZWxscy5lbmQoKTsKICAgICBmb3Ig
KFNjcmlwdENvbnRyb2xsZXI6OlNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gd2luZG93U2hlbGxz
LmJlZ2luKCk7IGl0ZXIgIT0gd2luZG93U2hlbGxzRW5kOyArK2l0ZXIpIHsKLSAgICAgICAgSlNE
T01XaW5kb3cqIHdpbmRvdyA9IGl0ZXItPnZhbHVlLT53aW5kb3coKTsKLSAgICAgICAgbV93aW5k
b3dzLmFkZChpdGVyLT5rZXkuZ2V0KCksIFN0cm9uZzxKU0RPTVdpbmRvdz4od2luZG93LT5nbG9i
YWxEYXRhKCksIHdpbmRvdykpOworICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gaXRlci0+
c2Vjb25kLT53aW5kb3coKTsKKyAgICAgICAgbV93aW5kb3dzLmFkZChpdGVyLT5maXJzdC5nZXQo
KSwgU3Ryb25nPEpTRE9NV2luZG93Pih3aW5kb3ctPmdsb2JhbERhdGEoKSwgd2luZG93KSk7CiAg
ICAgfQogCiAgICAgc2NyaXB0Q29udHJvbGxlci0+YXR0YWNoRGVidWdnZXIoMCk7CkBAIC03NCw4
ICs3NCw4IEBAIHZvaWQgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKEZyYW1lKiBmcmFt
ZSkKIAogICAgIFNjcmlwdENvbnRyb2xsZXI6OlNoZWxsTWFwOjppdGVyYXRvciB3aW5kb3dTaGVs
bHNFbmQgPSB3aW5kb3dTaGVsbHMuZW5kKCk7CiAgICAgZm9yIChTY3JpcHRDb250cm9sbGVyOjpT
aGVsbE1hcDo6aXRlcmF0b3IgaXRlciA9IHdpbmRvd1NoZWxscy5iZWdpbigpOyBpdGVyICE9IHdp
bmRvd1NoZWxsc0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQg
PSBpdGVyLT5rZXkuZ2V0KCk7Ci0gICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxs
ID0gaXRlci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBp
dGVyLT5maXJzdC5nZXQoKTsKKyAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwg
PSBpdGVyLT5zZWNvbmQuZ2V0KCk7CiAKICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cg
PSBtX3dpbmRvd3MuZ2V0KHdvcmxkKS5nZXQoKSkKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5z
ZXRXaW5kb3cod2luZG93LT5nbG9iYWxEYXRhKCksIHdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGJlMTAxZjEwNTg1M2Y0
MjdmNzA4NTc2MzM0MjE1ZDIxMzAxM2NmMDIuLjQxYmJlYThiMmY4ZGI3NTZhODE1OGFiMzA2ZTMz
ODZmZDFlNmJjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRD
b250cm9sbGVyKCkKICAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgbV93aW5kb3dT
aGVsbHMgd2lsbCBjcmVhdGUgYSBsb3Qgb2YgZ2FyYmFnZS4KICAgICBpZiAoIW1fd2luZG93U2hl
bGxzLmlzRW1wdHkoKSkgewogICAgICAgICB3aGlsZSAoIW1fd2luZG93U2hlbGxzLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGRlc3Ryb3lXaW5kb3dTaGVsbChtX3dpbmRvd1NoZWxscy5iZWdpbigp
LT5rZXkuZ2V0KCkpOworICAgICAgICAgICAgZGVzdHJveVdpbmRvd1NoZWxsKG1fd2luZG93U2hl
bGxzLmJlZ2luKCktPmZpcnN0LmdldCgpKTsKICAgICAgICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFn
ZUNvbGxlY3RTb29uKCk7CiAgICAgfQogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbChET01XaW5kb3cqIG5ld0RPTVdpbmRvdywgYm9v
bCBnb2luZ0ludG9QCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3dCYXNlOjpjb21t
b25KU0dsb2JhbERhdGEoKSk7CiAKICAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0g
bV93aW5kb3dTaGVsbHMuYmVnaW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytp
dGVyKSB7Ci0gICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+dmFs
dWUuZ2V0KCk7CisgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gaXRlci0+
c2Vjb25kLmdldCgpOwogCiAgICAgICAgIGlmICh3aW5kb3dTaGVsbC0+d2luZG93KCktPmltcGwo
KSA9PSBuZXdET01XaW5kb3cpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI3Niw3ICsyNzYs
NyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkFjY2Vzc0Zyb21DdXJyZW50T3JpZ2luKEZy
YW1lICpmcmFtZSkKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNDOjpE
ZWJ1Z2dlciogZGVidWdnZXIpCiB7CiAgICAgZm9yIChTaGVsbE1hcDo6aXRlcmF0b3IgaXRlciA9
IG1fd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV93aW5kb3dTaGVsbHMuZW5kKCk7ICsr
aXRlcikKLSAgICAgICAgYXR0YWNoRGVidWdnZXIoaXRlci0+dmFsdWUuZ2V0KCksIGRlYnVnZ2Vy
KTsKKyAgICAgICAgYXR0YWNoRGVidWdnZXIoaXRlci0+c2Vjb25kLmdldCgpLCBkZWJ1Z2dlcik7
CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNET01XaW5kb3dT
aGVsbCogc2hlbGwsIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQpAQCAtMjk0LDggKzI5NCw4IEBA
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVidWdnZXIoSlNET01XaW5kb3dTaGVsbCog
c2hlbGwsIEpTQzo6RGVidWdnZXIqIGRlCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnVwZGF0ZURv
Y3VtZW50KCkKIHsKICAgICBmb3IgKFNoZWxsTWFwOjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dT
aGVsbHMuYmVnaW4oKTsgaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKTsgKytpdGVyKSB7Ci0g
ICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGl0ZXItPmtleS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAg
ICAgaXRlci0+dmFsdWUtPndpbmRvdygpLT51cGRhdGVEb2N1bWVudCgpOworICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhpdGVyLT5maXJzdC0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgaXRlci0+
c2Vjb25kLT53aW5kb3coKS0+dXBkYXRlRG9jdW1lbnQoKTsKICAgICB9CiB9CiAKQEAgLTMzMiw3
ICszMzIsNyBAQCBQYXNzUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGVSb290T2JqZWN0KHZvaWQqIG5hdGl2ZQogewogICAgIFJvb3RPYmplY3RNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9yb290T2JqZWN0cy5maW5kKG5hdGl2ZUhhbmRsZSk7CiAgICAgaWYg
KGl0ICE9IG1fcm9vdE9iamVjdHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7Cisg
ICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAgUmVmUHRyPEJpbmRpbmdzOjpSb290T2Jq
ZWN0PiByb290T2JqZWN0ID0gQmluZGluZ3M6OlJvb3RPYmplY3Q6OmNyZWF0ZShuYXRpdmVIYW5k
bGUsIGdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKSk7CiAKQEAgLTM0OCw4ICszNDgsOCBAQCB2
b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2Vw
dGlvbnMoYm9vbCkKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4
dHMoVmVjdG9yPHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4gPiYg
cmVzdWx0KQogewogICAgIGZvciAoU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1No
ZWxscy5iZWdpbigpOyBpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpOyArK2l0ZXIpIHsKLSAg
ICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBpdGVyLT52YWx1ZS0+d2luZG93KCktPmdsb2Jh
bEV4ZWMoKTsKLSAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGl0ZXItPnZhbHVlLT53
aW5kb3coKS0+aW1wbCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBK
U0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGl0ZXItPnNlY29uZC0+d2luZG93KCktPmdsb2JhbEV4ZWMo
KTsKKyAgICAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGl0ZXItPnNlY29uZC0+d2luZG93
KCktPmltcGwoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgcmVzdWx0
LmFwcGVuZChzdGQ6OnBhaXI8U2NyaXB0U3RhdGUqLCBTZWN1cml0eU9yaWdpbio+KGV4ZWMsIG9y
aWdpbikpOwogICAgIH0KIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OmNsZWFudXBTY3JpcHRPYmplY3RzRm9yUGx1Z2luKHZvaWQqIG5hdGl2ZUhhbmRsZSkKICAg
ICBpZiAoaXQgPT0gbV9yb290T2JqZWN0cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aXQtPnZhbHVlLT5pbnZhbGlkYXRlKCk7CisgICAgaXQtPnNlY29uZC0+aW52YWxpZGF0ZSgpOwog
ICAgIG1fcm9vdE9iamVjdHMucmVtb3ZlKGl0KTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKIAogICAgIFJvb3RPYmpl
Y3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcm9vdE9iamVjdHMuZW5kKCk7CiAgICAgZm9y
IChSb290T2JqZWN0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcm9vdE9iamVjdHMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPmludmFsaWRhdGUoKTsKKyAg
ICAgICAgaXQtPnNlY29uZC0+aW52YWxpZGF0ZSgpOwogCiAgICAgbV9yb290T2JqZWN0cy5jbGVh
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggZjNkYTUzZTA1M2RmMGY2YWY5NjcxNmZjMGMwMmIyYjk1Y2MzNTRmYS4uZjc2ZmRlOGZj
NzJmNjgwNWVmNDhjMDNhZmMxZDA2YTNhMTU0Y2E4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtNzQsMTIgKzc0LDEyIEBAIHB1YmxpYzoK
ICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQqIHdvcmxk
KQogICAgIHsKICAgICAgICAgU2hlbGxNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxs
cy5maW5kKHdvcmxkKTsKLSAgICAgICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93U2hlbGxzLmVu
ZCgpKSA/IGl0ZXItPnZhbHVlLmdldCgpIDogaW5pdFNjcmlwdCh3b3JsZCk7CisgICAgICAgIHJl
dHVybiAoaXRlciAhPSBtX3dpbmRvd1NoZWxscy5lbmQoKSkgPyBpdGVyLT5zZWNvbmQuZ2V0KCkg
OiBpbml0U2NyaXB0KHdvcmxkKTsKICAgICB9CiAgICAgSlNET01XaW5kb3dTaGVsbCogZXhpc3Rp
bmdXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQqIHdvcmxkKSBjb25zdAogICAgIHsKICAgICAg
ICAgU2hlbGxNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3dpbmRvd1NoZWxscy5maW5kKHdv
cmxkKTsKLSAgICAgICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93U2hlbGxzLmVuZCgpKSA/IGl0
ZXItPnZhbHVlLmdldCgpIDogMDsKKyAgICAgICAgcmV0dXJuIChpdGVyICE9IG1fd2luZG93U2hl
bGxzLmVuZCgpKSA/IGl0ZXItPnNlY29uZC5nZXQoKSA6IDA7CiAgICAgfQogICAgIEpTRE9NV2lu
ZG93KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYjQw
MTM5MjRiZTgxNjcyY2NhMTRjN2Y4NWI4MWJjZGIyNmE2MmM5Ni4uYmJjZDU0Mjk5NjU3MGZhMTM3
OTlhNGU1YTgyOTUwMzBkZTUwYTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUsMTEgKzc1LDExIEBAIFN0cmluZyBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25z
dCBTY3JpcHRCcmVhCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9
IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0
ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICBpdCA9IG1fc291cmNl
SWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkp
Lml0ZXJhdG9yOwotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0g
aXQtPnZhbHVlLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSk7Ci0gICAgaWYg
KGJyZWFrc0l0ID09IGl0LT52YWx1ZS5lbmQoKSkKLSAgICAgICAgYnJlYWtzSXQgPSBpdC0+dmFs
dWUuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRzSW5MaW5l
KCkpLml0ZXJhdG9yOworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0
ID0gaXQtPnNlY29uZC5maW5kKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpOworICAg
IGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICBicmVha3NJdCA9IGl0
LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRz
SW5MaW5lKCkpLml0ZXJhdG9yOwogCi0gICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3Rv
ciA9IGJyZWFrc0l0LT52YWx1ZTsKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9y
ID0gYnJlYWtzSXQtPnNlY29uZDsKICAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1Zl
Y3Rvci5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBp
KyspIHsKICAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc2Ny
aXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCkBAIC0xMTIsMTEgKzExMiwxMSBAQCB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dElkKQogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJj
ZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChpdCA9PSBtX3Nv
dXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIExpbmVUb0Jy
ZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQobGluZU51bWJl
ciArIDEpOwotICAgIGlmIChicmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCisgICAgTGluZVRv
QnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51
bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtz
SXQtPnZhbHVlOworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJ
dC0+c2Vjb25kOwogICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgewogICAg
ICAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxp
bnQ+KGNvbHVtbk51bWJlcikpIHsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIGJvb2wgU2NyaXB0RGVi
dWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3Np
dGlvbiYgcG9zCiAgICAgaWYgKGxpbmVOdW1iZXIgPCAwIHx8IGNvbHVtbk51bWJlciA8IDApCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0
ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQobGluZU51bWJlciArIDEpOwotICAgIGlm
IChicmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6
Y29uc3RfaXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEp
OworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBib29sIGhpdCA9IGZhbHNlOwotICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5M
aW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+dmFsdWU7CisgICAgY29uc3QgQnJlYWtwb2lu
dHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CiAgICAgdW5zaWduZWQg
YnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGk7CiAgICAg
Zm9yIChpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDU3MzQ5ZWY2
NWJiOGY3MjY5N2FmZTQ1N2Q2YmU0Y2Q1NDEyNmQzNzcuLmVhNzAyMjk1YjdlNjUzNmVkNDQ2MTk4
MzMzZDA4NzJkZDEyNDA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNDI1LDggKzQyNSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIEhhbmRsZSBkdXBsaWNhdGUgcmVmZXJlbmNlcwogICAgICAgICBpZiAoZm91
bmQgIT0gbV9vYmplY3RQb29sLmVuZCgpKSB7CiAgICAgICAgICAgICB3cml0ZShPYmplY3RSZWZl
cmVuY2VUYWcpOwotICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludDMyX3Q+KGZvdW5k
LT52YWx1ZSkgPCBtX29iamVjdFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgICAgIHdyaXRlT2JqZWN0
SW5kZXgoZm91bmQtPnZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQz
Ml90Pihmb3VuZC0+c2Vjb25kKSA8IG1fb2JqZWN0UG9vbC5zaXplKCkpOworICAgICAgICAgICAg
d3JpdGVPYmplY3RJbmRleChmb3VuZC0+c2Vjb25kKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAKQEAgLTY4Myw3ICs2ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIE9iamVjdFBvb2w6Oml0ZXJhdG9yIGluZGV4ID0gbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
cy5maW5kKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9IG1fdHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydHMuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTWVzc2FnZVBv
cnRSZWZlcmVuY2VUYWcpOwotICAgICAgICAgICAgICAgICAgICB3cml0ZShpbmRleC0+dmFsdWUp
OworICAgICAgICAgICAgICAgICAgICB3cml0ZShpbmRleC0+c2Vjb25kKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IC8vIE1lc3NhZ2VQb3J0IG9iamVjdCBjb3VsZCBub3QgYmUgZm91bmQgaW4gdHJhbnNmZXJyZWQg
bWVzc2FnZSBwb3J0cwpAQCAtNjk5LDcgKzY5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgT2JqZWN0UG9vbDo6aXRlcmF0b3IgaW5kZXggPSBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJz
LmZpbmQob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJlZEFy
cmF5QnVmZmVycy5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZl
clRyYW5zZmVyVGFnKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgtPnZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgtPnNlY29uZCk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp
ZiAoIXN0YXJ0T2JqZWN0SW50ZXJuYWwob2JqKSkgLy8gaGFuZGxlIGR1cGxpY2F0ZXMKQEAgLTc5
Niw3ICs3OTYsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHJpbmdDb25zdGFudFBvb2w6OkFkZFJl
c3VsdCBhZGRSZXN1bHQgPSBtX2NvbnN0YW50UG9vbC5hZGQoc3RyLmltcGwoKSwgbV9jb25zdGFu
dFBvb2wuc2l6ZSgpKTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAg
ICAgICAgICAgd3JpdGUoU3RyaW5nUG9vbFRhZyk7Ci0gICAgICAgICAgICB3cml0ZVN0cmluZ0lu
ZGV4KGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgICAgICAgICAgd3JpdGVTdHJpbmdJ
bmRleChhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCBmZmZjMDZkNzFmNGVlMmFlNDM3ZTFjZmJlMThhNThjMThjODVi
ZjY1Li4yZDc5NTdjZmI2MmEwYzE3Y2U5YmFkNWMyMDg3ZGViZTQ3NTNjMjBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
Mjk3Nyw3ICsyOTc3LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7
Y2xhc3NOYW1lfTo6R2V0UmF3VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEg
PSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgm
aW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQot
ICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vj
b25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBA
IC0yOTkwLDcgKzI5OTAsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
JHtjbGFzc05hbWV9OjpHZXRUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9
IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDFiZjY4
MjQyYWE1NzE2NjAwMTZhOGZmYTllYWM4YjExYmFkOTY2MDAuLmJkYTQ3YTVhY2RlYjllYmY3YWVk
YmQxZjNkMzNjZjlkMTU0ZjQ0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJh
eTo6R2V0UmF3VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAg
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0xMzIsNyAr
MTMyLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFy
cmF5OjpHZXRUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBy
ZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
NWQyZDVjYWJjY2M4YWQ3NzdjOTNkZDM1NTcxNjg5Zjk3ZGU4NjNhOS4uYzJjOTk0MDQ1OWEzMWRl
YTYyNDlmNzFlZWZhZmY2YzJjMTA2MDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZSgpCiAgICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRl
UmF3VGVtcGxhdGUoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSgpCiAgICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IGU0ZDJmN2Q0YzRhYzdmZDAwZGU3
ZGRkM2ZiZjM2NDJmMGJjNjg5OWQuLjg5NzVjZjYzMjVlMjA2ZTM3MDg2MjQzMzljOGUzMmFkZjdm
MTBkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtODIsNyAr
ODIsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6OkdldFJhd1RlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQo
JmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNl
Y29uZDsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOwpA
QCAtOTUsNyArOTUsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZp
bmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNl
Y29uZDsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCmluZGV4IDMyNjM4M2MzOTkyM2E1NjY3ZDRjZWM5OWU1MGQ1ZDVmYmViZDA3
NmYuLmZlM2ViNGZmZjA1MDY4ZjQwZDJjNzViNTExMTExMjU2NDEwMTVlMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3
VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRh
OjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0xMzIsNyArMTMyLDcgQEAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0
b3I6OkdldFRlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggZWRiZWYzYmJh
NzQwYjlhMTY0MmZlM2ZlZDFiMzk1NWY3NjU5NjlhMi4uMTk0MGQ3ZGJkYmVhODQyMmQ3YzYzZTgx
YzhhYTE0ZDM4ZTI4ZTQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNDMsNyAr
MTQzLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50
VGFyZ2V0OjpHZXRSYXdUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4
UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7
CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKQEAgLTE1
Niw3ICsxNTYsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0
RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8p
OwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA1MGE4
N2Q2NjRiMmI4ODM2YWZkN2Y1NTIyMGY4M2QwNDM2ZDM3MWQ2Li45Mzc1Y2UzMTA2Mzk0NDY0MGM1
YjBmNmY3NzFiYTE4MDkzODY5MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtNzMsNyAr
NzMsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXhjZXB0
aW9uOjpHZXRSYXdUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
ICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKQEAgLTg2LDcg
Kzg2LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2Vw
dGlvbjo6R2V0VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGMwMmE4ODU2NTk4
OWJhNTdiM2EyMTQzNGFlOWMyZWRlY2VjZTg0OTYuLjAwOThkNWViMGI4NDhkNjgxNjYxYjAzNTlk
OWE4YzMwMzU4Mjg3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0zMTIsNyArMzEyLDcg
QEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6
R2V0UmF3VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1
cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0zMjUsNyArMzI1
LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFj
ZTo6R2V0VGVtcGxhdGUoKQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAKaW5kZXggZGQ4YzU5MmFhOTBkNzY0ZTAxM2Q3ODk3NDFjYmFlNjFmOWJhZGYyMy4uYWMx
MTY3OTk4ZDA4Yzc1ZDQ2Zjg3NjAxOWM3ODllNDdlMmNiN2EzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6R2V0UmF3VGVtcGxhdAogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1
cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC05NSw3ICs5NSw3
IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpHZXRUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9
IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcAppbmRleCA2NzYzNWNmZjNkY2VjYmIzYWY1OTI5ZGUzZjIwNzZhN2FkOGYxYzE2Li43YTc0
ZjU4Mjc5MmE4MTY4MWU0MjJlY2RlYWQ0NWIxNjRmY2M4MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRl
KCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFs
dWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
dGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOworICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCA0OTBmOTExN2FkYmY2MTc2NmE5OWIzYjYwOWI1ZDBh
ZGJlM2E1ZGFmLi5jZTQyZjkyZWQ5ZjY5ZjQ0OTBkNjBjNjcyMWRkYTY5MDlkMmFjMTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5vZGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRSYXdUZW1wbGF0ZSgpCiAgICAgVjhQZXJJc29sYXRlRGF0
YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAo
KS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCku
ZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICByZXR1cm4gcmVz
dWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxh
dGUoKTsKQEAgLTk0LDcgKzk0LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKCkKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmlu
Zm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQtPnNlY29uZDsK
IAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAyODUyYTFjNDlmMjIy
ZjZjMjkwNmY5Y2I0ODhhNGFiOGUwYmI4NmE5Li4zN2Q3MzkzOTM0NGZjN2EwMDliNzE2ZTcyM2My
NzNjMTc3ZjQyYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjI2Nyw3ICsyMjY3LDcgQEAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKQog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBAIC0yMjgwLDcgKzIyODAsNyBAQCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSgpCiAgICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
aW5kZXggOTg2M2Q3NDFhZGU2ZjQzYWE1ZWIwMTY1NzBiNDNkNmIyZjcwMTVkNS4uYWU4ZDE4ZDQ1
Y2ZkYzVhYzQ5YTNhZGRiYzQxZjRjZjUyYjlhZGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI2NSw3ICsyNjUs
NyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRSYQogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEg
PSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgm
aW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQot
ICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vj
b25kOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CkBA
IC0yNzgsNyArMjc4LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGUKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOwogICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgICAgIHJldHVybiByZXN1
bHQtPnNlY29uZDsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKaW5kZXggNTI3Mzc5NjM3NGU5ZTI4
ZjA0NDg4MDQ2OWI3NzIyMDY5M2YyMThjYi4uMzFhMDI4NmM0NTFmNzY3ZGNkM2ViNDQxYTdmZThj
MTNmY2NjYjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3Jh
cHBlcldvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVy
V29ybGQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpkZWFsbG9j
YXRlKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VSVChpLT52YWx1ZSA9PSB3b3JsZCk7
CisgICAgQVNTRVJUKGktPnNlY29uZCA9PSB3b3JsZCk7CiAKICAgICBtYXAucmVtb3ZlKGkpOwog
ICAgIGlzb2xhdGVkV29ybGRDb3VudC0tOwpAQCAtMTAxLDkgKzEwMSw5IEBAIFBhc3NSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiBET01XcmFwcGVyV29ybGQ6OmdldE9yQ3JlYXRlSXNvbGF0ZWRXb3Js
ZChpbnQgd29ybGRJCiAgICAgZWxzZSB7CiAgICAgICAgIFdvcmxkTWFwOjppdGVyYXRvciBpID0g
bWFwLmZpbmQod29ybGRJZCk7CiAgICAgICAgIGlmIChpICE9IG1hcC5lbmQoKSkgewotICAgICAg
ICAgICAgQVNTRVJUKGktPnZhbHVlLT53b3JsZElkKCkgPT0gd29ybGRJZCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoaS0+dmFsdWUtPmV4dGVuc2lvbkdyb3VwKCkgPT0gZXh0ZW5zaW9uR3JvdXApOwot
ICAgICAgICAgICAgcmV0dXJuIGktPnZhbHVlOworICAgICAgICAgICAgQVNTRVJUKGktPnNlY29u
ZC0+d29ybGRJZCgpID09IHdvcmxkSWQpOworICAgICAgICAgICAgQVNTRVJUKGktPnNlY29uZC0+
ZXh0ZW5zaW9uR3JvdXAoKSA9PSBleHRlbnNpb25Hcm91cCk7CisgICAgICAgICAgICByZXR1cm4g
aS0+c2Vjb25kOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L05QVjhPYmplY3QuY3BwCmluZGV4IGI1ZjNjNjZiMzNiN2M1ODIzZGYwNTRhZjU3ODJiNTA5OWUw
N2Y2MDIuLmEzMmI0NGVhNTk2OTA0MzZjOTQ1MTczNzM1ZDNlOTU5MDk0ZDYwY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0
YXRpYyB2b2lkIGZyZWVWOE5QT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCkKICAgICBpZiAoaW50
IHY4T2JqZWN0SGFzaCA9IHY4TnBPYmplY3QtPnY4T2JqZWN0LT5HZXRJZGVudGl0eUhhc2goKSkg
ewogICAgICAgICBWOE5QT2JqZWN0TWFwOjppdGVyYXRvciBpdGVyID0gc3RhdGljVjhOUE9iamVj
dE1hcCgpLT5maW5kKHY4T2JqZWN0SGFzaCk7CiAgICAgICAgIGlmIChpdGVyICE9IHN0YXRpY1Y4
TlBPYmplY3RNYXAoKS0+ZW5kKCkpIHsKLSAgICAgICAgICAgIFY4TlBPYmplY3RWZWN0b3ImIG9i
amVjdHMgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFY4TlBPYmplY3RWZWN0b3ImIG9iamVj
dHMgPSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgb2JqZWN0cy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgICAgICAgICBpZiAob2Jq
ZWN0cy5hdChpbmRleCkgPT0gdjhOcE9iamVjdCkgewogICAgICAgICAgICAgICAgICAgICBvYmpl
Y3RzLnJlbW92ZShpbmRleCk7CkBAIC0xNjEsNyArMTYxLDcgQEAgTlBPYmplY3QqIG5wQ3JlYXRl
VjhTY3JpcHRPYmplY3QoTlBQIG5wcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIERP
TVdpbmQKICAgICBBU1NFUlQodjhPYmplY3RIYXNoKTsKICAgICBWOE5QT2JqZWN0TWFwOjppdGVy
YXRvciBpdGVyID0gc3RhdGljVjhOUE9iamVjdE1hcCgpLT5maW5kKHY4T2JqZWN0SGFzaCk7CiAg
ICAgaWYgKGl0ZXIgIT0gc3RhdGljVjhOUE9iamVjdE1hcCgpLT5lbmQoKSkgewotICAgICAgICBW
OE5QT2JqZWN0VmVjdG9yJiBvYmplY3RzID0gaXRlci0+dmFsdWU7CisgICAgICAgIFY4TlBPYmpl
Y3RWZWN0b3ImIG9iamVjdHMgPSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBvYmplY3RzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAg
VjhOUE9iamVjdCogdjhucE9iamVjdCA9IG9iamVjdHMuYXQoaW5kZXgpOwogICAgICAgICAgICAg
aWYgKHY4bnBPYmplY3QtPnJvb3RPYmplY3QgPT0gcm9vdCkgewpAQCAtMTgxLDcgKzE4MSw3IEBA
IE5QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0LCBET01XaW5kCiAjZW5kaWYKICAgICB2OG5wT2JqZWN0LT5yb290T2Jq
ZWN0ID0gcm9vdDsKIAotICAgIGl0ZXItPnZhbHVlLmFwcGVuZCh2OG5wT2JqZWN0KTsKKyAgICBp
dGVyLT5zZWNvbmQuYXBwZW5kKHY4bnBPYmplY3QpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8TlBPYmplY3QqPih2OG5wT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMzg3ZDkzMWI5YWFlNTBkOTA3ZDIy
ODY4ZWFiNzBhYjQxN2U2MmJiYy4uNmExM2RlYWFjMzlmOGUwYWVhYmI4MTE1MDJiOTdhNmQ2ZjAw
NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTEyOCw4ICsxMjgsOCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2Ny
aXB0T2JqZWN0cygpCiB7CiAgICAgUGx1Z2luT2JqZWN0TWFwOjppdGVyYXRvciBpdCA9IG1fcGx1
Z2luT2JqZWN0cy5iZWdpbigpOwogICAgIGZvciAoOyBpdCAhPSBtX3BsdWdpbk9iamVjdHMuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KGl0LT52YWx1ZSk7Ci0g
ICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChpdC0+dmFsdWUpOworICAgICAgICBfTlBOX1VucmVn
aXN0ZXJPYmplY3QoaXQtPnNlY29uZCk7CisgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChpdC0+
c2Vjb25kKTsKICAgICB9CiAgICAgbV9wbHVnaW5PYmplY3RzLmNsZWFyKCk7CiAKQEAgLTE1Nyw3
ICsxNTcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnJlc2V0SXNvbGF0ZWRXb3JsZHMoKQog
ewogICAgIGZvciAoSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRX
b3JsZHMuYmVnaW4oKTsKICAgICAgICAgIGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5lbmQoKTsg
KytpdGVyKSB7Ci0gICAgICAgIGl0ZXItPnZhbHVlLT5kZXN0cm95KCk7CisgICAgICAgIGl0ZXIt
PnNlY29uZC0+ZGVzdHJveSgpOwogICAgIH0KICAgICBtX2lzb2xhdGVkV29ybGRzLmNsZWFyKCk7
CiAgICAgbV9pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW5zLmNsZWFyKCk7CkBAIC0zNDQsNyAr
MzQ0LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh1
bnNpZ25lZCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2MKICAgICAgICAgaWYgKHdvcmxkSUQgPiAw
KSB7CiAgICAgICAgICAgICBJc29sYXRlZFdvcmxkTWFwOjppdGVyYXRvciBpdGVyID0gbV9pc29s
YXRlZFdvcmxkcy5maW5kKHdvcmxkSUQpOwogICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9pc29s
YXRlZFdvcmxkcy5lbmQoKSkKLSAgICAgICAgICAgICAgICBpc29sYXRlZENvbnRleHQgPSBpdGVy
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBpc29sYXRlZENvbnRleHQgPSBpdGVyLT5zZWNvbmQ7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpc29sYXRlZENvbnRleHQgPSBu
ZXcgVjhJc29sYXRlZENvbnRleHQobV9mcmFtZSwgRE9NV3JhcHBlcldvcmxkOjpnZXRPckNyZWF0
ZUlzb2xhdGVkV29ybGQod29ybGRJRCwgZXh0ZW5zaW9uR3JvdXApKTsKICAgICAgICAgICAgICAg
ICBpZiAoaXNvbGF0ZWRDb250ZXh0LT5jb250ZXh0KCkuSXNFbXB0eSgpKSB7CkBAIC0zNTgsNyAr
MzU4LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh1
bnNpZ25lZCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2MKIAogICAgICAgICAgICAgSXNvbGF0ZWRX
b3JsZFNlY3VyaXR5T3JpZ2luTWFwOjppdGVyYXRvciBzZWN1cml0eU9yaWdpbkl0ZXIgPSBtX2lz
b2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbnMuZmluZCh3b3JsZElEKTsKICAgICAgICAgICAgIGlm
IChzZWN1cml0eU9yaWdpbkl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW5zLmVu
ZCgpKQotICAgICAgICAgICAgICAgIGlzb2xhdGVkQ29udGV4dC0+c2V0U2VjdXJpdHlPcmlnaW4o
c2VjdXJpdHlPcmlnaW5JdGVyLT52YWx1ZSk7CisgICAgICAgICAgICAgICAgaXNvbGF0ZWRDb250
ZXh0LT5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbkl0ZXItPnNlY29uZCk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpc29sYXRlZENvbnRleHQgPSBuZXcgVjhJc29sYXRl
ZENvbnRleHQobV9mcmFtZSwgRE9NV3JhcHBlcldvcmxkOjpnZXRPckNyZWF0ZUlzb2xhdGVkV29y
bGQod29ybGRJRCwgZXh0ZW5zaW9uR3JvdXApKTsKICAgICAgICAgICAgIGlmIChpc29sYXRlZENv
bnRleHQtPmNvbnRleHQoKS5Jc0VtcHR5KCkpIHsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFNj
cmlwdENvbnRyb2xsZXI6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJ
RCwgUGFzc1JlZlB0cjxTZQogICAgIG1faXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lucy5zZXQo
d29ybGRJRCwgc2VjdXJpdHlPcmlnaW4pOwogICAgIElzb2xhdGVkV29ybGRNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBtX2lzb2xhdGVkV29ybGRzLmZpbmQod29ybGRJRCk7CiAgICAgaWYgKGl0ZXIgIT0g
bV9pc29sYXRlZFdvcmxkcy5lbmQoKSkKLSAgICAgICAgaXRlci0+dmFsdWUtPnNldFNlY3VyaXR5
T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgaXRlci0+c2Vjb25kLT5zZXRTZWN1cml0
eU9yaWdpbihzZWN1cml0eU9yaWdpbik7CiB9CiAKIFRleHRQb3NpdGlvbiBTY3JpcHRDb250cm9s
bGVyOjpldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CkBAIC01NDYsOCArNTQ2LDggQEAgdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhbnVwU2NyaXB0T2JqZWN0c0ZvclBsdWdpbihXaWRnZXQq
IG5hdGl2ZUhhbmRsZSkKICAgICBQbHVnaW5PYmplY3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wbHVn
aW5PYmplY3RzLmZpbmQobmF0aXZlSGFuZGxlKTsKICAgICBpZiAoaXQgPT0gbV9wbHVnaW5PYmpl
Y3RzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KGl0
LT52YWx1ZSk7Ci0gICAgX05QTl9SZWxlYXNlT2JqZWN0KGl0LT52YWx1ZSk7CisgICAgX05QTl9V
bnJlZ2lzdGVyT2JqZWN0KGl0LT5zZWNvbmQpOworICAgIF9OUE5fUmVsZWFzZU9iamVjdChpdC0+
c2Vjb25kKTsKICAgICBtX3BsdWdpbk9iamVjdHMucmVtb3ZlKGl0KTsKIH0KIApAQCAtNjYzLDcg
KzY2Myw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMo
VmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRTdGF0ZSosIFNlCiB7CiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwogICAgIGZvciAoSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXQgPSBt
X2lzb2xhdGVkV29ybGRzLmJlZ2luKCk7IGl0ICE9IG1faXNvbGF0ZWRXb3JsZHMuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dCA9IGl0LT52
YWx1ZTsKKyAgICAgICAgVjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dCA9IGl0LT5z
ZWNvbmQ7CiAgICAgICAgIGlmICghaXNvbGF0ZWRDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4
Q29udGV4dCA9IGlzb2xhdGVkQ29udGV4dC0+Y29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNjc2ZWQ2
ZDIwODc0ZjM3OWI1Y2VlZGZkNzI0MjdhYjliYjMxM2ZkMi4uYTliMzljZTExOTM2NTM1MGNhYzhj
NzYyZThiYWIwMDNmNTQzZjk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgdHlwZW5hbWUgSGFuZGxlVG9UOjppdGVyYXRvciByZXN1bHQgPSBt
X21hcC5maW5kKCpoYW5kbGUpOwogICAgICAgICBpZiAocmVzdWx0ICE9IG1fbWFwLmVuZCgpKSB7
Ci0gICAgICAgICAgICAqdmFsdWVPdXQgPSByZXN1bHQtPnZhbHVlOworICAgICAgICAgICAgKnZh
bHVlT3V0ID0gcmVzdWx0LT5zZWNvbmQ7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01N
YXAuaAppbmRleCAzOGI1MTQyNzc3MzE4YTRkNmZkNzA5NzNlZGUxOTBiYTM0NGI3OTJiLi5jYzc2
ZmZhNTMxZWEzYTIwNWIwZjExZDUxNTFiMjAxZTBlMjA3N2M0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NTWFwLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgcmVtb3ZlSWZQcmVzZW50KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3Rl
bnQ8VmFsdWVUeXBlPiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgdHlwZW5hbWUgSGFz
aE1hcDxLZXlUeXBlKiwgVmFsdWVUeXBlKj46Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkp
OwotICAgICAgICAgICAgaWYgKGl0ID09IG1fbWFwLmVuZCgpIHx8IGl0LT52YWx1ZSAhPSAqdmFs
dWUpCisgICAgICAgICAgICBpZiAoaXQgPT0gbV9tYXAuZW5kKCkgfHwgaXQtPnNlY29uZCAhPSAq
dmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX21h
cC5yZW1vdmUoaXQpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIHZpc2l0b3ItPnN0YXJ0TWFwKCk7CiAgICAgICAgICAgICB0eXBlbmFtZSBIYXNo
TWFwPEtleVR5cGUqLCBWYWx1ZVR5cGUqPjo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOwog
ICAgICAgICAgICAgZm9yICg7IGl0ICE9IG1fbWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAg
ICAgIHZpc2l0b3ItPnZpc2l0RE9NV3JhcHBlcihzdG9yZSwgaXQtPmtleSwgdjg6OlBlcnNpc3Rl
bnQ8VmFsdWVUeXBlPihpdC0+dmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2aXNpdG9yLT52aXNp
dERPTVdyYXBwZXIoc3RvcmUsIGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBlPihp
dC0+c2Vjb25kKSk7CiAgICAgICAgICAgICB2aXNpdG9yLT5lbmRNYXAoKTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXgg
YzJhYjc0ZDcxY2I4ZDZjZWI2MmU5NDY2NzUzMjZmYzRhMzgyNzhiNi4uMmE4ODJkYzc2ZTRlZGUz
ZjEzMjRjNDlmNDZmYmQ5MGRkMzdiN2E4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmNwcApAQCAtMTAwLDkgKzEwMCw5IEBAIHN0YXRpYyB2b2lkIGVu
dW1lcmF0ZUdsb2JhbEhhbmRsZXMoKQogewogICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFu
ZGxlTWFwID0gY3VycmVudEdsb2JhbEhhbmRsZU1hcCgpOwogICAgIGZvciAoR2xvYmFsSGFuZGxl
TWFwOjppdGVyYXRvciBpdCA9IGdsb2JhbEhhbmRsZU1hcC5iZWdpbigpLCBlbmQgPSBnbG9iYWxI
YW5kbGVNYXAuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBHbG9iYWxIYW5kbGVJ
bmZvKiBpbmZvID0gaXQtPnZhbHVlOworICAgICAgICBHbG9iYWxIYW5kbGVJbmZvKiBpbmZvID0g
aXQtPnNlY29uZDsKICAgICAgICAgVU5VU0VEX1BBUkFNKGluZm8pOwotICAgICAgICB2ODo6VmFs
dWUqIGhhbmRsZSA9IGl0LT5rZXk7CisgICAgICAgIHY4OjpWYWx1ZSogaGFuZGxlID0gaXQtPmZp
cnN0OwogICAgICAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCmluZGV4IDYzNWZmMjM3
MWZjOTQxODlmMDM0ZTMzZWZlNzJlOTc2ZjlmZDFhMzIuLmU1NzAyOWJmZDcyNGI4OTY1NTY2NWVk
MWI2NWRlMjE0NTQ2ODIwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UGVyQ29udGV4dERhdGEuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgVjhQZXJDb250ZXh0RGF0
YTo6ZGlzcG9zZSgpCiAgICAgewogICAgICAgICBXcmFwcGVyQm9pbGVycGxhdGVNYXA6Oml0ZXJh
dG9yIGl0ID0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmJlZ2luKCk7CiAgICAgICAgIGZvciAoOyBp
dCAhPSBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBpdC0+dmFsdWU7CisgICAgICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gaXQtPnNlY29uZDsKICAgICAg
ICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwogICAgICAgICB9CiAgICAgICAgIG1fd3JhcHBlckJv
aWxlcnBsYXRlcy5jbGVhcigpOwpAQCAtNDksNyArNDksNyBAQCB2b2lkIFY4UGVyQ29udGV4dERh
dGE6OmRpc3Bvc2UoKQogICAgIHsKICAgICAgICAgQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9jb25zdHJ1Y3Rvck1hcC5iZWdpbigpOwogICAgICAgICBmb3IgKDsgaXQgIT0gbV9jb25z
dHJ1Y3Rvck1hcC5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uPiB3cmFwcGVyID0gaXQtPnZhbHVlOworICAgICAgICAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uPiB3cmFwcGVyID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIHdyYXBw
ZXIuRGlzcG9zZSgpOwogICAgICAgICB9CiAgICAgICAgIG1fY29uc3RydWN0b3JNYXAuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L25wcnVudGltZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ucHJ1bnRpbWUuY3BwCmluZGV4IDJiMDM2N2Nk
MTVmMmE0ZmIxMTNkNGNjMGJmNzY3ZWM4Y2YxYjBhNWUuLjhkODBjZjkzMzE4NmU4NTQ3YzE4NTE4
M2Q3ZTc0ODRiY2UxZTg0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L25wcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvbnBydW50aW1l
LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIE5QSWRlbnRpZmllciBfTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIoY29uc3QgTlBVVEY4KiBuYW1lKQogICAgICAgICBTdHJpbmdJZGVudGlmaWVyTWFwKiBp
ZGVudE1hcCA9IGdldFN0cmluZ0lkZW50aWZpZXJNYXAoKTsKICAgICAgICAgU3RyaW5nSWRlbnRp
Zmllck1hcDo6aXRlcmF0b3IgaXRlciA9IGlkZW50TWFwLT5maW5kKGtleSk7CiAgICAgICAgIGlm
IChpdGVyICE9IGlkZW50TWFwLT5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOUElkZW50aWZpZXI+KGl0ZXItPnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxOUElkZW50aWZpZXI+KGl0ZXItPnNlY29uZCk7CiAKICAgICAgICAgc2l6ZV90IG5hbWVM
ZW4gPSBrZXkubV9sZW5ndGg7CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCBOUElkZW50aWZpZXIgX05Q
Tl9HZXRJbnRJZGVudGlmaWVyKGludDMyX3QgaW50SWQpCiAgICAgSW50SWRlbnRpZmllck1hcCog
aWRlbnRNYXAgPSBnZXRJbnRJZGVudGlmaWVyTWFwKCk7CiAgICAgSW50SWRlbnRpZmllck1hcDo6
aXRlcmF0b3IgaXRlciA9IGlkZW50TWFwLT5maW5kKGludElkKTsKICAgICBpZiAoaXRlciAhPSBp
ZGVudE1hcC0+ZW5kKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXI+
KGl0ZXItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcj4o
aXRlci0+c2Vjb25kKTsKIAogICAgIC8vIFdlIG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllcnMsIHNv
IHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3cuCiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkZW50
aWZpZXIgPSByZWludGVycHJldF9jYXN0PFByaXZhdGVJZGVudGlmaWVyKj4obWFsbG9jKHNpemVv
ZihQcml2YXRlSWRlbnRpZmllcikpKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIF9OUE5fUmVn
aXN0ZXJPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0LCBOUE9iamVjdCogb3duZXIpCiAgICAgICAg
IE5QT2JqZWN0TWFwOjppdGVyYXRvciBvd25lckVudHJ5ID0gbGl2ZU9iamVjdE1hcCgpLmZpbmQo
b3duZXIpOwogICAgICAgICBOUE9iamVjdCogcGFyZW50ID0gMDsKICAgICAgICAgaWYgKGxpdmVP
YmplY3RNYXAoKS5lbmQoKSAhPSBvd25lckVudHJ5KQotICAgICAgICAgICAgcGFyZW50ID0gb3du
ZXJFbnRyeS0+dmFsdWU7CisgICAgICAgICAgICBwYXJlbnQgPSBvd25lckVudHJ5LT5zZWNvbmQ7
CiAKICAgICAgICAgaWYgKHBhcmVudCkKICAgICAgICAgICAgIG93bmVyID0gcGFyZW50OwpAQCAt
NDA4LDcgKzQwOCw3IEBAIHZvaWQgX05QTl9VbnJlZ2lzdGVyT2JqZWN0KE5QT2JqZWN0KiBucE9i
amVjdCkKIAogICAgIE5QT2JqZWN0KiBvd25lciA9IDA7CiAgICAgaWYgKGxpdmVPYmplY3RNYXAo
KS5maW5kKG5wT2JqZWN0KSAhPSBsaXZlT2JqZWN0TWFwKCkuZW5kKCkpCi0gICAgICAgIG93bmVy
ID0gbGl2ZU9iamVjdE1hcCgpLmZpbmQobnBPYmplY3QpLT52YWx1ZTsKKyAgICAgICAgb3duZXIg
PSBsaXZlT2JqZWN0TWFwKCkuZmluZChucE9iamVjdCktPnNlY29uZDsKIAogICAgIGlmICghb3du
ZXIpIHsKICAgICAgICAgLy8gVW5yZWdpc3RlcmluZyBhIG93bmVyIG9iamVjdDsgYWxzbyB1bnJl
Z2lzdGVyIGl0J3MgZGVzY2VuZGFudHMuCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBfTlBOX1Vu
cmVnaXN0ZXJPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQogICAgIH0gZWxzZSB7CiAgICAgICAg
IE5QUm9vdE9iamVjdE1hcDo6aXRlcmF0b3Igb3duZXJFbnRyeSA9IHJvb3RPYmplY3RNYXAoKS5m
aW5kKG93bmVyKTsKICAgICAgICAgaWYgKG93bmVyRW50cnkgIT0gcm9vdE9iamVjdE1hcCgpLmVu
ZCgpKSB7Ci0gICAgICAgICAgICBOUE9iamVjdFNldCogbGlzdCA9IG93bmVyRW50cnktPnZhbHVl
OworICAgICAgICAgICAgTlBPYmplY3RTZXQqIGxpc3QgPSBvd25lckVudHJ5LT5zZWNvbmQ7CiAg
ICAgICAgICAgICBBU1NFUlQobGlzdC0+ZmluZChucE9iamVjdCkgIT0gbGlzdC0+ZW5kKCkpOwog
ICAgICAgICAgICAgbGlzdC0+cmVtb3ZlKG5wT2JqZWN0KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCmluZGV4IDFkZjU4YTllNDE1ODFjM2JlYzMxNTFm
ZjIxYmNlYWEyNDcyZGMxZjUuLjJhY2YxNDE1M2QxZGI5ZTEyYjcyNTU4YTUzODhkOTg2ZmY4YTVl
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKQEAgLTY5LDEzICs2
OSwxMyBAQCBJZGVudGlmaWVyUmVwKiBJZGVudGlmaWVyUmVwOjpnZXQoaW50IGludElEKQogICAg
IAogICAgIEludElkZW50aWZpZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBpbnRJZGVudGlmaWVy
TWFwKCkuYWRkKGludElELCAwKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAg
ICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IG5ldyBJZGVudGlmaWVyUmVwKGludElEKTsKKyAgICAgICAgQVNTRVJUKCFy
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
ID0gbmV3IElkZW50aWZpZXJSZXAoaW50SUQpOwogICAgICAgICAKLSAgICAgICAgaWRlbnRpZmll
clNldCgpLmFkZChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgaWRlbnRpZmllclNl
dCgpLmFkZChyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAgICAgfQogICAgIAotICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgSWRlbnRpZmll
clJlcCo+IFN0cmluZ0lkZW50aWZpZXJNYXA7CkBAIC05NSwxMyArOTUsMTMgQEAgSWRlbnRpZmll
clJlcCogSWRlbnRpZmllclJlcDo6Z2V0KGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgVVN0cmluZyBz
dHJpbmcgPSBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhuYW1lLCBzdHJsZW4obmFtZSkpKTsKICAgICBTdHJpbmdJZGVudGlmaWVyTWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gc3RyaW5nSWRlbnRpZmllck1hcCgpLmFkZChzdHJpbmcuaW1wbCgpLCAwKTsK
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBJZGVu
dGlmaWVyUmVwKG5hbWUpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
KTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBuZXcgSWRlbnRpZmllclJlcChu
YW1lKTsKICAgICAgICAgCi0gICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSk7CisgICAgICAgIGlkZW50aWZpZXJTZXQoKS5hZGQocmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKIGJvb2wgSWRlbnRp
ZmllclJlcDo6aXNWYWxpZChJZGVudGlmaWVyUmVwKiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggNjJlYmQyMzc2ZWM5MWVjZGU2NTM5NTg2MjZhMDlh
ZWZkMzk3M2JlOC4uNjFlMzY3OTU2MWE2M2U0ZTNjZjViZTRkMDg5NjcyMzEzN2Y2MzJjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC02NSw4ICs2NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGl0ZXIgPSBtX21hcC5hZGQocm9vdE9iamVjdCwgSlNUb05QT2JqZWN0
TWFwKCkpLml0ZXJhdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKGl0ZXItPnZhbHVl
LmZpbmQoanNPYmplY3QpID09IGl0ZXItPnZhbHVlLmVuZCgpKTsKLSAgICAgICAgaXRlci0+dmFs
dWUuYWRkKGpzT2JqZWN0LCBucE9iamVjdCk7CisgICAgICAgIEFTU0VSVChpdGVyLT5zZWNvbmQu
ZmluZChqc09iamVjdCkgPT0gaXRlci0+c2Vjb25kLmVuZCgpKTsKKyAgICAgICAgaXRlci0+c2Vj
b25kLmFkZChqc09iamVjdCwgbnBPYmplY3QpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlKFJv
b3RPYmplY3QqIHJvb3RPYmplY3QpCkBAIC04MCw5ICs4MCw5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIEhhc2hNYXA8Um9vdE9iamVjdCosIEpTVG9OUE9iamVjdE1hcD46Oml0ZXJhdG9yIGl0
ZXIgPSBtX21hcC5maW5kKHJvb3RPYmplY3QpOwogICAgICAgICBBU1NFUlQoaXRlciAhPSBtX21h
cC5lbmQoKSk7Ci0gICAgICAgIEFTU0VSVChpdGVyLT52YWx1ZS5maW5kKGpzT2JqZWN0KSAhPSBp
dGVyLT52YWx1ZS5lbmQoKSk7CisgICAgICAgIEFTU0VSVChpdGVyLT5zZWNvbmQuZmluZChqc09i
amVjdCkgIT0gaXRlci0+c2Vjb25kLmVuZCgpKTsKIAotICAgICAgICBpdGVyLT52YWx1ZS5yZW1v
dmUoanNPYmplY3QpOworICAgICAgICBpdGVyLT5zZWNvbmQucmVtb3ZlKGpzT2JqZWN0KTsKICAg
ICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhQ2xhc3NKU0MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNs
YXNzSlNDLmNwcAppbmRleCBhNjA4MDFlNTYyOTRjNzJmOGUyZjc0NjZlNDQyYjYxY2RkODRlZWZl
Li5hZWI0MDIwYmQ4NGEyMzdiOWVjMWMwYWI3NmE5ZjZmZmI2ZThiOTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCBKYXZhQ2xhc3M6On5KYXZhQ2xhc3MoKQogCiAgICAgTWV0aG9kTGlzdE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9tZXRob2RzLmVuZCgpOwogICAgIGZvciAoTWV0aG9kTGlzdE1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGhvZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIGNvbnN0IE1ldGhvZExpc3QqIG1ldGhvZExpc3QgPSBpdC0+dmFsdWU7CisgICAg
ICAgIGNvbnN0IE1ldGhvZExpc3QqIG1ldGhvZExpc3QgPSBpdC0+c2Vjb25kOwogICAgICAgICBk
ZWxldGVBbGxWYWx1ZXMoKm1ldGhvZExpc3QpOwogICAgICAgICBkZWxldGUgbWV0aG9kTGlzdDsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAppbmRleCAyZWI0
YTEwZjViZjZhMDcyOWE3MDFiMDU4NzdlZTBmNGZhY2UyY2I2Li5iOWEzNGFjMzBiN2ZjM2Q3NTQz
NmMxYjM4OTMyMTY0MDE4Mjc4ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0
YW5jZS5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBXZWFrTWFwOjpzZXQoSlNDb250ZXh0UmVm
IGNvbnRleHQsIHZvaWQgKmtleSwgSlNPYmplY3RSZWYgb2JqZWN0KQogICAgICAgICBKU0NvbnRl
eHRHcm91cFJlZiBncm91cCA9IEpTQ29udGV4dEdldEdyb3VwKGNvbnRleHQpOwogICAgICAgICBX
ZWFrTWFwU2V0OjpBZGRSZXN1bHQgZW50cnkgPSB3ZWFrTWFwcy5hZGQoZ3JvdXAsIDApOwogICAg
ICAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZSA9IGFkb3B0UmVmKG5ldyBXZWFrTWFwSW1wbChncm91cCkpOwotICAgICAgICBtX2ltcGwg
PSBlbnRyeS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vj
b25kID0gYWRvcHRSZWYobmV3IFdlYWtNYXBJbXBsKGdyb3VwKSk7CisgICAgICAgIG1faW1wbCA9
IGVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgfQogICAgIEpTV2Vha09iamVjdE1hcFNldCht
X2ltcGwtPm1fY29udGV4dCwgbV9pbXBsLT5tX21hcCwga2V5LCBvYmplY3QpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAppbmRleCA3NGQ4MzE5MjFmMjE5YjhiNzMzMzY3
NTkxNWU0MWJkYzE3ZGRmZGNkLi45YjYyMjRhOGI1NjBmYzVlNjBlMTU4OWU1NzlkMTQyNTQ5NzI5
MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcApAQCAtMTA1LDcgKzEw
NSw3IEBAIHZvaWQgUm9vdE9iamVjdDo6aW52YWxpZGF0ZSgpCiAgICAgewogICAgICAgICBIYXNo
TWFwPFJ1bnRpbWVPYmplY3QqLCBKU0M6OldlYWs8UnVudGltZU9iamVjdD4gPjo6aXRlcmF0b3Ig
ZW5kID0gbV9ydW50aW1lT2JqZWN0cy5lbmQoKTsKICAgICAgICAgZm9yIChIYXNoTWFwPFJ1bnRp
bWVPYmplY3QqLCBKU0M6OldlYWs8UnVudGltZU9iamVjdD4gPjo6aXRlcmF0b3IgaXQgPSBtX3J1
bnRpbWVPYmplY3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgUnVu
dGltZU9iamVjdCogcnVudGltZU9iamVjdCA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAg
IFJ1bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAg
ICAgICAgaWYgKCFydW50aW1lT2JqZWN0KSAvLyBTa2lwIHpvbWJpZXMuCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBydW50aW1lT2JqZWN0LT5pbnZhbGlkYXRlKCk7CkBA
IC0xMjksNyArMTI5LDcgQEAgdm9pZCBSb290T2JqZWN0OjppbnZhbGlkYXRlKCkKIAogICAgIFBy
b3RlY3RDb3VudFNldDo6aXRlcmF0b3IgZW5kID0gbV9wcm90ZWN0Q291bnRTZXQuZW5kKCk7CiAg
ICAgZm9yIChQcm90ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9wcm90ZWN0Q291bnRTZXQu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBKU0M6OmdjVW5wcm90ZWN0KGl0LT5r
ZXkpOworICAgICAgICBKU0M6OmdjVW5wcm90ZWN0KGl0LT5maXJzdCk7CiAgICAgbV9wcm90ZWN0
Q291bnRTZXQuY2xlYXIoKTsKIAogICAgIHJvb3RPYmplY3RTZXQoKS0+cmVtb3ZlKHRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKaW5kZXggYzkyZDEzMzZkODYwNjIwNWZj
MDM3ZDBmYzU5ZmQzYTA3MzU0MjE1NS4uNjM3NzdiYjRkZGRkYTA5NzYxNmY4ZmEwYWJjMWJhNWM3
N2ZiOTQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC01MCwxNCAr
NTAsMTQgQEAgdm9pZCBDU1NDYW52YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxl
bWVudCosIGNvbnN0IEZsb2F0UmVjdCYgY2hhbmdlZFIKICAgICBJbnRSZWN0IGltYWdlQ2hhbmdl
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoY2hhbmdlZFJlY3QpOwogICAgIFJlbmRlck9iamVjdFNp
emVDb3VudE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2xpZW50cygpLmVuZCgpOwogICAgIGZv
ciAoUmVuZGVyT2JqZWN0U2l6ZUNvdW50TWFwOjpjb25zdF9pdGVyYXRvciBjdXJyID0gY2xpZW50
cygpLmJlZ2luKCk7IGN1cnIgIT0gZW5kOyArK2N1cnIpCi0gICAgICAgIGNvbnN0X2Nhc3Q8UmVu
ZGVyT2JqZWN0Kj4oY3Vyci0+a2V5KS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJ
bWFnZVB0cj4odGhpcyksICZpbWFnZUNoYW5nZVJlY3QpOworICAgICAgICBjb25zdF9jYXN0PFJl
bmRlck9iamVjdCo+KGN1cnItPmZpcnN0KS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBw
ZWRJbWFnZVB0cj4odGhpcyksICZpbWFnZUNoYW5nZVJlY3QpOwogfQogCiB2b2lkIENTU0NhbnZh
c1ZhbHVlOjpjYW52YXNSZXNpemVkKEhUTUxDYW52YXNFbGVtZW50KikKIHsKICAgICBSZW5kZXJP
YmplY3RTaXplQ291bnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNsaWVudHMoKS5lbmQoKTsK
ICAgICBmb3IgKFJlbmRlck9iamVjdFNpemVDb3VudE1hcDo6Y29uc3RfaXRlcmF0b3IgY3VyciA9
IGNsaWVudHMoKS5iZWdpbigpOyBjdXJyICE9IGVuZDsgKytjdXJyKQotICAgICAgICBjb25zdF9j
YXN0PFJlbmRlck9iamVjdCo+KGN1cnItPmtleSktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxX
cmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJPYmplY3Qq
PihjdXJyLT5maXJzdCktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+
KHRoaXMpKTsKIH0KIAogdm9pZCBDU1NDYW52YXNWYWx1ZTo6Y2FudmFzRGVzdHJveWVkKEhUTUxD
YW52YXNFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzZDNmY2U5ODk1MmM4NWJlZWJmNWY2NTQ5
ZjBiZjgxMmUxMjdhOTc1Li4wNzA4YzIzYmFiOGQ1MGE4YmU5MWRhMTMzZDg0NzMzODhjODI3ZWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtMTI3Myw4ICsxMjczLDggQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGNvdW50ZXJUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJvcGUKIAog
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CiAgICAgZm9yIChDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1hcC0+YmVnaW4oKTsgaXQgIT0gbWFwLT5lbmQoKTsgKytpdCkgewotICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoaXQtPmtleS5nZXQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKLSAgICAgICAgc2hvcnQgbnVtYmVyID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQgPyBpdC0+dmFsdWUubV9pbmNy
ZW1lbnRWYWx1ZSA6IGl0LT52YWx1ZS5tX3Jlc2V0VmFsdWU7CisgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShpdC0+Zmlyc3QuZ2V0KCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgIHNob3J0IG51bWJlciA9IHByb3BlcnR5SUQg
PT0gQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50ID8gaXQtPnNlY29uZC5tX2luY3JlbWVudFZh
bHVlIDogaXQtPnNlY29uZC5tX3Jlc2V0VmFsdWU7CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSgoZG91YmxlKW51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpKTsKICAgICB9CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKaW5kZXggODI3ODgzYjEzNTlmOWM1ODQw
NmViNGU4YWVkYWYyMzU1OTRmMjNhNy4uNWVkN2RhMThkM2NiOWU5YWQ4MGMyYmU3ODE4MjYyZWMz
ODJiNGUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCkBAIC0x
NzUsNyArMTc1LDcgQEAgdm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jvc3NmYWRlQ2hhbmdlZChj
b25zdCBJbnRSZWN0JikKIHsKICAgICBSZW5kZXJPYmplY3RTaXplQ291bnRNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGNsaWVudHMoKS5lbmQoKTsKICAgICBmb3IgKFJlbmRlck9iamVjdFNpemVD
b3VudE1hcDo6Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVudHMoKS5iZWdpbigpOyBjdXJyICE9
IGVuZDsgKytjdXJyKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50ID0gY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QqPihjdXJyLT5rZXkpOworICAgICAgICBSZW5kZXJPYmplY3QqIGNsaWVu
dCA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4oY3Vyci0+Zmlyc3QpOwogICAgICAgICBjbGll
bnQtPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBjZTQ1
MzY3YWMzMzIzNzJhMGZiOWVjOGM1YTUyZmI5ZjA4ODllZGY2Li5kZDkwNGQzN2ZiOTU0ZTQ0ZGJh
NjUzODc2NzM1ODMxMTk4ZmFkM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VT
b3VyY2U6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAg
IHVuc2lnbmVkIGhhc2hLZXkgPSAoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkg
KyAxKSA8PCA2IHwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpIDw8IDQKICAgICAgICAg
ICAgICAgICAgICAgICAgfCAoZm9udERlc2NyaXB0aW9uLnRleHRPcmllbnRhdGlvbigpID09IFRl
eHRPcmllbnRhdGlvblVwcmlnaHQgPyA4IDogMCkgfCAoZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWwgPyA0IDogMCkgfCAoc3ludGhldGljQm9sZCA/IDIgOiAwKSB8IChz
eW50aGV0aWNJdGFsaWMgPyAxIDogMCk7CiAKLSAgICBTaW1wbGVGb250RGF0YSomIGNhY2hlZERh
dGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hLZXksIDApLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICBTaW1wbGVGb250RGF0YSomIGNhY2hlZERhdGEgPSBtX2ZvbnREYXRhVGFibGUuYWRkKGhhc2hL
ZXksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKGNhY2hlZERhdGEpCiAgICAgICAgIHJl
dHVybiBjYWNoZWREYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmlu
ZGV4IDE1MTdiNzZjYWQ1ZWRjNWVmMGJmYTQ1MTllOWRiOWYxZTUyY2MyZjYuLmNjNWZmYTA2Y2Qw
ZTUwMTQ2NGMwNzEwM2FiZmRkYTFhZjVhM2VhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFk
ZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogICAg
ICAgICBpZiAoZmFtaWx5TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1pbHlGb250
RmFjZXMgPSBtX2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOworICAgICAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+JiBmYW1p
bHlGb250RmFjZXMgPSBtX2ZvbnRGYWNlcy5hZGQoZmFtaWx5TmFtZSwgbnVsbHB0cikuaXRlcmF0
b3ItPnNlY29uZDsKICAgICAgICAgaWYgKCFmYW1pbHlGb250RmFjZXMpIHsKICAgICAgICAgICAg
IGZhbWlseUZvbnRGYWNlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNl
PiA+KTsKIApAQCAtNDg3LDEzICs0ODcsMTMgQEAgRm9udERhdGEqIENTU0ZvbnRTZWxlY3Rvcjo6
Z2V0Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGMKICAg
ICAgICAgcmV0dXJuIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVz
Y3JpcHRpb24sIGZhbWlseU5hbWUpOwogICAgIH0KIAotICAgIE93blB0cjxIYXNoTWFwPHVuc2ln
bmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4gPiYgc2VnbWVudGVkRm9udEZhY2VD
YWNoZSA9IG1fZm9udHMuYWRkKGZhbWlseSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAg
IE93blB0cjxIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+ID4g
PiYgc2VnbWVudGVkRm9udEZhY2VDYWNoZSA9IG1fZm9udHMuYWRkKGZhbWlseSwgbnVsbHB0ciku
aXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUpCiAgICAg
ICAgIHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUgPSBhZG9wdFB0cihuZXcgSGFzaE1hcDx1bnNpZ25l
ZCwgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+KTsKIAogICAgIEZvbnRUcmFpdHNNYXNr
IHRyYWl0c01hc2sgPSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwogCi0gICAgUmVmUHRy
PENTU1NlZ21lbnRlZEZvbnRGYWNlPiYgZmFjZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFk
ZCh0cmFpdHNNYXNrLCAwKS5pdGVyYXRvci0+dmFsdWU7CisgICAgUmVmUHRyPENTU1NlZ21lbnRl
ZEZvbnRGYWNlPiYgZmFjZSA9IHNlZ21lbnRlZEZvbnRGYWNlQ2FjaGUtPmFkZCh0cmFpdHNNYXNr
LCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBmYWNlID0g
Q1NTU2VnbWVudGVkRm9udEZhY2U6OmNyZWF0ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IGFkNmNiYTkyMmFjYWNiNGEyMWEx
MTc0ZDk1OGQ1NmVlMzQwYmZmZGMuLjYzMDQwZjNiZTZlOThkZjJjOWQ5NTJjNWFkNDY0MTU2MTk0
NTQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjphZGRDbGll
bnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2kKICAgICBpZiAoaXQg
PT0gbV9jbGllbnRzLmVuZCgpKQogICAgICAgICBtX2NsaWVudHMuYWRkKHJlbmRlcmVyLCBTaXpl
QW5kQ291bnQoc2l6ZSwgMSkpOwogICAgIGVsc2UgewotICAgICAgICBTaXplQW5kQ291bnQmIHNp
emVDb3VudCA9IGl0LT52YWx1ZTsKKyAgICAgICAgU2l6ZUFuZENvdW50JiBzaXplQ291bnQgPSBp
dC0+c2Vjb25kOwogICAgICAgICArK3NpemVDb3VudC5jb3VudDsKICAgICB9CiB9CkBAIC02OSw3
ICs2OSw3IEBAIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVtb3ZlQ2xpZW50KFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCiAgICAgQVNTRVJUKGl0ICE9IG1fY2xpZW50cy5lbmQoKSk7CiAK
ICAgICBJbnRTaXplIHJlbW92ZWRJbWFnZVNpemU7Ci0gICAgU2l6ZUFuZENvdW50JiBzaXplQ291
bnQgPSBpdC0+dmFsdWU7CisgICAgU2l6ZUFuZENvdW50JiBzaXplQ291bnQgPSBpdC0+c2Vjb25k
OwogICAgIEludFNpemUgc2l6ZSA9IHNpemVDb3VudC5zaXplOwogICAgIGlmICghc2l6ZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgbV9zaXplcy5yZW1vdmUoc2l6ZSk7CkBAIC04Nyw3ICs4Nyw3IEBA
IEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpnZXRJbWFnZShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBjb25zdCBJbnRTaXplJiBzCiB7CiAgICAgUmVuZGVyT2JqZWN0U2l6ZUNvdW50TWFw
OjppdGVyYXRvciBpdCA9IG1fY2xpZW50cy5maW5kKHJlbmRlcmVyKTsKICAgICBpZiAoaXQgIT0g
bV9jbGllbnRzLmVuZCgpKSB7Ci0gICAgICAgIFNpemVBbmRDb3VudCYgc2l6ZUNvdW50ID0gaXQt
PnZhbHVlOworICAgICAgICBTaXplQW5kQ291bnQmIHNpemVDb3VudCA9IGl0LT5zZWNvbmQ7CiAg
ICAgICAgIEludFNpemUgb2xkU2l6ZSA9IHNpemVDb3VudC5zaXplOwogICAgICAgICBpZiAob2xk
U2l6ZSAhPSBzaXplKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZT4gcHJvdGVjdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZh
Y2UuY3BwCmluZGV4IDFiNzUzNGMxM2Y5YmMzOWNkMGIxMTI0YjBjNjc2ZmY4MzRlZTViYjUuLjk4
MzQyNTQ2OTI0Zjg2NDJiZWY3MDIwYmIwZWJjODY0NDE3MjVjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIEZvbnRE
YXRhKiBDU1NTZWdtZW50ZWRGb250RmFjZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpCiAgICAgRm9udFRyYWl0c01hc2sgZGVzaXJlZFRyYWl0c01hc2sg
PSBmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpOwogICAgIHVuc2lnbmVkIGhhc2hLZXkgPSAo
KGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwgKEZvbnRUcmFpdHNN
YXNrV2lkdGggKyAxKSkgfCAoKGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpID09IFZlcnRp
Y2FsID8gMSA6IDApIDw8IEZvbnRUcmFpdHNNYXNrV2lkdGgpIHwgZGVzaXJlZFRyYWl0c01hc2s7
CiAKLSAgICBTZWdtZW50ZWRGb250RGF0YSomIGZvbnREYXRhID0gbV9mb250RGF0YVRhYmxlLmFk
ZChoYXNoS2V5LCAwKS5pdGVyYXRvci0+dmFsdWU7CisgICAgU2VnbWVudGVkRm9udERhdGEqJiBm
b250RGF0YSA9IG1fZm9udERhdGFUYWJsZS5hZGQoaGFzaEtleSwgMCkuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICBpZiAoZm9udERhdGEpCiAgICAgICAgIHJldHVybiBmb250RGF0YTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggOGRkYTU4ZDU3YWE3NTQ3YjIyNWYwNTUwYWRmNzAx
Mjg3ZTEyY2EwZS4uZWFiZWU0OTNhNDFhYjdlNDQyN2NmMjhmZDcwMzQ4MWIwYWQwODc5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUgQ1NTU2VsZWN0b3I6OnBhcnNlUHNldWRvVHlwZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBQc2V1ZG9Vbmtub3duOwogICAgIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRv
VHlwZSA9IG5hbWVUb1BzZXVkb1R5cGVNYXAoKTsKICAgICBIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT46Oml0ZXJhdG9yIHNsb3QgPSBuYW1lVG9Qc2V1
ZG9UeXBlLT5maW5kKG5hbWUuaW1wbCgpKTsKLSAgICByZXR1cm4gc2xvdCA9PSBuYW1lVG9Qc2V1
ZG9UeXBlLT5lbmQoKSA/IFBzZXVkb1Vua25vd24gOiBzbG90LT52YWx1ZTsKKyAgICByZXR1cm4g
c2xvdCA9PSBuYW1lVG9Qc2V1ZG9UeXBlLT5lbmQoKSA/IFBzZXVkb1Vua25vd24gOiBzbG90LT5z
ZWNvbmQ7CiB9CiAKIGJvb2wgQ1NTU2VsZWN0b3I6OmlzVW5rbm93blBzZXVkb1R5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNwcAppbmRleCBj
MTY4OTkxOWQxNmVlMTZmMGVlMDczMTkxOTk2ZTk3YzVjOGZjOTBjLi5jZTc1N2I5MzNiM2Y0YTMw
MmU4NzE2NTY4ZDAzZTAzZGJmMWIwNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cApAQCAtNzgsOCArNzgsOCBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1
ZVBvb2w6OmNyZWF0ZUNvbG9yVmFsdWUodW5zaWduZWQgcmdiVmFsdWUpCiAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBkdW1teVZhbHVlOwogICAgIENvbG9yVmFsdWVDYWNoZTo6QWRkUmVz
dWx0IGVudHJ5ID0gbV9jb2xvclZhbHVlQ2FjaGUuYWRkKHJnYlZhbHVlLCBkdW1teVZhbHVlKTsK
ICAgICBpZiAoZW50cnkuaXNOZXdFbnRyeSkKLSAgICAgICAgZW50cnkuaXRlcmF0b3ItPnZhbHVl
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKLSAgICByZXR1cm4g
ZW50cnkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBlbnRyeS5pdGVyYXRvci0+c2Vjb25kID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKKyAgICByZXR1cm4gZW50
cnkuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Q1NTVmFsdWVQb29sOjpjcmVhdGVWYWx1ZShkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXMgdHlwZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJp
bWl0aQogCiBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNyZWF0
ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiB7Ci0gICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlLmFkZChm
YW1pbHlOYW1lLCAwKS5pdGVyYXRvci0+dmFsdWU7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiYgdmFsdWUgPSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlLmFkZChmYW1pbHlOYW1lLCAwKS5p
dGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShmYW1pbHlOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORyk7CiAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiBzCiAgICAgaWYgKG1fZm9udEZhY2VWYWx1ZUNhY2hlLnNpemUoKSA+IG1heGlt
dW1Gb250RmFjZUNhY2hlU2l6ZSkKICAgICAgICAgbV9mb250RmFjZVZhbHVlQ2FjaGUuY2xlYXIo
KTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+JiB2YWx1ZSA9IG1fZm9udEZhY2VWYWx1ZUNh
Y2hlLmFkZChzdHJpbmcsIDApLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiYgdmFsdWUgPSBtX2ZvbnRGYWNlVmFsdWVDYWNoZS5hZGQoc3RyaW5nLCAwKS5pdGVyYXRv
ci0+c2Vjb25kOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHZhbHVlID0gQ1NTUGFyc2VyOjpw
YXJzZUZvbnRGYWNlVmFsdWUoc3RyaW5nKTsKICAgICByZXR1cm4gdmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDgxMDFmMjg5NzA3ZDg3YjQwNTFlODc1YzhiNDkzNGI4ZWU0MDVjNGUuLjVmYzJkMzgwMzU1
YTkzOGVhMGVlZDdkM2U0NDAxODZlNGI5MTdiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zNDYsNyArMzQ2
LDcgQEAgQ1NTVmFsdWUqIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y2xvbmVBbmRD
YWNoZUZvckNTU09NKENTU1ZhbHVlKiBpbnRlcm4KICAgICBpZiAoIW1fY3Nzb21DU1NWYWx1ZUNs
b25lcykKICAgICAgICAgbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzID0gYWRvcHRQdHIobmV3IEhhc2hN
YXA8Q1NTVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+ID4pOwogICAgIAotICAgIFJlZlB0cjxDU1NW
YWx1ZT4mIGNsb25lZFZhbHVlID0gbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzLT5hZGQoaW50ZXJuYWxW
YWx1ZSwgUmVmUHRyPENTU1ZhbHVlPigpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgUmVmUHRyPENT
U1ZhbHVlPiYgY2xvbmVkVmFsdWUgPSBtX2Nzc29tQ1NTVmFsdWVDbG9uZXMtPmFkZChpbnRlcm5h
bFZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+KCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFj
bG9uZWRWYWx1ZSkKICAgICAgICAgY2xvbmVkVmFsdWUgPSBpbnRlcm5hbFZhbHVlLT5jbG9uZUZv
ckNTU09NKCk7CiAgICAgcmV0dXJuIGNsb25lZFZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyLmNwcAppbmRleCBmZTFkYmY0YmFmZDU1NjIwNTNkNGIzYTg4MzE5OGMxZDUyYTUx
NzZjLi40ODZhNGRiYjgxYzFjNWRjZjk5YTNkYWIwZDY5MmM0MDg2MDFjY2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyLmNwcApAQCAtMTAxNCwyMSArMTAxNCwyMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgQ291bnRlckRpcmVjdGl2ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAg
ICAgICAgIEl0ZXJhdG9yIGVuZCA9IHBhcmVudE1hcC5lbmQoKTsKICAgICAgICAgZm9yIChJdGVy
YXRvciBpdCA9IHBhcmVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpdC0+a2V5LCBDb3Vu
dGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBDb3VudGVyRGly
ZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaXQtPmZpcnN0LCBDb3VudGVyRGlyZWN0aXZl
cygpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9
PSBSZXNldCkgewotICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9IGl0LT52YWx1
ZS5tX3Jlc2V0OwotICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldFZhbHVlID0gaXQt
PnZhbHVlLm1fcmVzZXRWYWx1ZTsKKyAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXQg
PSBpdC0+c2Vjb25kLm1fcmVzZXQ7CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0
VmFsdWUgPSBpdC0+c2Vjb25kLm1fcmVzZXRWYWx1ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgLy8gSW5oZXJpdGluZyBhIGNvdW50ZXItaW5jcmVtZW50IG1lYW5zIHRh
a2luZyB0aGUgcGFyZW50J3MgY3VycmVudCB2YWx1ZSBmb3IgdGhlIGNvdW50ZXIKICAgICAgICAg
ICAgICAgICAvLyBhbmQgYWRkaW5nIGl0IHRvIGl0c2VsZi4KLSAgICAgICAgICAgICAgICBkaXJl
Y3RpdmVzLm1faW5jcmVtZW50ID0gaXQtPnZhbHVlLm1faW5jcmVtZW50OworICAgICAgICAgICAg
ICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQgPSBpdC0+c2Vjb25kLm1faW5jcmVtZW50OwogICAg
ICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IDA7CiAgICAgICAgICAg
ICAgICAgaWYgKGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgaW5jcmVtZW50VmFsdWUgPSBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IGNsYW1wVG9JbnRl
Z2VyKGluY3JlbWVudFZhbHVlICsgaXQtPnZhbHVlLm1faW5jcmVtZW50VmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSBjbGFtcFRvSW50ZWdl
cihpbmNyZW1lbnRWYWx1ZSArIGl0LT5zZWNvbmQubV9pbmNyZW1lbnRWYWx1ZSk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3Jl
bWVudCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRW
YWx1ZSA9IGl0LT52YWx1ZS5tX2luY3JlbWVudFZhbHVlOworICAgICAgICAgICAgICAgICAgICBk
aXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSBpdC0+c2Vjb25kLm1faW5jcmVtZW50VmFsdWU7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMDQ2LDkg
KzEwNDYsOSBAQCBwdWJsaWM6CiAgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKICAg
ICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAg
ICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KQotICAgICAgICAgICAgICAg
IGl0LT52YWx1ZS5tX3Jlc2V0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC5t
X3Jlc2V0ID0gZmFsc2U7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXQtPnZh
bHVlLm1faW5jcmVtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC5tX2lu
Y3JlbWVudCA9IGZhbHNlOwogCiAgICAgICAgIGludCBsZW5ndGggPSBsaXN0ID8gbGlzdC0+bGVu
Z3RoKCkgOiAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CkBA
IC0xMDYyLDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBp
ZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgp
KS0+Z2V0U3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIGludCB2YWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpLT5nZXRJbnRWYWx1ZSgpOwotICAg
ICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZp
ZXIuaW1wbCgpLCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAg
ICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQoaWRlbnRpZmllci5p
bXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAg
ICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CiAgICAgICAgICAgICAgICAgZGlyZWN0
aXZlcy5tX3Jlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXRW
YWx1ZSA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDk2NTEy
NzlhZWYzMGZlZTRlMzFlOWUxMDFkODFlNDQwMTY5NzIyNWEuLjE1ZGUzYTc5OGMwNTE0NTY2NDk1
Njg2MzQ1MjJjZTJiMTdlMDRjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
QEAgLTQ5OCw3ICs0OTgsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlcygp
CiAgICAgbV9mZWF0dXJlcy5hZGQobV9hdXRob3JTdHlsZS0+ZmVhdHVyZXMoKSk7CiAjaWYgRU5B
QkxFKFNUWUxFX1NDT1BFRCkKICAgICBmb3IgKFNjb3BlZFJ1bGVTZXRNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYmVnaW4oKTsgaXQgIT0gbV9zY29wZWRBdXRob3JTdHls
ZXMuZW5kKCk7ICsraXQpCi0gICAgICAgIG1fZmVhdHVyZXMuYWRkKGl0LT52YWx1ZS0+ZmVhdHVy
ZXMoKSk7CisgICAgICAgIG1fZmVhdHVyZXMuYWRkKGl0LT5zZWNvbmQtPmZlYXR1cmVzKCkpOwog
I2VuZGlmCiAgICAgaWYgKG1fdXNlclN0eWxlKQogICAgICAgICBtX2ZlYXR1cmVzLmFkZChtX3Vz
ZXJTdHlsZS0+ZmVhdHVyZXMoKSk7CkBAIC01MzUsNyArNTM1LDcgQEAgaW5saW5lIFJ1bGVTZXQq
IFN0eWxlUmVzb2x2ZXI6OnJ1bGVTZXRGb3JTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29w
ZSkgY29uc3QKICAgICBpZiAoIXNjb3BlLT5oYXNTY29wZWRIVE1MU3R5bGVDaGlsZCgpKQogICAg
ICAgICByZXR1cm4gMDsKICAgICBTY29wZWRSdWxlU2V0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc2NvcGVkQXV0aG9yU3R5bGVzLmZpbmQoc2NvcGUpOwotICAgIHJldHVybiBpdCAhPSBtX3Nj
b3BlZEF1dGhvclN0eWxlcy5lbmQoKSA/IGl0LT52YWx1ZS5nZXQoKSA6IDA7IAorICAgIHJldHVy
biBpdCAhPSBtX3Njb3BlZEF1dGhvclN0eWxlcy5lbmQoKSA/IGl0LT5zZWNvbmQuZ2V0KCkgOiAw
OyAKIH0KICNlbmRpZgogCkBAIC01NTgsOCArNTU4LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjph
cHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJl
ZlAKICAgICAgICAgaWYgKHNjb3BlKSB7CiAgICAgICAgICAgICBTY29wZWRSdWxlU2V0TWFwOjpB
ZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zY29wZWRBdXRob3JTdHlsZXMuYWRkKHNjb3BlLCBudWxs
cHRyKTsKICAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gUnVsZVNldDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGRSdWxlc0Zyb21TaGVldChzaGVl
dCwgKm1fbWVkaXVtLCB0aGlzLCBzY29wZSk7CisgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT5zZWNvbmQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwgKm1fbWVkaXVtLCB0
aGlzLCBzY29wZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCkBA
IC02ODksMTAgKzY4OSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnN3ZWVwTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSgpCiAgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZTo6aXRlcmF0b3IgaXQgPSBt
X21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuYmVnaW4oKTsKICAgICBNYXRjaGVkUHJvcGVydGllc0Nh
Y2hlOjppdGVyYXRvciBlbmQgPSBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuZW5kKCk7CiAgICAg
Zm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRp
ZXM+JiBtYXRjaGVkUHJvcGVydGllcyA9IGl0LT52YWx1ZS5tYXRjaGVkUHJvcGVydGllczsKKyAg
ICAgICAgVmVjdG9yPE1hdGNoZWRQcm9wZXJ0aWVzPiYgbWF0Y2hlZFByb3BlcnRpZXMgPSBpdC0+
c2Vjb25kLm1hdGNoZWRQcm9wZXJ0aWVzOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hl
ZFByb3BlcnRpZXNbaV0ucHJvcGVydGllcy0+aGFzT25lUmVmKCkpIHsKLSAgICAgICAgICAgICAg
ICB0b1JlbW92ZS5hcHBlbmQoaXQtPmtleSk7CisgICAgICAgICAgICAgICAgdG9SZW1vdmUuYXBw
ZW5kKGl0LT5maXJzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJh
bWVTdHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqIGVsCiAg
ICAgaWYgKGl0ID09IG1fa2V5ZnJhbWVzUnVsZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWVzKiBrZXlmcmFtZXNSdWxlID0gaXQtPnZhbHVl
LmdldCgpOworICAgIGNvbnN0IFN0eWxlUnVsZUtleWZyYW1lcyoga2V5ZnJhbWVzUnVsZSA9IGl0
LT5zZWNvbmQuZ2V0KCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIHBvcHVsYXRlIHRoZSBzdHls
ZSBmb3IgZWFjaCBrZXlmcmFtZQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFt
ZT4gPiYga2V5ZnJhbWVzID0ga2V5ZnJhbWVzUnVsZS0+a2V5ZnJhbWVzKCk7CkBAIC0yNTY2LDcg
KzI1NjYsNyBAQCBzdGF0aWMgdm9pZCByZXBvcnRBdG9tUnVsZU1hcChNZW1vcnlDbGFzc0luZm8q
IGluZm8sIGNvbnN0IFJ1bGVTZXQ6OkF0b21SdWxlTWFwJgogewogICAgIGluZm8tPmFkZEhhc2hN
YXAoYXRvbWljUnVsZU1hcCk7CiAgICAgZm9yIChSdWxlU2V0OjpBdG9tUnVsZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBhdG9taWNSdWxlTWFwLmJlZ2luKCk7IGl0ICE9IGF0b21pY1J1bGVNYXAu
ZW5kKCk7ICsraXQpCi0gICAgICAgIGluZm8tPmFkZEluc3RydW1lbnRlZFZlY3RvcigqaXQtPnZh
bHVlKTsKKyAgICAgICAgaW5mby0+YWRkSW5zdHJ1bWVudGVkVmVjdG9yKCppdC0+c2Vjb25kKTsK
IH0KIAogdm9pZCBSdWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdApAQCAtMjYzNyw3ICsyNjM3LDcgQEAgdm9pZCBSdWxlU2V0
OjphZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBj
b25zdCBSdWxlRGEKIHsKICAgICBpZiAoIWtleSkKICAgICAgICAgcmV0dXJuOwotICAgIE93blB0
cjxWZWN0b3I8UnVsZURhdGE+ID4mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5h
ZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghcnVsZXMpCiAgICAg
ICAgIHJ1bGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSdWxlRGF0YT4pOwogICAgIHJ1bGVzLT5h
cHBlbmQocnVsZURhdGEpOwpAQCAtMjc5OCw3ICsyNzk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IHNocmlua01hcFZlY3RvcnNUb0ZpdChSdWxlU2V0OjpBdG9tUnVsZU1hcCYgbWFwKQogewogICAg
IFJ1bGVTZXQ6OkF0b21SdWxlTWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CiAgICAgZm9y
IChSdWxlU2V0OjpBdG9tUnVsZU1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnNocmlua1RvRml0KCk7CisgICAgICAgIGl0
LT5zZWNvbmQtPnNocmlua1RvRml0KCk7CiB9CiAKIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQo
KQpAQCAtMjk0NCw3ICsyOTQ0LDcgQEAgY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZUl0ZW0qIFN0eWxlUmVzb2x2ZXI6OmZpbmRGcm9tTWF0Y2hlZFAKICAgICBNYXRj
aGVkUHJvcGVydGllc0NhY2hlOjppdGVyYXRvciBpdCA9IG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZS5maW5kKGhhc2gpOwogICAgIGlmIChpdCA9PSBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUuZW5k
KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtJiBj
YWNoZUl0ZW0gPSBpdC0+dmFsdWU7CisgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0mIGNh
Y2hlSXRlbSA9IGl0LT5zZWNvbmQ7CiAKICAgICBzaXplX3Qgc2l6ZSA9IG1hdGNoUmVzdWx0Lm1h
dGNoZWRQcm9wZXJ0aWVzLnNpemUoKTsKICAgICBpZiAoc2l6ZSAhPSBjYWNoZUl0ZW0ubWF0Y2hl
ZFByb3BlcnRpZXMuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcAppbmRleCA4MjI4ODIzNDBhOTJlNGQxODM4NzM2YTdmZGU2OTgxMTlhMDMxNjc1Li4zZWFh
MGRhMzY5MTIwY2ZmMTBiYjljYmNlNTNiNWE3NGNhZDJhZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgU3R5bGVT
aGVldENvbnRlbnRzOjpwYXJzZXJBZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVm
aXgsIGNvbnN0IEF0CiAgICAgUHJlZml4TmFtZXNwYWNlVVJJTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9uYW1lc3BhY2VzLmFkZChwcmVmaXgsIHVyaSk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQogICAgICAgICByZXR1cm47Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHVyaTsK
KyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IHVyaTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBTdHlsZVNoZWV0Q29udGVudHM6OmRldGVybWluZU5hbWVzcGFjZShjb25zdCBBdG9taWNT
dHJpbmcmIHByZWZpeCkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFN0
eWxlU2hlZXRDb250ZW50czo6ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYg
cAogICAgIFByZWZpeE5hbWVzcGFjZVVSSU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX25hbWVz
cGFjZXMuZmluZChwcmVmaXgpOwogICAgIGlmIChpdCA9PSBtX25hbWVzcGFjZXMuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBudWxsQXRvbTsKLSAgICByZXR1cm4gaXQtPnZhbHVlOworICAgIHJldHVy
biBpdC0+c2Vjb25kOwogfQogCiB2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6cmVxdWVzdEltcG9y
dGVkU3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCogcm9vdFNoZWV0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuY3BwCmluZGV4IDlmYTUwOWJiOTUxZDM4MDkxNDAwMDAx
MWVlNWNlNjUxNGE5OGQ0NmIuLmU2NzIzMjlhZjhkZTM3OGJlZmRmYzE0ZjhhY2JkMGYyZWMwYzc0
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGVja2VkUmFkaW9CdXR0b25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKQEAgLTE4
NSw3ICsxODUsNyBAQCB2b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OmFkZEJ1dHRvbihIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKICAgICAgICAg
bV9uYW1lVG9Hcm91cE1hcCA9IGFkb3B0UHRyKG5ldyBOYW1lVG9Hcm91cE1hcCk7CiAKLSAgICBP
d25QdHI8UmFkaW9CdXR0b25Hcm91cD4mIGdyb3VwID0gbV9uYW1lVG9Hcm91cE1hcC0+YWRkKGVs
ZW1lbnQtPm5hbWUoKS5pbXBsKCksIFBhc3NPd25QdHI8UmFkaW9CdXR0b25Hcm91cD4oKSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiYgZ3JvdXAgPSBtX25h
bWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC0+bmFtZSgpLmltcGwoKSwgUGFzc093blB0cjxSYWRp
b0J1dHRvbkdyb3VwPigpKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZ3JvdXApCiAgICAg
ICAgIGdyb3VwID0gUmFkaW9CdXR0b25Hcm91cDo6Y3JlYXRlKCk7CiAgICAgZ3JvdXAtPmFkZChl
bGVtZW50KTsKQEAgLTI0Niw4ICsyNDYsOCBAQCB2b2lkIENoZWNrZWRSYWRpb0J1dHRvbnM6OnJl
bW92ZUJ1dHRvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogICAgIE5hbWVUb0dyb3VwTWFw
OjppdGVyYXRvciBpdCA9IG1fbmFtZVRvR3JvdXBNYXAtPmZpbmQoZWxlbWVudC0+bmFtZSgpLmlt
cGwoKSk7CiAgICAgaWYgKGl0ID09IG1fbmFtZVRvR3JvdXBNYXAtPmVuZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgaXQtPnZhbHVlLT5yZW1vdmUoZWxlbWVudCk7Ci0gICAgaWYgKGl0LT52YWx1
ZS0+aXNFbXB0eSgpKSB7CisgICAgaXQtPnNlY29uZC0+cmVtb3ZlKGVsZW1lbnQpOworICAgIGlm
IChpdC0+c2Vjb25kLT5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIG1heSBza2lw
IGRlYWxsb2NhdGluZyB0aGUgZW1wdHkgUmFkaW9CdXR0b25Hcm91cCBmb3IKICAgICAgICAgLy8g
cGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuIElmIHdlIGRvIHNvLCB3ZSBuZWVkIHRvIGNoYW5nZSB0
aGUga2V5IHR5cGUKICAgICAgICAgLy8gb2YgbV9uYW1lVG9Hcm91cE1hcCBmcm9tIEF0b21pY1N0
cmluZ0ltcGwqIHRvIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGlsZExpc3RNdXRhdGlvblNjb3BlLmNwcAppbmRleCBhZmQ4ZGQ5ZjFiMDA5ODVjN2Ey
N2JiYmJkYTNlYmY4MDc3NmQ0YzdjLi5mNGEyZGEwNGFiNjE1ODEzZjg2NGFlMTM1NmY0ZWFhNGRi
MGJmZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUu
Y3BwCkBAIC0xOTIsMjcgKzE5MiwyNyBAQCB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2NvcGU6Ok11
dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjpjaGlsZEFkZGVkKE5vZGUqIHRhcmdldAogewogICAg
IEhhc2hNYXA8Tm9kZSosIE93blB0cjxDaGlsZExpc3RNdXRhdGlvblNjb3BlOjpNdXRhdGlvbkFj
Y3VtdWxhdG9yPiA+OjppdGVyYXRvciBpdGVyID0gbV9hY2N1bXVsYXRpb25zLmZpbmQodGFyZ2V0
KTsKICAgICBBU1NFUlQoaXRlciAhPSBtX2FjY3VtdWxhdGlvbnMuZW5kKCkpOwotICAgIGlmIChp
dGVyID09IG1fYWNjdW11bGF0aW9ucy5lbmQoKSB8fCAhaXRlci0+dmFsdWUpCisgICAgaWYgKGl0
ZXIgPT0gbV9hY2N1bXVsYXRpb25zLmVuZCgpIHx8ICFpdGVyLT5zZWNvbmQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGl0ZXItPnZhbHVlLT5jaGlsZEFkZGVkKGNoaWxkKTsKKyAgICBpdGVyLT5z
ZWNvbmQtPmNoaWxkQWRkZWQoY2hpbGQpOwogfQogCiB2b2lkIENoaWxkTGlzdE11dGF0aW9uU2Nv
cGU6Ok11dGF0aW9uQWNjdW11bGF0aW9uUm91dGVyOjp3aWxsUmVtb3ZlQ2hpbGQoTm9kZSogdGFy
Z2V0LCBOb2RlKiBjaGlsZCkKIHsKICAgICBIYXNoTWFwPE5vZGUqLCBPd25QdHI8Q2hpbGRMaXN0
TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVsYXRvcj4gPjo6aXRlcmF0b3IgaXRlciA9IG1f
YWNjdW11bGF0aW9ucy5maW5kKHRhcmdldCk7CiAgICAgQVNTRVJUKGl0ZXIgIT0gbV9hY2N1bXVs
YXRpb25zLmVuZCgpKTsKLSAgICBpZiAoaXRlciA9PSBtX2FjY3VtdWxhdGlvbnMuZW5kKCkgfHwg
IWl0ZXItPnZhbHVlKQorICAgIGlmIChpdGVyID09IG1fYWNjdW11bGF0aW9ucy5lbmQoKSB8fCAh
aXRlci0+c2Vjb25kKQogICAgICAgICByZXR1cm47CiAKLSAgICBpdGVyLT52YWx1ZS0+d2lsbFJl
bW92ZUNoaWxkKGNoaWxkKTsKKyAgICBpdGVyLT5zZWNvbmQtPndpbGxSZW1vdmVDaGlsZChjaGls
ZCk7CiB9CiAKIHZvaWQgQ2hpbGRMaXN0TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVsYXRp
b25Sb3V0ZXI6OmluY3JlbWVudFNjb3BpbmdMZXZlbChOb2RlKiB0YXJnZXQpCiB7CiAgICAgU2Nv
cGluZ0xldmVsTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9zY29waW5nTGV2ZWxzLmFkZCh0YXJn
ZXQsIDEpOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgKysocmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgICsrKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI5LDggKzIyOSw4IEBAIHZvaWQgQ2hpbGRM
aXN0TXV0YXRpb25TY29wZTo6TXV0YXRpb25BY2N1bXVsYXRpb25Sb3V0ZXI6OmRlY3JlbWVudFNj
b3BpbmdMZXZlbChOCiAgICAgU2NvcGluZ0xldmVsTWFwOjppdGVyYXRvciBpdGVyID0gbV9zY29w
aW5nTGV2ZWxzLmZpbmQodGFyZ2V0KTsKICAgICBBU1NFUlQoaXRlciAhPSBtX3Njb3BpbmdMZXZl
bHMuZW5kKCkpOwogCi0gICAgLS0oaXRlci0+dmFsdWUpOwotICAgIGlmIChpdGVyLT52YWx1ZSA+
IDApCisgICAgLS0oaXRlci0+c2Vjb25kKTsKKyAgICBpZiAoaXRlci0+c2Vjb25kID4gMCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9zY29waW5nTGV2ZWxzLnJlbW92ZShpdGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGZkMjkxM2MzYTZiMTc1YzY2NTU3N2ZmOTVhNDVkZDUzNGU2
NGJjMTUuLjkxZmEyZTgzY2RjNDA1ZTlkZTRiOGI0ODFiMWI5NWRjNDIxOTY3MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMjk0Nyw3ICsyOTQ3LDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+KiBEb2N1bWVudDo6cGFnZUdyb3VwVXNlclNoZWV0cygpIGNvbnN0
CiAKICAgICBVc2VyU3R5bGVTaGVldE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gc2hlZXRzTWFw
LT5lbmQoKTsKICAgICBmb3IgKFVzZXJTdHlsZVNoZWV0TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IHNoZWV0c01hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IFVz
ZXJTdHlsZVNoZWV0VmVjdG9yKiBzaGVldHMgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIGNv
bnN0IFVzZXJTdHlsZVNoZWV0VmVjdG9yKiBzaGVldHMgPSBpdC0+c2Vjb25kLmdldCgpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hlZXRzLT5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgY29uc3QgVXNlclN0eWxlU2hlZXQqIHNoZWV0ID0gc2hlZXRzLT5hdChpKS5nZXQo
KTsKICAgICAgICAgICAgIGlmIChzaGVldC0+aW5qZWN0ZWRGcmFtZXMoKSA9PSBJbmplY3RJblRv
cEZyYW1lT25seSAmJiBvd25lckVsZW1lbnQoKSkKQEAgLTQ4MzAsMTAgKzQ4MzAsMTAgQEAgUGFz
c1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OndpbmRvd05hbWVkSXRlbXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIE5hbWVkQ29sbGVjdGlvbk1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fd2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuYWRkKG5hbWUsIDApOwogICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICBS
ZWZQdHI8SFRNTE5hbWVDb2xsZWN0aW9uPiBjb2xsZWN0aW9uID0gSFRNTE5hbWVDb2xsZWN0aW9u
OjpjcmVhdGUodGhpcywgV2luZG93TmFtZWRJdGVtcywgbmFtZSk7Ci0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IGNvbGxlY3Rpb24uZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQgPSBjb2xsZWN0aW9uLmdldCgpOwogICAgIHJldHVybiBjb2xsZWN0aW9uLnJlbGVhc2UoKTsK
IH0KIApAQCAtNDg0MSwxMCArNDg0MSwxMCBAQCBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBE
b2N1bWVudDo6ZG9jdW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZQogewog
ICAgIE5hbWVkQ29sbGVjdGlvbk1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fZG9jdW1lbnROYW1l
ZEl0ZW1Db2xsZWN0aW9ucy5hZGQobmFtZSwgMCk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIFJlZlB0cjxIVE1MTmFtZUNvbGxlY3Rp
b24+IGNvbGxlY3Rpb24gPSBIVE1MTmFtZUNvbGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBEb2N1bWVu
dE5hbWVkSXRlbXMsIG5hbWUpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBjb2xsZWN0
aW9uLmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gY29sbGVjdGlvbi5nZXQo
KTsKICAgICByZXR1cm4gY29sbGVjdGlvbi5yZWxlYXNlKCk7CiB9CiAKQEAgLTUxNzksNyArNTE3
OSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250
ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QKIAogSFRNTENhbnZhc0VsZW1lbnQqIERvY3Vt
ZW50OjpnZXRDU1NDYW52YXNFbGVtZW50KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBSZWZQ
dHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBlbGVtZW50ID0gbV9jc3NDYW52YXNFbGVtZW50cy5hZGQo
bmFtZSwgMCkuaXRlcmF0b3ItPnZhbHVlOworICAgIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4m
IGVsZW1lbnQgPSBtX2Nzc0NhbnZhc0VsZW1lbnRzLmFkZChuYW1lLCAwKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgZWxlbWVudCA9IEhUTUxDYW52YXNFbGVt
ZW50OjpjcmVhdGUodGhpcyk7CiAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IGIyZjAwODk1
NGZlN2VhMGU2NzBkYjcxNWI2MzUzZDI1M2JhMjk1YTMuLmEzZWJjOTM2OTMyNWE0N2IyZTYyOTI4
Njk2MGI0ZDZmZWJjMmYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgRG9jdW1lbnRNYXJrZXIqIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjo6bWFya2VyQ29udGFpbmluZ1BvaW50KGNvbnN0IExheW91
dFBvaW4KICAgICBNYXJrZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fbWFya2Vycy5lbmQoKTsKICAg
ICBmb3IgKE1hcmtlck1hcDo6aXRlcmF0b3Igbm9kZUl0ZXJhdG9yID0gbV9tYXJrZXJzLmJlZ2lu
KCk7IG5vZGVJdGVyYXRvciAhPSBlbmQ7ICsrbm9kZUl0ZXJhdG9yKSB7CiAgICAgICAgIC8vIGlu
bmVyIGxvb3A7IHByb2Nlc3MgZWFjaCBtYXJrZXIgaW4gdGhpcyBub2RlCi0gICAgICAgIE1hcmtl
ckxpc3QqIGxpc3QgPSBub2RlSXRlcmF0b3ItPnZhbHVlOworICAgICAgICBNYXJrZXJMaXN0KiBs
aXN0ID0gbm9kZUl0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIHVuc2lnbmVkIG1hcmtlckNvdW50
ID0gbGlzdC0+c2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIG1hcmtlckluZGV4ID0gMDsg
bWFya2VySW5kZXggPCBtYXJrZXJDb3VudDsgKyttYXJrZXJJbmRleCkgewogICAgICAgICAgICAg
UmVuZGVyZWREb2N1bWVudE1hcmtlciYgbWFya2VyID0gbGlzdC0+YXQobWFya2VySW5kZXgpOwpA
QCAtMzk5LDcgKzM5OSw3IEBAIFZlY3RvcjxJbnRSZWN0PiBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyCiAgICAgTWFya2VyTWFw
OjppdGVyYXRvciBlbmQgPSBtX21hcmtlcnMuZW5kKCk7CiAgICAgZm9yIChNYXJrZXJNYXA6Oml0
ZXJhdG9yIG5vZGVJdGVyYXRvciA9IG1fbWFya2Vycy5iZWdpbigpOyBub2RlSXRlcmF0b3IgIT0g
ZW5kOyArK25vZGVJdGVyYXRvcikgewogICAgICAgICAvLyBpbm5lciBsb29wOyBwcm9jZXNzIGVh
Y2ggbWFya2VyIGluIHRoaXMgbm9kZQotICAgICAgICBNYXJrZXJMaXN0KiBsaXN0ID0gbm9kZUl0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgTWFya2VyTGlzdCogbGlzdCA9IG5vZGVJdGVyYXRvci0+
c2Vjb25kOwogICAgICAgICB1bnNpZ25lZCBtYXJrZXJDb3VudCA9IGxpc3QtPnNpemUoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBtYXJrZXJJbmRleCA9IDA7IG1hcmtlckluZGV4IDwgbWFya2Vy
Q291bnQ7ICsrbWFya2VySW5kZXgpIHsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1l
bnRNYXJrZXImIG1hcmtlciA9IGxpc3QtPmF0KG1hcmtlckluZGV4KTsKQEAgLTQyNiw3ICs0MjYs
NyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2VycyhOb2RlKiBu
b2RlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVAogICAgIAogICAgIE1hcmtlck1hcDo6aXRlcmF0
b3IgaXRlcmF0b3IgPSBtX21hcmtlcnMuZmluZChub2RlKTsKICAgICBpZiAoaXRlcmF0b3IgIT0g
bV9tYXJrZXJzLmVuZCgpKQotICAgICAgICByZW1vdmVNYXJrZXJzRnJvbUxpc3Qobm9kZSwgaXRl
cmF0b3ItPnZhbHVlLCBtYXJrZXJUeXBlcyk7CisgICAgICAgIHJlbW92ZU1hcmtlcnNGcm9tTGlz
dChub2RlLCBpdGVyYXRvci0+c2Vjb25kLCBtYXJrZXJUeXBlcyk7CiB9CiAKIHZvaWQgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlcyBtYXJrZXJUeXBlcykKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6cmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgbWFy
a2VyVAogICAgIE1hcmtlck1hcCBtYXJrZXJNYXBDb3B5ID0gbV9tYXJrZXJzOwogICAgIE1hcmtl
ck1hcDo6aXRlcmF0b3IgZW5kID0gbWFya2VyTWFwQ29weS5lbmQoKTsKICAgICBmb3IgKE1hcmtl
ck1hcDo6aXRlcmF0b3IgaSA9IG1hcmtlck1hcENvcHkuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkK
LSAgICAgICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0KGktPmtleS5nZXQoKSwgaS0+dmFsdWUsIG1h
cmtlclR5cGVzKTsKKyAgICAgICAgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0KGktPmZpcnN0LmdldCgp
LCBpLT5zZWNvbmQsIG1hcmtlclR5cGVzKTsKICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJU
eXBlcy5yZW1vdmUobWFya2VyVHlwZXMpOwogfQogCkBAIC00OTUsMTAgKzQ5NSwxMCBAQCB2b2lk
IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVwYWludE1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGVzIG1hcmtlcgogICAgIC8vIG91dGVyIGxvb3A6IHByb2Nlc3MgZWFjaCBtYXJr
ZXJlZCBub2RlIGluIHRoZSBkb2N1bWVudAogICAgIE1hcmtlck1hcDo6aXRlcmF0b3IgZW5kID0g
bV9tYXJrZXJzLmVuZCgpOwogICAgIGZvciAoTWFya2VyTWFwOjppdGVyYXRvciBpID0gbV9tYXJr
ZXJzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IGktPmtl
eS5nZXQoKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGktPmZpcnN0LmdldCgpOwogCiAgICAgICAg
IC8vIGlubmVyIGxvb3A6IHByb2Nlc3MgZWFjaCBtYXJrZXIgaW4gdGhlIGN1cnJlbnQgbm9kZQot
ICAgICAgICBNYXJrZXJMaXN0KiBsaXN0ID0gaS0+dmFsdWU7CisgICAgICAgIE1hcmtlckxpc3Qq
IGxpc3QgPSBpLT5zZWNvbmQ7CiAgICAgICAgIGJvb2wgbm9kZU5lZWRzUmVwYWludCA9IGZhbHNl
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsaXN0LT5zaXplKCk7ICsraSkgewog
ICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0gbGlzdC0+YXQoaSk7CkBAIC01MjYs
NyArNTI2LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmludmFsaWRhdGVSZW5k
ZXJlZFJlY3RzRm9yTWFya2Vyc0luUmVjdChjb25zdCBMYXkKICAgICBmb3IgKE1hcmtlck1hcDo6
aXRlcmF0b3IgaSA9IG1fbWFya2Vycy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7CiAKICAgICAg
ICAgLy8gaW5uZXIgbG9vcDogcHJvY2VzcyBlYWNoIHJlY3QgaW4gdGhlIGN1cnJlbnQgbm9kZQot
ICAgICAgICBNYXJrZXJMaXN0KiBsaXN0ID0gaS0+dmFsdWU7CisgICAgICAgIE1hcmtlckxpc3Qq
IGxpc3QgPSBpLT5zZWNvbmQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGxpc3RJbmRleCA9IDA7IGxp
c3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpCiAgICAgICAgICAgICBsaXN0LT5h
dChsaXN0SW5kZXgpLmludmFsaWRhdGUocik7CiAgICAgfQpAQCAtNjc1LDkgKzY3NSw5IEBAIHZv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaG93TWFya2VycygpIGNvbnN0CiAgICAgZnBy
aW50ZihzdGRlcnIsICIlZCBub2RlcyBoYXZlIG1hcmtlcnM6XG4iLCBtX21hcmtlcnMuc2l6ZSgp
KTsKICAgICBNYXJrZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbWFya2Vycy5lbmQoKTsK
ICAgICBmb3IgKE1hcmtlck1hcDo6Y29uc3RfaXRlcmF0b3Igbm9kZUl0ZXJhdG9yID0gbV9tYXJr
ZXJzLmJlZ2luKCk7IG5vZGVJdGVyYXRvciAhPSBlbmQ7ICsrbm9kZUl0ZXJhdG9yKSB7Ci0gICAg
ICAgIE5vZGUqIG5vZGUgPSBub2RlSXRlcmF0b3ItPmtleS5nZXQoKTsKKyAgICAgICAgTm9kZSog
bm9kZSA9IG5vZGVJdGVyYXRvci0+Zmlyc3QuZ2V0KCk7CiAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXAiLCBub2RlKTsKLSAgICAgICAgTWFya2VyTGlzdCogbGlzdCA9IG5vZGVJdGVyYXRvci0+
dmFsdWU7CisgICAgICAgIE1hcmtlckxpc3QqIGxpc3QgPSBub2RlSXRlcmF0b3ItPnNlY29uZDsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBtYXJrZXJJbmRleCA9IDA7IG1hcmtlckluZGV4IDwgbGlz
dC0+c2l6ZSgpOyArK21hcmtlckluZGV4KSB7CiAgICAgICAgICAgICBjb25zdCBEb2N1bWVudE1h
cmtlciYgbWFya2VyID0gbGlzdC0+YXQobWFya2VySW5kZXgpOwogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgJWQ6WyVkOiVkXSglZCkiLCBtYXJrZXIudHlwZSgpLCBtYXJrZXIuc3RhcnRP
ZmZzZXQoKSwgbWFya2VyLmVuZE9mZnNldCgpLCBtYXJrZXIuYWN0aXZlTWF0Y2goKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCmluZGV4IDEyOTdlNTEwMmZiNGU3
OWNlM2RiMTEyMzU3MDIxZTNkZDA1NTRhNTEuLjA4MmFhMDc0MGE3MWNjZGY1MGUxZDQyZDIzZDMx
N2U2M2FmMmY0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVy
ZWRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRG9jdW1lbnRPcmRlcmVkTWFwOjpyZW1vdmUoQXRvbWlj
U3RyaW5nSW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQogCiAgICAgbV9tYXAuY2hlY2tDb25z
aXN0ZW5jeSgpOwogICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1fbWFwLmZpbmQoa2V5
KTsKLSAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQoKSAmJiBjYWNoZWRJdGVtLT52YWx1
ZSA9PSBlbGVtZW50KQorICAgIGlmIChjYWNoZWRJdGVtICE9IG1fbWFwLmVuZCgpICYmIGNhY2hl
ZEl0ZW0tPnNlY29uZCA9PSBlbGVtZW50KQogICAgICAgICBtX21hcC5yZW1vdmUoY2FjaGVkSXRl
bSk7CiAgICAgZWxzZQogICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5yZW1vdmUoa2V5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IDBlYWZiYzRl
NTM3NmNhOTcyMmMyZWVmOWMwNmEzNzY4ODkzYTBhYTcuLjQ3MWU1MTllMGZiY2I4NmQ0ZWQyNTg2
ZWFjOWFmZjQ0MjVjNDU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QXR0cmlidXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1
dGVEYXRhLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBBdHRyTGlzdCogZW5zdXJlQXR0
ckxpc3RGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgQVNTRVJUKCFhdHRyTGlzdE1h
cCgpLmNvbnRhaW5zKGVsZW1lbnQpKTsKICAgICBlbGVtZW50LT5zZXRIYXNBdHRyTGlzdCgpOwog
ICAgIEF0dHJMaXN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYXR0ckxpc3RNYXAoKS5hZGQoZWxl
bWVudCwgYWRvcHRQdHIobmV3IEF0dHJMaXN0KSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgp
OwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVBdHRyTGlzdEZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggODliOWNjNzBi
NzgwYzhjODBiYjc0NGQxZDhjMWVmZjE3NTgwYzUxNy4uZTU4MzkwYzVlNGFkOWQ4ODBlY2VmZGQ1
MWQ4ZjBkZDgwODc2MTE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlz
cGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQCBFdmVudFRhcmdldCogRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0
ZXI6OmZpbmRSZWxhdGVkVGFyZ2V0KFRyZWVTY29wZSogc2NvcGUpCiAgICAgICAgIHBhcmVudFRy
ZWVTY29wZXMuYXBwZW5kKHNjb3BlKTsKICAgICAgICAgUmVsYXRlZFRhcmdldE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZm91bmQgPSBtX3JlbGF0ZWRUYXJnZXRNYXAuZmluZChzY29wZSk7CiAgICAgICAg
IGlmIChmb3VuZCAhPSBtX3JlbGF0ZWRUYXJnZXRNYXAuZW5kKCkpIHsKLSAgICAgICAgICAgIHJl
bGF0ZWRUYXJnZXQgPSBmb3VuZC0+dmFsdWU7CisgICAgICAgICAgICByZWxhdGVkVGFyZ2V0ID0g
Zm91bmQtPnNlY29uZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNj
b3BlID0gc2NvcGUtPnBhcmVudFRyZWVTY29wZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXJNYXAuY3BwCmluZGV4IGFmOGM0OGFlZGU1NTEzNmY3NGZlMTg0NzgxZDA1MjhiNDFkN2Nj
YWMuLmMxZmQ0ZDdjOTU3YTY0YmZmNzg4ZjkwMWU2MWRlMDFjYTA5MjI3N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBWZWN0b3I8
QXRvbWljU3RyaW5nPiBFdmVudExpc3RlbmVyTWFwOjpldmVudFR5cGVzKCkgY29uc3QKICAgICAg
ICAgRXZlbnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yIGl0ID0gbV9oYXNoTWFwLT5iZWdpbigp
OwogICAgICAgICBFdmVudExpc3RlbmVySGFzaE1hcDo6aXRlcmF0b3IgZW5kID0gbV9oYXNoTWFw
LT5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHR5
cGVzLmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgICAgIHR5cGVzLmFwcGVuZChpdC0+Zmlyc3Qp
OwogICAgIH0gZWxzZSBpZiAobV9zaW5nbGVFdmVudExpc3RlbmVyVmVjdG9yKQogICAgICAgICB0
eXBlcy5hcHBlbmQobV9zaW5nbGVFdmVudExpc3RlbmVyVHlwZSk7CiAKQEAgLTEzNiw5ICsxMzYs
OSBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbgogICAgIGlmIChtX2hhc2hNYXApIHsKICAgICAg
ICAgRXZlbnRMaXN0ZW5lckhhc2hNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2hhc2hNYXAtPmFk
ZChldmVudFR5cGUsIG51bGxwdHIpOwogICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0g
ICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IEV2ZW50TGlz
dGVuZXJWZWN0b3IpOworICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBhZG9w
dFB0cihuZXcgRXZlbnRMaXN0ZW5lclZlY3Rvcik7CiAKLSAgICAgICAgcmV0dXJuIGFkZExpc3Rl
bmVyVG9WZWN0b3IocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOworICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihyZXN1bHQuaXRlcmF0
b3ItPnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIGlm
ICghbV9zaW5nbGVFdmVudExpc3RlbmVyVmVjdG9yKSB7CkBAIC0xNzksOCArMTc5LDggQEAgYm9v
bCBFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXIqIGxpc3QKICAgICBpZiAoaXQgPT0gbV9oYXNoTWFwLT5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCB3YXNSZW1vdmVkID0gcmVtb3ZlTGlzdGVu
ZXJGcm9tVmVjdG9yKGl0LT52YWx1ZS5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUsIGluZGV4
T2ZSZW1vdmVkTGlzdGVuZXIpOwotICAgIGlmIChpdC0+dmFsdWUtPmlzRW1wdHkoKSkKKyAgICBi
b29sIHdhc1JlbW92ZWQgPSByZW1vdmVMaXN0ZW5lckZyb21WZWN0b3IoaXQtPnNlY29uZC5nZXQo
KSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUsIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpOworICAgIGlm
IChpdC0+c2Vjb25kLT5pc0VtcHR5KCkpCiAgICAgICAgIG1faGFzaE1hcC0+cmVtb3ZlKGl0KTsK
ICAgICByZXR1cm4gd2FzUmVtb3ZlZDsKIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCBFdmVudExpc3Rl
bmVyVmVjdG9yKiBFdmVudExpc3RlbmVyTWFwOjpmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKQogICAgICAgICBFdmVudExpc3RlbmVySGFzaE1hcDo6aXRlcmF0b3IgaXQgPSBtX2hh
c2hNYXAtPmZpbmQoZXZlbnRUeXBlKTsKICAgICAgICAgaWYgKGl0ID09IG1faGFzaE1hcC0+ZW5k
KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgfQogCiAgICAgaWYgKG1f
c2luZ2xlRXZlbnRMaXN0ZW5lclR5cGUgPT0gZXZlbnRUeXBlKQpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlRmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZy
b21NYXJrdXAoY29uc3QgQXRvbWljU3RyCiAgICAgICAgIEV2ZW50TGlzdGVuZXJIYXNoTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBtX2hhc2hNYXAtPmZpbmQoZXZlbnRUeXBlKTsKICAgICAgICAgQVNT
RVJUKHJlc3VsdCAhPSBtX2hhc2hNYXAtPmVuZCgpKTsKIAotICAgICAgICBFdmVudExpc3RlbmVy
VmVjdG9yKiBsaXN0ZW5lclZlY3RvciA9IHJlc3VsdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIEV2
ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVyVmVjdG9yID0gcmVzdWx0LT5zZWNvbmQuZ2V0KCk7
CiAgICAgICAgIEFTU0VSVChsaXN0ZW5lclZlY3Rvcik7CiAKICAgICAgICAgcmVtb3ZlRmlyc3RM
aXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGxpc3RlbmVyVmVjdG9yKTsKQEAgLTI2NSw3ICsyNjUs
NyBAQCB2b2lkIEV2ZW50TGlzdGVuZXJNYXA6OmNvcHlFdmVudExpc3RlbmVyc05vdENyZWF0ZWRG
cm9tTWFya3VwVG9UYXJnZXQoRXZlbnRUYXJnZQogICAgIGlmIChtX2hhc2hNYXApIHsKICAgICAg
ICAgRXZlbnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faGFzaE1hcC0+ZW5kKCk7
CiAgICAgICAgIGZvciAoRXZlbnRMaXN0ZW5lckhhc2hNYXA6Oml0ZXJhdG9yIGl0ID0gbV9oYXNo
TWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBjb3B5TGlzdGVuZXJz
Tm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChpdC0+a2V5LCBpdC0+dmFsdWUuZ2V0KCksIHRh
cmdldCk7CisgICAgICAgICAgICBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1Rh
cmdldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQuZ2V0KCksIHRhcmdldCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCBFdmVudExpc3RlbmVyKiBFdmVudExpc3Rl
bmVySXRlcmF0b3I6Om5leHRMaXN0ZW5lcigpCiAKICAgICBpZiAobV9tYXAtPm1faGFzaE1hcCkg
ewogICAgICAgICBmb3IgKDsgbV9tYXBJdGVyYXRvciAhPSBtX21hcEVuZDsgKyttX21hcEl0ZXJh
dG9yKSB7Ci0gICAgICAgICAgICBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSAqbV9t
YXBJdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0
ZW5lcnMgPSAqbV9tYXBJdGVyYXRvci0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKG1faW5kZXgg
PCBsaXN0ZW5lcnMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lcnNbbV9p
bmRleCsrXS5saXN0ZW5lci5nZXQoKTsKICAgICAgICAgICAgIG1faW5kZXggPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAppbmRleCBhYWZh
OGEyZDFiNTMwYjdkMGYzZTM2NzA1NThlOGM5NmI5NDhhZmI4Li41ZmMyNmFjZmVlMzMyZWI3ZDJk
NjE5YmE1OTIwYzczM2Y1YmIwZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtNDIsOSArNDIsOSBAQCB2b2lkIElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSWRUYXJn
ZXRPYnNlcgogICAgIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1fcmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IE9i
c2VydmVyU2V0KCkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IGFkb3B0UHRy
KG5ldyBPYnNlcnZlclNldCgpKTsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZChv
YnNlcnZlcik7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPmFkZChvYnNlcnZlcik7CiB9
CiAKIHZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjpyZW1vdmVPYnNlcnZlcihjb25zdCBB
dG9taWNTdHJpbmcmIGlkLCBJZFRhcmdldE9ic2VydmVyKiBvYnNlcnZlcikKQEAgLTU0LDcgKzU0
LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OnJlbW92ZU9ic2VydmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQsIElkVGFyZ2V0T2IKIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6
aXRlcmF0b3IgaXRlciA9IG1fcmVnaXN0cnkuZmluZChpZC5pbXBsKCkpOwogCi0gICAgT2JzZXJ2
ZXJTZXQqIHNldCA9IGl0ZXItPnZhbHVlLmdldCgpOworICAgIE9ic2VydmVyU2V0KiBzZXQgPSBp
dGVyLT5zZWNvbmQuZ2V0KCk7CiAgICAgc2V0LT5yZW1vdmUob2JzZXJ2ZXIpOwogICAgIGlmIChz
ZXQtPmlzRW1wdHkoKSAmJiBzZXQgIT0gbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCkKICAgICAg
ICAgbV9yZWdpc3RyeS5yZW1vdmUoaXRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKaW5kZXggMmI5NWY5NjU2ODZhMTY4NjkzNzZlYmY0NjgzZTJlZTdlZDI5
ZWUzNi4uMzVjYjZjYjdhZjA1YzNlMTgwYmVkNjkzN2VjMjAwOGYyZWQ3MTUzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMzIzLDggKzMyMyw4IEBA
IHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNv
bnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0CiB7CiAgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwogICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29u
c3RfaXRlcmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGFk
ZEluc3RydW1lbnRlZE9iamVjdChpLT5rZXksIG93bmVyT2JqZWN0VHlwZSk7Ci0gICAgICAgIGFk
ZEluc3RydW1lbnRlZE9iamVjdChpLT52YWx1ZSwgb3duZXJPYmplY3RUeXBlKTsKKyAgICAgICAg
YWRkSW5zdHJ1bWVudGVkT2JqZWN0KGktPmZpcnN0LCBvd25lck9iamVjdFR5cGUpOworICAgICAg
ICBhZGRJbnN0cnVtZW50ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOwogICAg
IH0KIH0KIApAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjph
ZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUCiB7CiAg
ICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwogICAg
IGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1hcC5iZWdpbigpOyBp
ICE9IGVuZDsgKytpKQotICAgICAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3QoaS0+dmFsdWUsIG93
bmVyT2JqZWN0VHlwZSk7CisgICAgICAgIGFkZEluc3RydW1lbnRlZE9iamVjdChpLT5zZWNvbmQs
IG93bmVyT2JqZWN0VHlwZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlw
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuY3BwCmluZGV4IDRmYWQyMjA4MTg1M2NkODE1MzRkMzAwZDE2MWQ4OGIxYWE1ZTk0Yzgu
LjI0YzBjYjU4NjUxN2UwOGJjN2E4YjQwOTNmMjFkMzFlMGRiMmQ2NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApAQCAt
NjIsNyArNjIsNyBAQCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAoSGFzaE1hcDxNdXRhdGlvbk9icwogYm9vbCBNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCgpCiB7CiAgICAgZm9yIChIYXNo
TWFwPE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46Oml0
ZXJhdG9yIGl0ZXIgPSBtX29ic2VydmVycy5iZWdpbigpOyBpdGVyICE9IG1fb2JzZXJ2ZXJzLmVu
ZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKGhhc09sZFZhbHVlKGl0ZXItPnZhbHVlKSkKKyAg
ICAgICAgaWYgKGhhc09sZFZhbHVlKGl0ZXItPnNlY29uZCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzMsOCArNzMsOCBAQCB2b2lkIE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUGFzc1Jl
ZlB0cjxNdXRhdGlvblJlYwogICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0YXRpb24gPSBw
cnBNdXRhdGlvbjsKICAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uV2l0aE51bGxP
bGRWYWx1ZTsKICAgICBmb3IgKEhhc2hNYXA8TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uUmVj
b3JkRGVsaXZlcnlPcHRpb25zPjo6aXRlcmF0b3IgaXRlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7
IGl0ZXIgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsraXRlcikgewotICAgICAgICBNdXRhdGlvbk9i
c2VydmVyKiBvYnNlcnZlciA9IGl0ZXItPmtleTsKLSAgICAgICAgaWYgKGhhc09sZFZhbHVlKGl0
ZXItPnZhbHVlKSkgeworICAgICAgICBNdXRhdGlvbk9ic2VydmVyKiBvYnNlcnZlciA9IGl0ZXIt
PmZpcnN0OworICAgICAgICBpZiAoaGFzT2xkVmFsdWUoaXRlci0+c2Vjb25kKSkgewogICAgICAg
ICAgICAgb2JzZXJ2ZXItPmVucXVldWVNdXRhdGlvblJlY29yZChtdXRhdGlvbik7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGRkNTE3YThkZDU2
ZGU2YzI3NjBmMmUxYWVhZjA0YzUwZWUxZDgzYmEuLmEzYTFjMjJmMjU1NDlmN2ZjYWJmNDA3MDE2
MWFiNjk4ZWQyMWM3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lk
IE5vZGU6OmR1bXBTdGF0aXN0aWNzKCkKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwogICAgICAgICAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBzaXplX3Q+OjpBZGRSZXN1bHQgcmVzdWx0ID0gcGVyVGFnQ291bnQuYWRkKGVsZW1l
bnQtPnRhZ05hbWUoKSwgMSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSsrOworICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCsrOwogCiAgICAgICAgICAgICAg
ICAgaWYgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gZWxlbWVudC0+YXR0
cmlidXRlRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0cmli
dXRlRGF0YS0+bGVuZ3RoKCk7CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBOb2RlOjpkdW1wU3Rh
dGlzdGljcygpCiAKICAgICBwcmludGYoIkVsZW1lbnQgdGFnIG5hbWUgZGlzdGlidXRpb246XG4i
KTsKICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+OjppdGVyYXRvciBpdCA9IHBlclRh
Z0NvdW50LmJlZ2luKCk7IGl0ICE9IHBlclRhZ0NvdW50LmVuZCgpOyArK2l0KQotICAgICAgICBw
cmludGYoIiAgTnVtYmVyIG9mIDwlcz4gdGFnczogJXp1XG4iLCBpdC0+a2V5LnV0ZjgoKS5kYXRh
KCksIGl0LT52YWx1ZSk7CisgICAgICAgIHByaW50ZigiICBOdW1iZXIgb2YgPCVzPiB0YWdzOiAl
enVcbiIsIGl0LT5maXJzdC51dGY4KCkuZGF0YSgpLCBpdC0+c2Vjb25kKTsKIAogICAgIHByaW50
ZigiQXR0cmlidXRlczpcbiIpOwogICAgIHByaW50ZigiICBOdW1iZXIgb2YgQXR0cmlidXRlcyAo
bm9uLU5vZGUgYW5kIE5vZGUpOiAlenUgWyV6dV1cbiIsIGF0dHJpYnV0ZXMsIHNpemVvZihBdHRy
aWJ1dGUpKTsKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQog
ICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YU1hcCYgZGF0YU1hcCA9IE5vZGVSYXJl
RGF0YTo6cmFyZURhdGFNYXAoKTsKICAgICAgICAgTm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGFN
YXA6Oml0ZXJhdG9yIGl0ID0gZGF0YU1hcC5maW5kKHRoaXMpOwogICAgICAgICBBU1NFUlQoaXQg
IT0gZGF0YU1hcC5lbmQoKSk7Ci0gICAgICAgIGRlbGV0ZSBpdC0+dmFsdWU7CisgICAgICAgIGRl
bGV0ZSBpdC0+c2Vjb25kOwogICAgICAgICBkYXRhTWFwLnJlbW92ZShpdCk7CiAgICAgfQogICAg
IGNsZWFyRmxhZyhIYXNSYXJlRGF0YUZsYWcpOwpAQCAtMjI2NSwxOCArMjI2NSwxOCBAQCB2b2lk
IE5vZGVMaXN0c05vZGVEYXRhOjppbnZhbGlkYXRlQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJOYW1lKQogewogICAgIE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOjpjb25zdF9pdGVy
YXRvciBhdG9taWNOYW1lQ2FjaGVFbmQgPSBtX2F0b21pY05hbWVDYWNoZXMuZW5kKCk7CiAgICAg
Zm9yIChOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F0
b21pY05hbWVDYWNoZXMuYmVnaW4oKTsgaXQgIT0gYXRvbWljTmFtZUNhY2hlRW5kOyArK2l0KQot
ICAgICAgICBpdC0+dmFsdWUtPmludmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7CisgICAgICAgIGl0
LT5zZWNvbmQtPmludmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7CiAKICAgICBOb2RlTGlzdE5hbWVD
YWNoZU1hcDo6Y29uc3RfaXRlcmF0b3IgbmFtZUNhY2hlRW5kID0gbV9uYW1lQ2FjaGVzLmVuZCgp
OwogICAgIGZvciAoTm9kZUxpc3ROYW1lQ2FjaGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9u
YW1lQ2FjaGVzLmJlZ2luKCk7IGl0ICE9IG5hbWVDYWNoZUVuZDsgKytpdCkKLSAgICAgICAgaXQt
PnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOworICAgICAgICBpdC0+c2Vjb25kLT5p
bnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOwogCiAgICAgaWYgKGF0dHJOYW1lKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBUYWdOb2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yIHRhZ0NhY2hlRW5kID0g
bV90YWdOb2RlTGlzdENhY2hlTlMuZW5kKCk7CiAgICAgZm9yIChUYWdOb2RlTGlzdENhY2hlTlM6
Oml0ZXJhdG9yIGl0ID0gbV90YWdOb2RlTGlzdENhY2hlTlMuYmVnaW4oKTsgaXQgIT0gdGFnQ2Fj
aGVFbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKCk7CisgICAg
ICAgIGl0LT5zZWNvbmQtPmludmFsaWRhdGVDYWNoZSgpOwogfQogCiB2b2lkIE5vZGU6OmdldFN1
YnJlc291cmNlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKQEAgLTI0MzMsNyAr
MjQzMyw3IEBAIHZvaWQgTm9kZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24o
SGFzaE1hcDxNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpCiAgICAgICAgICAgICAgICAgTXV0YXRp
b25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5k
ZWxpdmVyeU9wdGlvbnMoKTsKICAgICAgICAgICAgICAgICBIYXNoTWFwPE11dGF0aW9uT2JzZXJ2
ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQgPSBv
YnNlcnZlcnMuYWRkKHJlZ2lzdHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlIHw9IGRlbGl2ZXJ5T3B0aW9uczsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwog
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI0NDYsNyArMjQ0Niw3IEBAIHZvaWQgTm9k
ZTo6Y29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxNdXRhdGlvbk9i
c2VydmVyKiwgTXV0YXRpCiAgICAgICAgICAgICAgICAgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9w
dGlvbnMgZGVsaXZlcnlPcHRpb25zID0gcmVnaXN0cmF0aW9uLT5kZWxpdmVyeU9wdGlvbnMoKTsK
ICAgICAgICAgICAgICAgICBIYXNoTWFwPE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29y
ZERlbGl2ZXJ5T3B0aW9ucz46OkFkZFJlc3VsdCByZXN1bHQgPSBvYnNlcnZlcnMuYWRkKHJlZ2lz
dHJhdGlvbi0+b2JzZXJ2ZXIoKSwgZGVsaXZlcnlPcHRpb25zKTsKICAgICAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlIHw9IGRlbGl2ZXJ5T3B0aW9uczsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT5zZWNvbmQgfD0gZGVsaXZlcnlPcHRpb25zOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IGY0MzE3YmRiYTVi
ZWRkYWRmMjQxMmJlZjIzNGM1NjIwNjEzNDUyODAuLjFmZGViYjZkMjE4NzM0ODU0NGM4MzIwZTJj
NTVkNmJkODcwOTc3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTY4LDEwICs2
OCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1h
cDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYXRvbWljTmFtZUNhY2hlcy5hZGQobmFtZWROb2RlTGlz
dEtleShsaXN0VHlwZSwgbmFtZSksIDApOwogICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocmVzdWx0Lml0ZXJhdG9y
LT5zZWNvbmQpOwogCiAgICAgICAgIFJlZlB0cjxUPiBsaXN0ID0gVDo6Y3JlYXRlKG5vZGUsIG5h
bWUpOwotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbGlzdC5nZXQoKTsKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBsaXN0LmdldCgpOwogICAgICAgICByZXR1cm4g
bGlzdC5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC04MCwxMCArODAsMTAgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgTm9kZUxpc3ROYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX25h
bWVDYWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXkobGlzdFR5cGUsIG5hbWUpLCAwKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUKj4ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VCo+KHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIAogICAgICAgICBSZWZQdHI8VD4g
bGlzdCA9IFQ6OmNyZWF0ZShub2RlLCBuYW1lKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IGxpc3QuZ2V0KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbGlz
dC5nZXQoKTsKICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogICAgIH0KIApAQCAtOTIs
MTAgKzkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9t
LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CiAgICAgICAgIFRhZ05vZGVMaXN0Q2FjaGVOUzo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fdGFnTm9kZUxpc3RDYWNoZU5TLmFkZChuYW1lLCAwKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kOwogCiAgICAgICAgIFJlZlB0cjxUYWdOb2RlTGlzdD4gbGlzdCA9IFRhZ05vZGVMaXN0Ojpj
cmVhdGUobm9kZSwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwotICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbGlzdC5nZXQoKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQgPSBsaXN0LmdldCgpOwogICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgfQog
CkBAIC0xMzYsMjEgKzEzNiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChvbGREb2N1bWVudCAh
PSBuZXdEb2N1bWVudCkgewogICAgICAgICAgICAgTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6
OmNvbnN0X2l0ZXJhdG9yIGF0b21pY05hbWVDYWNoZUVuZCA9IG1fYXRvbWljTmFtZUNhY2hlcy5l
bmQoKTsKICAgICAgICAgICAgIGZvciAoTm9kZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9hdG9taWNOYW1lQ2FjaGVzLmJlZ2luKCk7IGl0ICE9IGF0b21pY05h
bWVDYWNoZUVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIER5bmFtaWNTdWJ0cmVlTm9kZUxp
c3QqIGxpc3QgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICAgICAgRHluYW1pY1N1YnRyZWVOb2Rl
TGlzdCogbGlzdCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVu
cmVnaXN0ZXJOb2RlTGlzdENhY2hlKGxpc3QpOwogICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50
LT5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUobGlzdCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIE5vZGVMaXN0TmFtZUNhY2hlTWFwOjpjb25zdF9pdGVyYXRvciBuYW1lQ2FjaGVFbmQgPSBt
X25hbWVDYWNoZXMuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKE5vZGVMaXN0TmFtZUNhY2hlTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbmFtZUNhY2hlcy5iZWdpbigpOyBpdCAhPSBuYW1lQ2Fj
aGVFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBs
aXN0ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgICAgIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3Qq
IGxpc3QgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lz
dGVyTm9kZUxpc3RDYWNoZShsaXN0KTsKICAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+cmVn
aXN0ZXJOb2RlTGlzdENhY2hlKGxpc3QpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBU
YWdOb2RlTGlzdENhY2hlTlM6OmNvbnN0X2l0ZXJhdG9yIHRhZ0VuZCA9IG1fdGFnTm9kZUxpc3RD
YWNoZU5TLmVuZCgpOwogICAgICAgICAgICAgZm9yIChUYWdOb2RlTGlzdENhY2hlTlM6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV90YWdOb2RlTGlzdENhY2hlTlMuYmVnaW4oKTsgaXQgIT0gdGFnRW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCogbGlzdCA9
IGl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0
ID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWxpc3QtPmlzUm9vdGVkQXRE
b2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3Rlck5vZGVM
aXN0Q2FjaGUobGlzdCk7CiAgICAgICAgICAgICAgICAgbmV3RG9jdW1lbnQtPnJlZ2lzdGVyTm9k
ZUxpc3RDYWNoZShsaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAKaW5kZXggMmY0M2E1M2ZkZTZmNjI5OTA4NTRmZDBjNjQ3ZGZmMzBhZDdlOGIxYS4u
ZTU5NDA5YmNmNDJjNWI4MGUyOTc2YmY3OGJkZTgxODUzOGNiNjc0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2
b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICAgICAgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBhdHRycy5maW5kKCJ0eXBl
Iik7CiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBpZiAoaSAhPSBhdHRycy5lbmQoKSkK
LSAgICAgICAgICAgIHR5cGUgPSBpLT52YWx1ZTsKKyAgICAgICAgICAgIHR5cGUgPSBpLT5zZWNv
bmQ7CiAKICAgICAgICAgbV9pc0NTUyA9IHR5cGUuaXNFbXB0eSgpIHx8IHR5cGUgPT0gInRleHQv
Y3NzIjsKICNpZiBFTkFCTEUoWFNMVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAppbmRleCA1MzViNTcwYjVkN2RlOWY0YWY5MzU4M2U3YzcxZDEyYjJk
NzUzNWE4Li45MjQ0NWNhODBkYWY2MzMyMzlkMmY3OWNlZTk4ZGQ5ZGQ0NDFiMzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNzMsOSAr
MTczLDkgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9N
T2JqZWN0cygpCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBI
YXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0Vu
ZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2lu
KCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChp
dGVyLT5rZXktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAgICAgQVNT
RVJUKGl0ZXItPmtleS0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAgICAgICBpZiAoIWl0
ZXItPmtleS0+Y2FuU3VzcGVuZCgpKSB7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmly
c3QtPnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKKyAgICAgICAgaWYgKCFpdGVyLT5maXJzdC0+
Y2FuU3VzcGVuZCgpKSB7CiAgICAgICAgICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMg
PSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTkwLDkg
KzE5MCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVE
T01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6
aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAg
ICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0g
bV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytp
dGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5rZXktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA9PSB0aGlzKTsKLSAgICAgICAgQVNTRVJUKGl0ZXItPmtleS0+c3VzcGVuZElmTmVlZGVkQ2Fs
bGVkKCkpOwotICAgICAgICBpdGVyLT5rZXktPnN1c3BlbmQod2h5KTsKKyAgICAgICAgQVNTRVJU
KGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAg
IEFTU0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOworICAgICAgICBp
dGVyLT5maXJzdC0+c3VzcGVuZCh3aHkpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURP
TU9iamVjdHMgPSBmYWxzZTsKICAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSB0
cnVlOwpAQCAtMjA2LDkgKzIwNiw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVz
dW1lQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0g
dHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0
aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hN
YXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01P
YmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAg
ICAgIEFTU0VSVChpdGVyLT5rZXktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsK
LSAgICAgICAgQVNTRVJUKGl0ZXItPmtleS0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAg
ICAgICBpdGVyLT5rZXktPnJlc3VtZSgpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZp
cnN0LT5zdXNwZW5kSWZOZWVkZWRDYWxsZWQoKSk7CisgICAgICAgIGl0ZXItPmZpcnN0LT5yZXN1
bWUoKTsKICAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiB9
CkBAIC0yMjAsOSArMjIwLDkgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0
aXZlRE9NT2JqZWN0cygpCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsK
ICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2Jq
ZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0
aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3Rz
LmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFT
U0VSVChpdGVyLT5rZXktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKLSAgICAg
ICAgQVNTRVJUKGl0ZXItPmtleS0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwotICAgICAgICBp
dGVyLT5rZXktPnN0b3AoKTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c3Vz
cGVuZElmTmVlZGVkQ2FsbGVkKCkpOworICAgICAgICBpdGVyLT5maXJzdC0+c3RvcCgpOwogICAg
IH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKIApAQCAtMzgwLDcg
KzM4MCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVy
SW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckluCiB7CiAgICAgaWYgKG1pbmltdW1UaW1l
ckludGVydmFsKCkgIT0gb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpIHsKICAgICAgICAgZm9yIChU
aW1lb3V0TWFwOjppdGVyYXRvciBpdGVyID0gbV90aW1lb3V0cy5iZWdpbigpOyBpdGVyICE9IG1f
dGltZW91dHMuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgRE9NVGltZXIqIHRpbWVyID0g
aXRlci0+dmFsdWU7CisgICAgICAgICAgICBET01UaW1lciogdGltZXIgPSBpdGVyLT5zZWNvbmQ7
CiAgICAgICAgICAgICB0aW1lci0+YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwob2xkTWluaW11
bVRpbWVySW50ZXJ2YWwpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCmluZGV4IGVjYjVhMTYwZmIyNmZhYzRhN2QyNzE4MWEwYzI0NGViZDA0Y2U0NTMu
Ljc4NjJhZWZjYzNhYmE4ZTRiOTJjODQzMzJiNzRhOTYwM2NhZTcyMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBTZWxlY3RvclF1ZXJ5KiBT
ZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9ycywgRG9j
dW1lbnQqCiB7CiAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTZWxlY3RvclF1ZXJ5
PiA+OjppdGVyYXRvciBpdCA9IG1fZW50cmllcy5maW5kKHNlbGVjdG9ycyk7CiAgICAgaWYgKGl0
ICE9IG1fZW50cmllcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKKyAg
ICAgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiAKICAgICBDU1NQYXJzZXIgcGFyc2VyKGRv
Y3VtZW50KTsKICAgICBDU1NTZWxlY3Rvckxpc3Qgc2VsZWN0b3JMaXN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCmluZGV4IDFkYzFmYjBkZGUxZjAyM2YzZjhhNjUzYjIz
YWMzZDg3MzhlOGMzNDkuLjljY2U3ZDk1YjVlMTA0NDNjMDNlZGE1YjcyZjExMmM1NzA1MmU1MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKQEAgLTE1MCw3ICsxNTAs
NyBAQCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6flNwYWNlU3BsaXRTdHJpbmdEYXRhKCkKIAogUGFz
c1JlZlB0cjxTcGFjZVNwbGl0U3RyaW5nRGF0YT4gU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKIHsKLSAgICBTcGFjZVNwbGl0U3RyaW5nRGF0
YSomIGRhdGEgPSBzaGFyZWREYXRhTWFwKCkuYWRkKHN0cmluZywgMCkuaXRlcmF0b3ItPnZhbHVl
OworICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQo
c3RyaW5nLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBk
YXRhID0gbmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZyk7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCAxNTUz
ZWI0YjYxNzFmYWQ0ZTliNmY0YjIyOGU0YzUyZmI1MDFmMjg3Li5lNzVjZDUzMWQxNmY4ZDhlMjAy
MzY5Mjc5NmYxZmU0OWFjOGY3NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
CkBAIC0yNzcsMTQgKzI3NywxNCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0
ZVN0eWxlKCkKICAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZTo6aXRlcmF0b3IgY2FjaGVJ
dGVyYXRvcjsKICAgICBpZiAoY2FjaGVIYXNoKSB7CiAgICAgICAgIGNhY2hlSXRlcmF0b3IgPSBw
cmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmFkZChjYWNoZUhhc2gsIG51bGxwdHIpLml0ZXJh
dG9yOwotICAgICAgICBpZiAoY2FjaGVJdGVyYXRvci0+dmFsdWUgJiYgY2FjaGVJdGVyYXRvci0+
dmFsdWUtPmtleSAhPSBjYWNoZUtleSkKKyAgICAgICAgaWYgKGNhY2hlSXRlcmF0b3ItPnNlY29u
ZCAmJiBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQtPmtleSAhPSBjYWNoZUtleSkKICAgICAgICAgICAg
IGNhY2hlSGFzaCA9IDA7CiAgICAgfSBlbHNlCiAgICAgICAgIGNhY2hlSXRlcmF0b3IgPSBwcmVz
ZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmVuZCgpOwogCiAgICAgUmVmUHRyPFN0eWxlUHJvcGVy
dHlTZXQ+IHN0eWxlOwotICAgIGlmIChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+dmFsdWUp
IHsKLSAgICAgICAgc3R5bGUgPSBjYWNoZUl0ZXJhdG9yLT52YWx1ZS0+dmFsdWU7CisgICAgaWYg
KGNhY2hlSGFzaCAmJiBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQpIHsKKyAgICAgICAgc3R5bGUgPSBj
YWNoZUl0ZXJhdG9yLT5zZWNvbmQtPnZhbHVlOwogICAgICAgICBwcmVzZW50YXRpb25BdHRyaWJ1
dGVDYWNoZUNsZWFuZXIoKS5kaWRIaXRQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKGlzU1ZH
RWxlbWVudCgpID8gU1ZHQXR0cmlidXRlTW9kZSA6IENTU1F1aXJrc01vZGUpOwpAQCAtMjk4LDcg
KzI5OCw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogCiAg
ICAgYXR0cmlidXRlRGF0YSgpLT5zZXRBdHRyaWJ1dGVTdHlsZShzdHlsZS0+aXNFbXB0eSgpID8g
MCA6IHN0eWxlKTsKIAotICAgIGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnZhbHVl
KQorICAgIGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnNlY29uZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgT3duUHRyPFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlRW50cnk+IG5l
d0VudHJ5ID0gYWRvcHRQdHIobmV3IFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlRW50cnkpOwpA
QCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5
bGUoKQogICAgICAgICBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmNsZWFyKCk7CiAgICAg
ICAgIHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuc2V0KGNhY2hlSGFzaCwgbmV3RW50cnku
cmVsZWFzZSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2FjaGVJdGVyYXRvci0+dmFsdWUgPSBu
ZXdFbnRyeS5yZWxlYXNlKCk7CisgICAgICAgIGNhY2hlSXRlcmF0b3ItPnNlY29uZCA9IG5ld0Vu
dHJ5LnJlbGVhc2UoKTsKIH0KIAogdm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvQXR0
cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgaW50IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0KaW5kZXggNmNhNWQ1ZjAyOWM5
OTE2OTMzYjgyODlkMTQ1ZjBkMTIxYzZkNTY0Ni4uOTk5MTZjMWUwMGY0NDkyMmFhN2ViYzZjZmIw
MGZjNDk3NjhkNDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpAQCAtNTAsNyArNTAsNyBAQCBOU1Rl
eHRBbHRlcm5hdGl2ZXMqIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2ZVRl
eHRDb250ZXh0Q29udHJvbGxlcgogICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdHIg
PSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5maW5kKGNvbnRleHQpOwogICAgIGlmIChpdHIgPT0g
bV9hbHRlcm5hdGl2ZXNPYmplY3RNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAg
IHJldHVybiBpdHItPnZhbHVlLmdldCgpOworICAgIHJldHVybiBpdHItPnNlY29uZC5nZXQoKTsK
IH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXI6OnJlbW92ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29u
dGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggMGEwOGMxZWNh
N2M1Mjg3YzQ4NTdiYjc0NTRlNDMxNTBmY2MyYzA1Yy4uZTM1ZWZmMTllMTliYTljNWU1ZDE1Yzgw
MmI2YmI5ZmU0NTQxYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
QEAgLTIyOCw4ICsyMjgsOCBAQCB2b2lkIFNhdmVkRm9ybVN0YXRlOjpzZXJpYWxpemVUbyhWZWN0
b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IpIGNvbnN0CiB7CiAgICAgc3RhdGVWZWN0b3IuYXBwZW5k
KFN0cmluZzo6bnVtYmVyKG1fY29udHJvbFN0YXRlQ291bnQpKTsKICAgICBmb3IgKEZvcm1FbGVt
ZW50U3RhdGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGF0ZUZvck5ld0Zvcm1FbGVtZW50
cy5iZWdpbigpOyBpdCAhPSBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmVuZCgpOyArK2l0KSB7
Ci0gICAgICAgIGNvbnN0IEZvcm1FbGVtZW50S2V5JiBrZXkgPSBpdC0+a2V5OwotICAgICAgICBj
b25zdCBEZXF1ZTxGb3JtQ29udHJvbFN0YXRlPiYgcXVldWUgPSBpdC0+dmFsdWU7CisgICAgICAg
IGNvbnN0IEZvcm1FbGVtZW50S2V5JiBrZXkgPSBpdC0+Zmlyc3Q7CisgICAgICAgIGNvbnN0IERl
cXVlPEZvcm1Db250cm9sU3RhdGU+JiBxdWV1ZSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGZvciAo
RGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT46OmNvbnN0X2l0ZXJhdG9yIHF1ZUl0ZXJhdG9yID0gcXVl
dWUuYmVnaW4oKTsgcXVlSXRlcmF0b3IgIT0gcXVldWUuZW5kKCk7ICsrcXVlSXRlcmF0b3IpIHsK
ICAgICAgICAgICAgIHN0YXRlVmVjdG9yLmFwcGVuZChrZXkubmFtZSgpKTsKICAgICAgICAgICAg
IHN0YXRlVmVjdG9yLmFwcGVuZChrZXkudHlwZSgpKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lk
IFNhdmVkRm9ybVN0YXRlOjphcHBlbmRDb250cm9sU3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBBdG9taWNTdAogICAgIEZvcm1FbGVtZW50S2V5IGtleShuYW1lLmltcGwoKSwg
dHlwZS5pbXBsKCkpOwogICAgIEZvcm1FbGVtZW50U3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
dGF0ZUZvck5ld0Zvcm1FbGVtZW50cy5maW5kKGtleSk7CiAgICAgaWYgKGl0ICE9IG1fc3RhdGVG
b3JOZXdGb3JtRWxlbWVudHMuZW5kKCkpCi0gICAgICAgIGl0LT52YWx1ZS5hcHBlbmQoc3RhdGUp
OworICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChzdGF0ZSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IERlcXVlPEZvcm1Db250cm9sU3RhdGU+IHN0YXRlTGlzdDsKICAgICAgICAgc3RhdGVMaXN0LmFw
cGVuZChzdGF0ZSk7CkBAIC0yNTksMTAgKzI1OSwxMCBAQCBGb3JtQ29udHJvbFN0YXRlIFNhdmVk
Rm9ybVN0YXRlOjp0YWtlQ29udHJvbFN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
cwogICAgIEZvcm1FbGVtZW50U3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdGF0ZUZvck5ld0Zv
cm1FbGVtZW50cy5maW5kKEZvcm1FbGVtZW50S2V5KG5hbWUuaW1wbCgpLCB0eXBlLmltcGwoKSkp
OwogICAgIGlmIChpdCA9PSBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmVuZCgpKQogICAgICAg
ICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwotICAgIEFTU0VSVChpdC0+dmFsdWUuc2l6ZSgp
KTsKLSAgICBGb3JtQ29udHJvbFN0YXRlIHN0YXRlID0gaXQtPnZhbHVlLnRha2VGaXJzdCgpOwor
ICAgIEFTU0VSVChpdC0+c2Vjb25kLnNpemUoKSk7CisgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0
ZSA9IGl0LT5zZWNvbmQudGFrZUZpcnN0KCk7CiAgICAgbV9jb250cm9sU3RhdGVDb3VudC0tOwot
ICAgIGlmICghaXQtPnZhbHVlLnNpemUoKSkKKyAgICBpZiAoIWl0LT5zZWNvbmQuc2l6ZSgpKQog
ICAgICAgICBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLnJlbW92ZShpdCk7CiAgICAgcmV0dXJu
IHN0YXRlOwogfQpAQCAtMjcxLDEwICsyNzEsMTAgQEAgVmVjdG9yPFN0cmluZz4gU2F2ZWRGb3Jt
U3RhdGU6OmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJp
bmc+IHRvUmV0dXJuOwogICAgIGZvciAoRm9ybUVsZW1lbnRTdGF0ZU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmJlZ2luKCk7IGl0ICE9IG1fc3RhdGVG
b3JOZXdGb3JtRWxlbWVudHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgY29uc3QgRm9ybUVsZW1l
bnRLZXkmIGtleSA9IGl0LT5rZXk7CisgICAgICAgIGNvbnN0IEZvcm1FbGVtZW50S2V5JiBrZXkg
PSBpdC0+Zmlyc3Q7CiAgICAgICAgIGlmIChBdG9taWNTdHJpbmcoa2V5LnR5cGUoKSkgIT0gQXRv
bWljU3RyaW5nKCJmaWxlIikpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY29uc3Qg
RGVxdWU8Rm9ybUNvbnRyb2xTdGF0ZT4mIHF1ZXVlID0gaXQtPnZhbHVlOworICAgICAgICBjb25z
dCBEZXF1ZTxGb3JtQ29udHJvbFN0YXRlPiYgcXVldWUgPSBpdC0+c2Vjb25kOwogICAgICAgICBm
b3IgKERlcXVlPEZvcm1Db250cm9sU3RhdGU+Ojpjb25zdF9pdGVyYXRvciBxdWVJdGVyYXRvciA9
IHF1ZXVlLmJlZ2luKCk7IHF1ZUl0ZXJhdG9yICE9IHF1ZXVlLmVuZCgpOyArK3F1ZUl0ZXJhdG9y
KSB7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHNlbGVj
dGVkRmlsZXMgPSBIVE1MSW5wdXRFbGVtZW50OjpmaWxlc0Zyb21GaWxlSW5wdXRGb3JtQ29udHJv
bFN0YXRlKCpxdWVJdGVyYXRvcik7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNlbGVjdGVkRmlsZXMuc2l6ZSgpOyArK2kpCkBAIC0zNDksMTIgKzM0OSwxMiBAQCBBdG9taWNT
dHJpbmcgRm9ybUtleUdlbmVyYXRvcjo6Zm9ybUtleShjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlJiBjbwogICAgIH0KICAgICBGb3JtVG9LZXlNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9mb3JtVG9LZXlNYXAuZmluZChmb3JtKTsKICAgICBpZiAoaXQgIT0gbV9mb3JtVG9L
ZXlNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBp
dC0+c2Vjb25kOwogCiAgICAgU3RyaW5nIHNpZ25hdHVyZSA9IGZvcm1TaWduYXR1cmUoKmZvcm0p
OwogICAgIEFTU0VSVCghc2lnbmF0dXJlLmlzTnVsbCgpKTsKICAgICBGb3JtU2lnbmF0dXJlVG9O
ZXh0SW5kZXhNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2Zvcm1TaWduYXR1cmVUb05leHRJbmRl
eE1hcC5hZGQoc2lnbmF0dXJlLCAwKTsKLSAgICB1bnNpZ25lZCBuZXh0SW5kZXggPSByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlKys7CisgICAgdW5zaWduZWQgbmV4dEluZGV4ID0gcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQrKzsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVy
LmFwcGVuZChzaWduYXR1cmUpOwpAQCAtNDA1LDggKzQwNSw4IEBAIFBhc3NPd25QdHI8Rm9ybUNv
bnRyb2xsZXI6OlNhdmVkRm9ybVN0YXRlTWFwPiBGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRG
b3JtU3RhCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBzdGF0ZU1hcC0+YWRkKGtleUdlbmVyYXRvci0+Zm9ybUtleSgq
Y29udHJvbCkuaW1wbCgpLCBudWxscHRyKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNhdmVkRm9ybVN0YXRlOjpj
cmVhdGUoKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kQ29udHJvbFN0
YXRlKGNvbnRyb2wtPm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNv
bnRyb2xTdGF0ZSgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gU2F2
ZWRGb3JtU3RhdGU6OmNyZWF0ZSgpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+
YXBwZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wtPm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250
cm9sLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFw
LnJlbGVhc2UoKTsKIH0KQEAgLTQxOCw4ICs0MTgsOCBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29u
dHJvbGxlcjo6Zm9ybUVsZW1lbnRzU3RhdGUoKSBjb25zdAogICAgIHN0YXRlVmVjdG9yLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9mb3JtRWxlbWVudHNXaXRoU3RhdGUuc2l6ZSgpICogNCk7CiAg
ICAgc3RhdGVWZWN0b3IuYXBwZW5kKGZvcm1TdGF0ZVNpZ25hdHVyZSgpKTsKICAgICBmb3IgKFNh
dmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0YXRlTWFwLT5iZWdpbigpOyBp
dCAhPSBzdGF0ZU1hcC0+ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5k
KGl0LT5rZXkuZ2V0KCkpOwotICAgICAgICBpdC0+dmFsdWUtPnNlcmlhbGl6ZVRvKHN0YXRlVmVj
dG9yKTsKKyAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKGl0LT5maXJzdC5nZXQoKSk7CisgICAg
ICAgIGl0LT5zZWNvbmQtPnNlcmlhbGl6ZVRvKHN0YXRlVmVjdG9yKTsKICAgICB9CiAgICAgYm9v
bCBoYXNPbmx5U2lnbmF0dXJlID0gc3RhdGVWZWN0b3Iuc2l6ZSgpID09IDE7CiAgICAgaWYgKGhh
c09ubHlTaWduYXR1cmUpCkBAIC00NDEsOCArNDQxLDggQEAgRm9ybUNvbnRyb2xTdGF0ZSBGb3Jt
Q29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9s
RWwKICAgICBTYXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRl
TWFwLmZpbmQobV9mb3JtS2V5R2VuZXJhdG9yLT5mb3JtS2V5KGNvbnRyb2wpLmltcGwoKSk7CiAg
ICAgaWYgKGl0ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBG
b3JtQ29udHJvbFN0YXRlKCk7Ci0gICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IGl0LT52YWx1
ZS0+dGFrZUNvbnRyb2xTdGF0ZShjb250cm9sLm5hbWUoKSwgY29udHJvbC50eXBlKCkpOwotICAg
IGlmIChpdC0+dmFsdWUtPmlzRW1wdHkoKSkKKyAgICBGb3JtQ29udHJvbFN0YXRlIHN0YXRlID0g
aXQtPnNlY29uZC0+dGFrZUNvbnRyb2xTdGF0ZShjb250cm9sLm5hbWUoKSwgY29udHJvbC50eXBl
KCkpOworICAgIGlmIChpdC0+c2Vjb25kLT5pc0VtcHR5KCkpCiAgICAgICAgIG1fc2F2ZWRGb3Jt
U3RhdGVNYXAucmVtb3ZlKGl0KTsKICAgICByZXR1cm4gc3RhdGU7CiB9CkBAIC01MTEsNyArNTEx
LDcgQEAgVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmdldFJlZmVyZW5jZWRGaWxlUGF0
aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXQKICAgICBTYXZlZEZvcm1TdGF0ZU1hcCBtYXA7
CiAgICAgZm9ybVN0YXRlc0Zyb21TdGF0ZVZlY3RvcihzdGF0ZVZlY3RvciwgbWFwKTsKICAgICBm
b3IgKFNhdmVkRm9ybVN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBp
dCAhPSBtYXAuZW5kKCk7ICsraXQpCi0gICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+dmFsdWUt
PmdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSk7CisgICAgICAgIHRvUmV0dXJuLmFwcGVuZChpdC0+
c2Vjb25kLT5nZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkpOwogICAgIHJldHVybiB0b1JldHVybjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAxZWNiNjQ0Y2Ex
YjYzMDgwN2FkNjZhOTc0NGUzZGYzMzE0ZmVhZjQ2Li45MWUxOGEzZmJkZjJkODdhNmUwNzk0ZTdj
YjJiNzFiNjRmOGFiOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApA
QCAtNTU5LDcgKzU1OSw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0
YWdzKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogdm9pZCBIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZTo6
YXBwZW5kKE5vZGVDYWNoZU1hcCYgbWFwLCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgRWxlbWVu
dCogZWxlbWVudCkKIHsKLSAgICBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0b3IgPSBt
YXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBPd25QdHI8
VmVjdG9yPEVsZW1lbnQqPiA+JiB2ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIp
Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCF2ZWN0b3IpCiAgICAgICAgIHZlY3RvciA9IGFk
b3B0UHRyKG5ldyBWZWN0b3I8RWxlbWVudCo+KTsKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAK
aW5kZXggZDA4MWUyNDkwNWEwYWQ1OWU3NGU1ZGMwNWM3NDUxMDg2YTY4NGY0YS4uYjkxYWU1MDZl
Y2Y3OWUzZDYyZmUxN2U0Mzc3OTkzZmQzYzE0NmMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCBXZWJH
TFNoYXJlZE9iamVjdCogV2ViR0xGcmFtZWJ1ZmZlcjo6Z2V0QXR0YWNobWVudE9iamVjdChHQzNE
ZW51bSBhdHRhY2htZW50KSBjbwogV2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xBdHRhY2htZW50KiBX
ZWJHTEZyYW1lYnVmZmVyOjpnZXRBdHRhY2htZW50KEdDM0RlbnVtIGF0dGFjaG1lbnQpIGNvbnN0
CiB7CiAgICAgY29uc3QgQXR0YWNobWVudE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F0dGFj
aG1lbnRzLmZpbmQoYXR0YWNobWVudCk7Ci0gICAgcmV0dXJuIChpdCAhPSBtX2F0dGFjaG1lbnRz
LmVuZCgpKSA/IGl0LT52YWx1ZS5nZXQoKSA6IDA7CisgICAgcmV0dXJuIChpdCAhPSBtX2F0dGFj
aG1lbnRzLmVuZCgpKSA/IGl0LT5zZWNvbmQuZ2V0KCkgOiAwOwogfQogCiB2b2lkIFdlYkdMRnJh
bWVidWZmZXI6OnJlbW92ZUF0dGFjaG1lbnRGcm9tQm91bmRGcmFtZWJ1ZmZlcihHQzNEZW51bSBh
dHRhY2htZW50KQpAQCAtMzY3LDkgKzM2Nyw5IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6cmVt
b3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKFdlYkdMU2hhcmVkT2JqZWN0KiBhCiAg
ICAgd2hpbGUgKGNoZWNrTW9yZSkgewogICAgICAgICBjaGVja01vcmUgPSBmYWxzZTsKICAgICAg
ICAgZm9yIChBdHRhY2htZW50TWFwOjppdGVyYXRvciBpdCA9IG1fYXR0YWNobWVudHMuYmVnaW4o
KTsgaXQgIT0gbV9hdHRhY2htZW50cy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgV2ViR0xB
dHRhY2htZW50KiBhdHRhY2htZW50T2JqZWN0ID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICAg
ICAgV2ViR0xBdHRhY2htZW50KiBhdHRhY2htZW50T2JqZWN0ID0gaXQtPnNlY29uZC5nZXQoKTsK
ICAgICAgICAgICAgIGlmIChhdHRhY2htZW50T2JqZWN0LT5pc1NoYXJlZE9iamVjdChhdHRhY2ht
ZW50KSkgewotICAgICAgICAgICAgICAgIEdDM0RlbnVtIGF0dGFjaG1lbnRUeXBlID0gaXQtPmtl
eTsKKyAgICAgICAgICAgICAgICBHQzNEZW51bSBhdHRhY2htZW50VHlwZSA9IGl0LT5maXJzdDsK
ICAgICAgICAgICAgICAgICBhdHRhY2htZW50T2JqZWN0LT51bmF0dGFjaChjb250ZXh0KCktPmdy
YXBoaWNzQ29udGV4dDNEKCksIGF0dGFjaG1lbnRUeXBlKTsKICAgICAgICAgICAgICAgICByZW1v
dmVBdHRhY2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIoYXR0YWNobWVudFR5cGUpOwogICAgICAg
ICAgICAgICAgIGNoZWNrTW9yZSA9IHRydWU7CkBAIC00MTksOCArNDE5LDggQEAgR0MzRGVudW0g
V2ViR0xGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMoY29uc3QgY2hhcioqIHJlYXNvbikgY29uc3QK
ICAgICBib29sIGhhdmVTdGVuY2lsID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlRGVwdGhTdGVuY2ls
ID0gZmFsc2U7CiAgICAgZm9yIChBdHRhY2htZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
YXR0YWNobWVudHMuYmVnaW4oKTsgaXQgIT0gbV9hdHRhY2htZW50cy5lbmQoKTsgKytpdCkgewot
ICAgICAgICBXZWJHTEF0dGFjaG1lbnQqIGF0dGFjaG1lbnQgPSBpdC0+dmFsdWUuZ2V0KCk7Ci0g
ICAgICAgIGlmICghaXNBdHRhY2htZW50Q29tcGxldGUoYXR0YWNobWVudCwgaXQtPmtleSwgcmVh
c29uKSkKKyAgICAgICAgV2ViR0xBdHRhY2htZW50KiBhdHRhY2htZW50ID0gaXQtPnNlY29uZC5n
ZXQoKTsKKyAgICAgICAgaWYgKCFpc0F0dGFjaG1lbnRDb21wbGV0ZShhdHRhY2htZW50LCBpdC0+
Zmlyc3QsIHJlYXNvbikpCiAgICAgICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgaWYgKCFhdHRhY2htZW50
LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgICpyZWFzb24gPSAiYXR0YWNobWVudCBpcyBub3Qg
dmFsaWQiOwpAQCAtNDMwLDcgKzQzMCw3IEBAIEdDM0RlbnVtIFdlYkdMRnJhbWVidWZmZXI6OmNo
ZWNrU3RhdHVzKGNvbnN0IGNoYXIqKiByZWFzb24pIGNvbnN0CiAgICAgICAgICAgICAqcmVhc29u
ID0gImF0dGFjaG1lbnQgaXMgYW4gdW5zdXBwb3J0ZWQgZm9ybWF0IjsKICAgICAgICAgICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5U
OwogICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAoaXQtPmtleSkgeworICAgICAgICBzd2l0Y2gg
KGl0LT5maXJzdCkgewogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRB
Q0hNRU5UOgogICAgICAgICAgICAgaGF2ZURlcHRoID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDg4LDcgKzQ4OCw3IEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aGFzU3RlbmNpbEJ1
ZmZlcigpIGNvbnN0CiB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRlbGV0ZU9iamVjdEltcGwoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCwgUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCiB7CiAg
ICAgZm9yIChBdHRhY2htZW50TWFwOjppdGVyYXRvciBpdCA9IG1fYXR0YWNobWVudHMuYmVnaW4o
KTsgaXQgIT0gbV9hdHRhY2htZW50cy5lbmQoKTsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5v
bkRldGFjaGVkKGNvbnRleHQzZCk7CisgICAgICAgIGl0LT5zZWNvbmQtPm9uRGV0YWNoZWQoY29u
dGV4dDNkKTsKIAogICAgIGNvbnRleHQzZC0+ZGVsZXRlRnJhbWVidWZmZXIob2JqZWN0KTsKIH0K
QEAgLTQ5OSw4ICs0OTksOCBAQCBib29sIFdlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRh
Y2htZW50cyhHcmFwaGljc0NvbnRleHQzRCogZzNkLCBjb25zdCBjaGFyKgogICAgIEdDM0RiaXRm
aWVsZCBtYXNrID0gMDsKIAogICAgIGZvciAoQXR0YWNobWVudE1hcDo6aXRlcmF0b3IgaXQgPSBt
X2F0dGFjaG1lbnRzLmJlZ2luKCk7IGl0ICE9IG1fYXR0YWNobWVudHMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgR0MzRGVudW0gYXR0YWNobWVudFR5cGUgPSBpdC0+a2V5OwotICAgICAgICBXZWJH
TEF0dGFjaG1lbnQqIGF0dGFjaG1lbnQgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIEdDM0Rl
bnVtIGF0dGFjaG1lbnRUeXBlID0gaXQtPmZpcnN0OworICAgICAgICBXZWJHTEF0dGFjaG1lbnQq
IGF0dGFjaG1lbnQgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoIWF0dGFjaG1lbnQt
PmlzSW5pdGlhbGl6ZWQoKSkKICAgICAgICAgICAgbWFzayB8PSBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Q2xlYXJCaXRzQnlBdHRhY2htZW50VHlwZShhdHRhY2htZW50VHlwZSk7CiAgICAgfQpAQCAt
NTcxLDggKzU3MSw4IEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1l
bnRzKEdyYXBoaWNzQ29udGV4dDNEKiBnM2QsIGNvbnN0IGNoYXIqCiAgICAgICAgIGczZC0+ZGlz
YWJsZShHcmFwaGljc0NvbnRleHQzRDo6RElUSEVSKTsKIAogICAgIGZvciAoQXR0YWNobWVudE1h
cDo6aXRlcmF0b3IgaXQgPSBtX2F0dGFjaG1lbnRzLmJlZ2luKCk7IGl0ICE9IG1fYXR0YWNobWVu
dHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgR0MzRGVudW0gYXR0YWNobWVudFR5cGUgPSBpdC0+
a2V5OwotICAgICAgICBXZWJHTEF0dGFjaG1lbnQqIGF0dGFjaG1lbnQgPSBpdC0+dmFsdWUuZ2V0
KCk7CisgICAgICAgIEdDM0RlbnVtIGF0dGFjaG1lbnRUeXBlID0gaXQtPmZpcnN0OworICAgICAg
ICBXZWJHTEF0dGFjaG1lbnQqIGF0dGFjaG1lbnQgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAg
ICBHQzNEYml0ZmllbGQgYml0cyA9IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDbGVhckJpdHNCeUF0
dGFjaG1lbnRUeXBlKGF0dGFjaG1lbnRUeXBlKTsKICAgICAgICAgaWYgKGJpdHMgJiBtYXNrKQog
ICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0SW5pdGlhbGl6ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggZjQ3MDhm
YzM4N2RjZTRlZDI0NmY2ZWFhNDI4MGU5YTg5ZTI2NWUxMS4uODUyMjI1MzhiNGQzZDdlOTZmZDNj
ZTllM2JkMGM5MWFmMzE5OGM3OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTEzMTcsNyArMTMxNyw3IEBAIGNsYXNzIFR5
cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciAl
cztcbiIgJSBpdF9uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgICAgICAlcyA9IG9iamVjdC0+ZmluZChcIiVz
XCIpO1xuIiAlIChpdF9uYW1lLCBwcm9wX2RhdGEucFsibmFtZSJdKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICAg
ICAgQVNTRVJUKCVzICE9IG9iamVjdC0+ZW5kKCkpO1xuIiAlIGl0X25hbWUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIg
ICAgICAgICVzKCVzLT52YWx1ZS5nZXQoKSk7XG4iICUgKHByb3BfZGF0YS5wYXJhbV90eXBlX2Jp
bmRpbmcuZ2V0X3ZhbGlkYXRvcl9jYWxsX3RleHQoKSwgaXRfbmFtZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAg
ICAgICVzKCVzLT5zZWNvbmQuZ2V0KCkpO1xuIiAlIChwcm9wX2RhdGEucGFyYW1fdHlwZV9iaW5k
aW5nLmdldF92YWxpZGF0b3JfY2FsbF90ZXh0KCksIGl0X25hbWUpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgIH1c
biIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsb3NlZF9maWVs
ZF9zZXQ6CkBAIC0xMzI5LDcgKzEzMjksNyBAQCBjbGFzcyBUeXBlQmluZGluZ3M6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5l
KCIgICAgICAgIEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgJXM7XG4iICUgaXRfbmFtZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5l
d2xpbmUoIiAgICAgICAgJXMgPSBvYmplY3QtPmZpbmQoXCIlc1wiKTtcbiIgJSAoaXRfbmFtZSwg
cHJvcF9kYXRhLnBbIm5hbWUiXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgICAgIGlmICglcyAhPSBvYmplY3Qt
PmVuZCgpKSB7XG4iICUgaXRfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgICAgICVzKCVzLT52YWx1
ZS5nZXQoKSk7XG4iICUgKHByb3BfZGF0YS5wYXJhbV90eXBlX2JpbmRpbmcuZ2V0X3ZhbGlkYXRv
cl9jYWxsX3RleHQoKSwgaXRfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdG9yX3dyaXRlci5uZXdsaW5lKCIgICAgICAgICAgICAlcyglcy0+c2Vj
b25kLmdldCgpKTtcbiIgJSAocHJvcF9kYXRhLnBhcmFtX3R5cGVfYmluZGluZy5nZXRfdmFsaWRh
dG9yX2NhbGxfdGV4dCgpLCBpdF9uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBjbG9zZWRfZmllbGRfc2V0OgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3Jfd3JpdGVyLm5ld2xpbmUoIiAgICAgICAgICAg
ICsrZm91bmRQcm9wZXJ0aWVzQ291bnQ7XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbGlkYXRvcl93cml0ZXIubmV3bGluZSgiICAgICAgICB9XG4iKQpAQCAt
MjAwNyw3ICsyMDA3LDcgQEAgJG1lc3NhZ2VIYW5kbGVycwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgKCgqdGhpcykuKml0LT52YWx1ZSkoY2FsbElkLCBtZXNzYWdlT2JqZWN0LmdldCgp
KTsKKyAgICAoKCp0aGlzKS4qaXQtPnNlY29uZCkoY2FsbElkLCBtZXNzYWdlT2JqZWN0LmdldCgp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckltcGw6OnNlbmRSZXNwb25z
ZShsb25nIGNhbGxJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCwgY29uc3Qg
Y2hhciogY29tbWFuZE5hbWUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3RvY29sRXJy
b3JzLCBFcnJvclN0cmluZyBpbnZvY2F0aW9uRXJyb3IpCkBAIC0yMDkxLDcgKzIwOTEsNyBAQCBS
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDo6Z2V0UHJvcGVydHlWYWx1ZUltcGwoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKLSAg
ICBpZiAoIWFzX21ldGhvZCh2YWx1ZUl0ZXJhdG9yLT52YWx1ZS5nZXQoKSwgJnZhbHVlKSkKKyAg
ICBpZiAoIWFzX21ldGhvZCh2YWx1ZUl0ZXJhdG9yLT5zZWNvbmQuZ2V0KCksICZ2YWx1ZSkpCiAg
ICAgICAgIHByb3RvY29sRXJyb3JzLT5wdXNoU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0
ZXIgJyVzJyBoYXMgd3JvbmcgdHlwZS4gSXQgbXVzdCBiZSAnJXMnLiIsIG5hbWUudXRmOCgpLmRh
dGEoKSwgdHlwZV9uYW1lKSk7CiAgICAgZWxzZQogICAgICAgICBpZiAodmFsdWVGb3VuZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggOGU2YzE4
MDBkMzUyODI2NGU1MzEzNGVkOGRjNjFiODNlZjg4Yjk1Ni4uYzAzZGNlNDcxNGRmMTJjYTU1ZDU4
ZWJhYjJiODk5YTJkYzcxMWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHAKQEAgLTIzNywyNCArMjM3LDI0IEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlm
Zihjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93
blB0CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0xpc3Quc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBpdCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ld
LT5tX3NoYTEsIFZlY3RvcjxzaXplX3Q+KCkpLml0ZXJhdG9yOwotICAgICAgICBpdC0+dmFsdWUu
YXBwZW5kKGkpOworICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsKICAgICB9CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZExpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRGlm
ZlRhYmxlOjppdGVyYXRvciBpdCA9IG9sZFRhYmxlLmFkZChvbGRMaXN0W2ldLT5tX3NoYTEsIFZl
Y3RvcjxzaXplX3Q+KCkpLml0ZXJhdG9yOwotICAgICAgICBpdC0+dmFsdWUuYXBwZW5kKGkpOwor
ICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChpKTsKICAgICB9CiAKICAgICBmb3IgKERpZmZUYWJs
ZTo6aXRlcmF0b3IgbmV3SXQgPSBuZXdUYWJsZS5iZWdpbigpOyBuZXdJdCAhPSBuZXdUYWJsZS5l
bmQoKTsgKytuZXdJdCkgewotICAgICAgICBpZiAobmV3SXQtPnZhbHVlLnNpemUoKSAhPSAxKQor
ICAgICAgICBpZiAobmV3SXQtPnNlY29uZC5zaXplKCkgIT0gMSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIERpZmZUYWJsZTo6aXRlcmF0b3Igb2xkSXQgPSBvbGRUYWJsZS5maW5k
KG5ld0l0LT5rZXkpOwotICAgICAgICBpZiAob2xkSXQgPT0gb2xkVGFibGUuZW5kKCkgfHwgb2xk
SXQtPnZhbHVlLnNpemUoKSAhPSAxKQorICAgICAgICBEaWZmVGFibGU6Oml0ZXJhdG9yIG9sZEl0
ID0gb2xkVGFibGUuZmluZChuZXdJdC0+Zmlyc3QpOworICAgICAgICBpZiAob2xkSXQgPT0gb2xk
VGFibGUuZW5kKCkgfHwgb2xkSXQtPnNlY29uZC5zaXplKCkgIT0gMSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIG5ld01hcFtuZXdJdC0+dmFsdWVbMF1dID0gbWFrZV9wYWlyKG5l
d0xpc3RbbmV3SXQtPnZhbHVlWzBdXS5nZXQoKSwgb2xkSXQtPnZhbHVlWzBdKTsKLSAgICAgICAg
b2xkTWFwW29sZEl0LT52YWx1ZVswXV0gPSBtYWtlX3BhaXIob2xkTGlzdFtvbGRJdC0+dmFsdWVb
MF1dLmdldCgpLCBuZXdJdC0+dmFsdWVbMF0pOworICAgICAgICBuZXdNYXBbbmV3SXQtPnNlY29u
ZFswXV0gPSBtYWtlX3BhaXIobmV3TGlzdFtuZXdJdC0+c2Vjb25kWzBdXS5nZXQoKSwgb2xkSXQt
PnNlY29uZFswXSk7CisgICAgICAgIG9sZE1hcFtvbGRJdC0+c2Vjb25kWzBdXSA9IG1ha2VfcGFp
cihvbGRMaXN0W29sZEl0LT5zZWNvbmRbMF1dLmdldCgpLCBuZXdJdC0+c2Vjb25kWzBdKTsKICAg
ICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgbmV3TGlzdC5zaXplKCkgPiAwICYmIGkgPCBu
ZXdMaXN0LnNpemUoKSAtIDE7ICsraSkgewpAQCAtMzY0LDcgKzM2NCw3IEBAIGJvb2wgRE9NUGF0
Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4oQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSwg
Y29uc3QgVmVjdG9yCiAKICAgICAvLyAyLiBQYXRjaCBub2RlcyBtYXJrZWQgZm9yIG1lcmdlLgog
ICAgIGZvciAoSGFzaE1hcDxEaWdlc3QqLCBEaWdlc3QqPjo6aXRlcmF0b3IgaXQgPSBtZXJnZXMu
YmVnaW4oKTsgaXQgIT0gbWVyZ2VzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICghaW5uZXJQ
YXRjaE5vZGUoaXQtPnZhbHVlLCBpdC0+a2V5LCBlYykpCisgICAgICAgIGlmICghaW5uZXJQYXRj
aE5vZGUoaXQtPnNlY29uZCwgaXQtPmZpcnN0LCBlYykpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC00NjMsNyArNDYzLDcgQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6OnJl
bW92ZUNoaWxkQW5kTW92ZVRvTmV3KERpZ2VzdCogb2xkRGlnZXN0LCBFeGNlcHRpb25Db2RlJgog
ICAgIC8vIGhpZ2ggdGhhdCBpdCB3aWxsIGdldCBtZXJnZWQgYmFjayBpbnRvIHRoZSBvcmlnaW5h
bCBET00gZHVyaW5nIHRoZSBmdXJ0aGVyIHBhdGNoaW5nLgogICAgIFVudXNlZE5vZGVzTWFwOjpp
dGVyYXRvciBpdCA9IG1fdW51c2VkTm9kZXNNYXAuZmluZChvbGREaWdlc3QtPm1fc2hhMSk7CiAg
ICAgaWYgKGl0ICE9IG1fdW51c2VkTm9kZXNNYXAuZW5kKCkpIHsKLSAgICAgICAgRGlnZXN0KiBu
ZXdEaWdlc3QgPSBpdC0+dmFsdWU7CisgICAgICAgIERpZ2VzdCogbmV3RGlnZXN0ID0gaXQtPnNl
Y29uZDsKICAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG5ld0RpZ2VzdC0+bV9ub2RlOwogICAgICAg
ICBpZiAoIW1fZG9tRWRpdG9yLT5yZXBsYWNlQ2hpbGQobmV3Tm9kZS0+cGFyZW50Tm9kZSgpLCBv
bGROb2RlLCBuZXdOb2RlLCBlYykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4
IDFkNWUzMTc1N2NkODZiM2IyMmI4ZmVkYjMxYWJjZDVlMDJlZmY0NzQuLjUyZWM3NDkwYTA3N2I1
Y2ZkNGYzYjA4NWQyODc3YmM4NzBjYzA3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC04MiwxMCArODIsMTAgQEAgSW5q
ZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvcklkKGlu
dCBpZCkKIHsKICAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRv
SW5qZWN0ZWRTY3JpcHQuZmluZChpZCk7CiAgICAgaWYgKGl0ICE9IG1faWRUb0luamVjdGVkU2Ny
aXB0LmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICByZXR1cm4gaXQt
PnNlY29uZDsKICAgICBmb3IgKFNjcmlwdFN0YXRlVG9JZDo6aXRlcmF0b3IgaXQgPSBtX3Njcmlw
dFN0YXRlVG9JZC5iZWdpbigpOyBpdCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5lbmQoKTsgKytpdCkg
ewotICAgICAgICBpZiAoaXQtPnZhbHVlID09IGlkKQotICAgICAgICAgICAgcmV0dXJuIGluamVj
dGVkU2NyaXB0Rm9yKGl0LT5rZXkpOworICAgICAgICBpZiAoaXQtPnNlY29uZCA9PSBpZCkKKyAg
ICAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcihpdC0+Zmlyc3QpOwogICAgIH0KICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIH0KQEAgLTk0LDcgKzk0LDcgQEAgaW50IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRJZEZvcihTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUpCiB7CiAgICAgU2NyaXB0U3RhdGVUb0lkOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0U3Rh
dGVUb0lkLmZpbmQoc2NyaXB0U3RhdGUpOwogICAgIGlmIChpdCAhPSBtX3NjcmlwdFN0YXRlVG9J
ZC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CiAgICAgaW50IGlkID0gbV9uZXh0SW5qZWN0ZWRTY3JpcHRJZCsrOwogICAgIG1fc2Ny
aXB0U3RhdGVUb0lkLnNldChzY3JpcHRTdGF0ZSwgaWQpOwogICAgIHJldHVybiBpZDsKQEAgLTEy
NiwxMSArMTI2LDExIEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0
ZWRTY3JpcHRzRm9yKERPTVdpbmRvdyogd2luZG93KQogICAgIFZlY3Rvcjxsb25nPiBpZHNUb1Jl
bW92ZTsKICAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1faWRUb0lu
amVjdGVkU2NyaXB0LmVuZCgpOwogICAgIGZvciAoSWRUb0luamVjdGVkU2NyaXB0TWFwOjppdGVy
YXRvciBpdCA9IG1faWRUb0luamVjdGVkU2NyaXB0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBpdC0+dmFsdWUuc2NyaXB0U3Rh
dGUoKTsKKyAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gaXQtPnNlY29uZC5zY3Jp
cHRTdGF0ZSgpOwogICAgICAgICBpZiAod2luZG93ICE9IGRvbVdpbmRvd0Zyb21TY3JpcHRTdGF0
ZShzY3JpcHRTdGF0ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbV9zY3JpcHRT
dGF0ZVRvSWQucmVtb3ZlKHNjcmlwdFN0YXRlKTsKLSAgICAgICAgaWRzVG9SZW1vdmUuYXBwZW5k
KGl0LT5rZXkpOworICAgICAgICBpZHNUb1JlbW92ZS5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICB9
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlkc1RvUmVtb3ZlLnNpemUoKTsgaSsrKQpA
QCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5q
ZWN0ZWRTY3JpcHRzRm9yKERPTVdpbmRvdyogd2luZG93KQogICAgIC8vIE5vdyByZW1vdmUgc2Ny
aXB0IHN0YXRlcyB0aGF0IGhhdmUgaWQgYnV0IG5vIGluamVjdGVkIHNjcmlwdC4KICAgICBWZWN0
b3I8U2NyaXB0U3RhdGUqPiBzY3JpcHRTdGF0ZXNUb1JlbW92ZTsKICAgICBmb3IgKFNjcmlwdFN0
YXRlVG9JZDo6aXRlcmF0b3IgaXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5iZWdpbigpOyBpdCAhPSBt
X3NjcmlwdFN0YXRlVG9JZC5lbmQoKTsgKytpdCkgewotICAgICAgICBTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGUgPSBpdC0+a2V5OworICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBp
dC0+Zmlyc3Q7CiAgICAgICAgIGlmICh3aW5kb3cgPT0gZG9tV2luZG93RnJvbVNjcmlwdFN0YXRl
KHNjcmlwdFN0YXRlKSkKICAgICAgICAgICAgIHNjcmlwdFN0YXRlc1RvUmVtb3ZlLmFwcGVuZChz
Y3JpcHRTdGF0ZSk7CiAgICAgfQpAQCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXb3JrZXJDb250ZXh0KFNjcmlwdFN0YXRlKikK
IHZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpyZWxlYXNlT2JqZWN0R3JvdXAoY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCkKIHsKICAgICBmb3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRl
cmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5iZWdpbigpOyBpdCAhPSBtX2lkVG9Jbmpl
Y3RlZFNjcmlwdC5lbmQoKTsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLnJlbGVhc2VPYmplY3RH
cm91cChvYmplY3RHcm91cCk7CisgICAgICAgIGl0LT5zZWNvbmQucmVsZWFzZU9iamVjdEdyb3Vw
KG9iamVjdEdyb3VwKTsKIH0KIAogU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0
ZWRTY3JpcHRTb3VyY2UoKQpAQCAtMTczLDkgKzE3Myw5IEBAIEluamVjdGVkU2NyaXB0IEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqIGluc3BlY3Rl
ZFNjCiB7CiAgICAgU2NyaXB0U3RhdGVUb0lkOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0U3RhdGVU
b0lkLmZpbmQoaW5zcGVjdGVkU2NyaXB0U3RhdGUpOwogICAgIGlmIChpdCAhPSBtX3NjcmlwdFN0
YXRlVG9JZC5lbmQoKSkgewotICAgICAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9y
IGl0MSA9IG1faWRUb0luamVjdGVkU2NyaXB0LmZpbmQoaXQtPnZhbHVlKTsKKyAgICAgICAgSWRU
b0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBpdDEgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5m
aW5kKGl0LT5zZWNvbmQpOwogICAgICAgICBpZiAoaXQxICE9IG1faWRUb0luamVjdGVkU2NyaXB0
LmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0MS0+dmFsdWU7CisgICAgICAgICAgICByZXR1
cm4gaXQxLT5zZWNvbmQ7CiAgICAgfQogCiAgICAgaWYgKCFtX2luc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2soaW5zcGVjdGVkU2NyaXB0U3RhdGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZjg1YmM0YTQyNDk1MjM2MWI0MWE5ZjBmMGUx
NDJlZmVhZWYwZDNlMC4uNTNhMzUzZjkwZDgyZDFhNWY2NTcwMDE2MGU0MGJmNmM1YWVmZWRmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBA
IC0xODcsMTAgKzE4NywxMCBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNl
bGVjdG9yKGJvb2wgbWF0Y2hlZCkKIAogICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5hZGQobWFrZUtleSgpLCBSdWxlTWF0Y2hp
bmdTdGF0cyhtX2N1cnJlbnRNYXRjaERhdGEsIG1hdGNoVGltZU1zLCAxLCBtYXRjaGVkID8gMSA6
IDApKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUudG90YWxUaW1lICs9IG1hdGNoVGltZU1zOwotICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmhpdHMgKz0gMTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQu
dG90YWxUaW1lICs9IG1hdGNoVGltZU1zOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZC5oaXRzICs9IDE7CiAgICAgICAgIGlmIChtYXRjaGVkKQotICAgICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5tYXRjaGVzICs9IDE7CisgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnNlY29uZC5tYXRjaGVzICs9IDE7CiAgICAgfQogfQogCkBAIC0yMDMsNyArMjAzLDcgQEAgaW5s
aW5lIHZvaWQgU2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3RvclRpbWUoKQogICAgIGlmIChp
dCA9PSBtX3J1bGVNYXRjaGluZ1N0YXRzLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
dC0+dmFsdWUudG90YWxUaW1lICs9IHByb2Nlc3NpbmdUaW1lTXM7CisgICAgaXQtPnNlY29uZC50
b3RhbFRpbWUgKz0gcHJvY2Vzc2luZ1RpbWVNczsKIH0KIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmpl
Y3QoKSBjb25zdApAQCAtMjExLDEyICsyMTEsMTIgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QK
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9y
UHJvZmlsZUVudHJ5PiA+IHNlbGVjdG9yUHJvZmlsZURhdGEgPSBUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+OjpjcmVhdGUoKTsKICAgICBm
b3IgKFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcnVsZU1hdGNo
aW5nU3RhdHMuYmVnaW4oKTsgaXQgIT0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5lbmQoKTsgKytpdCkg
ewogICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+
IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk6OmNyZWF0ZSgp
Ci0gICAgICAgICAgICAuc2V0U2VsZWN0b3IoaXQtPnZhbHVlLnNlbGVjdG9yKQotICAgICAgICAg
ICAgLnNldFVybChpdC0+dmFsdWUudXJsKQotICAgICAgICAgICAgLnNldExpbmVOdW1iZXIoaXQt
PnZhbHVlLmxpbmVOdW1iZXIpCi0gICAgICAgICAgICAuc2V0VGltZShpdC0+dmFsdWUudG90YWxU
aW1lKQotICAgICAgICAgICAgLnNldEhpdENvdW50KGl0LT52YWx1ZS5oaXRzKQotICAgICAgICAg
ICAgLnNldE1hdGNoQ291bnQoaXQtPnZhbHVlLm1hdGNoZXMpOworICAgICAgICAgICAgLnNldFNl
bGVjdG9yKGl0LT5zZWNvbmQuc2VsZWN0b3IpCisgICAgICAgICAgICAuc2V0VXJsKGl0LT5zZWNv
bmQudXJsKQorICAgICAgICAgICAgLnNldExpbmVOdW1iZXIoaXQtPnNlY29uZC5saW5lTnVtYmVy
KQorICAgICAgICAgICAgLnNldFRpbWUoaXQtPnNlY29uZC50b3RhbFRpbWUpCisgICAgICAgICAg
ICAuc2V0SGl0Q291bnQoaXQtPnNlY29uZC5oaXRzKQorICAgICAgICAgICAgLnNldE1hdGNoQ291
bnQoaXQtPnNlY29uZC5tYXRjaGVzKTsKICAgICAgICAgc2VsZWN0b3JQcm9maWxlRGF0YS0+YWRk
SXRlbShlbnRyeS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAtNTY4LDcgKzU2OCw3IEBAIGJvb2wg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgQ1NT
U2VsZWN0b3I6OlBzZXVkb1R5CiAgICAgaWYgKGl0ID09IG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9T
dGF0ZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgZm9yY2Vk
UHNldWRvU3RhdGUgPSBpdC0+dmFsdWU7CisgICAgdW5zaWduZWQgZm9yY2VkUHNldWRvU3RhdGUg
PSBpdC0+c2Vjb25kOwogICAgIHN3aXRjaCAocHNldWRvVHlwZSkgewogICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0FjdGl2ZToKICAgICAgICAgcmV0dXJuIGZvcmNlZFBzZXVkb1N0YXRlICYg
UHNldWRvQWN0aXZlOwpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
CiAKICAgICB1bnNpZ25lZCBmb3JjZWRQc2V1ZG9TdGF0ZSA9IGNvbXB1dGVQc2V1ZG9DbGFzc01h
c2soZm9yY2VkUHNldWRvQ2xhc3Nlcy5nZXQoKSk7CiAgICAgTm9kZUlkVG9Gb3JjZWRQc2V1ZG9T
dGF0ZTo6aXRlcmF0b3IgaXQgPSBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUuZmluZChub2Rl
SWQpOwotICAgIHVuc2lnbmVkIGN1cnJlbnRGb3JjZWRQc2V1ZG9TdGF0ZSA9IGl0ID09IG1fbm9k
ZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5lbmQoKSA/IDAgOiBpdC0+dmFsdWU7CisgICAgdW5zaWdu
ZWQgY3VycmVudEZvcmNlZFBzZXVkb1N0YXRlID0gaXQgPT0gbV9ub2RlSWRUb0ZvcmNlZFBzZXVk
b1N0YXRlLmVuZCgpID8gMCA6IGl0LT5zZWNvbmQ7CiAgICAgYm9vbCBuZWVkU3R5bGVSZWNhbGMg
PSBmb3JjZWRQc2V1ZG9TdGF0ZSAhPSBjdXJyZW50Rm9yY2VkUHNldWRvU3RhdGU7CiAgICAgaWYg
KCFuZWVkU3R5bGVSZWNhbGMpCiAgICAgICAgIHJldHVybjsKQEAgLTkxNiw3ICs5MTYsNyBAQCBJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0lu
c3BlY3RvclN0eWxlU2hlZXQoRWxlbQogICAgICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVl
dC5nZXQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworICAgIHJldHVy
biBpdC0+c2Vjb25kLmdldCgpOwogfQogCiBFbGVtZW50KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxl
bWVudEZvcklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKQEAgLTEwMTAs
NyArMTAxMCw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojphc3Nl
cnRTdHlsZVNoZWV0Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9yCiAgICAgICAgICplcnJvclN0cmlu
ZyA9ICJObyBzdHlsZSBzaGVldCB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQotICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2V0KCk7CiB9CiAKIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVu
dW0gSW5zcGVjdG9yQ1NTQWdlbnQ6OmRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5
bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCkBAIC0xMTQxLDcgKzExNDEsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAg
aWYgKGl0ID09IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5lbmQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5yZW1vdmUoaXQtPnZhbHVlLT5p
ZCgpKTsKKyAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnJlbW92ZShpdC0+c2Vjb25kLT5p
ZCgpKTsKICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQucmVtb3ZlKG5vZGUpOwogfQog
CkBAIC0xMTU0LDcgKzExNTQsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRNb2RpZnlE
T01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKGl0ID09IG1fbm9kZVRvSW5zcGVjdG9y
U3R5bGVTaGVldC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaXQtPnZhbHVlLT5kaWRN
b2RpZnlFbGVtZW50QXR0cmlidXRlKCk7CisgICAgaXQtPnNlY29uZC0+ZGlkTW9kaWZ5RWxlbWVu
dEF0dHJpYnV0ZSgpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdHlsZVNoZWV0Q2hh
bmdlZChJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQpAQCAtMTE2Nyw3ICsxMTY3LDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXRQc2V1ZG9TdGF0ZXMoKQogewogICAgIEhh
c2hTZXQ8RG9jdW1lbnQqPiBkb2N1bWVudHNUb0NoYW5nZTsKICAgICBmb3IgKE5vZGVJZFRvRm9y
Y2VkUHNldWRvU3RhdGU6Oml0ZXJhdG9yIGl0ID0gbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRl
LmJlZ2luKCksIGVuZCA9IG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9kb21B
Z2VudC0+bm9kZUZvcklkKGl0LT5rZXkpKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRv
RWxlbWVudChtX2RvbUFnZW50LT5ub2RlRm9ySWQoaXQtPmZpcnN0KSk7CiAgICAgICAgIGlmIChl
bGVtZW50ICYmIGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50
c1RvQ2hhbmdlLmFkZChlbGVtZW50LT5vd25lckRvY3VtZW50KCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXgg
YzY0ZDg3MWI0MjIyMzA0OTZhNDQ0OWU3NzlkNWFkMDUyOTJkOTNlZi4uYzEyYTU2YjBkMGYyMWQw
YzQ4YTc4YWVkNTgwZGQxZGJlOTdkYWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlLCBQ
YXNzUmVmUHRyPFNjcmlwdENhbAogICAgIGlmIChpdCA9PSBtX3RpbWVzLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBkb3VibGUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOworICAgIGRvdWJs
ZSBzdGFydFRpbWUgPSBpdC0+c2Vjb25kOwogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIAogICAg
IGRvdWJsZSBlbGFwc2VkID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBzdGFydFRp
bWU7CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50
KFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIFBhc3NSZWYKICAgICBpZiAo
aXQgPT0gbV9jb3VudHMuZW5kKCkpCiAgICAgICAgIGNvdW50ID0gMTsKICAgICBlbHNlIHsKLSAg
ICAgICAgY291bnQgPSBpdC0+dmFsdWUgKyAxOworICAgICAgICBjb3VudCA9IGl0LT5zZWNvbmQg
KyAxOwogICAgICAgICBtX2NvdW50cy5yZW1vdmUoaXQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMjIwODgzYWUxNmYz
YjNjNzk1ODc1YWM2YzEyYTFiMmJlYzMzMzgwMC4uZWQ0N2I1ZDBhMTczOTAyNTU5NjM0M2EwMjcz
ZGJkYTFmMGUyNDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6
Om5vZGVGb3JJZChpbnQgaWQpCiAKICAgICBIYXNoTWFwPGludCwgTm9kZSo+OjppdGVyYXRvciBp
dCA9IG1faWRUb05vZGUuZmluZChpZCk7CiAgICAgaWYgKGl0ICE9IG1faWRUb05vZGUuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwog
ICAgIHJldHVybiAwOwogfQogCkBAIC05MTUsOSArOTE1LDkgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFj
ZVRyaW0KICAgICBTZWFyY2hSZXN1bHRzOjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJl
c3VsdHMuYWRkKCpzZWFyY2hJZCwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpLml0ZXJhdG9yOwog
CiAgICAgZm9yIChMaXN0SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVj
dG9yLmJlZ2luKCk7IGl0ICE9IHJlc3VsdENvbGxlY3Rvci5lbmQoKTsgKytpdCkKLSAgICAgICAg
cmVzdWx0c0l0LT52YWx1ZS5hcHBlbmQoKml0KTsKKyAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQu
YXBwZW5kKCppdCk7CiAKLSAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzSXQtPnZhbHVlLnNpemUo
KTsKKyAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzSXQtPnNlY29uZC5zaXplKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRl
eCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+ID4mIG5vZGVJZHMpCkBAIC05MjgsNyAr
OTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGludCBzaXplID0gaXQtPnZhbHVlLnNpemUoKTsKKyAgICBpbnQgc2l6ZSA9IGl0LT5z
ZWNvbmQuc2l6ZSgpOwogICAgIGlmIChmcm9tSW5kZXggPCAwIHx8IHRvSW5kZXggPiBzaXplIHx8
IGZyb21JbmRleCA+PSB0b0luZGV4KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnZhbGlk
IHNlYXJjaCByZXN1bHQgcmFuZ2UiOwogICAgICAgICByZXR1cm47CkBAIC05MzYsNyArOTM2LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYKIAogICAgIG5vZGVJZHMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsgaSA8IHRv
SW5kZXg7ICsraSkKLSAgICAgICAgbm9kZUlkcy0+YWRkSXRlbShwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKChpdC0+dmFsdWUpW2ldLmdldCgpKSk7CisgICAgICAgIG5vZGVJZHMtPmFkZEl0ZW0ocHVz
aE5vZGVQYXRoVG9Gcm9udGVuZCgoaXQtPnNlY29uZClbaV0uZ2V0KCkpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6ZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHNlYXJjaElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGM0ZmNiODJiN2I2ZmEwZTJiOWE1
M2JkNGZhYWM2MjM2MjlkMGJlNWUuLjgwMzIyOTVkODk1ZTlkMjJhMmY4MGM1OThkOWU0NGQyNzQ3
NGEwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQwMiw4ICs0MDIsOCBAQCB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwp
CiAgICAgZWxzZSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHhockJyZWFrcG9p
bnRzID0gbV9zdGF0ZS0+Z2V0T2JqZWN0KERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6eGhyQnJlYWtw
b2ludHMpOwogICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSB4aHJC
cmVha3BvaW50cy0+YmVnaW4oKTsgaXQgIT0geGhyQnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7
Ci0gICAgICAgICAgICBpZiAodXJsLmNvbnRhaW5zKGl0LT5rZXkpKSB7Ci0gICAgICAgICAgICAg
ICAgYnJlYWtwb2ludFVSTCA9IGl0LT5rZXk7CisgICAgICAgICAgICBpZiAodXJsLmNvbnRhaW5z
KGl0LT5maXJzdCkpIHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50VVJMID0gaXQtPmZpcnN0
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCmluZGV4IGMzMmVhMjk4NzZkZDllZTE3YmMyZTYxZTBkN2U2ODcwNmExMjUzNzcuLjkwYTBh
OWU2MDkwZTBjMmMzOWQ3ODY5ZjQwMmQ0MzJiM2EyYmY2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjbGVhckZyb250ZW5kKCkK
IHsKICAgICBET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBkb21TdG9yYWdlRW5kID0g
bV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsraXQp
Ci0gICAgICAgIGl0LT52YWx1ZS0+dW5iaW5kKCk7CisgICAgICAgIGl0LT5zZWNvbmQtPnVuYmlu
ZCgpOwogICAgIG1fZnJvbnRlbmQgPSAwOwogICAgIGRpc2FibGUoMCk7CiB9CkBAIC05Niw3ICs5
Niw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcq
KQogCiAgICAgRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0g
bV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChET01TdG9yYWdlUmVzb3VyY2VzTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkK
LSAgICAgICAgaXQtPnZhbHVlLT5iaW5kKG1fZnJvbnRlbmQpOworICAgICAgICBpdC0+c2Vjb25k
LT5iaW5kKG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
ZGlzYWJsZShFcnJvclN0cmluZyopCkBAIC0xNjUsOCArMTY1LDggQEAgU3RyaW5nIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgYm9vbAogICAgIEFTU0VSVChzZWN1cml0eU9yaWdpbik7CiAgICAgRE9NU3RvcmFnZVJlc291
cmNlc01hcDo6aXRlcmF0b3IgZG9tU3RvcmFnZUVuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAg
IGZvciAoRE9NU3RvcmFnZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5i
ZWdpbigpOyBpdCAhPSBkb21TdG9yYWdlRW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFs
dWUtPmlzU2FtZU9yaWdpbkFuZFR5cGUoc2VjdXJpdHlPcmlnaW4sIGlzTG9jYWxTdG9yYWdlKSkK
LSAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgICAgICBpZiAoaXQtPnNlY29uZC0+aXNT
YW1lT3JpZ2luQW5kVHlwZShzZWN1cml0eU9yaWdpbiwgaXNMb2NhbFN0b3JhZ2UpKQorICAgICAg
ICAgICAgcmV0dXJuIGl0LT5maXJzdDsKICAgICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpA
QCAtMTc2LDE0ICsxNzYsMTQgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VSZXNvdXJjZUZvckkKICAgICBET01TdG9y
YWdlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoc3RvcmFnZUlk
KTsKICAgICBpZiAoaXQgPT0gbV9yZXNvdXJjZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiAwOwot
ICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRVc2VET01TdG9yYWdlKFN0
b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2FsU3RvcmFnZSwgRnJhbWUqIGZyYW1l
KQogewogICAgIERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGRvbVN0b3JhZ2VFbmQg
PSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZG9tU3RvcmFnZUVuZDsgKytp
dCkgewotICAgICAgICBpZiAoaXQtPnZhbHVlLT5pc1NhbWVPcmlnaW5BbmRUeXBlKGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBpc0xvY2FsU3RvcmFnZSkpCisgICAgICAgIGlm
IChpdC0+c2Vjb25kLT5pc1NhbWVPcmlnaW5BbmRUeXBlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBpc0xvY2FsU3RvcmFnZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0yMTgsNyArMjE4LDcgQEAgc2l6ZV90IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
bWVtb3J5Qnl0ZXNVc2VkQnlTdG9yYWdlQ2FjaGUoKSBjb25zdAogewogICAgIHNpemVfdCBzaXpl
ID0gMDsKICAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpCi0g
ICAgICAgIHNpemUgKz0gaXQtPnZhbHVlLT5zdG9yYWdlQXJlYSgpLT5tZW1vcnlCeXRlc1VzZWRC
eUNhY2hlKCk7CisgICAgICAgIHNpemUgKz0gaXQtPnNlY29uZC0+c3RvcmFnZUFyZWEoKS0+bWVt
b3J5Qnl0ZXNVc2VkQnlDYWNoZSgpOwogICAgIHJldHVybiBzaXplOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXgg
N2I4ZmNhNGQ0YWE2NTdiMjg5YzI1MDNkODJhYWI0YTljYTBhNjc1Mi4uOThjOTM2M2FlNjk3ZDQ2
ODM0ZWMzYjYxZDQzYTNlZWQ0NDgwOWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZv
aWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKIAogICAgIERh
dGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX3Jlc291cmNlcy5l
bmQoKTsKICAgICBmb3IgKERhdGFiYXNlUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVz
b3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlc0VuZDsgKytpdCkKLSAgICAgICAgaXQtPnZh
bHVlLT5iaW5kKG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSk7CisgICAgICAgIGl0LT5z
ZWNvbmQtPmJpbmQobV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKQEAgLTMzMyw4ICsz
MzMsOCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoRXJyb3JTdHJp
bmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFiYQogU3RyaW5nIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmRhdGFiYXNlSWQoRGF0YWJhc2UqIGRhdGFiYXNlKQogewogICAgIGZvciAoRGF0YWJh
c2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0g
bV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZS0+ZGF0YWJh
c2UoKSA9PSBkYXRhYmFzZSkKLSAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgICAgICBp
ZiAoaXQtPnNlY29uZC0+ZGF0YWJhc2UoKSA9PSBkYXRhYmFzZSkKKyAgICAgICAgICAgIHJldHVy
biBpdC0+Zmlyc3Q7CiAgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTM0Miw4ICsz
NDIsOCBAQCBTdHJpbmcgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGF0YWJhc2VJZChEYXRhYmFz
ZSogZGF0YWJhc2UpCiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKiBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewogICAgIGZv
ciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4o
KTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1
ZS0+ZGF0YWJhc2UoKS0+ZmlsZU5hbWUoKSA9PSBmaWxlTmFtZSkKLSAgICAgICAgICAgIHJldHVy
biBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLT5kYXRhYmFzZSgpLT5m
aWxlTmFtZSgpID09IGZpbGVOYW1lKQorICAgICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0
KCk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtMzUzLDcgKzM1Myw3IEBAIERhdGFiYXNl
KiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRhYmFzZUZvcklkKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VJZCkKICAgICBEYXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291
cmNlcy5maW5kKGRhdGFiYXNlSWQpOwogICAgIGlmIChpdCA9PSBtX3Jlc291cmNlcy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGl0LT52YWx1ZS0+ZGF0YWJhc2UoKTsKKyAg
ICByZXR1cm4gaXQtPnNlY29uZC0+ZGF0YWJhc2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDViODc2NGNlNDkwNmJkZTA3MWVjZjJlMWNkNTlhYzMzOTE4MzdjYTMu
LjFiYzE2ZjIwZjNjNWIxZWU2MDliNWMzZjE5YzQyMmU0OTZjODhmNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI0
OCw5ICsyNDgsOSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRC
eVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaQogCiAgICAgU2NyaXB0QnJlYWtw
b2ludCBicmVha3BvaW50KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uKTsKICAg
ICBmb3IgKFNjcmlwdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zY3JpcHRzLmJlZ2luKCk7IGl0ICE9
IG1fc2NyaXB0cy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoIW1hdGNoZXMoaXQtPnZhbHVl
LnVybCwgdXJsLCBpc1JlZ2V4KSkKKyAgICAgICAgaWYgKCFtYXRjaGVzKGl0LT5zZWNvbmQudXJs
LCB1cmwsIGlzUmVnZXgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3Bv
aW50KGJyZWFrcG9pbnRJZCwgaXQtPmtleSwgYnJlYWtwb2ludCk7CisgICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBsb2NhdGlvbiA9IHJlc29sdmVCcmVha3Bv
aW50KGJyZWFrcG9pbnRJZCwgaXQtPmZpcnN0LCBicmVha3BvaW50KTsKICAgICAgICAgaWYgKGxv
Y2F0aW9uKQogICAgICAgICAgICAgbG9jYXRpb25zLT5hZGRJdGVtKGxvY2F0aW9uKTsKICAgICB9
CkBAIC0zMDIsOCArMzAyLDggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVC
cmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3AKICAgICBCcmVha3Bv
aW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkc01hcDo6aXRlcmF0b3IgZGVidWdTZXJ2ZXJC
cmVha3BvaW50SWRzSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SWRzLmZpbmQoYnJlYWtwb2ludElkKTsKICAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzSXRlcmF0b3IgPT0gbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5l
bmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdT
ZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgKytpKQotICAgICAgICBz
Y3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUJyZWFrcG9pbnQoZGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzSXRlcmF0b3ItPnZhbHVlW2ldKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVn
U2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5zZWNvbmQuc2l6ZSgpOyArK2kpCisgICAgICAg
IHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtwb2ludChkZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJZHNJdGVyYXRvci0+c2Vjb25kW2ldKTsKICAgICBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2
ZXJCcmVha3BvaW50SWRzLnJlbW92ZShkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvcik7
CiB9CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVhawogICAgIFNj
cmlwdHNNYXA6Oml0ZXJhdG9yIHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc2NyaXB0
SWQpOwogICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpCiAgICAgICAg
IHJldHVybiAwOwotICAgIFNjcmlwdCYgc2NyaXB0ID0gc2NyaXB0SXRlcmF0b3ItPnZhbHVlOwor
ICAgIFNjcmlwdCYgc2NyaXB0ID0gc2NyaXB0SXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoYnJl
YWtwb2ludC5saW5lTnVtYmVyIDwgc2NyaXB0LnN0YXJ0TGluZSB8fCBzY3JpcHQuZW5kTGluZSA8
IGJyZWFrcG9pbnQubGluZU51bWJlcikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTM0NCw3ICsz
NDQsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVhawogICAgIEJyZWFrcG9pbnRJZFRvRGVidWdT
ZXJ2ZXJCcmVha3BvaW50SWRzTWFwOjppdGVyYXRvciBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJ
dGVyYXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuZmluZChi
cmVha3BvaW50SWQpOwogICAgIGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9
PSBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLmVuZCgpKQogICAgICAg
ICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvciA9IG1fYnJlYWtwb2ludElkVG9EZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJZHMuc2V0KGJyZWFrcG9pbnRJZCwgVmVjdG9yPFN0cmluZz4oKSku
aXRlcmF0b3I7Ci0gICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnZhbHVlLmFw
cGVuZChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZCk7CisgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzSXRlcmF0b3ItPnNlY29uZC5hcHBlbmQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWQpOwogCiAg
ICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gVHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNjcmlw
dElkKHNjcmlwdElkKQpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBz
CiAKICAgICBTY3JpcHRzTWFwOjppdGVyYXRvciBpdCA9IG1fc2NyaXB0cy5maW5kKHNjcmlwdElk
KTsKICAgICBpZiAoaXQgIT0gbV9zY3JpcHRzLmVuZCgpKQotICAgICAgICByZXN1bHRzID0gQ29u
dGVudFNlYXJjaFV0aWxzOjpzZWFyY2hJblRleHRCeUxpbmVzKGl0LT52YWx1ZS5zb3VyY2UsIHF1
ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKKyAgICAgICAgcmVzdWx0cyA9IENvbnRlbnRT
ZWFyY2hVdGlsczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhpdC0+c2Vjb25kLnNvdXJjZSwgcXVlcnks
IGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgpOwogICAgIGVsc2UKICAgICAgICAgKmVycm9yID0gIk5v
IHNjcmlwdCBmb3IgaWQ6ICIgKyBzY3JpcHRJZDsKIH0KQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYgcwogewogICAgIFNjcmlwdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
Y3JpcHRzLmZpbmQoc2NyaXB0SWQpOwogICAgIGlmIChpdCAhPSBtX3NjcmlwdHMuZW5kKCkpCi0g
ICAgICAgICpzY3JpcHRTb3VyY2UgPSBpdC0+dmFsdWUuc291cmNlOworICAgICAgICAqc2NyaXB0
U291cmNlID0gaXQtPnNlY29uZC5zb3VyY2U7CiAgICAgZWxzZQogICAgICAgICAqZXJyb3IgPSAi
Tm8gc2NyaXB0IGZvciBpZDogIiArIHNjcmlwdElkOwogfQpAQCAtNjMwLDcgKzYzMCw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBz
Y3JpcHRJZCwgY29uc3QgU2NyaXB0CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVh
a3BvaW50c0Nvb2tpZSA9IG1fc3RhdGUtPmdldE9iamVjdChEZWJ1Z2dlckFnZW50U3RhdGU6Omph
dmFTY3JpcHRCcmVha3BvaW50cyk7CiAgICAgZm9yIChJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9y
IGl0ID0gYnJlYWtwb2ludHNDb29raWUtPmJlZ2luKCk7IGl0ICE9IGJyZWFrcG9pbnRzQ29va2ll
LT5lbmQoKTsgKytpdCkgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3Bv
aW50T2JqZWN0ID0gaXQtPnZhbHVlLT5hc09iamVjdCgpOworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBicmVha3BvaW50T2JqZWN0ID0gaXQtPnNlY29uZC0+YXNPYmplY3QoKTsKICAg
ICAgICAgYm9vbCBpc1JlZ2V4OwogICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRCb29sZWFu
KCJpc1JlZ2V4IiwgJmlzUmVnZXgpOwogICAgICAgICBTdHJpbmcgdXJsOwpAQCAtNjQxLDkgKzY0
MSw5IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU2NyaXB0CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3Qt
PmdldE51bWJlcigibGluZU51bWJlciIsICZicmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgICAg
ICBicmVha3BvaW50T2JqZWN0LT5nZXROdW1iZXIoImNvbHVtbk51bWJlciIsICZicmVha3BvaW50
LmNvbHVtbk51bWJlcik7CiAgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygiY29u
ZGl0aW9uIiwgJmJyZWFrcG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGxvY2F0aW9uID0gcmVzb2x2ZUJyZWFrcG9pbnQoaXQt
PmtleSwgc2NyaXB0SWQsIGJyZWFrcG9pbnQpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChpdC0+Zmly
c3QsIHNjcmlwdElkLCBicmVha3BvaW50KTsKICAgICAgICAgaWYgKGxvY2F0aW9uKQotICAgICAg
ICAgICAgbV9mcm9udGVuZC0+YnJlYWtwb2ludFJlc29sdmVkKGl0LT5rZXksIGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIG1fZnJvbnRlbmQtPmJyZWFrcG9pbnRSZXNvbHZlZChpdC0+Zmlyc3QsIGxv
Y2F0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGVhMzM5OWVmNzMyZWExYmM0OTJiYTlk
ZWUwNDg5MTYzMmU1Mzk4MzUuLjMzYjIxYjRmZGQxMmMxOTkyNWY0NWMzMzNhZWE3MDQ3MzdlYzZm
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcApAQCAtMzE5LDEyICszMTksMTIgQEAgcHVibGljOgogICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3Jl
PiA+IG9iamVjdFN0b3JlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhl
ZERCOjpPYmplY3RTdG9yZT46OmNyZWF0ZSgpOwogCiAgICAgICAgIGZvciAoSURCRGF0YWJhc2VN
ZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZGF0YWJhc2VNZXRh
ZGF0YS5vYmplY3RTdG9yZXMuYmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VNZXRhZGF0YS5vYmplY3RT
dG9yZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhID0gaXQtPnNlY29u
ZDsKIAogICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4PiA+IGluZGV4ZXMgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleD46OmNyZWF0ZSgpOwog
CiAgICAgICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG9iamVjdFN0b3JlTWV0YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBpdCAh
PSBvYmplY3RTdG9yZU1ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAg
ICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhID0gaXQtPnZhbHVlOwor
ICAgICAgICAgICAgICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEgPSBp
dC0+c2Vjb25kOwogCiAgICAgICAgICAgICAgICAgUmVmUHRyPE9iamVjdFN0b3JlSW5kZXg+IG9i
amVjdFN0b3JlSW5kZXggPSBPYmplY3RTdG9yZUluZGV4OjpjcmVhdGUoKQogICAgICAgICAgICAg
ICAgICAgICAuc2V0TmFtZShpbmRleE1ldGFkYXRhLm5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAwODQyNWNjODc0MjA1
ODIxMDIwZGFhMDlmNmYyNzc1NzE0ZDRjMmUyLi5lYTUyNTRhYWI1OWUzMjRiYWNiYTk3NzdiNjZk
ZjM4MGEyNWI0YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTE2Myw4ICsxNjMsOCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok5vZGVD
b3VudD4gPiBjaGlsZHJlblN0YXRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpN
ZW1vcnk6Ok5vZGVDb3VudD46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8U3RyaW5n
LCBpbnQ+OjppdGVyYXRvciBpdCA9IG1fbm9kZU5hbWVUb0NvdW50LmJlZ2luKCk7IGl0ICE9IG1f
bm9kZU5hbWVUb0NvdW50LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZUNv
dW50PiBub2RlQ291bnQgPSBOb2RlQ291bnQ6OmNyZWF0ZSgpLnNldE5vZGVOYW1lKGl0LT5rZXkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnNldENvdW50KGl0LT52YWx1ZSk7CisgICAgICAgICAgICBSZWZQdHI8Tm9kZUNvdW50
PiBub2RlQ291bnQgPSBOb2RlQ291bnQ6OmNyZWF0ZSgpLnNldE5vZGVOYW1lKGl0LT5maXJzdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuc2V0Q291bnQoaXQtPnNlY29uZCk7CiAgICAgICAgICAgICBjaGlsZHJlblN0YXRzLT5h
ZGRJdGVtKG5vZGVDb3VudCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNoaWxkcmVuU3Rh
dHMucmVsZWFzZSgpOwpAQCAtMTc0LDggKzE3NCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TGlzdGVuZXJD
b3VudD4gPiBsaXN0ZW5lclN0YXRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpN
ZW1vcnk6Okxpc3RlbmVyQ291bnQ+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChIYXNoTWFwPEF0
b21pY1N0cmluZywgaW50Pjo6aXRlcmF0b3IgaXQgPSBtX2V2ZW50VHlwZVRvQ291bnQuYmVnaW4o
KTsgaXQgIT0gbV9ldmVudFR5cGVUb0NvdW50LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8TGlzdGVuZXJDb3VudD4gbGlzdGVuZXJDb3VudCA9IExpc3RlbmVyQ291bnQ6OmNyZWF0
ZSgpLnNldFR5cGUoaXQtPmtleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q291bnQoaXQtPnZhbHVl
KTsKKyAgICAgICAgICAgIFJlZlB0cjxMaXN0ZW5lckNvdW50PiBsaXN0ZW5lckNvdW50ID0gTGlz
dGVuZXJDb3VudDo6Y3JlYXRlKCkuc2V0VHlwZShpdC0+Zmlyc3QpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LnNldENvdW50KGl0LT5zZWNvbmQpOwogICAgICAgICAgICAgbGlzdGVuZXJTdGF0cy0+YWRkSXRl
bShsaXN0ZW5lckNvdW50KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbGlzdGVuZXJTdGF0
cy5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDEzYWM3ZTllNDhmMmM0YzBkMDRmNjA3NGExZDE5ZGQ4ZDFkMzRiZWMu
LmM2YjA2YmZhNjRlMDhmNWU4MjMzY2ZlMGE5MDhkOTQzNDZlYzllYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00NjAsNyArNDYw
LDcgQEAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZy
YW1lKEZyYW1lKiBmcmFtZSkKICAgICBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1l
bnRSZXNvdXJjZU1hcCYgYWxsUmVzb3VyY2VzID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJl
c291cmNlTG9hZGVyKCktPmFsbENhY2hlZFJlc291cmNlcygpOwogICAgIENhY2hlZFJlc291cmNl
TG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBhbGxSZXNv
dXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNv
dXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGl0
LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0g
aXQtPnNlY29uZC5nZXQoKTsKIAogICAgICAgICBzd2l0Y2ggKGNhY2hlZFJlc291cmNlLT50eXBl
KCkpIHsKICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKQEAgLTc2
NCw3ICs3NjQsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcgogICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjcmlwdHMtPmVuZCgpOwogICAgICAgICBmb3Ig
KEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY3JpcHRzLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIFN0cmluZyBzY3JpcHRUZXh0OwotICAgICAg
ICAgICAgaWYgKGl0LT52YWx1ZS0+YXNTdHJpbmcoJnNjcmlwdFRleHQpKQorICAgICAgICAgICAg
aWYgKGl0LT5zZWNvbmQtPmFzU3RyaW5nKCZzY3JpcHRUZXh0KSkKICAgICAgICAgICAgICAgICBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0U2NyaXB0KHNjcmlwdFRleHQsIG1haW5Xb3Js
ZFNjcmlwdFN0YXRlKGZyYW1lKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC03OTYsOCArNzk2LDgg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lRGV0YWNoZWQoRnJhbWUqIGZyYW1lKQog
ewogICAgIEhhc2hNYXA8RnJhbWUqLCBTdHJpbmc+OjppdGVyYXRvciBpdGVyYXRvciA9IG1fZnJh
bWVUb0lkZW50aWZpZXIuZmluZChmcmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fZnJhbWVU
b0lkZW50aWZpZXIuZW5kKCkpIHsKLSAgICAgICAgbV9mcm9udGVuZC0+ZnJhbWVEZXRhY2hlZChp
dGVyYXRvci0+dmFsdWUpOwotICAgICAgICBtX2lkZW50aWZpZXJUb0ZyYW1lLnJlbW92ZShpdGVy
YXRvci0+dmFsdWUpOworICAgICAgICBtX2Zyb250ZW5kLT5mcmFtZURldGFjaGVkKGl0ZXJhdG9y
LT5zZWNvbmQpOworICAgICAgICBtX2lkZW50aWZpZXJUb0ZyYW1lLnJlbW92ZShpdGVyYXRvci0+
c2Vjb25kKTsKICAgICAgICAgbV9mcmFtZVRvSWRlbnRpZmllci5yZW1vdmUoaXRlcmF0b3IpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
cm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmNwcAppbmRleCA5OTdhNThlOTkzZjIzMjI3MTU0NjEyMGQ3ZDQyMjk4NTE5ZGY0
Y2JlLi40MmNkZTg1YmJhYzFhNmEyZDZkN2U5MGU4MTE3ZGIwZThiZTEyMmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBA
IC0yNDksMTAgKzI0OSwxMCBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2Zp
bGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOgogCiAgICAgUHJvZmls
ZXNNYXA6Oml0ZXJhdG9yIHByb2ZpbGVzRW5kID0gbV9wcm9maWxlcy5lbmQoKTsKICAgICBmb3Ig
KFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9IG1fcHJvZmlsZXMuYmVnaW4oKTsgaXQgIT0gcHJv
ZmlsZXNFbmQ7ICsraXQpCi0gICAgICAgIGhlYWRlcnMtPmFkZEl0ZW0oY3JlYXRlUHJvZmlsZUhl
YWRlcigqaXQtPnZhbHVlKSk7CisgICAgICAgIGhlYWRlcnMtPmFkZEl0ZW0oY3JlYXRlUHJvZmls
ZUhlYWRlcigqaXQtPnNlY29uZCkpOwogICAgIEhlYXBTbmFwc2hvdHNNYXA6Oml0ZXJhdG9yIHNu
YXBzaG90c0VuZCA9IG1fc25hcHNob3RzLmVuZCgpOwogICAgIGZvciAoSGVhcFNuYXBzaG90c01h
cDo6aXRlcmF0b3IgaXQgPSBtX3NuYXBzaG90cy5iZWdpbigpOyBpdCAhPSBzbmFwc2hvdHNFbmQ7
ICsraXQpCi0gICAgICAgIGhlYWRlcnMtPmFkZEl0ZW0oY3JlYXRlU25hcHNob3RIZWFkZXIoKml0
LT52YWx1ZSkpOworICAgICAgICBoZWFkZXJzLT5hZGRJdGVtKGNyZWF0ZVNuYXBzaG90SGVhZGVy
KCppdC0+c2Vjb25kKSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0yODAsMTYgKzI4MCwxNiBAQCB2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgcHJvZmlsZU9iamVjdCA9IFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZTo6Y3Jl
YXRlKCk7Ci0gICAgICAgIHByb2ZpbGVPYmplY3QtPnNldEhlYWQoaXQtPnZhbHVlLT5idWlsZElu
c3BlY3Rvck9iamVjdEZvckhlYWQoKSk7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUtPmJvdHRvbVVw
SGVhZCgpKQotICAgICAgICAgICAgcHJvZmlsZU9iamVjdC0+c2V0Qm90dG9tVXBIZWFkKGl0LT52
YWx1ZS0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSk7CisgICAgICAgIHBy
b2ZpbGVPYmplY3QtPnNldEhlYWQoaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JI
ZWFkKCkpOworICAgICAgICBpZiAoaXQtPnNlY29uZC0+Ym90dG9tVXBIZWFkKCkpCisgICAgICAg
ICAgICBwcm9maWxlT2JqZWN0LT5zZXRCb3R0b21VcEhlYWQoaXQtPnNlY29uZC0+YnVpbGRJbnNw
ZWN0b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSk7CiAgICAgfSBlbHNlIGlmICh0eXBlID09IEhl
YXBQcm9maWxlVHlwZSkgewogICAgICAgICBIZWFwU25hcHNob3RzTWFwOjppdGVyYXRvciBpdCA9
IG1fc25hcHNob3RzLmZpbmQodWlkKTsKICAgICAgICAgaWYgKGl0ID09IG1fc25hcHNob3RzLmVu
ZCgpKSB7CiAgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiUHJvZmlsZSB3YXNuJ3QgZm91bmQi
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxTY3JpcHRI
ZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gaXQtPnZhbHVlOworICAgICAgICBSZWZQdHI8U2NyaXB0
SGVhcFNuYXBzaG90PiBzbmFwc2hvdCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIHByb2ZpbGVPYmpl
Y3QgPSBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGU6OmNyZWF0ZSgpOwogICAgICAgICBp
ZiAobV9mcm9udGVuZCkgewogICAgICAgICAgICAgT3V0cHV0U3RyZWFtIHN0cmVhbShtX2Zyb250
ZW5kLCB1aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwCmluZGV4IDk2MDgxMTIxYjU0MDM2Mjk2MTZlN2I1ZDRkYjY1YjI1OWQ5
NWI1MjAuLjlkOTI5YzlhMTBiZWQzNGMyOWMyODk0ODFhYjBhNGE1YTYyODY5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1
aWxkT2JqZWN0Rm9ySGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZQogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGhlYWRlcnNPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7
CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBoZWFkZXJzT2JqZWN0LT5zZXRTdHJpbmco
aXQtPmtleS5zdHJpbmcoKSwgaXQtPnZhbHVlKTsKKyAgICAgICAgaGVhZGVyc09iamVjdC0+c2V0
U3RyaW5nKGl0LT5maXJzdC5zdHJpbmcoKSwgaXQtPnNlY29uZCk7CiAgICAgcmV0dXJuIGhlYWRl
cnNPYmplY3Q7CiB9CiAKQEAgLTIxNCw4ICsyMTQsOCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TAogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMt
PmVuZCgpOwogICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBoZWFkZXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIFN0cmlu
ZyB2YWx1ZTsKLSAgICAgICAgICAgIGlmIChpdC0+dmFsdWUtPmFzU3RyaW5nKCZ2YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgdmFsdWUp
OworICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmFzU3RyaW5nKCZ2YWx1ZSkpCisgICAgICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCB2YWx1ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3Rh
dGUuY3BwCmluZGV4IGJhZjEwYzk3MWUxMTk1MzI1NzZiZjQ5NDU1MjJmMzdiMDgzMjVhZmIuLjcw
YTI0Mzk4NDdjNDU3YzM4YTM5MGEzMzAwNGEzZDllMWIxZGI0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIElu
c3BlY3RvclN0YXRlOjpnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAg
IEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSBtX3Byb3BlcnRpZXMtPmZpbmQocHJvcGVy
dHlOYW1lKTsKICAgICBib29sIHZhbHVlID0gZmFsc2U7CiAgICAgaWYgKGl0ICE9IG1fcHJvcGVy
dGllcy0+ZW5kKCkpCi0gICAgICAgIGl0LT52YWx1ZS0+YXNCb29sZWFuKCZ2YWx1ZSk7CisgICAg
ICAgIGl0LT5zZWNvbmQtPmFzQm9vbGVhbigmdmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0K
IApAQCAtODksNyArODksNyBAQCBTdHJpbmcgSW5zcGVjdG9yU3RhdGU6OmdldFN0cmluZyhjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICBJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGl0
ID0gbV9wcm9wZXJ0aWVzLT5maW5kKHByb3BlcnR5TmFtZSk7CiAgICAgU3RyaW5nIHZhbHVlOwog
ICAgIGlmIChpdCAhPSBtX3Byb3BlcnRpZXMtPmVuZCgpKQotICAgICAgICBpdC0+dmFsdWUtPmFz
U3RyaW5nKCZ2YWx1ZSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmFzU3RyaW5nKCZ2YWx1ZSk7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC05OCw3ICs5OCw3IEBAIGxvbmcgSW5zcGVjdG9yU3Rh
dGU6OmdldExvbmcoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgSW5zcGVjdG9yT2Jq
ZWN0OjppdGVyYXRvciBpdCA9IG1fcHJvcGVydGllcy0+ZmluZChwcm9wZXJ0eU5hbWUpOwogICAg
IGxvbmcgdmFsdWUgPSAwOwogICAgIGlmIChpdCAhPSBtX3Byb3BlcnRpZXMtPmVuZCgpKQotICAg
ICAgICBpdC0+dmFsdWUtPmFzTnVtYmVyKCZ2YWx1ZSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmFz
TnVtYmVyKCZ2YWx1ZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xMDcsNyArMTA3LDcg
QEAgZG91YmxlIEluc3BlY3RvclN0YXRlOjpnZXREb3VibGUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpCiAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBpdCA9IG1fcHJvcGVydGllcy0+
ZmluZChwcm9wZXJ0eU5hbWUpOwogICAgIGRvdWJsZSB2YWx1ZSA9IDA7CiAgICAgaWYgKGl0ICE9
IG1fcHJvcGVydGllcy0+ZW5kKCkpCi0gICAgICAgIGl0LT52YWx1ZS0+YXNOdW1iZXIoJnZhbHVl
KTsKKyAgICAgICAgaXQtPnNlY29uZC0+YXNOdW1iZXIoJnZhbHVlKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
SW5zcGVjdG9yU3RhdGU6OmdldE9iamVjdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZQogICAg
ICAgICBtX3Byb3BlcnRpZXMtPnNldE9iamVjdChwcm9wZXJ0eU5hbWUsIEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCkpOwogICAgICAgICBpdCA9IG1fcHJvcGVydGllcy0+ZmluZChwcm9wZXJ0eU5h
bWUpOwogICAgIH0KLSAgICByZXR1cm4gaXQtPnZhbHVlLT5hc09iamVjdCgpOworICAgIHJldHVy
biBpdC0+c2Vjb25kLT5hc09iamVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5k
ZXggMjM0MGMxZGI1MzU4ZDZhYTljMzEwY2U3ZjdmZDhiNjNhNDQ5MzgyNS4uODNiNDAyZDZlYTkz
OWY0ZjNlNWU3ZWI0OWQ4MGUzMGRhNzQ3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdp
dGhQcm9wZXJ0aWVzKCkgY29uCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbmFjdGl2
YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHByZXZpb3VzUGFyc2VkT2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+dmFsdWUtPmdldEJvb2xlYW4oVHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHk6OlBhcnNlZE9rLCAmcHJldmlvdXNQYXJzZWRPayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBhY3RpdmVJdC0+c2Vjb25kLT5nZXRCb29sZWFu
KFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5OjpQYXJzZWRPaywgJnByZXZpb3VzUGFyc2Vk
T2spOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgIXByZXZpb3VzUGFy
c2VkT2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5hY3RpdmF0ZSA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTU0Myw3ICs1NDMsNyBAQCBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJv
cGVydGllcygpIGNvbgogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3Vz
QWN0aXZlUHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKHNob3VsZEluYWN0aXZhdGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYWN0aXZlSXQtPnZhbHVlLT5zZXRTdGF0dXMoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVy
dHk6OlN0YXR1czo6SW5hY3RpdmUpOworICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdC0+c2Vj
b25kLT5zZXRTdGF0dXMoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk6OlN0YXR1czo6SW5h
Y3RpdmUpOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZl
UHJvcGVydHkuc2V0KGNhbm9uaWNhbFByb3BlcnR5TmFtZSwgcHJvcGVydHkpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBQYXNz
UmVmUHRyPEluc3BlY3RvclN0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjppbnNwZWN0b3JTdHls
ZUZvcklkKGNvbnN0IEluc3BlYwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGluc3Bl
Y3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShpZCwgc3R5bGUsIHRoaXMpOwogICAg
ICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGUucmVsZWFzZSgpOwogICAgIH0KLSAgICByZXR1cm4g
aXQtPnZhbHVlOworICAgIHJldHVybiBpdC0+c2Vjb25kOwogfQogCiB2b2lkIEluc3BlY3RvclN0
eWxlU2hlZXQ6OnJlbWVtYmVySW5zcGVjdG9yU3R5bGUoUmVmUHRyPEluc3BlY3RvclN0eWxlPiBp
bnNwZWN0b3JTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5jcHAKaW5kZXggYWRhMjYxN2NjMGM0YmVhMGE5ZjE5OWYyNTk3NzE0ZDI2OTBiMDZlOC4uZTRl
YWQxN2U1Mjg2NjhkOWU1MDViZmRjYjEwMzBlN2I1MGZiNzc3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTcxNyw3ICs3MTcsNyBAQCBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXQoY29uc3QgU3Ry
aW5nJiBuYW1lKSBjb25zdAogICAgIERpY3Rpb25hcnk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9k
YXRhLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ID09IG1fZGF0YS5lbmQoKSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0K
IAogdm9pZCBJbnNwZWN0b3JPYmplY3RCYXNlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKQpA
QCAtNzM5LDkgKzczOSw5IEBAIHZvaWQgSW5zcGVjdG9yT2JqZWN0QmFzZTo6d3JpdGVKU09OKFN0
cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QKICAgICAgICAgQVNTRVJUKGl0ICE9IG1fZGF0YS5l
bmQoKSk7CiAgICAgICAgIGlmIChpKQogICAgICAgICAgICAgb3V0cHV0LT5hcHBlbmQoJywnKTsK
LSAgICAgICAgZG91YmxlUXVvdGVTdHJpbmcoaXQtPmtleSwgb3V0cHV0KTsKKyAgICAgICAgZG91
YmxlUXVvdGVTdHJpbmcoaXQtPmZpcnN0LCBvdXRwdXQpOwogICAgICAgICBvdXRwdXQtPmFwcGVu
ZCgnOicpOwotICAgICAgICBpdC0+dmFsdWUtPndyaXRlSlNPTihvdXRwdXQpOworICAgICAgICBp
dC0+c2Vjb25kLT53cml0ZUpTT04ob3V0cHV0KTsKICAgICB9CiAgICAgb3V0cHV0LT5hcHBlbmQo
J30nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCmluZGV4IDlmYzYxZGI3YTc5ZGJhMjQwZDY3M2YxODQ3OWFjNGQ2ZDQzNzYyZDcu
LjI0YmVlYjU3ZDA3N2YzMjA5NzI2MDQ3ODMxNzgyNTQwYmJjMTMyNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMjA0LDkg
KzIwNCw5IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OndvcmtlckNvbnRleHRUZXJtaW5h
dGVkKFdvcmtlckNvbnRleHRQcm94eSogcHJveHkpCiB7CiAgICAgbV9kZWRpY2F0ZWRXb3JrZXJz
LnJlbW92ZShwcm94eSk7CiAgICAgZm9yIChXb3JrZXJDaGFubmVsczo6aXRlcmF0b3IgaXQgPSBt
X2lkVG9DaGFubmVsLmJlZ2luKCk7IGl0ICE9IG1faWRUb0NoYW5uZWwuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgaWYgKHByb3h5ID09IGl0LT52YWx1ZS0+cHJveHkoKSkgewotICAgICAgICAgICAg
bV9pbnNwZWN0b3JGcm9udGVuZC0+d29ya2VyKCktPndvcmtlclRlcm1pbmF0ZWQoaXQtPmtleSk7
Ci0gICAgICAgICAgICBkZWxldGUgaXQtPnZhbHVlOworICAgICAgICBpZiAocHJveHkgPT0gaXQt
PnNlY29uZC0+cHJveHkoKSkgeworICAgICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZC0+d29y
a2VyKCktPndvcmtlclRlcm1pbmF0ZWQoaXQtPmZpcnN0KTsKKyAgICAgICAgICAgIGRlbGV0ZSBp
dC0+c2Vjb25kOwogICAgICAgICAgICAgbV9pZFRvQ2hhbm5lbC5yZW1vdmUoaXQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTYsMTQgKzIxNiwxNCBAQCB2b2lkIEluc3Bl
Y3RvcldvcmtlckFnZW50Ojp3b3JrZXJDb250ZXh0VGVybWluYXRlZChXb3JrZXJDb250ZXh0UHJv
eHkqIHByb3h5KQogdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6Y3JlYXRlV29ya2VyRnJvbnRl
bmRDaGFubmVsc0ZvckV4aXN0aW5nV29ya2VycygpCiB7CiAgICAgZm9yIChEZWRpY2F0ZWRXb3Jr
ZXJzOjppdGVyYXRvciBpdCA9IG1fZGVkaWNhdGVkV29ya2Vycy5iZWdpbigpOyBpdCAhPSBtX2Rl
ZGljYXRlZFdvcmtlcnMuZW5kKCk7ICsraXQpCi0gICAgICAgIGNyZWF0ZVdvcmtlckZyb250ZW5k
Q2hhbm5lbChpdC0+a2V5LCBpdC0+dmFsdWUpOworICAgICAgICBjcmVhdGVXb3JrZXJGcm9udGVu
ZENoYW5uZWwoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6ZGVzdHJveVdvcmtlckZyb250ZW5kQ2hhbm5lbHMoKQogewogICAgIGZvciAoV29y
a2VyQ2hhbm5lbHM6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvQ2hhbm5lbC5iZWdpbigpOyBpdCAhPSBt
X2lkVG9DaGFubmVsLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGl0LT52YWx1ZS0+ZGlzY29ubmVj
dEZyb21Xb3JrZXJDb250ZXh0KCk7Ci0gICAgICAgIGRlbGV0ZSBpdC0+dmFsdWU7CisgICAgICAg
IGl0LT5zZWNvbmQtPmRpc2Nvbm5lY3RGcm9tV29ya2VyQ29udGV4dCgpOworICAgICAgICBkZWxl
dGUgaXQtPnNlY29uZDsKICAgICB9CiAgICAgbV9pZFRvQ2hhbm5lbC5jbGVhcigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5k
ZXggNTkyMzMwMjMxNzE2NTY1M2Q5YzU5OTY1OTNhMGM1YjFhZTE5NzNmNS4uZTA1ZDEzZGVjYjM4
MThmY2YxYmI4MzMyODM1OWRlYWZiMjk1ZGZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0yNTksMTAgKzI1OSwxMCBAQCBW
ZWN0b3I8U3RyaW5nPiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZAogICAgIFJlc291cmNlRGF0YU1hcDo6aXRlcmF0b3IgaXQ7
CiAgICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlcXVlc3RJZFRvUmVzb3Vy
Y2VEYXRhTWFwLmVuZCgpOwogICAgIGZvciAoaXQgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRh
TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZXNvdXJjZURhdGEqIHJl
c291cmNlRGF0YSA9IGl0LT52YWx1ZTsKKyAgICAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURh
dGEgPSBpdC0+c2Vjb25kOwogICAgICAgICBpZiAocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJj
ZSgpID09IGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAgICAgICByZXNvdXJjZURhdGEtPnNldENh
Y2hlZFJlc291cmNlKDApOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdC0+a2V5KTsKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMjc5LDkgKzI3OSw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKGNvbnN0
IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQpCiAgICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRv
ciBpdDsKICAgICBSZXNvdXJjZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVxdWVzdElkVG9S
ZXNvdXJjZURhdGFNYXAuZW5kKCk7CiAgICAgZm9yIChpdCA9IG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlc291cmNlRGF0
YSogcmVzb3VyY2VEYXRhID0gaXQtPnZhbHVlOworICAgICAgICBSZXNvdXJjZURhdGEqIHJlc291
cmNlRGF0YSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGlmICghcHJlc2VydmVkTG9hZGVySWQuaXNO
dWxsKCkgJiYgcmVzb3VyY2VEYXRhLT5sb2FkZXJJZCgpID09IHByZXNlcnZlZExvYWRlcklkKQot
ICAgICAgICAgICAgcHJlc2VydmVkTWFwLnNldChpdC0+a2V5LCBpdC0+dmFsdWUpOworICAgICAg
ICAgICAgcHJlc2VydmVkTWFwLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBkZWxldGUgcmVzb3VyY2VEYXRhOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggOWIy
NmZjODZjOTA0MzkzOTUxNWYxMGFlNjllYmI2NTUzMGMwYjQzMS4uYWJhMmJhMDYzZTU5MzA4ZmFl
YzQ0YmZjNzhkZmFmOGQ5Yjg0NWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBpc1Np
bXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
SFRUUEhlYWRlck1hcCYKIAogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGhlYWRlck1hcC5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gaGVhZGVyTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAo
IWlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdEhlYWRlcldoaXRlbGlzdChpdC0+a2V5LCBp
dC0+dmFsdWUpKQorICAgICAgICBpZiAoIWlzT25BY2Nlc3NDb250cm9sU2ltcGxlUmVxdWVzdEhl
YWRlcldoaXRlbGlzdChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTE2LDE0ICsxMTYsMTQgQEAgUmVzb3VyY2VSZXF1ZXN0IGNy
ZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWUKICAgICBpZiAocmVxdWVzdEhlYWRlckZpZWxkcy5zaXplKCkgPiAwKSB7CiAgICAgICAg
IFN0cmluZ0J1aWxkZXIgaGVhZGVyQnVmZmVyOwogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJGaWVsZHMuYmVnaW4oKTsKLSAgICAgICAgaGVh
ZGVyQnVmZmVyLmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgaGVhZGVyQnVmZmVyLmFwcGVuZChp
dC0+Zmlyc3QpOwogICAgICAgICArK2l0OwogCiAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IHJlcXVlc3RIZWFkZXJGaWVsZHMuZW5kKCk7CiAgICAgICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIGhlYWRlckJ1ZmZlci5hcHBlbmQoJywn
KTsKICAgICAgICAgICAgIGhlYWRlckJ1ZmZlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGhl
YWRlckJ1ZmZlci5hcHBlbmQoaXQtPmtleSk7CisgICAgICAgICAgICBoZWFkZXJCdWZmZXIuYXBw
ZW5kKGl0LT5maXJzdCk7CiAgICAgICAgIH0KIAogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzIiwgaGVhZGVy
QnVmZmVyLnRvU3RyaW5nKCkubG93ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXggOWQ1MWM4
N2ZlNmM0ZTdkNDM5MzNlNDVlZWY3ZDVjMTliZDVlMjA4NC4uMDRkNTg4MTU1Y2U1NTMzYmRkZDNm
MDJiM2JkODE1ZWQ5ZWUzOTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtMTI1LDggKzEyNSw4
IEBAIGJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OmFsbG93c0Nyb3Nz
T3JpZ2luSGVhZGVycyhjb25zdCBIVFRQSGVhCiB7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gcmVxdWVzdEhlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBpZiAoIW1faGVhZGVycy5jb250YWlucyhpdC0+a2V5KSAmJiAh
aXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0SGVhZGVyV2hpdGVsaXN0KGl0LT5rZXksIGl0
LT52YWx1ZSkpIHsKLSAgICAgICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiUmVxdWVzdCBoZWFk
ZXIgZmllbGQgIiArIGl0LT5rZXkuc3RyaW5nKCkgKyAiIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vz
cy1Db250cm9sLUFsbG93LUhlYWRlcnMuIjsKKyAgICAgICAgaWYgKCFtX2hlYWRlcnMuY29udGFp
bnMoaXQtPmZpcnN0KSAmJiAhaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0SGVhZGVyV2hp
dGVsaXN0KGl0LT5maXJzdCwgaXQtPnNlY29uZCkpIHsKKyAgICAgICAgICAgIGVycm9yRGVzY3Jp
cHRpb24gPSAiUmVxdWVzdCBoZWFkZXIgZmllbGQgIiArIGl0LT5maXJzdC5zdHJpbmcoKSArICIg
aXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycy4iOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTY3LDcgKzE2Nyw3IEBA
IGJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodChj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uCiAgICAgaWYgKGNhY2hlSXQgPT0gbV9wcmVmbGlnaHRI
YXNoTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoY2FjaGVJdC0+
dmFsdWUtPmFsbG93c1JlcXVlc3QoaW5jbHVkZUNyZWRlbnRpYWxzLCBtZXRob2QsIHJlcXVlc3RI
ZWFkZXJzKSkKKyAgICBpZiAoY2FjaGVJdC0+c2Vjb25kLT5hbGxvd3NSZXF1ZXN0KGluY2x1ZGVD
cmVkZW50aWFscywgbWV0aG9kLCByZXF1ZXN0SGVhZGVycykpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgbV9wcmVmbGlnaHRIYXNoTWFwLnJlbW92ZShjYWNoZUl0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDEzOTJhMjUwNjhhZWE0YjU0NWMzYjY5
YzM4Y2E4YmM2NDIxNTNlODQuLmVhNjliZjUyZjg4MzM3NTlmYjk4ODJjYzY3OGMyMDI5NzRkOTkz
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjE1LDcg
KzYxNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmdldFN1YnJlc291cmNlcyhWZWN0b3I8UGFz
c1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4mIHN1YnJlCiAgICAgY29uc3QgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXAmIGFsbFJlc291cmNlcyA9IGRvY3VtZW50LT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsKICAgICBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
YWxsUmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3Vt
ZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJy
ZXNvdXJjZSA9IHRoaXMtPnN1YnJlc291cmNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+dmFs
dWUtPnVybCgpKSk7CisgICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNl
ID0gdGhpcy0+c3VicmVzb3VyY2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5zZWNvbmQtPnVy
bCgpKSk7CiAgICAgICAgIGlmIChzdWJyZXNvdXJjZSkKICAgICAgICAgICAgIHN1YnJlc291cmNl
cy5hcHBlbmQoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CkBAIC02NDcsOCArNjQ3LDgg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZp
cmVkKFRpbWVyPERvY3VtZW50TG9hZGVyPioKIAogICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gY29weS5lbmQoKTsKICAgICBmb3IgKFN1YnN0aXR1dGVSZXNv
dXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IGl0LT5rZXk7Ci0g
ICAgICAgIFN1YnN0aXR1dGVSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+dmFsdWUuZ2V0KCk7Cisg
ICAgICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gaXQtPmZpcnN0OworICAgICAg
ICBTdWJzdGl0dXRlUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAgU2hhcmVkQnVmZmVyKiBk
YXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggMzM1MmU2NDM2YTZhNWY2MWM5NmE5ODIwZjE5MzcyNjZiZTE2
MWQ2NS4uMDgzNmQ4Y2MwMGU4OTA1OGU5ODMyM2JiNmQ2MDY0NTNmY2U5YzUzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM2OCw3ICszNjgs
NyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHIpCiAKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IHIuaHR0cEhlYWRlckZpZWxkcygpLmZpbmQoQXRvbWljU3RyaW5nKCJ4LWZyYW1lLW9wdGlv
bnMiKSk7CiAgICAgaWYgKGl0ICE9IHIuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpKSB7Ci0gICAg
ICAgIFN0cmluZyBjb250ZW50ID0gaXQtPnZhbHVlOworICAgICAgICBTdHJpbmcgY29udGVudCA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+c2hvdWxkSW50ZXJy
dXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29udGVudCwgci51cmwoKSkpIHsKICAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5p
ZWQobV9mcmFtZS5nZXQoKSwgZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCByKTsKICAg
ICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJS
ZWZ1c2VkIHRvIGRpc3BsYXkgZG9jdW1lbnQgYmVjYXVzZSBkaXNwbGF5IGZvcmJpZGRlbiBieSBY
LUZyYW1lLU9wdGlvbnMuXG4iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDhlYjQ0ZDQ5ZDI5YTY4NDY2NGQ4MzI1Y2EyNjFmNTc1
YzY0MTBiNjMuLjgwMDRkOGYyZWIyZDhiYzM2MDZhMDY5ZmM3ZWVhMzUxYWZjZmNkYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0x
NzQsNyArMTc0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1Jl
cXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmltdW1QcmkKICAgICBtX2hvc3RzLmNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICBIb3N0TWFwOjppdGVyYXRvciBlbmQgPSBtX2hvc3RzLmVuZCgp
OwogICAgIGZvciAoSG9zdE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faG9zdHMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgaG9zdHNUb1NlcnZlLmFwcGVuZChpdGVyLT52YWx1
ZSk7CisgICAgICAgIGhvc3RzVG9TZXJ2ZS5hcHBlbmQoaXRlci0+c2Vjb25kKTsKIAogICAgIGlu
dCBzaXplID0gaG9zdHNUb1NlcnZlLnNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGUuY3BwCmluZGV4IGI3ZWE2NTI0YzQwMzk3NWZmMGRmOTQ2YTJmMGQwMTFjYjE3
MDBhNmEuLjYzY2Q3YmJiZmE4Nzg5ZjRhZGIzZGY1MmNiNGU5YzE3ZGQ3MTU5NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAK
QEAgLTEwMCwxMSArMTAwLDExIEBAIHVuc2lnbmVkIEFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZVJl
c291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIFRo
ZSByZXNvdXJjZSBleGlzdHMsIGdldCBpdHMgdHlwZSBzbyB3ZSBjYW4gcmV0dXJuIGl0LgotICAg
IHVuc2lnbmVkIHR5cGUgPSBpdC0+dmFsdWUtPnR5cGUoKTsKKyAgICB1bnNpZ25lZCB0eXBlID0g
aXQtPnNlY29uZC0+dHlwZSgpOwogCiAgICAgbV9yZXNvdXJjZXMucmVtb3ZlKGl0KTsKIAotICAg
IG1fZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSAtPSBpdC0+dmFsdWUtPmVzdGltYXRlZFNpemVJblN0
b3JhZ2UoKTsKKyAgICBtX2VzdGltYXRlZFNpemVJblN0b3JhZ2UgLT0gaXQtPnNlY29uZC0+ZXN0
aW1hdGVkU2l6ZUluU3RvcmFnZSgpOwogCiAgICAgcmV0dXJuIHR5cGU7CiB9ICAgIApAQCAtMTgw
LDcgKzE4MCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6Y2xlYXJTdG9yYWdlSUQoKQogICAg
IAogICAgIFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jlc291cmNlcy5lbmQo
KTsKICAgICBmb3IgKFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVzb3VyY2Vz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5jbGVhclN0b3Jh
Z2VJRCgpOworICAgICAgICBpdC0+c2Vjb25kLT5jbGVhclN0b3JhZ2VJRCgpOwogfQogICAgIAog
dm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biogb3JpZ2luKQpAQCAtMjE4LDggKzIxOCw4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZHVt
cCgpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIAogICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+ID46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIHByaW50ZigiJXMgIiwgaXQtPmtleS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAg
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZHVtcFR5cGUoaXQtPnZhbHVlLT50eXBlKCkpOwor
ICAgICAgICBwcmludGYoIiVzICIsIGl0LT5maXJzdC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAg
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZHVtcFR5cGUoaXQtPnNlY29uZC0+dHlwZSgpKTsK
ICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggMjczYTYwMTBkODI1NWZiOTRh
YTYwNTFiOTJmNjkyYjQ4ODM3Yzk5Ni4uOTIwODJjNTZiZTExYzlkYzI1ODUwZjdhOTRiYzI3OTNi
NzdmNWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTc3Nyw5ICs3NzcsOSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICBpZiAoaXNV
cGdyYWRlQXR0ZW1wdCkgewogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlOjpSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9uZXdlc3RDYWNoZS0+ZW5kKCk7CiAgICAgICAgIGZvciAo
QXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9uZXdl
c3RDYWNoZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCB0eXBlID0gaXQtPnZhbHVlLT50eXBlKCk7CisgICAgICAgICAgICB1bnNpZ25lZCB0eXBlID0g
aXQtPnNlY29uZC0+dHlwZSgpOwogICAgICAgICAgICAgaWYgKHR5cGUgJiBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6Ok1hc3RlcikKLSAgICAgICAgICAgICAgICBhZGRFbnRyeShpdC0+a2V5LCB0
eXBlKTsKKyAgICAgICAgICAgICAgICBhZGRFbnRyeShpdC0+Zmlyc3QsIHR5cGUpOwogICAgICAg
ICB9CiAgICAgfQogICAgIApAQCAtMTAxOCw3ICsxMDE4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OnN0YXJ0TG9hZGluZ0VudHJ5KCkKIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFu
ZGxlKTsKICAgICAKLSAgICBtX2N1cnJlbnRIYW5kbGUgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZShL
VVJMKFBhcnNlZFVSTFN0cmluZywgaXQtPmtleSksIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENh
Y2hlLT5yZXNvdXJjZUZvclVSTChpdC0+a2V5KSA6IDApOworICAgIG1fY3VycmVudEhhbmRsZSA9
IGNyZWF0ZVJlc291cmNlSGFuZGxlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+Zmlyc3QpLCBt
X25ld2VzdENhY2hlID8gbV9uZXdlc3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoaXQtPmZpcnN0KSA6
IDApOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsaXZlckRlbGF5ZWRNYWlu
UmVzb3VyY2VzKCkKQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjphZGRFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgdHlwZSkKICAgICBFbnRy
eU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGVuZGluZ0VudHJpZXMuYWRkKHVybCwgdHlwZSk7
CiAgICAgCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSB8PSB0eXBlOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCB8PSB0
eXBlOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YXNzb2NpYXRlRG9jdW1lbnRM
b2FkZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQXBwbGljYXRpb25DYWNoZSog
Y2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCBmZTlmMDEwYTBmZTY1MDNkMGJjNWU1YjkyNzcwYTNm
N2I2NDM0NGZkLi44MDFjMWIzNjcwMzFhMzM5ZGI0NDcwN2E5MmQxYmM4MGQ0MWQ4Yzc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpmaWxsUmVzb3VyY2VMaXN0KFJlc291cmNlSW5mb0xpc3QqIHJlc291cmNlcykKICAgICAgCiAg
ICAgQXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNh
Y2hlLT5lbmQoKTsKICAgICBmb3IgKEFwcGxpY2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGNhY2hlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBpdC0+dmFsdWU7
CisgICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IHJlc291cmNlID0gaXQt
PnNlY29uZDsKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHJlc291cmNlLT50eXBlKCk7CiAgICAg
ICAgIGJvb2wgaXNNYXN0ZXIgICA9IHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1h
c3RlcjsKICAgICAgICAgYm9vbCBpc01hbmlmZXN0ID0gdHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6TWFuaWZlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDk5NzY2ZTNhNjZi
ZDM2ZWI0MmZlZDJhOTI2OWQzNGIwNjYxOTRkN2YuLmQ4MzE3ODRiNDE5NmFkZjM4MmNmMzU1ZTBl
ZWYwMmQ2YTdhODA3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IGludDY0X3QgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjplc3RpbWF0ZWRTaXplSW5TdG9yYWdl
KCkKIAogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlKCku
aHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSByZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZHMoKS5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIG1fZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSArPSAoaXQtPmtl
eS5sZW5ndGgoKSArIGl0LT52YWx1ZS5sZW5ndGgoKSArIDIpICogc2l6ZW9mKFVDaGFyKTsKKyAg
ICAgICAgbV9lc3RpbWF0ZWRTaXplSW5TdG9yYWdlICs9IChpdC0+Zmlyc3QubGVuZ3RoKCkgKyBp
dC0+c2Vjb25kLmxlbmd0aCgpICsgMikgKiBzaXplb2YoVUNoYXIpOwogCiAgICAgbV9lc3RpbWF0
ZWRTaXplSW5TdG9yYWdlICs9IHVybCgpLnN0cmluZygpLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFy
KTsKICAgICBtX2VzdGltYXRlZFNpemVJblN0b3JhZ2UgKz0gc2l6ZW9mKGludCk7IC8vIHJlc3Bv
bnNlKCkubV9odHRwU3RhdHVzQ29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggZDFjOTdlNGIy
YWExNjA4ZmM5NDhlYTYzMmMyYmE2ZWQyYTdlNTEzZC4uNzc4ZTRlMzg4ODkxZDMzNDcyMGNkMjE1
MjU2ZDRkYWQzOWIyMmYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMzcsOCArMTM3LDgg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9y
Q3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKICAgICBDYWNoZUdyb3VwTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9jYWNoZXNJbk1lbW9yeS5hZGQobWFuaWZlc3RVUkwsIDApOwogICAgIAogICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUpOwotICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KIAogICAgIC8vIExvb2sgdXAgdGhlIGdyb3VwIGlu
IHRoZSBkYXRhYmFzZQpAQCAtMTUwLDcgKzE1MCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCog
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VS
CiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZCh1cmxIb3N0SGFzaChtYW5pZmVzdFVSTCkpOwog
ICAgIH0KICAgICAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gZ3JvdXA7CisgICAgcmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBncm91cDsKICAgICAKICAgICByZXR1cm4gZ3JvdXA7CiB9
CkBAIC0xOTcsNyArMTk3LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJiB1cmwKICAgICAvLyBDaGVj
ayBpZiBhIGNhY2hlIGFscmVhZHkgZXhpc3RzIGluIG1lbW9yeS4KICAgICBDYWNoZUdyb3VwTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NhY2hlc0luTWVtb3J5LmVuZCgpOwogICAgIGZvciAo
Q2FjaGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NhY2hlc0luTWVtb3J5LmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdy
b3VwID0gaXQtPnZhbHVlOworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0g
aXQtPnNlY29uZDsKIAogICAgICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOwogCkBA
IC0yNjgsNyArMjY4LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEsKICAgICAvLyBDaGVjayBp
ZiBhbiBhcHByb3ByaWF0ZSBjYWNoZSBhbHJlYWR5IGV4aXN0cyBpbiBtZW1vcnkuCiAgICAgQ2Fj
aGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jYWNoZXNJbk1lbW9yeS5lbmQoKTsK
ICAgICBmb3IgKENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWNoZXNJbk1l
bW9yeS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBncm91cCA9IGl0LT52YWx1ZTsKKyAgICAgICAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBncm91cCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoIWdyb3VwLT5p
c09ic29sZXRlKCkpOwogCkBAIC03MTMsMTMgKzcxMywxMyBAQCBib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgUmVzb3VyY2VTdG9yYWdl
SURKbwogICAgIHsKICAgICAgICAgQXBwbGljYXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5lbmQoKTsKICAgICAgICAgZm9yIChBcHBsaWNhdGlvbkNh
Y2hlOjpSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjYWNoZS0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBvbGRTdG9yYWdlSUQgPSBpdC0+
dmFsdWUtPnN0b3JhZ2VJRCgpOwotICAgICAgICAgICAgaWYgKCFzdG9yZShpdC0+dmFsdWUuZ2V0
KCksIGNhY2hlU3RvcmFnZUlEKSkKKyAgICAgICAgICAgIHVuc2lnbmVkIG9sZFN0b3JhZ2VJRCA9
IGl0LT5zZWNvbmQtPnN0b3JhZ2VJRCgpOworICAgICAgICAgICAgaWYgKCFzdG9yZShpdC0+c2Vj
b25kLmdldCgpLCBjYWNoZVN0b3JhZ2VJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgICAgICAvLyBTdG9yaW5nIHRoZSByZXNvdXJjZSBzdWNjZWVkZWQuIExvZyBp
dHMgb2xkIHN0b3JhZ2VJRCBpbiBjYXNlCiAgICAgICAgICAgICAvLyBpdCBuZWVkcyB0byBiZSBy
ZXN0b3JlZCBsYXRlci4KLSAgICAgICAgICAgIHN0b3JhZ2VJREpvdXJuYWwtPmFkZChpdC0+dmFs
dWUuZ2V0KCksIG9sZFN0b3JhZ2VJRCk7CisgICAgICAgICAgICBzdG9yYWdlSURKb3VybmFsLT5h
ZGQoaXQtPnNlY29uZC5nZXQoKSwgb2xkU3RvcmFnZUlEKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKQEAgLTgzOSw5ICs4MzksOSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9y
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAg
IEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc291cmNlLT5yZXNwb25zZSgp
Lmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkcygpLmJl
Z2luKCk7IGl0IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0
LT5rZXkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpdC0+Zmlyc3QpOwogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgoVUNoYXIpJzonKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoaXQtPnZhbHVlKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaXQtPnNl
Y29uZCk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKChVQ2hhciknXG4nKTsKICAgICB9
CiAgICAgCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjplbXB0eSgpCiAgICAgLy8gdW50aWwgYSBjYWNoZSB1cGRhdGUgcHJvY2VzcyBoYXMgYmVlbiBp
bml0aWF0ZWQuCiAgICAgQ2FjaGVHcm91cE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jYWNo
ZXNJbk1lbW9yeS5lbmQoKTsKICAgICBmb3IgKENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9jYWNoZXNJbk1lbW9yeS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
IGl0LT52YWx1ZS0+Y2xlYXJTdG9yYWdlSUQoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y2xlYXJT
dG9yYWdlSUQoKTsKICAgICAKICAgICBjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKTsKIH0KQEAg
LTEzMDMsNyArMTMwMyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29w
eU9mQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgQXBwCiAgICAgLy8gVHJhdmVy
c2UgdGhlIGNhY2hlIGFuZCBhZGQgY29waWVzIG9mIGFsbCByZXNvdXJjZXMuCiAgICAgQXBwbGlj
YXRpb25DYWNoZTo6UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNhY2hlLT5lbmQo
KTsKICAgICBmb3IgKEFwcGxpY2F0aW9uQ2FjaGU6OlJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGNhY2hlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAg
ICAgICAgIAogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiByZXNvdXJj
ZUNvcHkgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShyZXNvdXJjZS0+dXJsKCks
IHJlc291cmNlLT5yZXNwb25zZSgpLCByZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgp
LCByZXNvdXJjZS0+cGF0aCgpKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggY2QzODc2YWFlZmFjOTA0Y2I0Y2Q0
OTBjNzI4ODkxZTAzODc1NjRkYy4uZjY5NzBhYTUzMWI1ZTVhNjVjNWE2MDUyOWIxNWUwNTQzODZj
NDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0
b3J5LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktu
b3duQXJjaGl2ZU1JTUVUeXBlcygpCiAgICAgQXJjaGl2ZU1JTUVUeXBlc01hcDo6aXRlcmF0b3Ig
ZW5kID0gYXJjaGl2ZU1JTUVUeXBlcygpLmVuZCgpOwogCiAgICAgZm9yICg7IGkgIT0gZW5kOyAr
K2kpCi0gICAgICAgIG1pbWVUeXBlcy5hZGQoaS0+a2V5KTsKKyAgICAgICAgbWltZVR5cGVzLmFk
ZChpLT5maXJzdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDEyODhmZTE3Y2YwOTNmYjQ0ZDFiYzQwYzY4Njk1
MmEwMmE0ZjQwMjguLjRlNDMxMzFiMWQyNTQ4MzcxZjcxNTc0ZjUxNTY1N2UzZDQyZDA4NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cApAQCAtMTUzLDggKzE1Myw4IEBAIGJvb2wgQ2FjaGVkUmF3UmVzb3VyY2U6OmNhblJldXNlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkgY29uc3QKIAogICAgIEhUVFBIZWFkZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG5ld0hlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQ
SGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbmV3SGVhZGVycy5iZWdpbigpOyBpICE9IGVu
ZDsgKytpKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBoZWFkZXJOYW1lID0gaS0+a2V5OwotICAg
ICAgICBpZiAoaS0+dmFsdWUgIT0gb2xkSGVhZGVycy5nZXQoaGVhZGVyTmFtZSkpCisgICAgICAg
IEF0b21pY1N0cmluZyBoZWFkZXJOYW1lID0gaS0+Zmlyc3Q7CisgICAgICAgIGlmIChpLT5zZWNv
bmQgIT0gb2xkSGVhZGVycy5nZXQoaGVhZGVyTmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggYWRlOTgzZTg2NWU2NGI4N2NlMWMxMWM4MzVl
ZjQ3NWVkNmI3MTM3Yi4uZDdhYmNhZTg0MGM3OTZkNjFhYjYzNjA0NWZkNWFmNWRkNzJjNzkxNiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBA
IC02MTIsOCArNjEyLDggQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c3dpdGNoQ2xpZW50c1RvUmV2
YWxpZGF0ZWRSZXNvdXJjZSgpCiAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlQ2xpZW50Kj4gY2xp
ZW50c1RvTW92ZTsKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+Ojpp
dGVyYXRvciBlbmQyID0gbV9jbGllbnRzLmVuZCgpOwogICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8
Q2FjaGVkUmVzb3VyY2VDbGllbnQqPjo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVnaW4oKTsg
aXQgIT0gZW5kMjsgKytpdCkgewotICAgICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50
ID0gaXQtPmtleTsKLSAgICAgICAgdW5zaWduZWQgY291bnQgPSBpdC0+dmFsdWU7CisgICAgICAg
IENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQgPSBpdC0+Zmlyc3Q7CisgICAgICAgIHVuc2ln
bmVkIGNvdW50ID0gaXQtPnNlY29uZDsKICAgICAgICAgd2hpbGUgKGNvdW50KSB7CiAgICAgICAg
ICAgICBjbGllbnRzVG9Nb3ZlLmFwcGVuZChjbGllbnQpOwogICAgICAgICAgICAgLS1jb3VudDsK
QEAgLTY0Nyw5ICs2NDcsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVSZXNwb25zZUFm
dGVyUmV2YWxpZGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbAogICAgIEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG5ld0hlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChI
VFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG5ld0hlYWRlcnMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIC8vIERvbid0IGFsbG93IDMwNCByZXNwb25zZSB0byB1
cGRhdGUgY29udGVudCBoZWFkZXJzLCB0aGVzZSBjYW4ndCBjaGFuZ2UgYnV0IHNvbWUgc2VydmVy
cyBzZW5kIHdyb25nIHZhbHVlcy4KLSAgICAgICAgaWYgKGl0LT5rZXkuc3RhcnRzV2l0aChjb250
ZW50SGVhZGVyUHJlZml4LCBmYWxzZSkpCisgICAgICAgIGlmIChpdC0+Zmlyc3Quc3RhcnRzV2l0
aChjb250ZW50SGVhZGVyUHJlZml4LCBmYWxzZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsK
KyAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmZpcnN0LCBpdC0+c2Vj
b25kKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgKaW5kZXggNzkzM2IwYjgxNGM1MjEyNTZl
MDc2MGY4NjFiNDMxMDk3Yjg5YjU5Yy4uOGIzNzgwYjVlNjRiMjE0MzQ2Mjg5NmJkYTJhNmEyNjVh
NWE4YTA3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
ICAgICBJdGVyYXRvciBlbmQgPSBzZXQuZW5kKCk7CiAgICAgICAgIHNpemVfdCBjbGllbnRJbmRl
eCA9IDA7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IHNldC5iZWdpbigpOyBjdXJy
ZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICAgICAgbV9jbGllbnRWZWN0b3JbY2xpZW50
SW5kZXgrK10gPSBjdXJyZW50LT5rZXk7CisgICAgICAgICAgICBtX2NsaWVudFZlY3RvcltjbGll
bnRJbmRleCsrXSA9IGN1cnJlbnQtPmZpcnN0OwogICAgIH0KIAogICAgIFQqIG5leHQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggNTVjMjE0MmI5ZDEwZTA4ZGU4ZWQwZWFlZjc1Nzk0NTFiYWRjNmU2OS4uYjI1OGMw
NTdmZjNhZjExMTk1ODBkZTFhZjYwODQwNTMyZjZhMGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMjYsNyAr
MTI2LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6On5DYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAg
ICAgY2xlYXJQcmVsb2FkcygpOwogICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVu
ZCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNl
TWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVy
KDApOworICAgICAgICBpdC0+c2Vjb25kLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigw
KTsKIAogICAgIC8vIE1ha2Ugc3VyZSBubyByZXF1ZXN0cyBzdGlsbCBwb2ludCB0byB0aGlzIENh
Y2hlZFJlc291cmNlTG9hZGVyCiAgICAgQVNTRVJUKG1fcmVxdWVzdENvdW50ID09IDApOwpAQCAt
NDE5LDcgKzQxOSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgaWYgKG1lbW9yeUNh
Y2hlKCktPmRpc2FibGVkKCkpIHsKICAgICAgICAgRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmZpbmQodXJsLnN0cmluZygpKTsKICAgICAgICAg
aWYgKGl0ICE9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCkpIHsKLSAgICAgICAgICAgIGl0LT52
YWx1ZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoMCk7CisgICAgICAgICAgICBpdC0+
c2Vjb25kLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigwKTsKICAgICAgICAgICAgIG1f
ZG9jdW1lbnRSZXNvdXJjZXMucmVtb3ZlKGl0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMSw3
ICs2MzEsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhi
b29sIGVuYWJsZSkKIAogICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1f
ZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjpp
dGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsK
KyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAg
ICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2UpIHsKICAgICAgICAgICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVk
SW1hZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBDYWNoZWRJbWFnZSo+KHJlc291cmNlKSk7CiAKQEAg
LTY1MSw3ICs2NTEsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZW1vdmVDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIGNvbnN0CiAjaWZuZGVmIE5ERUJVRwog
ICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNl
cy5maW5kKHJlc291cmNlLT51cmwoKSk7CiAgICAgaWYgKGl0ICE9IG1fZG9jdW1lbnRSZXNvdXJj
ZXMuZW5kKCkpCi0gICAgICAgIEFTU0VSVChpdC0+dmFsdWUuZ2V0KCkgPT0gcmVzb3VyY2UpOwor
ICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5nZXQoKSA9PSByZXNvdXJjZSk7CiAjZW5kaWYKICAg
ICBtX2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShyZXNvdXJjZS0+dXJsKCkpOwogfQpAQCAtNjg1
LDkgKzY4NSw5IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXMoKQogICAgIFN0cmluZ1ZlY3RvciByZXNvdXJjZXNUb0RlbGV0ZTsKIAog
ICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmJlZ2luKCk7IGl0ICE9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgaWYgKGl0LT52YWx1ZS0+aGFzT25lSGFuZGxlKCkpIHsKLSAgICAgICAgICAgIHJl
c291cmNlc1RvRGVsZXRlLmFwcGVuZChpdC0+a2V5KTsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+
c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoMCk7CisgICAgICAgIGlmIChpdC0+c2Vjb25k
LT5oYXNPbmVIYW5kbGUoKSkgeworICAgICAgICAgICAgcmVzb3VyY2VzVG9EZWxldGUuYXBwZW5k
KGl0LT5maXJzdCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPd25pbmdDYWNoZWRSZXNv
dXJjZUxvYWRlcigwKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODgzLDggKzg4Myw4IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pCiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpMb2FkZXIpOwogICAgIGluZm8u
YWRkSGFzaE1hcChtX2RvY3VtZW50UmVzb3VyY2VzKTsKICAgICBmb3IgKERvY3VtZW50UmVzb3Vy
Y2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGkg
IT0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQoKTsgKytpKSB7Ci0gICAgICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKGktPmtleSk7Ci0gICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKGktPnZhbHVlKTsKKyAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoaS0+Zmly
c3QpOworICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5zZWNvbmQpOwogICAg
IH0KICAgICBpbmZvLmFkZEhhc2hTZXQobV92YWxpZGF0ZWRVUkxzKTsKICAgICBpZiAobV9wcmVs
b2FkcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4
IGMzODg2YTQwZThhNmVlY2U5MTllZTU5NTUyMjJkOWE0ODk2NWIyNDUuLjY2MTExZDczZjdkMWZi
MDEyMTk1NmFlYWZkMTAzN2FkYmQyOGIwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNTQwLDcgKzU0MCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIAogICAg
IENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBlID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAg
Zm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigp
OyBpdCAhPSBlOyArK2l0KSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGl0
LT52YWx1ZTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZDsK
ICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlc291cmNlLT51cmwoKSk7CiAgICAgICAgIGlmICgh
cmVzb3VyY2VPcmlnaW4pCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU1Niw3ICs1NTYsNyBA
QCB2b2lkIE1lbW9yeUNhY2hlOjpnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0
JiBvcmlnaW5zKQogewogICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBlID0gbV9yZXNv
dXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlOyArK2l0KQotICAgICAgICBvcmlnaW5zLmFkZChT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhpdC0+dmFsdWUtPnVybCgpKSk7CisgICAg
ICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0LT5zZWNv
bmQtPnVybCgpKSk7CiB9CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyb21MaXZlRGVjb2Rl
ZFJlc291cmNlc0xpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtNjg5LDcgKzY4OSw3
IEBAIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIE1lbW9yeUNhY2hlOjpnZXRTdGF0aXN0aWNzKCkK
ICAgICBTdGF0aXN0aWNzIHN0YXRzOwogICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBl
ID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0
b3IgaSA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGkgIT0gZTsgKytpKSB7Ci0gICAgICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSA9IGktPnZhbHVlOworICAgICAgICBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UgPSBpLT5zZWNvbmQ7CiAgICAgICAgIHN3aXRjaCAocmVzb3VyY2UtPnR5cGUoKSkg
ewogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICAg
ICAgc3RhdHMuaW1hZ2VzLmFkZFJlc291cmNlKHJlc291cmNlKTsKQEAgLTcyMSw4ICs3MjEsOCBA
QCB2b2lkIE1lbW9yeUNhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIGluZm8uYWRkSGFzaE1hcChtX3Jlc291cmNlcyk7
CiAgICAgQ2FjaGVkUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGUgPSBtX3Jlc291cmNlcy5l
bmQoKTsKICAgICBmb3IgKENhY2hlZFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBpID0gbV9y
ZXNvdXJjZXMuYmVnaW4oKTsgaSAhPSBlOyArK2kpIHsKLSAgICAgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIoaS0+a2V5KTsKLSAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
aS0+dmFsdWUpOworICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihpLT5maXJzdCk7
CisgICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGktPnNlY29uZCk7CiAgICAgfQog
ICAgIGluZm8uYWRkVmVjdG9yKG1fYWxsUmVzb3VyY2VzKTsKICAgICBpbmZvLmFkZE1lbWJlciht
X2xpdmVEZWNvZGVkUmVzb3VyY2VzKTsKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIE1lbW9yeUNh
Y2hlOjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQogICAgICAgICBDYWNoZWRSZXNvdXJjZU1h
cDo6aXRlcmF0b3IgaSA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7CiAgICAgICAgIGlmIChpID09IG1f
cmVzb3VyY2VzLmVuZCgpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGV2aWN0KGktPnZh
bHVlKTsKKyAgICAgICAgZXZpY3QoaS0+c2Vjb25kKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGRiMDgzM2UxZWM0NzgzZDYz
OWY4YjU1NWUyOWQwNGNkOWVkZmVlNTkuLjcxMDY0OGY5NGFkZTFmZDYyMGRkZGVhZGI2MDc2ZWJl
NWU1MTBiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNw
cApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygp
CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBQYWdlVVJMUmVjb3JkKj46Oml0ZXJhdG9yIGl0ZXIg
PSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5iZWdpbigpOwogICAgICAgICBIYXNoTWFwPFN0cmluZywg
UGFnZVVSTFJlY29yZCo+OjppdGVyYXRvciBlbmQgPSBtX3BhZ2VVUkxUb1JlY29yZE1hcC5lbmQo
KTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAoKml0
ZXIpLnZhbHVlLT5zZXRJY29uUmVjb3JkKDApOworICAgICAgICAgICAgKCppdGVyKS5zZWNvbmQt
PnNldEljb25SZWNvcmQoMCk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gQ2xlYXIgdGhlIGlj
b25VUkwgLT4gSWNvblJlY29yZCBtYXAKICAgICAgICAgbV9pY29uVVJMVG9SZWNvcmRNYXAuY2xl
YXIoKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCBzaXplX3QgSWNvbkRhdGFiYXNlOjppY29uUmVjb3Jk
Q291bnRXaXRoRGF0YSgpCiAgICAgSGFzaE1hcDxTdHJpbmcsIEljb25SZWNvcmQqPjo6aXRlcmF0
b3IgZW5kID0gbV9pY29uVVJMVG9SZWNvcmRNYXAuZW5kKCk7CiAgICAgCiAgICAgZm9yICg7IGkg
IT0gZW5kOyArK2kpCi0gICAgICAgIHJlc3VsdCArPSAoKCppKS52YWx1ZS0+aW1hZ2VEYXRhU3Rh
dHVzKCkgPT0gSW1hZ2VEYXRhU3RhdHVzUHJlc2VudCk7CisgICAgICAgIHJlc3VsdCArPSAoKCpp
KS5zZWNvbmQtPmltYWdlRGF0YVN0YXR1cygpID09IEltYWdlRGF0YVN0YXR1c1ByZXNlbnQpOwog
ICAgICAgICAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1NTYsMTMgKzE1NTYsMTMg
QEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJh
dGlvbnMoKQogICAgIH0KIAogICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8U3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSB0b1JldGFpbi5iZWdpbigpLCBlbmQgPSB0b1JldGFpbi5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEFTU0VSVCghaXQtPmtleS5pbXBsKCkgfHwgaXQtPmtl
eS5pbXBsKCktPmhhc09uZVJlZigpKTsKLSAgICAgICAgcGVyZm9ybVJldGFpbkljb25Gb3JQYWdl
VVJMKGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgICAgIEFTU0VSVCghaXQtPmZpcnN0LmltcGwo
KSB8fCBpdC0+Zmlyc3QuaW1wbCgpLT5oYXNPbmVSZWYoKSk7CisgICAgICAgIHBlcmZvcm1SZXRh
aW5JY29uRm9yUGFnZVVSTChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogICAgIH0KIAogICAgIGZv
ciAoSGFzaENvdW50ZWRTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b1JlbGVhc2Uu
YmVnaW4oKSwgZW5kID0gdG9SZWxlYXNlLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgQVNTRVJUKCFpdC0+a2V5LmltcGwoKSB8fCBpdC0+a2V5LmltcGwoKS0+aGFzT25lUmVmKCkp
OwotICAgICAgICBwZXJmb3JtUmVsZWFzZUljb25Gb3JQYWdlVVJMKGl0LT5rZXksIGl0LT52YWx1
ZSk7CisgICAgICAgIEFTU0VSVCghaXQtPmZpcnN0LmltcGwoKSB8fCBpdC0+Zmlyc3QuaW1wbCgp
LT5oYXNPbmVSZWYoKSk7CisgICAgICAgIHBlcmZvcm1SZWxlYXNlSWNvbkZvclBhZ2VVUkwoaXQt
PmZpcnN0LCBpdC0+c2Vjb25kKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAppbmRleCA2Yzg4OWZhYTM4MzM3NmJlNWRhNzI3NDMxZjc3YzQzMzUyMGJjOWI5Li5kNzg3YTY1
YmQ2ZDgwYzU1MGY4ZDEyYTBkNGYxMzFmNzg2MWQxN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVu
ZGluZ0JlZm9yZVVubG9hZEV2ZW50cygpCiAgICAgVmVjdG9yPFJlZlB0cjxET01XaW5kb3c+ID4g
d2luZG93czsKICAgICBET01XaW5kb3dTZXQ6Oml0ZXJhdG9yIGVuZCA9IHNldC5lbmQoKTsKICAg
ICBmb3IgKERPTVdpbmRvd1NldDo6aXRlcmF0b3IgaXQgPSBzZXQuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICB3aW5kb3dzLmFwcGVuZChpdC0+a2V5KTsKKyAgICAgICAgd2luZG93
cy5hcHBlbmQoaXQtPmZpcnN0KTsKIAogICAgIHNpemVfdCBzaXplID0gd2luZG93cy5zaXplKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTI5MCw3ICsyOTAs
NyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nVW5sb2FkRXZlbnRzKCkKICAg
ICBWZWN0b3I8UmVmUHRyPERPTVdpbmRvdz4gPiB3aW5kb3dzOwogICAgIERPTVdpbmRvd1NldDo6
aXRlcmF0b3IgZW5kID0gc2V0LmVuZCgpOwogICAgIGZvciAoRE9NV2luZG93U2V0OjppdGVyYXRv
ciBpdCA9IHNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdpbmRvd3MuYXBw
ZW5kKGl0LT5rZXkpOworICAgICAgICB3aW5kb3dzLmFwcGVuZChpdC0+Zmlyc3QpOwogCiAgICAg
c2l6ZV90IHNpemUgPSB3aW5kb3dzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDdlNWRl
NTA3MTk0ZDRlYjJhNTkzNzM2ZGU5NmNmOTU0NjczODFiZDIuLjk1N2FkYTM0MDE0MDVlMjYzMzBk
ZDQyZDViNDU3NWVmMjlkNjY1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
QEAgLTM2MzcsNyArMzYzNyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIC8vIHJlbGVhc2VkIG9y
IGNhbmNlbGxlZCBpdCB3aWxsIG9ubHkgYXBwZWFyIGluIHRoZSBjaGFuZ2VkVG91Y2hlcyBsaXN0
LgogICAgICAgICBpZiAocG9pbnRTdGF0ZSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVs
ZWFzZWQgJiYgcG9pbnRTdGF0ZSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVk
KSB7CiAgICAgICAgICAgICB0b3VjaGVzLT5hcHBlbmQodG91Y2gpOwotICAgICAgICAgICAgdGFy
Z2V0VG91Y2hlc0l0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKHRvdWNoKTsKKyAgICAgICAgICAgIHRh
cmdldFRvdWNoZXNJdGVyYXRvci0+c2Vjb25kLT5hcHBlbmQodG91Y2gpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gTm93IGJ1aWxkIHVwIHRoZSBjb3JyZWN0IGxpc3QgZm9yIGNoYW5nZWRUb3Vj
aGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAxODgxMjlhZDBhMDRlZjY3MThhZTY1ZTcwMjk3
YWI0OWYzOTliZWE2Li5jOGUzYmZmNTIwMjRjYTBiMWU1NjdhM2QwNGZlMTk0ZTNiNzkxNTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgRnJhbWU6OmluamVj
dFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICBVc2VyU2NyaXB0TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB1c2Vy
U2NyaXB0cy0+ZW5kKCk7CiAgICAgZm9yIChVc2VyU2NyaXB0TWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IHVzZXJTY3JpcHRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGluamVj
dFVzZXJTY3JpcHRzRm9yV29ybGQoaXQtPmtleS5nZXQoKSwgKml0LT52YWx1ZSwgaW5qZWN0aW9u
VGltZSk7CisgICAgICAgIGluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoaXQtPmZpcnN0LmdldCgp
LCAqaXQtPnNlY29uZCwgaW5qZWN0aW9uVGltZSk7CiB9CiAKIHZvaWQgRnJhbWU6OmluamVjdFVz
ZXJTY3JpcHRzRm9yV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgVXNlclNjcmlw
dFZlY3RvciYgdXNlclNjcmlwdHMsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRp
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggMDMyN2JiMGI2YzdlZWI4M2MyYzNl
OWQwMjYyN2I4MGRjNzE5YzFmMy4uNDVkMjVmNTUyMTRkNzQ0MTk0ZTkzN2ZhMzFlNmU2NDYwZWFj
YWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtOTMsMTIgKzkzLDEyIEBAIFBh
Z2VHcm91cCogUGFnZUdyb3VwOjpwYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpCiAg
ICAgUGFnZUdyb3VwTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gcGFnZUdyb3Vwcy0+YWRkKGdyb3Vw
TmFtZSwgMCk7CiAKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJU
KCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG5ldyBQYWdlR3JvdXAoZ3JvdXBOYW1lKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gbmV3IFBh
Z2VHcm91cChncm91cE5hbWUpOwogICAgIH0KIAotICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBU1NFUlQo
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZDsKIH0KIAogdm9pZCBQYWdlR3JvdXA6OmNsb3NlTG9jYWxTdG9yYWdlKCkKQEAgLTEwOSw4
ICsxMDksOCBAQCB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2UoKQogICAgIFBhZ2VH
cm91cE1hcDo6aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CiAKICAgICBmb3IgKFBh
Z2VHcm91cE1hcDo6aXRlcmF0b3IgaXQgPSBwYWdlR3JvdXBzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT52YWx1ZS0+aGFzTG9jYWxTdG9yYWdlKCkpCi0gICAg
ICAgICAgICBpdC0+dmFsdWUtPmxvY2FsU3RvcmFnZSgpLT5jbG9zZSgpOworICAgICAgICBpZiAo
aXQtPnNlY29uZC0+aGFzTG9jYWxTdG9yYWdlKCkpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5s
b2NhbFN0b3JhZ2UoKS0+Y2xvc2UoKTsKICAgICB9CiB9CiAKQEAgLTEyMSw4ICsxMjEsOCBAQCB2
b2lkIFBhZ2VHcm91cDo6Y2xlYXJMb2NhbFN0b3JhZ2VGb3JBbGxPcmlnaW5zKCkKIAogICAgIFBh
Z2VHcm91cE1hcDo6aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CiAgICAgZm9yIChQ
YWdlR3JvdXBNYXA6Oml0ZXJhdG9yIGl0ID0gcGFnZUdyb3Vwcy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUtPmhhc0xvY2FsU3RvcmFnZSgpKQotICAg
ICAgICAgICAgaXQtPnZhbHVlLT5sb2NhbFN0b3JhZ2UoKS0+Y2xlYXJBbGxPcmlnaW5zRm9yRGVs
ZXRpb24oKTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmhhc0xvY2FsU3RvcmFnZSgpKQorICAg
ICAgICAgICAgaXQtPnNlY29uZC0+bG9jYWxTdG9yYWdlKCktPmNsZWFyQWxsT3JpZ2luc0ZvckRl
bGV0aW9uKCk7CiAgICAgfQogfQogCkBAIC0xMzMsOCArMTMzLDggQEAgdm9pZCBQYWdlR3JvdXA6
OmNsZWFyTG9jYWxTdG9yYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAKICAg
ICBQYWdlR3JvdXBNYXA6Oml0ZXJhdG9yIGVuZCA9IHBhZ2VHcm91cHMtPmVuZCgpOwogICAgIGZv
ciAoUGFnZUdyb3VwTWFwOjppdGVyYXRvciBpdCA9IHBhZ2VHcm91cHMtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnZhbHVlLT5oYXNMb2NhbFN0b3JhZ2UoKSkK
LSAgICAgICAgICAgIGl0LT52YWx1ZS0+bG9jYWxTdG9yYWdlKCktPmNsZWFyT3JpZ2luRm9yRGVs
ZXRpb24ob3JpZ2luKTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQtPmhhc0xvY2FsU3RvcmFnZSgp
KQorICAgICAgICAgICAgaXQtPnNlY29uZC0+bG9jYWxTdG9yYWdlKCktPmNsZWFyT3JpZ2luRm9y
RGVsZXRpb24ob3JpZ2luKTsKICAgICB9ICAgIAogfQogICAgIApAQCAtMTQ1LDggKzE0NSw4IEBA
IHZvaWQgUGFnZUdyb3VwOjpzeW5jTG9jYWxTdG9yYWdlKCkKIAogICAgIFBhZ2VHcm91cE1hcDo6
aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CiAgICAgZm9yIChQYWdlR3JvdXBNYXA6
Oml0ZXJhdG9yIGl0ID0gcGFnZUdyb3Vwcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIGlmIChpdC0+dmFsdWUtPmhhc0xvY2FsU3RvcmFnZSgpKQotICAgICAgICAgICAgaXQt
PnZhbHVlLT5sb2NhbFN0b3JhZ2UoKS0+c3luYygpOworICAgICAgICBpZiAoaXQtPnNlY29uZC0+
aGFzTG9jYWxTdG9yYWdlKCkpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5sb2NhbFN0b3JhZ2Uo
KS0+c3luYygpOwogICAgIH0KIH0KIApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZUdyb3Vw
OjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJp
bmcmIHNvdXJjCiAgICAgT3duUHRyPFVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBhZG9wdFB0cihu
ZXcgVXNlclNjcmlwdChzb3VyY2UsIHVybCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIGluamVjdGlv
blRpbWUsIGluamVjdGVkRnJhbWVzKSk7CiAgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQogICAgICAg
ICBtX3VzZXJTY3JpcHRzID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRNYXApOwotICAgIE93blB0
cjxVc2VyU2NyaXB0VmVjdG9yPiYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLT5hZGQo
d29ybGQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBPd25QdHI8VXNlclNjcmlwdFZl
Y3Rvcj4mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy0+YWRkKHdvcmxkLCBudWxscHRy
KS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc2NyaXB0c0luV29ybGQpCiAgICAgICAgIHNj
cmlwdHNJbldvcmxkID0gYWRvcHRQdHIobmV3IFVzZXJTY3JpcHRWZWN0b3IpOwogICAgIHNjcmlw
dHNJbldvcmxkLT5hcHBlbmQodXNlclNjcmlwdC5yZWxlYXNlKCkpOwpAQCAtMjg2LDcgKzI4Niw3
IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzCiAgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0PiB1
c2VyU3R5bGVTaGVldCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldChzb3VyY2UsIHVybCwg
d2hpdGVsaXN0LCBibGFja2xpc3QsIGluamVjdGVkRnJhbWVzLCBsZXZlbCkpOwogICAgIGlmICgh
bV91c2VyU3R5bGVTaGVldHMpCiAgICAgICAgIG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIo
bmV3IFVzZXJTdHlsZVNoZWV0TWFwKTsKLSAgICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+
JiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgT3duUHRyPFVzZXJTdHlsZVNoZWV0VmVjdG9yPiYg
c3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMtPmFkZCh3b3JsZCwgbnVsbHB0
cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXN0eWxlU2hlZXRzSW5Xb3JsZCkKICAgICAg
ICAgc3R5bGVTaGVldHNJbldvcmxkID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0VmVjdG9y
KTsKICAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZCh1c2VyU3R5bGVTaGVldC5yZWxlYXNl
KCkpOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0
RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IEtVUkwmIHVyCiAgICAgaWYg
KGl0ID09IG1fdXNlclNjcmlwdHMtPmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
VXNlclNjcmlwdFZlY3Rvciogc2NyaXB0cyA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICBVc2VyU2Ny
aXB0VmVjdG9yKiBzY3JpcHRzID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICBmb3IgKGludCBpID0g
c2NyaXB0cy0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgaWYgKHNjcmlwdHMt
PmF0KGkpLT51cmwoKSA9PSB1cmwpCiAgICAgICAgICAgICBzY3JpcHRzLT5yZW1vdmUoaSk7CkBA
IC0zMjgsNyArMzI4LDcgQEAgdm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJv
bVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IEtVUkwKICAgICBpZiAoaXQgPT0g
bV91c2VyU3R5bGVTaGVldHMtPmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgVXNl
clN0eWxlU2hlZXRWZWN0b3IqIHN0eWxlc2hlZXRzID0gaXQtPnZhbHVlLmdldCgpOworICAgIFVz
ZXJTdHlsZVNoZWV0VmVjdG9yKiBzdHlsZXNoZWV0cyA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAg
Zm9yIChpbnQgaSA9IHN0eWxlc2hlZXRzLT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAg
ICAgICBpZiAoc3R5bGVzaGVldHMtPmF0KGkpLT51cmwoKSA9PSB1cmwpIHsKICAgICAgICAgICAg
IHN0eWxlc2hlZXRzLT5yZW1vdmUoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCmluZGV4IGExNjE0OTI1NWM3ZTNlNDI2MDM5YzRhMTMyZmIxNjJiYzdhMTdmZTUuLmM5MTFk
NTRhOTI1NDZhN2NlMTRmMTg2NmVjYmNlZDhiNTZlNTY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgS1VSTCBQYWdlU2VyaWFsaXpl
cjo6dXJsRm9yQmxhbmtGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgSGFzaE1hcDxGcmFtZSos
IEtVUkw+OjppdGVyYXRvciBpdGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKICAg
ICBpZiAoaXRlciAhPSBtX2JsYW5rRnJhbWVVUkxzLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRl
ci0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CiAgICAgU3RyaW5nIHVybCA9
ICJ3eWNpd3lnOi8vZnJhbWUvIiArIFN0cmluZzo6bnVtYmVyKG1fYmxhbmtGcmFtZUNvdW50ZXIr
Kyk7CiAgICAgS1VSTCBmYWtlVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBtX2JsYW5r
RnJhbWVVUkxzLmFkZChmcmFtZSwgZmFrZVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQ
b2xpY3kuY3BwCmluZGV4IDViMzZmNGY3MTZjNDRiZmIwOWYyMGU2MzJjYzBkMDM4NmYzY2NhM2Mu
LmMyYTVhYjExNDM1ZWY2ZGIwNTc2OGM3NmNhMDM1N2I1NjI1ODMzMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xMzMsOSArMTMzLDkgQEAgdm9pZCBTZWN1cml0
eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmln
aW4mIHNvdXJjZU8KICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3Ry
aW5nKCk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNj
ZXNzTWFwKCkuYWRkKHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IE9y
aWdpbkFjY2Vzc1doaXRlTGlzdCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
YWRvcHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCk7CiAKLSAgICBPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIE9yaWdp
bkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwog
ICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nl
c3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3Vi
ZG9tYWlucykpOwogfQogCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNv
dXIKICAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPcmln
aW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgT3JpZ2luQWNj
ZXNzV2hpdGVMaXN0KiBsaXN0ID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICBzaXplX3QgaW5kZXgg
PSBsaXN0LT5maW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0Vu
dHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21h
aW5zKSk7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGE1NGVkM2I1ZGYyZTQ4ZTg3ODk5NGZiNDUxZTAxMmU1
NTZlOTIzMzEuLmU5N2M2NGY3M2RjYjBlMjdhZTQ5NjRkNDc1ZTYyYWI4MjliM2ZjNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBzZXRHZW5lcmljRm9udEZhbWlseU1hcChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBj
b25zdCBBCiAgICAgICAgIGlmIChpdCA9PSBmb250TWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBmb250TWFwLnJlbW92ZShpdCk7Ci0gICAgfSBlbHNlIGlmIChpdCAhPSBm
b250TWFwLmVuZCgpICYmIGl0LT52YWx1ZSA9PSBmYW1pbHkpCisgICAgfSBlbHNlIGlmIChpdCAh
PSBmb250TWFwLmVuZCgpICYmIGl0LT5zZWNvbmQgPT0gZmFtaWx5KQogICAgICAgICByZXR1cm47
CiAgICAgZWxzZQogICAgICAgICBmb250TWFwLnNldChzdGF0aWNfY2FzdDxpbnQ+KHNjcmlwdCks
IGZhbWlseSk7CkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3Ry
aW5nJiBnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChjb25zdCBTY3JpcHRGb250CiB7CiAg
ICAgU2NyaXB0Rm9udEZhbWlseU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmb250TWFwLmZpbmQo
c3RhdGljX2Nhc3Q8aW50PihzY3JpcHQpKTsKICAgICBpZiAoaXQgIT0gZm9udE1hcC5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAg
ICAgaWYgKHNjcmlwdCAhPSBVU0NSSVBUX0NPTU1PTikKICAgICAgICAgcmV0dXJuIGdldEdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KGZvbnRNYXAsIFVTQ1JJUFRfQ09NTU9OKTsKICAgICByZXR1
cm4gZW1wdHlBdG9tOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAppbmRleCA4MzI4YzVk
NGRmMzI5OTQyYjU5ZjNlY2MyMjUzNTY4Y2UyYThhMTFkLi4wMTI4ZWY4YTQwYTQyNDM1NGFiNWY4
ZTUwYmE4ZWNjNjIyNTdiM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcApAQCAt
NjIsNyArNjIsNyBAQCBpbnQgU3BlZWNoSW5wdXQ6OnJlZ2lzdGVyTGlzdGVuZXIoU3BlZWNoSW5w
dXRMaXN0ZW5lciogbGlzdGVuZXIpCiAjaWYgZGVmaW5lZChERUJVRykKICAgICAvLyBDaGVjayBp
ZiBhbHJlYWR5IHByZXNlbnQuCiAgICAgZm9yIChIYXNoTWFwPGludCwgU3BlZWNoSW5wdXRMaXN0
ZW5lcio+OjppdGVyYXRvciBpdCA9IG1fbGlzdGVuZXJzLmJlZ2luKCk7IGl0ICE9IG1fbGlzdGVu
ZXJzLmVuZCgpOyArK2l0KQotICAgICAgQVNTRVJUKGl0LT52YWx1ZSAhPSBsaXN0ZW5lcik7Cisg
ICAgICBBU1NFUlQoaXQtPnNlY29uZCAhPSBsaXN0ZW5lcik7CiAjZW5kaWYKIAogICAgIG1fbGlz
dGVuZXJzLmFkZChtX25leHRMaXN0ZW5lcklkLCBsaXN0ZW5lcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDFiNmIxZDBiMTYzMmU4MmE5NGVmMDQ2NzlkMGE3ZDQ3
YWQzMWNiNTAuLjc1NjQxNTI4ZGZlYzJmNGJlYzdlZWEzM2QwNzQwYTBkYzdkN2JhYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgYm9v
bCBXaW5kb3dGZWF0dXJlczo6Ym9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZl
YXR1cmVzLCBjb25zdCBjaGFyKgogICAgIERpYWxvZ0ZlYXR1cmVzTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkp
CiAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci0gICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9
IGl0LT52YWx1ZTsKKyAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gaXQtPnNlY29uZDsKICAgICBy
ZXR1cm4gdmFsdWUuaXNOdWxsKCkgfHwgdmFsdWUgPT0gIjEiIHx8IHZhbHVlID09ICJ5ZXMiIHx8
IHZhbHVlID09ICJvbiI7CiB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBmbG9hdCBXaW5kb3dGZWF0
dXJlczo6ZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29u
c3QgY2hhcgogICAgIC8vIEZJWE1FOiBUaGUgdG9Eb3VibGUgZnVuY3Rpb24gZG9lcyBub3Qgb2Zm
ZXIgYSB3YXkgdG8gdGVsbCAiMHEiIGZyb20gc3RyaW5nIHdpdGggbm8gZGlnaXRzIGluIGl0OiBC
b3RoCiAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgMCBhbmQgZmFsc2UgZm9yIG9rLiBCdXQgIjBx
IiBzaG91bGQgeWllbGQgdGhlIG1pbmltdW0gcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQuCiAgICAg
Ym9vbCBvazsKLSAgICBkb3VibGUgcGFyc2VkTnVtYmVyID0gaXQtPnZhbHVlLnRvRG91YmxlKCZv
ayk7CisgICAgZG91YmxlIHBhcnNlZE51bWJlciA9IGl0LT5zZWNvbmQudG9Eb3VibGUoJm9rKTsK
ICAgICBpZiAoKHBhcnNlZE51bWJlciA9PSAwICYmICFvaykgfHwgaXNuYW4ocGFyc2VkTnVtYmVy
KSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBpZiAocGFyc2VkTnVtYmVyIDwg
bWluIHx8IG1heCA8PSBtaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDVlMDcxN2UwYTljZmJhMzI4OTgyOTU2
MjE3NzkxMmMwNmY3OGM4YmUuLmM0OTExOWU2YTEzYzAxNGM4ZjI1OGUyOTQ2MTM4MTFjZGZhMGQ1
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC05MywxNCArOTMsMTQgQEAgZG91YmxlIEFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25zKFNldENoYW5nZWQgY2FsbFNldENoYW5nZWQv
KgogCiAgICAgUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRp
b25zRW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmVuZCgpOwogICAgIGZvciAoUmVuZGVyT2Jq
ZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9u
cy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgIENvbXBvc2l0
ZUFuaW1hdGlvbiogY29tcEFuaW0gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIENvbXBvc2l0
ZUFuaW1hdGlvbiogY29tcEFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoIWNv
bXBBbmltLT5zdXNwZW5kZWQoKSAmJiBjb21wQW5pbS0+aGFzQW5pbWF0aW9ucygpKSB7CiAgICAg
ICAgICAgICBkb3VibGUgdCA9IGNvbXBBbmltLT50aW1lVG9OZXh0U2VydmljZSgpOwogICAgICAg
ICAgICAgaWYgKHQgIT0gLTEgJiYgKHQgPCB0aW1lVG9OZXh0U2VydmljZSB8fCB0aW1lVG9OZXh0
U2VydmljZSA9PSAtMSkpCiAgICAgICAgICAgICAgICAgdGltZVRvTmV4dFNlcnZpY2UgPSB0Owog
ICAgICAgICAgICAgaWYgKCF0aW1lVG9OZXh0U2VydmljZSkgewogICAgICAgICAgICAgICAgIGlm
IChjYWxsU2V0Q2hhbmdlZCA9PSBDYWxsU2V0Q2hhbmdlZCkgewotICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gaXQtPmtleS0+bm9kZSgpOworICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gaXQtPmZpcnN0LT5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
bm9kZSB8fCAobm9kZS0+ZG9jdW1lbnQoKSAmJiAhbm9kZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2Fj
aGUoKSkpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5
bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGVkU2V0Q2hhbmdl
ZCA9IHRydWU7CkBAIC0yOTIsOSArMjkyLDkgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQKICAg
ICAKICAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGFuaW1hdGlv
bnNFbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChSZW5kZXJPYmpl
Y3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25z
LmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGl0LT5rZXk7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBpdC0+Zmlyc3Q7CiAgICAgICAgIGlmIChyZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVu
dCkgewotICAgICAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1
ZS5nZXQoKTsKKyAgICAgICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0gPSBpdC0+
c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgY29tcEFuaW0tPnN1c3BlbmRBbmltYXRpb25zKCk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDgsOSArMzA4LDkgQEAgdm9pZCBBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZTo6cmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKICAgICAKICAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9y
IGFuaW1hdGlvbnNFbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChS
ZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVB
bmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5rZXk7CisgICAgICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBpdC0+Zmlyc3Q7CiAgICAgICAgIGlmIChyZW5kZXJlci0+ZG9jdW1lbnQoKSA9
PSBkb2N1bWVudCkgewotICAgICAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9
IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFu
aW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgY29tcEFuaW0tPnJlc3VtZUFuaW1h
dGlvbnMoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM5Niw4ICszOTYsOCBAQCB1bnNpZ25lZCBB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKERvY3Vt
ZW50KiBkb2N1bWVudAogICAgIAogICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3Rf
aXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsKICAg
ICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewot
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXQtPmtleTsKLSAgICAgICAgQ29tcG9z
aXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGl0LT5maXJzdDsKKyAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9u
KiBjb21wQW5pbSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGlmIChyZW5kZXJlci0+ZG9j
dW1lbnQoKSA9PSBkb2N1bWVudCkKICAgICAgICAgICAgIGNvdW50ICs9IGNvbXBBbmltLT5udW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRleCAwYjBmMzc5ZDU2YWJk
ODVjNjNiYWUxNGNlNWVhMmI0OWFiMTNlZThlLi5mMzU3NzgxODk3NDBlZTM2ZThhMzNhNTBhZjZj
YWQ1NjkyOTBmOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
b21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBDb21wb3NpdGVB
bmltYXRpb246OmNsZWFyUmVuZGVyZXIoKQogICAgICAgICAvLyBhbiBhbmltYXRpb24gY2FsbGJh
Y2sgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTIpCiAg
ICAgICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIHRyYW5zaXRp
b25zRW5kID0gbV90cmFuc2l0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChDU1NQcm9wZXJ0eVRy
YW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdHJhbnNpdGlvbnMuYmVnaW4oKTsg
aXQgIT0gdHJhbnNpdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0
aW9uKiB0cmFuc2l0aW9uID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICAgICAgSW1wbGljaXRB
bmltYXRpb24qIHRyYW5zaXRpb24gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgYW5p
bWF0aW9uQ29udHJvbGxlcigpLT5hbmltYXRpb25XaWxsQmVSZW1vdmVkKHRyYW5zaXRpb24pOwog
ICAgICAgICAgICAgdHJhbnNpdGlvbi0+Y2xlYXIoKTsKICAgICAgICAgfQpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6Y2xlYXJSZW5kZXJlcigpCiAgICAgICAgIG1f
a2V5ZnJhbWVBbmltYXRpb25zLmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgQW5pbWF0aW9u
TmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fa2V5ZnJhbWVBbmltYXRp
b25zLmVuZCgpOwogICAgICAgICBmb3IgKEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9rZXlmcmFtZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsg
KytpdCkgewotICAgICAgICAgICAgS2V5ZnJhbWVBbmltYXRpb24qIGFuaW0gPSBpdC0+dmFsdWUu
Z2V0KCk7CisgICAgICAgICAgICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT5zZWNvbmQu
Z2V0KCk7CiAgICAgICAgICAgICBhbmltYXRpb25Db250cm9sbGVyKCktPmFuaW1hdGlvbldpbGxC
ZVJlbW92ZWQoYW5pbSk7CiAgICAgICAgICAgICBhbmltLT5jbGVhcigpOwogICAgICAgICB9CkBA
IC04NCw3ICs4NCw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9u
cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSoKICAgICAvLyBpbiB0aGUgbmV4
dCBsb29wIGFuZCB0aGVuIHRvc3MgdGhlIG9uZXMgdGhhdCBkaWRuJ3QgZ2V0IG1hcmtlZC4KICAg
ICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RyYW5z
aXRpb25zLmVuZCgpOwogICAgIGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgaXQtPnZhbHVlLT5zZXRBY3RpdmUoZmFsc2UpOworICAgICAgICBpdC0+c2Vjb25kLT5z
ZXRBY3RpdmUoZmFsc2UpOwogICAgICAgICAKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1vZGlm
aWVkQ3VycmVudFN0eWxlOwogICAgIApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgQ29tcG9zaXRl
QW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5k
ZXJTdHlsZSoKICAgICBWZWN0b3I8aW50PiB0b0JlUmVtb3ZlZDsKICAgICBlbmQgPSBtX3RyYW5z
aXRpb25zLmVuZCgpOwogICAgIGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBJbXBsaWNpdEFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAg
ICAgSW1wbGljaXRBbmltYXRpb24qIGFuaW0gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBp
ZiAoIWFuaW0tPmFjdGl2ZSgpKSB7CiAgICAgICAgICAgICBhbmltYXRpb25Db250cm9sbGVyKCkt
PmFuaW1hdGlvbldpbGxCZVJlbW92ZWQoYW5pbSk7CiAgICAgICAgICAgICB0b0JlUmVtb3ZlZC5h
cHBlbmQoYW5pbS0+YW5pbWF0aW5nUHJvcGVydHkoKSk7CkBAIC0yMDcsMTMgKzIwNywxMyBAQCB2
b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIFJlbmRlcgogICAgICAgICAvLyBUaGUgY3VycmVudCBhbmQgdGFyZ2V0
IGFuaW1hdGlvbnMgYXJlIHRoZSBzYW1lIHNvIHdlIGp1c3QgbmVlZCB0byB0b3NzIGFueSAKICAg
ICAgICAgLy8gYW5pbWF0aW9uIHdoaWNoIGlzIGZpbmlzaGVkIChwb3N0QWN0aXZlKS4KICAgICAg
ICAgZm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVB
bmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGtmZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAo
aXQtPnZhbHVlLT5wb3N0QWN0aXZlKCkpCi0gICAgICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRJ
bmRleCgtMSk7CisgICAgICAgICAgICBpZiAoaXQtPnNlY29uZC0+cG9zdEFjdGl2ZSgpKQorICAg
ICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEluZGV4KC0xKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIE1hcmsgYWxsIGV4aXN0aW5nIGFuaW1hdGlvbnMgYXMgbm8gbG9u
Z2VyIGFjdGl2ZS4KICAgICAgICAgZm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGtmZW5kOyArK2l0KQot
ICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRJbmRleCgtMSk7CisgICAgICAgICAgICBpdC0+c2Vj
b25kLT5zZXRJbmRleCgtMSk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVG9zcyB0aGUgYW5p
bWF0aW9uIG9yZGVyIG1hcC4KICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbk9yZGVyTWFwLmNs
ZWFyKCk7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0
ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXIKICAgICBW
ZWN0b3I8QXRvbWljU3RyaW5nSW1wbCo+IGFuaW1zVG9CZVJlbW92ZWQ7CiAgICAga2ZlbmQgPSBt
X2tleWZyYW1lQW5pbWF0aW9ucy5lbmQoKTsKICAgICBmb3IgKEFuaW1hdGlvbk5hbWVNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9rZXlmcmFtZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0ga2Zl
bmQ7ICsraXQpIHsKLSAgICAgICAgS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9IGl0
LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9
IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGlmIChrZXlmcmFtZUFuaW0tPmluZGV4KCkgPCAw
KSB7CiAgICAgICAgICAgICBhbmltc1RvQmVSZW1vdmVkLmFwcGVuZChrZXlmcmFtZUFuaW0tPm5h
bWUoKS5pbXBsKCkpOwogICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbGxlcigpLT5hbmltYXRp
b25XaWxsQmVSZW1vdmVkKGtleWZyYW1lQW5pbSk7CkBAIC0yOTAsNyArMjkwLDcgQEAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIFJlbmQKICAgICAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV90cmFuc2l0aW9ucy5lbmQoKTsKICAgICAgICAgICAgIGZvciAoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIGlmIChJbXBsaWNpdEFuaW1hdGlv
biogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKSkKKyAgICAgICAgICAgICAgICBpZiAoSW1wbGljaXRB
bmltYXRpb24qIGFuaW0gPSBpdC0+c2Vjb25kLmdldCgpKQogICAgICAgICAgICAgICAgICAgICBh
bmltLT5hbmltYXRlKHRoaXMsIHJlbmRlcmVyLCBjdXJyZW50U3R5bGUsIHRhcmdldFN0eWxlLCBy
ZXN1bHRTdHlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMxMiw3ICszMTIsNyBA
QCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDb21wb3NpdGVBbmltYXRpb246OmdldEFuaW1hdGVk
U3R5bGUoKSBjb25zdAogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVzdWx0U3R5bGU7CiAgICAg
Q1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90cmFuc2l0
aW9ucy5lbmQoKTsKICAgICBmb3IgKENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV90cmFuc2l0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgaWYgKEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsaWNpdEFuaW1hdGlvbiA9IGl0LT52YWx1
ZS5nZXQoKSkKKyAgICAgICAgaWYgKEltcGxpY2l0QW5pbWF0aW9uKiBpbXBsaWNpdEFuaW1hdGlv
biA9IGl0LT5zZWNvbmQuZ2V0KCkpCiAgICAgICAgICAgICBpbXBsaWNpdEFuaW1hdGlvbi0+Z2V0
QW5pbWF0ZWRTdHlsZShyZXN1bHRTdHlsZSk7CiAgICAgfQogCkBAIC0zMzMsNyArMzMzLDcgQEAg
dm9pZCBDb21wb3NpdGVBbmltYXRpb246OnNldEFuaW1hdGluZyhib29sIGFuaW1hdGluZykKICAg
ICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5VHJh
bnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIHRyYW5zaXRpb25zRW5kID0gbV90cmFuc2l0aW9u
cy5lbmQoKTsKICAgICAgICAgZm9yIChDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fdHJhbnNpdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNpdGlvbnNFbmQ7
ICsraXQpIHsKLSAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiB0cmFuc2l0aW9uID0gaXQt
PnZhbHVlLmdldCgpOworICAgICAgICAgICAgSW1wbGljaXRBbmltYXRpb24qIHRyYW5zaXRpb24g
PSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgdHJhbnNpdGlvbi0+c2V0QW5pbWF0aW5n
KGFuaW1hdGluZyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBD
b21wb3NpdGVBbmltYXRpb246OnNldEFuaW1hdGluZyhib29sIGFuaW1hdGluZykKICAgICAgICAg
bV9rZXlmcmFtZUFuaW1hdGlvbnMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBBbmltYXRp
b25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9rZXlmcmFtZUFuaW1h
dGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1
ZS5nZXQoKTsKKyAgICAgICAgICAgIEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29u
ZC5nZXQoKTsKICAgICAgICAgICAgIGFuaW0tPnNldEFuaW1hdGluZyhhbmltYXRpbmcpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMzU2LDcgKzM1Niw3IEBAIGRvdWJsZSBDb21wb3NpdGVBbmltYXRp
b246OnRpbWVUb05leHRTZXJ2aWNlKCkgY29uc3QKICAgICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJh
dG9yIHRyYW5zaXRpb25zRW5kID0gbV90cmFuc2l0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChD
U1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdHJhbnNpdGlv
bnMuYmVnaW4oKTsgaXQgIT0gdHJhbnNpdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIElt
cGxpY2l0QW5pbWF0aW9uKiB0cmFuc2l0aW9uID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICAg
ICAgSW1wbGljaXRBbmltYXRpb24qIHRyYW5zaXRpb24gPSBpdC0+c2Vjb25kLmdldCgpOwogICAg
ICAgICAgICAgZG91YmxlIHQgPSB0cmFuc2l0aW9uID8gdHJhbnNpdGlvbi0+dGltZVRvTmV4dFNl
cnZpY2UoKSA6IC0xOwogICAgICAgICAgICAgaWYgKHQgPCBtaW5UIHx8IG1pblQgPT0gLTEpCiAg
ICAgICAgICAgICAgICAgbWluVCA9IHQ7CkBAIC0zNjgsNyArMzY4LDcgQEAgZG91YmxlIENvbXBv
c2l0ZUFuaW1hdGlvbjo6dGltZVRvTmV4dFNlcnZpY2UoKSBjb25zdAogICAgICAgICBtX2tleWZy
YW1lQW5pbWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIEFuaW1hdGlvbk5hbWVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGFuaW1hdGlvbnNFbmQgPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5l
bmQoKTsKICAgICAgICAgZm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fa2V5ZnJhbWVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgIEtleWZyYW1lQW5pbWF0aW9uKiBhbmltYXRpb24gPSBpdC0+dmFsdWUu
Z2V0KCk7CisgICAgICAgICAgICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbWF0aW9uID0gaXQtPnNl
Y29uZC5nZXQoKTsKICAgICAgICAgICAgIGRvdWJsZSB0ID0gYW5pbWF0aW9uID8gYW5pbWF0aW9u
LT50aW1lVG9OZXh0U2VydmljZSgpIDogLTE7CiAgICAgICAgICAgICBpZiAodCA8IG1pblQgfHwg
bWluVCA9PSAtMSkKICAgICAgICAgICAgICAgICBtaW5UID0gdDsKQEAgLTM5MCw3ICszOTAsNyBA
QCBQYXNzUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBDb21wb3NpdGVBbmltYXRpb246OmdldEFu
aW1hdGlvbkZvclByb3BlcnR5KENTU1BybwogICAgICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5j
aGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGFuaW1hdGlvbnNFbmQgPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5lbmQoKTsKICAgICAgICAg
Zm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVBbmlt
YXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAg
IFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4gYW5pbSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAg
IFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4gYW5pbSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAg
ICBpZiAoYW5pbS0+aGFzQW5pbWF0aW9uRm9yUHJvcGVydHkocHJvcGVydHkpKQogICAgICAgICAg
ICAgICAgIHJldHZhbCA9IGFuaW07CiAgICAgICAgIH0KQEAgLTQxMCwxNCArNDEwLDE0IEBAIHZv
aWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpzdXNwZW5kQW5pbWF0aW9ucygpCiAgICAgICAgIG1fa2V5
ZnJhbWVBbmltYXRpb25zLmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgQW5pbWF0aW9uTmFt
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fa2V5ZnJhbWVBbmltYXRpb25z
LmVuZCgpOwogICAgICAgICBmb3IgKEFuaW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9rZXlmcmFtZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytp
dCkgewotICAgICAgICAgICAgaWYgKEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnZhbHVl
LmdldCgpKQorICAgICAgICAgICAgaWYgKEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnNl
Y29uZC5nZXQoKSkKICAgICAgICAgICAgICAgICBhbmltLT51cGRhdGVQbGF5U3RhdGUoQW5pbVBs
YXlTdGF0ZVBhdXNlZCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFtX3RyYW5zaXRpb25z
LmlzRW1wdHkoKSkgewogICAgICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9p
dGVyYXRvciB0cmFuc2l0aW9uc0VuZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgICAgIGZv
ciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5z
aXRpb25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zaXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBJbXBsaWNpdEFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAg
IEltcGxpY2l0QW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAg
IGlmIChhbmltICYmIGFuaW0tPmhhc1N0eWxlKCkpCiAgICAgICAgICAgICAgICAgYW5pbS0+dXBk
YXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQYXVzZWQpOwogICAgICAgICB9CkBAIC00MzUsNyAr
NDM1LDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnJlc3VtZUFuaW1hdGlvbnMoKQogICAg
ICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIEFu
aW1hdGlvbk5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9yIGFuaW1hdGlvbnNFbmQgPSBtX2tleWZyYW1l
QW5pbWF0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlv
bnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQt
PnZhbHVlLmdldCgpOworICAgICAgICAgICAgS2V5ZnJhbWVBbmltYXRpb24qIGFuaW0gPSBpdC0+
c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgaWYgKGFuaW0gJiYgYW5pbS0+cGxheVN0YXRlUGxh
eWluZygpKQogICAgICAgICAgICAgICAgIGFuaW0tPnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0
YXRlUGxheWluZyk7CiAgICAgICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIENvbXBvc2l0
ZUFuaW1hdGlvbjo6cmVzdW1lQW5pbWF0aW9ucygpCiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlz
RW1wdHkoKSkgewogICAgICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVy
YXRvciB0cmFuc2l0aW9uc0VuZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAo
Q1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRp
b25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zaXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBJ
bXBsaWNpdEFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIElt
cGxpY2l0QW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGlm
IChhbmltICYmIGFuaW0tPmhhc1N0eWxlKCkpCiAgICAgICAgICAgICAgICAgYW5pbS0+dXBkYXRl
UGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQbGF5aW5nKTsKICAgICAgICAgfQpAQCAtNDU2LDcgKzQ1
Niw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpvdmVycmlkZUltcGxpY2l0QW5pbWF0aW9u
cyhDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQogICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgaWYgKCFtX3Ry
YW5zaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKENTU1Byb3BlcnR5VHJhbnNpdGlv
bnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90cmFuc2l0aW9ucy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBhbmltID0gaXQtPnZh
bHVlLmdldCgpOworICAgICAgICAgICAgSW1wbGljaXRBbmltYXRpb24qIGFuaW0gPSBpdC0+c2Vj
b25kLmdldCgpOwogICAgICAgICAgICAgaWYgKGFuaW0gJiYgYW5pbS0+YW5pbWF0aW5nUHJvcGVy
dHkoKSA9PSBwcm9wZXJ0eSkKICAgICAgICAgICAgICAgICBhbmltLT5zZXRPdmVycmlkZGVuKHRy
dWUpOwogICAgICAgICB9CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRp
b246OnJlc3VtZU92ZXJyaWRkZW5JbXBsaWNpdEFuaW1hdGlvbnMoQ1NTUHJvcGVydHlJRCBwcm9w
ZXIKICAgICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENTU1Byb3Bl
cnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fdHJhbnNpdGlvbnMuZW5k
KCk7CiAgICAgICAgIGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgSW1wbGljaXRBbmltYXRpb24qIGFuaW0gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAg
ICAgICBJbXBsaWNpdEFuaW1hdGlvbiogYW5pbSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAg
ICAgICBpZiAoYW5pbSAmJiBhbmltLT5hbmltYXRpbmdQcm9wZXJ0eSgpID09IHByb3BlcnR5KQog
ICAgICAgICAgICAgICAgIGFuaW0tPnNldE92ZXJyaWRkZW4oZmFsc2UpOwogICAgICAgICB9CkBA
IC00ODEsNyArNDgxLDcgQEAgYm9vbCBDb21wb3NpdGVBbmltYXRpb246OmlzQW5pbWF0aW5nUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhY2NlbGUKICAgICAgICAgbV9rZXlm
cmFtZUFuaW1hdGlvbnMuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBBbmltYXRpb25OYW1l
TWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9rZXlmcmFtZUFuaW1hdGlvbnMu
ZW5kKCk7CiAgICAgICAgIGZvciAoQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2tleWZyYW1lQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRpb25zRW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT52YWx1ZS5nZXQo
KTsKKyAgICAgICAgICAgIEtleWZyYW1lQW5pbWF0aW9uKiBhbmltID0gaXQtPnNlY29uZC5nZXQo
KTsKICAgICAgICAgICAgIGlmIChhbmltICYmIGFuaW0tPmlzQW5pbWF0aW5nUHJvcGVydHkocHJv
cGVydHksIGFjY2VsZXJhdGVkT25seSwgaXNSdW5uaW5nTm93KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDkwLDcgKzQ5MCw3IEBAIGJvb2wgQ29tcG9zaXRl
QW5pbWF0aW9uOjppc0FuaW1hdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJv
b2wgYWNjZWxlCiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBD
U1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciB0cmFuc2l0aW9uc0VuZCA9
IG1fdHJhbnNpdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoQ1NTUHJvcGVydHlUcmFuc2l0aW9u
c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2luKCk7IGl0ICE9IHRy
YW5zaXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBJbXBsaWNpdEFuaW1hdGlvbiogYW5p
bSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBhbmlt
ID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGlmIChhbmltICYmIGFuaW0tPmlzQW5p
bWF0aW5nUHJvcGVydHkocHJvcGVydHksIGFjY2VsZXJhdGVkT25seSwgaXNSdW5uaW5nTm93KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNTU2LDcgKzU1Niw3
IEBAIHVuc2lnbmVkIENvbXBvc2l0ZUFuaW1hdGlvbjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
KCkgY29uc3QKICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMuY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgICAgICBBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5k
ID0gbV9rZXlmcmFtZUFuaW1hdGlvbnMuZW5kKCk7CiAgICAgICAgIGZvciAoQW5pbWF0aW9uTmFt
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5iZWdpbigpOyBp
dCAhPSBhbmltYXRpb25zRW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBLZXlmcmFtZUFuaW1hdGlv
biogYW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIEtleWZyYW1lQW5pbWF0aW9u
KiBhbmltID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGlmIChhbmltLT5ydW5uaW5n
KCkpCiAgICAgICAgICAgICAgICAgKytjb3VudDsKICAgICAgICAgfQpAQCAtNTY1LDcgKzU2NSw3
IEBAIHVuc2lnbmVkIENvbXBvc2l0ZUFuaW1hdGlvbjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
KCkgY29uc3QKICAgICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENT
U1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIHRyYW5zaXRpb25zRW5kID0g
bV90cmFuc2l0aW9ucy5lbmQoKTsKICAgICAgICAgZm9yIChDU1NQcm9wZXJ0eVRyYW5zaXRpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdHJhbnNpdGlvbnMuYmVnaW4oKTsgaXQgIT0gdHJh
bnNpdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEltcGxpY2l0QW5pbWF0aW9uKiBhbmlt
ID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICAgICAgSW1wbGljaXRBbmltYXRpb24qIGFuaW0g
PSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICAgICAgaWYgKGFuaW0tPnJ1bm5pbmcoKSkKICAg
ICAgICAgICAgICAgICArK2NvdW50OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5n
dWFnZS5jcHAKaW5kZXggYjNmOTdiZWM5NzIxNWI4MDliMzQxZWFjMDFhNjE3ZTgxYWE3YTA2ZS4u
NDdmMDlmNjA5Mjk5NzFlMzE3MzU2ZTQ5ZmJjYjYzYjVkYjQxN2YzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xhbmd1YWdlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIGxhbmd1YWdlRGlkQ2hh
bmdlKCkKIHsKICAgICBPYnNlcnZlck1hcDo6aXRlcmF0b3IgZW5kID0gb2JzZXJ2ZXJNYXAoKS5l
bmQoKTsKICAgICBmb3IgKE9ic2VydmVyTWFwOjppdGVyYXRvciBpdGVyID0gb2JzZXJ2ZXJNYXAo
KS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICBpdGVyLT52YWx1ZShpdGVy
LT5rZXkpOworICAgICAgICBpdGVyLT5zZWNvbmQoaXRlci0+Zmlyc3QpOwogfQogCiBTdHJpbmcg
ZGVmYXVsdExhbmd1YWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKaW5kZXggOGY1MjEwM2MyZTljYWU5N2RhNDRkMzRjM2IyMjgyOTVmOTY4YWRjYS4u
Mjg5YzY2OTliMDVmNDlmYjcxN2MwYzQwM2MyYjU3MWJiYzljMjhiOCAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTY5Miw3ICs2OTIsNyBAQCBT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgTUlNRVR5cGVBc3NvY2lhdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtaW1lVHlwZUFzc29jaWF0aW9uTWFwKCkuZmluZChtaW1lVHlwZSk7CiAKICAgICBpZiAo
aXQgIT0gbWltZVR5cGVBc3NvY2lhdGlvbk1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQt
PnZhbHVlOworICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKICNlbmRpZgogICAgIHJldHVybiBt
aW1lVHlwZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZh
dGlvbi5jcHAKaW5kZXggY2ZlMTNlZDg1MzA2YjUxNzEyYWEzMDc0YjljOGRjMzkyY2Q0NjUyZC4u
MjVlNDU4OTYyNWRjY2ZkN2Y0ZDNiNTRhZjc1MzJkOGU4M2YyNjI3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcg
QEAgc3RhdGljIEF1ZGlvQnVzKiBnZXRDb25jYXRlbmF0ZWRJbXB1bHNlUmVzcG9uc2VzRm9yU3Vi
amVjdChjb25zdCBTdHJpbmcmIHN1YmplY3QKICAgICAgICAgYnVzID0gY29uY2F0ZW5hdGVkSW1w
dWxzZVJlc3BvbnNlcy5sZWFrUHRyKCk7CiAgICAgICAgIGF1ZGlvQnVzTWFwLnNldChzdWJqZWN0
TmFtZSwgYnVzKTsKICAgICB9IGVsc2UKLSAgICAgICAgYnVzID0gaXRlcmF0b3ItPnZhbHVlOwor
ICAgICAgICBidXMgPSBpdGVyYXRvci0+c2Vjb25kOwogCiAgICAgc2l6ZV90IHJlc3BvbnNlTGVu
Z3RoID0gYnVzLT5sZW5ndGgoKTsKICAgICBzaXplX3QgZXhwZWN0ZWRMZW5ndGggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KFRvdGFsTnVtYmVyT2ZSZXNwb25zZXMgKiBSZXNwb25zZUZyYW1lU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5h
Z2VyLmNwcAppbmRleCA2ZGJmOTE2MmJmNjFhMTcxYjQ3OWE2MjFkZDQ3MDlhNmJiYWNhY2JmLi5k
ZDkzNzAyMjMxNDM1MDA2NGEyYjE4YTllZTljNjVmMjg0OWUyYWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKQEAgLTE2
Nyw3ICsxNjcsNyBAQCBTdHJpbmcgQ29va2llTWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRG
b3JDb29raWVzKCkKIAogICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBjb29raWVDYW5kaWRhdGVz
OwogICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBpdCA9IG1f
bWFuYWdlck1hcC5iZWdpbigpOyBpdCAhPSBtX21hbmFnZXJNYXAuZW5kKCk7ICsraXQpCi0gICAg
ICAgIGl0LT52YWx1ZS0+Z2V0QWxsQ2hpbGRDb29raWVzKCZjb29raWVDYW5kaWRhdGVzKTsKKyAg
ICAgICAgaXQtPnNlY29uZC0+Z2V0QWxsQ2hpbGRDb29raWVzKCZjb29raWVDYW5kaWRhdGVzKTsK
IAogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgUGFyc2VkQ29va2llKiBjb29raWUgPSAwOwpAQCAt
Mjg2LDcgKzI4Niw3IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6cmVtb3ZlQWxsQ29va2llcyhCYWNr
aW5nU3RvcmVSZW1vdmFsUG9saWN5IGJhY2tpbmdTdG9yZVJlbW92CiAgICAgSGFzaE1hcDxTdHJp
bmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBmaXJzdCA9IG1fbWFuYWdlck1hcC5iZWdpbigpOwog
ICAgIEhhc2hNYXA8U3RyaW5nLCBDb29raWVNYXAqPjo6aXRlcmF0b3IgZW5kID0gbV9tYW5hZ2Vy
TWFwLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRv
ciBpdCA9IGZpcnN0OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+ZGVsZXRl
QWxsQ29va2llc0FuZERvbWFpbnMoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+ZGVsZXRlQWxsQ29v
a2llc0FuZERvbWFpbnMoKTsKIAogICAgIGlmIChiYWNraW5nU3RvcmVSZW1vdmFsID09IFJlbW92
ZUZyb21CYWNraW5nU3RvcmUpCiAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5yZW1vdmVB
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFw
LmNwcAppbmRleCBhZjQ4NWI1NGMyMGVjY2ZjYTBhYTRkOTk1ZmI3MjBhNDUzNGQ3OGE0Li5iYmU5
YTdjZWRmNzNmNzBkNTBjNGRkMDcyNGY0YTVkNmEwMTVjN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCkBAIC0xNzIsNyArMTcyLDcg
QEAgUGFyc2VkQ29va2llKiBDb29raWVNYXA6OnJlbW92ZU9sZGVzdENvb2tpZSgpCiAgICAgICAg
IENvb2tpZUxvZygiQ29va2llTWFwIC0gbG9va2luZyBpbnRvIHN1YmRvbWFpbnMiKTsKIAogICAg
ICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBDb29raWVNYXAqPjo6aXRlcmF0b3IgaXQgPSBtX3N1
YmRvbWFpbnMuYmVnaW4oKTsgaXQgIT0gbV9zdWJkb21haW5zLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgICAgICBvbGRlc3RDb29raWUgPSBpdC0+dmFsdWUtPnJlbW92ZU9sZGVzdENvb2tpZSgpOwor
ICAgICAgICAgICAgb2xkZXN0Q29va2llID0gaXQtPnNlY29uZC0+cmVtb3ZlT2xkZXN0Q29va2ll
KCk7CiAgICAgICAgICAgICBpZiAob2xkZXN0Q29va2llKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBDb29raWVNYXA6OmdldEFsbENo
aWxkQ29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4qIHN0YWNrT2ZDb29raWVzKQogICAgIENv
b2tpZUxvZygiQ29va2llTWFwIC0gZ2V0QWxsQ2hpbGRDb29raWVzIGluIE1hcCAtICVzIiwgZ2V0
TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGdldEFsbENvb2tpZXMoc3RhY2tPZkNvb2tpZXMp
OwogICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBpdCA9IG1f
c3ViZG9tYWlucy5iZWdpbigpOyBpdCAhPSBtX3N1YmRvbWFpbnMuZW5kKCk7ICsraXQpCi0gICAg
ICAgIGl0LT52YWx1ZS0+Z2V0QWxsQ2hpbGRDb29raWVzKHN0YWNrT2ZDb29raWVzKTsKKyAgICAg
ICAgaXQtPnNlY29uZC0+Z2V0QWxsQ2hpbGRDb29raWVzKHN0YWNrT2ZDb29raWVzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKaW5kZXggYjI3ZDdkN2NkM2MxNDM4NjBlYzY1OGJlZWIy
ZDZlNzcyZTk0MmM1Mi4uYmVjMmVjOTUwNjQ0Yzk5M2JlODlhYjM1ZTBiODY3YThiNjEyNjA4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQmluYXJ5UHJvcGVydHlMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9CaW5hcnlQcm9wZXJ0eUxpc3Qu
Y3BwCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBCaW5hcnlQcm9wZXJ0eUxpc3RQbGFuOjp3cml0
ZUludGVnZXJBcnJheShjb25zdCBpbnQqIGludGVnZXJzLCBzaXplX3Qgc2l6ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB3
cml0ZUludGVnZXIoaW50ZWdlcnNbaV0pOwotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtX2N1cnJlbnRPYmplY3RSZWZlcmVuY2UrKzsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCA9IG1fY3VycmVudE9iamVjdFJlZmVyZW5jZSsrOwogICAgIHdyaXRlQXJyYXlPYmplY3Qo
c2l6ZSk7CiAgICAgbV9jdXJyZW50QWdncmVnYXRlU2l6ZSA9IHNhdmVkQWdncmVnYXRlU2l6ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViSFRUUExvYWRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNwcAppbmRleCA2NjM3MWI0YWIxZDJkZDI1NGZiYmRkN2E5
ZGU3MmVkNDExOWQ1NjYxLi43NzYyZmQ4YzQ5ZmRhMjQyYTM3MDI2YzZkZmU2NzdmMjMwNTBlMjlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkhUVFBMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZv
aWQgYWRkSGVhZGVyKEhUVFBIZWFkZXJNYXAqIG1hcCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcKICAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFw
LT5hZGQobmFtZSwgdmFsdWUpOwogICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0IHZhbHVlcyBh
cmUgc2VwYXJhdGVkIGJ5ICdcbicsIG5vdCBjb21tYSwgb3RoZXJ3aXNlIFNldC1Db29raWUgaGVh
ZGVyIGlzIG5vdCBwYXJzZWFibGUuCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSAiXG4iICsgU3RyaW5nKHZhbHVlKTsKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gIlxuIiArIFN0cmluZyh2YWx1ZSk7CiB9CiAK
IHZvaWQgV2ViSFRUUExvYWRJbmZvOjphZGRSZXF1ZXN0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlVSTFJlcXVlc3QuY3BwCmluZGV4IGUz
ODUxMDE0ZmNkZDQ1YmZhY2I0OGI5N2JiYTc2ZTMxZDhiNGEwMTUuLmY0MzdiNTE2NDNiMjM0YjYw
OWY3NzI1ZmI4ZDc2ZDczMWY1NjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJVUkxSZXF1ZXN0LmNwcApAQCAtMTk1LDcg
KzE5NSw3IEBAIHZvaWQgV2ViVVJMUmVxdWVzdDo6dmlzaXRIVFRQSGVhZGVyRmllbGRzKFdlYkhU
VFBIZWFkZXJWaXNpdG9yKiB2aXNpdG9yKSBjb25zdAogewogICAgIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIG1hcCA9IG1fcHJpdmF0ZS0+bV9yZXNvdXJjZVJlcXVlc3QtPmh0dHBIZWFkZXJGaWVsZHMo
KTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2lu
KCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgdmlzaXRvci0+dmlzaXRIZWFkZXIo
aXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgdmlzaXRvci0+dmlzaXRIZWFkZXIoaXQtPmZp
cnN0LCBpdC0+c2Vjb25kKTsKIH0KIAogV2ViSFRUUEJvZHkgV2ViVVJMUmVxdWVzdDo6aHR0cEJv
ZHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCA4MDU2NjY0OTFiMzU0OGM2YjQ5
MTQ5YjFmYTc1MjVhY2JkMzJkOGQ5Li4xZjliOTY4NjBlMGJhMmU5Mzg1YmU1NTU5NWRhNmUwOWY1
MTUxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQg
V2ViVVJMUmVzcG9uc2U6OmFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYlN0cmluZyYKICAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0K
ICAgICAgICAgY29uc3RfY2FzdDxIVFRQSGVhZGVyTWFwKj4oJm1hcCktPmFkZChuYW1lLCB2YWx1
ZVN0cik7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSArPSAiLCAiICsgdmFsdWVTdHI7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
c2Vjb25kICs9ICIsICIgKyB2YWx1ZVN0cjsKIH0KIAogdm9pZCBXZWJVUkxSZXNwb25zZTo6Y2xl
YXJIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQpAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgV2ViVVJMUmVzcG9uc2U6OnZpc2l0SFRUUEhlYWRlckZpZWxkcyhXZWJIVFRQSGVh
ZGVyVmlzaXRvciogdmlzaXRvcikgY29uc3QKIHsKICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBt
YXAgPSBtX3ByaXZhdGUtPm1fcmVzb3VyY2VSZXNwb25zZS0+aHR0cEhlYWRlckZpZWxkcygpOwog
ICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsg
aXQgIT0gbWFwLmVuZCgpOyArK2l0KQotICAgICAgICB2aXNpdG9yLT52aXNpdEhlYWRlcihpdC0+
a2V5LCBpdC0+dmFsdWUpOworICAgICAgICB2aXNpdG9yLT52aXNpdEhlYWRlcihpdC0+Zmlyc3Qs
IGl0LT5zZWNvbmQpOwogfQogCiBkb3VibGUgV2ViVVJMUmVzcG9uc2U6Omxhc3RNb2RpZmllZERh
dGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggZjg5MTAzZjliZTJiNWVlZGQwN2Zh
NzQxMWZlMjc5MWE2MjE4MWVlMC4uMzBkOGQzZDQxZTIyYmRkYTEwNzY0ZDhmNmExZWY0MDMzYTYy
OWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgRGlzcGxheVJl
ZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjplbnN1cmVNb25pdG9y
Rm9yQ2xpZW50KERpc3AKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICByZXR1
cm4gaXQtPnZhbHVlLmdldCgpOworICAgIHJldHVybiBpdC0+c2Vjb25kLmdldCgpOwogfQogCiB2
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQqCiAgICAgaWYgKGl0ID09IG1fbW9uaXRvcnMuZW5kKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IgPSBpdC0+
dmFsdWUuZ2V0KCk7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gaXQtPnNl
Y29uZC5nZXQoKTsKICAgICBpZiAobW9uaXRvci0+cmVtb3ZlQ2xpZW50KGNsaWVudCkpIHsKICAg
ICAgICAgaWYgKCFtb25pdG9yLT5oYXNDbGllbnRzKCkpCiAgICAgICAgICAgICBtX21vbml0b3Jz
LnJlbW92ZShpdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcAppbmRleCAwYmMxNjRlMzUxZDVmMTgxYTViZmI0NDkxZmYwYTVhYjAxYWJlYWFiLi5i
NDYyNjNhOTY2MzIzOWQyZmNmYWQ4YmJiZjMyOWNkNTdkMjZiNGVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hl
LT5zZXQoa2V5LCByZXN1bHQpOwogICAgICAgICBmb3VuZFJlc3VsdCA9IHJlc3VsdDsKICAgICB9
IGVsc2UgewotICAgICAgICByZXN1bHQgPSBpdC0+dmFsdWU7CisgICAgICAgIHJlc3VsdCA9IGl0
LT5zZWNvbmQ7CiAgICAgICAgIGZvdW5kUmVzdWx0ID0gdHJ1ZTsKICAgICB9CiAKQEAgLTMzMiwy
MCArMzMyLDIwIEBAIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnREYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0CiAgICAgICAgIHJldHVybiBuZXdW
YWx1ZS5maXJzdDsKICAgICB9CiAKLSAgICBpZiAoIXJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25k
KSB7Ci0gICAgICAgIEFTU0VSVChnSW5hY3RpdmVGb250RGF0YS0+Y29udGFpbnMocmVzdWx0Lmdl
dCgpLT52YWx1ZS5maXJzdCkpOwotICAgICAgICBnSW5hY3RpdmVGb250RGF0YS0+cmVtb3ZlKHJl
c3VsdC5nZXQoKS0+dmFsdWUuZmlyc3QpOworICAgIGlmICghcmVzdWx0LmdldCgpLT5zZWNvbmQu
c2Vjb25kKSB7CisgICAgICAgIEFTU0VSVChnSW5hY3RpdmVGb250RGF0YS0+Y29udGFpbnMocmVz
dWx0LmdldCgpLT5zZWNvbmQuZmlyc3QpKTsKKyAgICAgICAgZ0luYWN0aXZlRm9udERhdGEtPnJl
bW92ZShyZXN1bHQuZ2V0KCktPnNlY29uZC5maXJzdCk7CiAgICAgfQogCiAgICAgaWYgKHNob3Vs
ZFJldGFpbiA9PSBSZXRhaW4pCi0gICAgICAgIHJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25kKys7
Ci0gICAgZWxzZSBpZiAoIXJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25kKSB7CisgICAgICAgIHJl
c3VsdC5nZXQoKS0+c2Vjb25kLnNlY29uZCsrOworICAgIGVsc2UgaWYgKCFyZXN1bHQuZ2V0KCkt
PnNlY29uZC5zZWNvbmQpIHsKICAgICAgICAgLy8gSWYgc2hvdWxkUmV0YWluIGlzIERvTm90UmV0
YWluIGFuZCBjb3VudCBpcyAwLCB3ZSB3YW50IHRvIHJlbW92ZSB0aGUgZm9udERhdGEgZnJvbSAK
ICAgICAgICAgLy8gZ0luYWN0aXZlRm9udERhdGEgKGFib3ZlKSBhbmQgcmUtYWRkIGhlcmUgdG8g
dXBkYXRlIExSVSBwb3NpdGlvbi4KLSAgICAgICAgZ0luYWN0aXZlRm9udERhdGEtPmFkZChyZXN1
bHQuZ2V0KCktPnZhbHVlLmZpcnN0KTsKKyAgICAgICAgZ0luYWN0aXZlRm9udERhdGEtPmFkZChy
ZXN1bHQuZ2V0KCktPnNlY29uZC5maXJzdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKS0+dmFsdWUuZmlyc3Q7CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKS0+c2Vjb25kLmZpcnN0
OwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXROb25SZXRhaW5lZExhc3RSZXNv
cnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCkBA
IC0zNjEsOCArMzYxLDggQEAgdm9pZCBGb250Q2FjaGU6OnJlbGVhc2VGb250RGF0YShjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udERhdGEpCiAgICAgRm9udERhdGFDYWNoZTo6aXRlcmF0b3IgaXQg
PSBnRm9udERhdGFDYWNoZS0+ZmluZChmb250RGF0YS0+cGxhdGZvcm1EYXRhKCkpOwogICAgIEFT
U0VSVChpdCAhPSBnRm9udERhdGFDYWNoZS0+ZW5kKCkpOwogCi0gICAgQVNTRVJUKGl0LT52YWx1
ZS5zZWNvbmQpOwotICAgIGlmICghLS1pdC0+dmFsdWUuc2Vjb25kKQorICAgIEFTU0VSVChpdC0+
c2Vjb25kLnNlY29uZCk7CisgICAgaWYgKCEtLWl0LT5zZWNvbmQuc2Vjb25kKQogICAgICAgICBn
SW5hY3RpdmVGb250RGF0YS0+YWRkKGZvbnREYXRhKTsKIH0KIApAQCAtNDEwLDggKzQxMCw4IEBA
IHZvaWQgRm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEoaW50IGNvdW50KQogICAgICAg
ICBrZXlzVG9SZW1vdmUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShnRm9udFBsYXRmb3JtRGF0YUNh
Y2hlLT5zaXplKCkpOwogICAgICAgICBGb250UGxhdGZvcm1EYXRhQ2FjaGU6Oml0ZXJhdG9yIHBs
YXRmb3JtRGF0YUVuZCA9IGdGb250UGxhdGZvcm1EYXRhQ2FjaGUtPmVuZCgpOwogICAgICAgICBm
b3IgKEZvbnRQbGF0Zm9ybURhdGFDYWNoZTo6aXRlcmF0b3IgcGxhdGZvcm1EYXRhID0gZ0ZvbnRQ
bGF0Zm9ybURhdGFDYWNoZS0+YmVnaW4oKTsgcGxhdGZvcm1EYXRhICE9IHBsYXRmb3JtRGF0YUVu
ZDsgKytwbGF0Zm9ybURhdGEpIHsKLSAgICAgICAgICAgIGlmIChwbGF0Zm9ybURhdGEtPnZhbHVl
ICYmICFnRm9udERhdGFDYWNoZS0+Y29udGFpbnMoKnBsYXRmb3JtRGF0YS0+dmFsdWUpKQotICAg
ICAgICAgICAgICAgIGtleXNUb1JlbW92ZS5hcHBlbmQocGxhdGZvcm1EYXRhLT5rZXkpOworICAg
ICAgICAgICAgaWYgKHBsYXRmb3JtRGF0YS0+c2Vjb25kICYmICFnRm9udERhdGFDYWNoZS0+Y29u
dGFpbnMoKnBsYXRmb3JtRGF0YS0+c2Vjb25kKSkKKyAgICAgICAgICAgICAgICBrZXlzVG9SZW1v
dmUuYXBwZW5kKHBsYXRmb3JtRGF0YS0+Zmlyc3QpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBzaXplX3Qga2V5c1RvUmVtb3ZlQ291bnQgPSBrZXlzVG9SZW1vdmUuc2l6ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5v
ZGUuY3BwCmluZGV4IDYzNWVjN2IyMjlhYjRjYTk5MThiNTVmZWRkN2ZhOTg3YjQxOTI2NTEuLjg3
ZTkzZmQ5OGZmOGRlZjA5NDgxNmE1MjQzNGU5MDA1ZTg5OTk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAgc2l6ZV90IEdseXBoUGFnZVRyZWVOb2RlOjp0cmVlR2x5cGhQYWdlQ291
bnQoKQogICAgIGlmIChyb290cykgewogICAgICAgICBIYXNoTWFwPGludCwgR2x5cGhQYWdlVHJl
ZU5vZGUqPjo6aXRlcmF0b3IgZW5kID0gcm9vdHMtPmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hN
YXA8aW50LCBHbHlwaFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBpdCA9IHJvb3RzLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBjb3VudCArPSBpdC0+dmFsdWUtPnBhZ2VD
b3VudCgpOworICAgICAgICAgICAgY291bnQgKz0gaXQtPnNlY29uZC0+cGFnZUNvdW50KCk7CiAg
ICAgfQogICAgIAogICAgIGlmIChwYWdlWmVyb1Jvb3QpCkBAIC04OCw3ICs4OCw3IEBAIHNpemVf
dCBHbHlwaFBhZ2VUcmVlTm9kZTo6cGFnZUNvdW50KCkgY29uc3QKICAgICBzaXplX3QgY291bnQg
PSBtX3BhZ2UgJiYgbV9wYWdlLT5vd25lcigpID09IHRoaXMgPyAxIDogMDsKICAgICBIYXNoTWFw
PGNvbnN0IEZvbnREYXRhKiwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9jaGlsZHJlbi5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8Y29uc3QgRm9udERhdGEqLCBH
bHlwaFBhZ2VUcmVlTm9kZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBjb3VudCArPSBpdC0+dmFsdWUtPnBhZ2VDb3Vu
dCgpOworICAgICAgICBjb3VudCArPSBpdC0+c2Vjb25kLT5wYWdlQ291bnQoKTsKIAogICAgIHJl
dHVybiBjb3VudDsKIH0KQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBHbHlwaFBhZ2VUcmVlTm9kZTo6
cHJ1bmVUcmVlQ3VzdG9tRm9udERhdGEoY29uc3QgRm9udERhdGEqIGZvbnREYXRhKQogICAgIGlm
IChyb290cykgewogICAgICAgICBIYXNoTWFwPGludCwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6aXRl
cmF0b3IgZW5kID0gcm9vdHMtPmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8aW50LCBHbHlw
aFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBpdCA9IHJvb3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgICAgICBpdC0+dmFsdWUtPnBydW5lQ3VzdG9tRm9udERhdGEoZm9udERh
dGEpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+cHJ1bmVDdXN0b21Gb250RGF0YShmb250RGF0
YSk7CiAgICAgfQogICAgIAogICAgIGlmIChwYWdlWmVyb1Jvb3QpCkBAIC0xMTEsNyArMTExLDcg
QEAgdm9pZCBHbHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVUcmVlRm9udERhdGEoY29uc3QgU2ltcGxl
Rm9udERhdGEqIGZvbnREYXRhKQogICAgIGlmIChyb290cykgewogICAgICAgICBIYXNoTWFwPGlu
dCwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgZW5kID0gcm9vdHMtPmVuZCgpOwogICAg
ICAgICBmb3IgKEhhc2hNYXA8aW50LCBHbHlwaFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBpdCA9
IHJvb3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBpdC0+dmFsdWUt
PnBydW5lRm9udERhdGEoZm9udERhdGEpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+cHJ1bmVG
b250RGF0YShmb250RGF0YSk7CiAgICAgfQogICAgIAogICAgIGlmIChwYWdlWmVyb1Jvb3QpCkBA
IC0zNjIsNyArMzYyLDcgQEAgdm9pZCBHbHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVDdXN0b21Gb250
RGF0YShjb25zdCBGb250RGF0YSogZm9udERhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBIYXNo
TWFwPGNvbnN0IEZvbnREYXRhKiwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgZW5kID0g
bV9jaGlsZHJlbi5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8Y29uc3QgRm9udERhdGEqLCBHbHlw
aFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnBydW5lQ3VzdG9tRm9udERhdGEoZm9udERh
dGEpOworICAgICAgICBpdC0+c2Vjb25kLT5wcnVuZUN1c3RvbUZvbnREYXRhKGZvbnREYXRhKTsK
IH0KIAogdm9pZCBHbHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVGb250RGF0YShjb25zdCBTaW1wbGVG
b250RGF0YSogZm9udERhdGEsIHVuc2lnbmVkIGxldmVsKQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZv
aWQgR2x5cGhQYWdlVHJlZU5vZGU6OnBydW5lRm9udERhdGEoY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhLCB1bnNpZ25lZCBsCiAgICAgLy8gUHJ1bmUgYW55IGJyYW5jaCB0aGF0IGNvbnRh
aW5zIHRoaXMgRm9udERhdGEuCiAgICAgSGFzaE1hcDxjb25zdCBGb250RGF0YSosIEdseXBoUGFn
ZVRyZWVOb2RlKj46Oml0ZXJhdG9yIGNoaWxkID0gbV9jaGlsZHJlbi5maW5kKGZvbnREYXRhKTsK
ICAgICBpZiAoY2hpbGQgIT0gbV9jaGlsZHJlbi5lbmQoKSkgewotICAgICAgICBHbHlwaFBhZ2VU
cmVlTm9kZSogbm9kZSA9IGNoaWxkLT52YWx1ZTsKKyAgICAgICAgR2x5cGhQYWdlVHJlZU5vZGUq
IG5vZGUgPSBjaGlsZC0+c2Vjb25kOwogICAgICAgICBtX2NoaWxkcmVuLnJlbW92ZShmb250RGF0
YSk7CiAgICAgICAgIHVuc2lnbmVkIGN1c3RvbUZvbnRDb3VudCA9IG5vZGUtPm1fY3VzdG9tRm9u
dENvdW50OwogICAgICAgICBkZWxldGUgbm9kZTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIEds
eXBoUGFnZVRyZWVOb2RlOjpwcnVuZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250
RGF0YSwgdW5zaWduZWQgbAogCiAgICAgSGFzaE1hcDxjb25zdCBGb250RGF0YSosIEdseXBoUGFn
ZVRyZWVOb2RlKj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChI
YXNoTWFwPGNvbnN0IEZvbnREYXRhKiwgR2x5cGhQYWdlVHJlZU5vZGUqPjo6aXRlcmF0b3IgaXQg
PSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVl
LT5wcnVuZUZvbnREYXRhKGZvbnREYXRhLCBsZXZlbCk7CisgICAgICAgIGl0LT5zZWNvbmQtPnBy
dW5lRm9udERhdGEoZm9udERhdGEsIGxldmVsKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTQw
Niw4ICs0MDYsOCBAQCB2b2lkIEdseXBoUGFnZVRyZWVOb2RlOjpwcnVuZUZvbnREYXRhKGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgdW5zaWduZWQgbAogCiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgRm9udERhdGEqLCBHbHlwaFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBlbmQgPSBtX2No
aWxkcmVuLmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8Y29uc3QgRm9udERhdGEqLCBHbHlw
aFBhZ2VUcmVlTm9kZSo+OjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBwcmludGYoIiVzXHQlcCAlc1xuIiwgaW5kZW50LmRh
dGEoKSwgaXQtPmtleSwgaXQtPmtleS0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGl0LT52YWx1ZS0+c2hvd1N1YnRyZWUoKTsKKyAgICAgICAgICAgIHByaW50Zigi
JXNcdCVwICVzXG4iLCBpbmRlbnQuZGF0YSgpLCBpdC0+Zmlyc3QsIGl0LT5maXJzdC0+ZGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNob3dTdWJ0
cmVlKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fc3lzdGVtRmFsbGJhY2tDaGlsZCkgewog
ICAgICAgICAgICAgcHJpbnRmKCIlc1x0KiBmYWxsYmFja1xuIiwgaW5kZW50LmRhdGEoKSk7CkBA
IC00MjUsOCArNDI1LDggQEAgdm9pZCBzaG93R2x5cGhQYWdlVHJlZXMoKQogICAgIHNob3dHbHlw
aFBhZ2VUcmVlKDApOwogICAgIEhhc2hNYXA8aW50LCBXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9k
ZSo+OjppdGVyYXRvciBlbmQgPSBXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZTo6cm9vdHMtPmVu
ZCgpOwogICAgIGZvciAoSGFzaE1hcDxpbnQsIFdlYkNvcmU6OkdseXBoUGFnZVRyZWVOb2RlKj46
Oml0ZXJhdG9yIGl0ID0gV2ViQ29yZTo6R2x5cGhQYWdlVHJlZU5vZGU6OnJvb3RzLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgcHJpbnRmKCJcblBhZ2UgJWQ6XG4iLCBpdC0+
a2V5KTsKLSAgICAgICAgc2hvd0dseXBoUGFnZVRyZWUoaXQtPmtleSk7CisgICAgICAgIHByaW50
ZigiXG5QYWdlICVkOlxuIiwgaXQtPmZpcnN0KTsKKyAgICAgICAgc2hvd0dseXBoUGFnZVRyZWUo
aXQtPmZpcnN0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBkZjdmYTdkY2IzYjk5YWZh
ZjJhYmU2ZGNlMWUyZmQxYTdlNTc5ZGM1Li5iNDg1ZGNmMTdmNWViZWYyOWE5NjZlY2M2M2Q2YTE5
MDgzMmQ3MzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xMTYsOSArMTE2LDkgQEAgdm9pZCBUaWxlZEJh
Y2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKQogICAgIFZlY3RvcjxSZWZQdHI8VGlsZT4g
PiBkaXJ0eVRpbGVzOwogICAgIFRpbGVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7
CiAgICAgZm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICghaXQtPnZhbHVlLT5pc0RpcnR5KCkpCisgICAgICAg
IGlmICghaXQtPnNlY29uZC0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGRpcnR5VGlsZXMuYXBwZW5kKGl0LT52YWx1ZSk7CisgICAgICAgIGRpcnR5VGlsZXMuYXBw
ZW5kKGl0LT5zZWNvbmQpOwogICAgIH0KIAogICAgIGlmIChkaXJ0eVRpbGVzLmlzRW1wdHkoKSkg
ewpAQCAtNDAxLDEzICs0MDEsMTMgQEAgYm9vbCBUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRn
ZVRpbGVzKCkKICAgICBWZWN0b3I8VGlsZTo6Q29vcmRpbmF0ZT4gdGlsZXNUb1JlbW92ZTsKICAg
ICBUaWxlTWFwOjppdGVyYXRvciBlbmQgPSBtX3RpbGVzLmVuZCgpOwogICAgIGZvciAoVGlsZU1h
cDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBUaWxlOjpDb29yZGluYXRlIHRpbGVDb29yZGluYXRlID0gaXQtPnZhbHVlLT5jb29yZGlu
YXRlKCk7Ci0gICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBpdC0+dmFsdWUtPnJlY3QoKTsKKyAg
ICAgICAgVGlsZTo6Q29vcmRpbmF0ZSB0aWxlQ29vcmRpbmF0ZSA9IGl0LT5zZWNvbmQtPmNvb3Jk
aW5hdGUoKTsKKyAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IGl0LT5zZWNvbmQtPnJlY3QoKTsK
ICAgICAgICAgSW50UmVjdCBleHBlY3RlZFRpbGVSZWN0ID0gdGlsZVJlY3RGb3JDb29yZGluYXRl
KHRpbGVDb29yZGluYXRlKTsKICAgICAgICAgaWYgKGV4cGVjdGVkVGlsZVJlY3QuaXNFbXB0eSgp
KQogICAgICAgICAgICAgdGlsZXNUb1JlbW92ZS5hcHBlbmQodGlsZUNvb3JkaW5hdGUpOwogICAg
ICAgICBlbHNlIGlmIChleHBlY3RlZFRpbGVSZWN0ICE9IHRpbGVSZWN0KSB7Ci0gICAgICAgICAg
ICBpdC0+dmFsdWUtPnJlc2l6ZShleHBlY3RlZFRpbGVSZWN0LnNpemUoKSk7CisgICAgICAgICAg
ICBpdC0+c2Vjb25kLT5yZXNpemUoZXhwZWN0ZWRUaWxlUmVjdC5zaXplKCkpOwogICAgICAgICAg
ICAgd2FzUmVzaXplZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC00MjYsOCArNDI2LDgg
QEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6c2V0S2VlcFJlY3QoY29uc3QgSW50UmVjdCYga2Vl
cFJlY3QpCiAgICAgVmVjdG9yPFRpbGU6OkNvb3JkaW5hdGU+IHRvUmVtb3ZlOwogICAgIFRpbGVN
YXA6Oml0ZXJhdG9yIGVuZCA9IG1fdGlsZXMuZW5kKCk7CiAgICAgZm9yIChUaWxlTWFwOjppdGVy
YXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFRp
bGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IGl0LT52YWx1ZS0+Y29vcmRpbmF0ZSgpOwotICAg
ICAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSBpdC0+dmFsdWUtPnJlY3QoKTsKKyAgICAgICAgVGls
ZTo6Q29vcmRpbmF0ZSBjb29yZGluYXRlID0gaXQtPnNlY29uZC0+Y29vcmRpbmF0ZSgpOworICAg
ICAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSBpdC0+c2Vjb25kLT5yZWN0KCk7CiAgICAgICAgIGlm
ICghdGlsZVJlY3QuaW50ZXJzZWN0cyhrZWVwUmVjdEYpKQogICAgICAgICAgICAgdG9SZW1vdmUu
YXBwZW5kKGNvb3JkaW5hdGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDc4Y2FjNjcy
ZTQxOGMxNTkwMzNjMGExZmY4OGRmZjJkNmExMTk1NzcuLjgxZDg2Mjk4MTUyOWRjYjVlNGFiMmQw
YzAwNjY3MmRlNzZhODgyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtOTE1LDcgKzkxNSw3IEBA
IEFWRldyYXBwZXIqIEFWRldyYXBwZXI6OmF2ZldyYXBwZXJGb3JDYWxsYmFja0NvbnRleHQodm9p
ZCogY29udGV4dCkKICAgICBpZiAoaXQgPT0gbWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0KIAog
dm9pZCBBVkZXcmFwcGVyOjpzY2hlZHVsZURpc2Nvbm5lY3RBbmREZWxldGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJU
aWxlci5jcHAKaW5kZXggNmRmMWRhM2I3YzgwMDRjYTIxODIxNWFiZDRmYmIyNzE5YzVlODYwNy4u
OWY1YzZhZjNlODUwNjFhOTcyZDA0MzExYmU5MDMxNWU5NWI1ZTBkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGls
ZXIuY3BwCkBAIC0zNjksOCArMzY5LDggQEAgdm9pZCBMYXllclRpbGVyOjpsYXllclZpc2liaWxp
dHlDaGFuZ2VkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBib29sIHZpc2libGUpCiAgICAgfQog
CiAgICAgZm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0g
bV90aWxlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBUaWxlSW5kZXggaW5kZXggPSAoKml0KS5r
ZXk7Ci0gICAgICAgIExheWVyVGlsZSogdGlsZSA9ICgqaXQpLnZhbHVlOworICAgICAgICBUaWxl
SW5kZXggaW5kZXggPSAoKml0KS5maXJzdDsKKyAgICAgICAgTGF5ZXJUaWxlKiB0aWxlID0gKCpp
dCkuc2Vjb25kOwogICAgICAgICB0aWxlLT5zZXRWaXNpYmxlKGZhbHNlKTsKICAgICB9CiB9CkBA
IC0zODQsMjEgKzM4NCwyMSBAQCB2b2lkIExheWVyVGlsZXI6OnVwbG9hZFRleHR1cmVzSWZOZWVk
ZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopCiAKICAgICBUaWxlSm9ic01hcDo6Y29uc3RfaXRl
cmF0b3IgdGlsZUpvYnNJdGVyRW5kID0gdGlsZUpvYnNNYXAuZW5kKCk7CiAgICAgZm9yIChUaWxl
Sm9ic01hcDo6Y29uc3RfaXRlcmF0b3IgdGlsZUpvYnNJdGVyID0gdGlsZUpvYnNNYXAuYmVnaW4o
KTsgdGlsZUpvYnNJdGVyICE9IHRpbGVKb2JzSXRlckVuZDsgKyt0aWxlSm9ic0l0ZXIpIHsKLSAg
ICAgICAgSW50UG9pbnQgb3JpZ2luID0gb3JpZ2luT2ZUaWxlKHRpbGVKb2JzSXRlci0+a2V5KTsK
KyAgICAgICAgSW50UG9pbnQgb3JpZ2luID0gb3JpZ2luT2ZUaWxlKHRpbGVKb2JzSXRlci0+Zmly
c3QpOwogCi0gICAgICAgIExheWVyVGlsZSogdGlsZSA9IG1fdGlsZXMuZ2V0KHRpbGVKb2JzSXRl
ci0+a2V5KTsKKyAgICAgICAgTGF5ZXJUaWxlKiB0aWxlID0gbV90aWxlcy5nZXQodGlsZUpvYnNJ
dGVyLT5maXJzdCk7CiAgICAgICAgIGlmICghdGlsZSkgewogICAgICAgICAgICAgaWYgKG9yaWdp
bi54KCkgPj0gbV9yZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCkgfHwgb3JpZ2luLnkoKSA+PSBt
X3JlcXVpcmVkVGV4dHVyZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB0aWxlID0gbmV3IExheWVyVGlsZSgpOwotICAgICAgICAgICAgbV90aWxl
cy5hZGQodGlsZUpvYnNJdGVyLT5rZXksIHRpbGUpOworICAgICAgICAgICAgbV90aWxlcy5hZGQo
dGlsZUpvYnNJdGVyLT5maXJzdCwgdGlsZSk7CiAgICAgICAgIH0KIAogICAgICAgICBJbnRSZWN0
IHRpbGVSZWN0KG9yaWdpbiwgdGlsZVNpemUoKSk7CiAgICAgICAgIHRpbGVSZWN0LnNldFdpZHRo
KG1pbihtX3JlcXVpcmVkVGV4dHVyZVNpemUud2lkdGgoKSAtIHRpbGVSZWN0LngoKSwgdGlsZVJl
Y3Qud2lkdGgoKSkpOwogICAgICAgICB0aWxlUmVjdC5zZXRIZWlnaHQobWluKG1fcmVxdWlyZWRU
ZXh0dXJlU2l6ZS5oZWlnaHQoKSAtIHRpbGVSZWN0LnkoKSwgdGlsZVJlY3QuaGVpZ2h0KCkpKTsK
IAotICAgICAgICBwZXJmb3JtVGlsZUpvYih0aWxlLCAqdGlsZUpvYnNJdGVyLT52YWx1ZSwgdGls
ZVJlY3QpOworICAgICAgICBwZXJmb3JtVGlsZUpvYih0aWxlLCAqdGlsZUpvYnNJdGVyLT5zZWNv
bmQsIHRpbGVSZWN0KTsKICAgICB9CiAKICAgICBtX3RleHR1cmVKb2JzLmNsZWFyKCk7CkBAIC00
NDEsMTEgKzQ0MSwxMSBAQCB2b2lkIExheWVyVGlsZXI6OmFkZFRpbGVKb2IoY29uc3QgVGlsZUlu
ZGV4JiBpbmRleCwgY29uc3QgVGV4dHVyZUpvYiYgam9iLCBUaWxlSgogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgbGVhdmUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICBp
ZiAoam9iLm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXJ0eUNvbnRlbnRzICYmIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUtPm1fdHlwZSA9PSBUZXh0dXJlSm9iOjpEaXNjYXJkQ29udGVudHMpCisgICAg
aWYgKGpvYi5tX3R5cGUgPT0gVGV4dHVyZUpvYjo6RGlydHlDb250ZW50cyAmJiByZXN1bHQuaXRl
cmF0b3ItPnNlY29uZC0+bV90eXBlID09IFRleHR1cmVKb2I6OkRpc2NhcmRDb250ZW50cykKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gT3ZlcnJpZGUgdGhlIHByZXZpb3VzIGpvYi4KLSAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gJmpvYjsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCA9ICZqb2I7CiB9CiAKIHZvaWQgTGF5ZXJUaWxlcjo6cGVyZm9ybVRpbGVKb2IoTGF5ZXJUaWxl
KiB0aWxlLCBjb25zdCBUZXh0dXJlSm9iJiBqb2IsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQpA
QCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6ZGVsZXRlVGV4dHVyZXMoTGF5ZXJD
b21wb3NpdGluZ1RocmVhZCopCiAgICAgLy8gdG91Y2hpbmcgc29tZSBXZWJLaXQgdGhyZWFkIHN0
YXRlLgogICAgIGlmIChtX3RpbGVzLnNpemUoKSkgewogICAgICAgICBmb3IgKFRpbGVNYXA6Oml0
ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBtX3RpbGVzLmVuZCgpOyArK2l0KQot
ICAgICAgICAgICAgKCppdCkudmFsdWUtPmRpc2NhcmRDb250ZW50cygpOworICAgICAgICAgICAg
KCppdCkuc2Vjb25kLT5kaXNjYXJkQ29udGVudHMoKTsKICAgICAgICAgbV90aWxlcy5jbGVhcigp
OwogCiAgICAgICAgIG1fY29udGVudHNEaXJ0eSA9IHRydWU7CkBAIC02NDcsNyArNjQ3LDcgQEAg
dm9pZCBMYXllclRpbGVyOjpwcnVuZVRleHR1cmVzKCkKICAgICAvLyBQcnVuZSB0aWxlcyB0aGF0
IGFyZSBubyBsb25nZXIgbmVlZGVkLgogICAgIFZlY3RvcjxUaWxlSW5kZXg+IHRpbGVzVG9EZWxl
dGU7CiAgICAgZm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQg
IT0gbV90aWxlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBUaWxlSW5kZXggaW5kZXggPSAoKml0
KS5rZXk7CisgICAgICAgIFRpbGVJbmRleCBpbmRleCA9ICgqaXQpLmZpcnN0OwogCiAgICAgICAg
IEludFBvaW50IG9yaWdpbiA9IG9yaWdpbk9mVGlsZShpbmRleCk7CiAgICAgICAgIGlmIChvcmln
aW4ueCgpID49IG1fcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpIHx8IG9yaWdpbi55KCkgPj0g
bV9yZXF1aXJlZFRleHR1cmVTaXplLmhlaWdodCgpKQpAQCAtNzM5LDcgKzczOSw3IEBAIHZvaWQg
TGF5ZXJUaWxlcjo6YmluZENvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKikK
ICAgICBpZiAobV90aWxlcy5zaXplKCkgIT0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29u
c3QgTGF5ZXJUaWxlKiB0aWxlID0gbV90aWxlcy5iZWdpbigpLT52YWx1ZTsKKyAgICBjb25zdCBM
YXllclRpbGUqIHRpbGUgPSBtX3RpbGVzLmJlZ2luKCktPnNlY29uZDsKIAogICAgIEFTU0VSVCh0
aWxlLT5oYXNUZXh0dXJlKCkpOwogICAgIGlmICghdGlsZS0+aGFzVGV4dHVyZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJl
Q2FjaGVDb21wb3NpdGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCBk
NjVjNGRhZGRiYmIyNTk4ZWIwZmEyNDE3MWM0ZTZhZjE0ZGQ3NGM4Li41YjZiYjg3MzY0OWY5YTg4
YmNiNzhlMjBiMTdhMThlYzM1NGNiNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1
cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMjAyLDEwICsyMDIsMTAgQEAgdm9pZCBU
ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6c2V0TWVtb3J5VXNhZ2Uoc2l6ZV90IG1lbW9y
eVVzYWdlKQogUGFzc1JlZlB0cjxUZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZDo6dGV4dHVyZUZvclRpbGVkQ29udGVudHMoY29uc3QgU2tCaXRtYXAmIGNvbnRlbnRzLCBjb25z
dCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiBpbmRleCwgYm9vbCBpc09wYXF1
ZSkKIHsKICAgICBIYXNoTWFwPENvbnRlbnRzS2V5LCBUZXh0dXJlTWFwPjo6aXRlcmF0b3IgaXQg
PSBtX2NhY2hlLmFkZChrZXkoY29udGVudHMpLCBUZXh0dXJlTWFwKCkpLml0ZXJhdG9yOwotICAg
IFRleHR1cmVNYXAmIG1hcCA9ICgqaXQpLnZhbHVlOworICAgIFRleHR1cmVNYXAmIG1hcCA9ICgq
aXQpLnNlY29uZDsKIAogICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGp0ID0gbWFwLmFkZChpbmRl
eCwgUmVmUHRyPFRleHR1cmU+KCkpLml0ZXJhdG9yOwotICAgIFJlZlB0cjxUZXh0dXJlPiB0ZXh0
dXJlID0gKCpqdCkudmFsdWU7CisgICAgUmVmUHRyPFRleHR1cmU+IHRleHR1cmUgPSAoKmp0KS5z
ZWNvbmQ7CiAgICAgaWYgKCF0ZXh0dXJlKSB7CiAgICAgICAgIHRleHR1cmUgPSBjcmVhdGVUZXh0
dXJlKCk7CiAjaWYgREVCVUdfVEVYVFVSRV9NRU1PUllfVVNBR0UKQEAgLTI0NCw3ICsyNDQsNyBA
QCBQYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0
dXJlRm9yQ29sb3IoY29uc3QgQ29sb3ImCiAjZW5kaWYKICAgICAgICAgbV9jb2xvcnMuc2V0KGNv
bG9yLCB0ZXh0dXJlKTsKICAgICB9IGVsc2UKLSAgICAgICAgdGV4dHVyZSA9ICgqaXQpLnZhbHVl
OworICAgICAgICB0ZXh0dXJlID0gKCppdCkuc2Vjb25kOwogCiAgICAgLy8gQ29sb3IgdGV4dHVy
ZXMgY2FuJ3QgYmUgZXZpY3RlZCwgc28gbm8gbmVlZCBmb3IgVGV4dHVyZVByb3RlY3Rvci4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKaW5kZXggNTBkMzNhMDc5YTJiZmQ1ZGY5YjhkNmZiNjZiZDkxMWE3MGQyZmRk
Yy4uZGNkYjU4NmQwY2JmYjMyOTM2MWQ2ZWRiNTlmY2NhYzBlYjMwYjIyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlB
bmltYXRpb25zKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBQbGF0Zm9ybUNBTGF5ZXIKICAgICAvLyBM
b29rIGZvciBydW5uaW5nIGFuaW1hdGlvbnMgYWZmZWN0aW5nIHRoaXMgcHJvcGVydHkuCiAgICAg
QW5pbWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5l
bmQoKTsKICAgICBmb3IgKEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydW5u
aW5nQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgY29uc3Qg
VmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBwcm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC0+
dmFsdWU7CisgICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJv
cGVydHlBbmltYXRpb25zID0gaXQtPnNlY29uZDsKICAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlv
bnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKQEAg
LTcxOSw3ICs3MTksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb24oY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZgogCiAgICAgQW5pbWF0aW9u
c1RvUHJvY2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZmluZChh
bmltYXRpb25OYW1lKTsKICAgICBpZiAoaXQgIT0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgp
KSB7Ci0gICAgICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0g
aXQtPnZhbHVlOworICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNzaW5n
SW5mbyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIC8vIElmIGFuIGFuaW1hdGlvbiBpcyBzY2hlZHVs
ZWQgdG8gYmUgcmVtb3ZlZCwgZG9uJ3QgY2hhbmdlIHRoZSByZW1vdmUgdG8gYSBwYXVzZS4KICAg
ICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlvbiAhPSBSZW1vdmUpCiAgICAgICAgICAgICBw
cm9jZXNzaW5nSW5mby5hY3Rpb24gPSBQYXVzZTsKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqIGxheWVyKQogICAg
IGlmIChsYXllckNsb25lTWFwKSB7CiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckNsb25lID0gaXQtPnZhbHVlLmdldCgp
OworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyQ2xvbmUgPSBpdC0+c2Vjb25kLmdl
dCgpOwogICAgICAgICAgICAgaWYgKCFjdXJyQ2xvbmUpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKQEAgLTExOTYsMTAgKzExOTYsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUdlb21ldHJ5KGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYgcG8KICAg
ICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9u
ZXMuZ2V0KCkpIHsKICAgICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjbG9uZSA9IGl0LT52YWx1ZS5nZXQoKTsK
KyAgICAgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNsb25lID0gaXQtPnNlY29uZC5nZXQo
KTsKICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGNsb25lUG9zaXRpb24gPSBsYXllclBvc2l0
aW9uOwogCi0gICAgICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRl
ZFJvb3RDbG9uZShpdC0+a2V5KSkgeworICAgICAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXll
ciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgewogICAgICAgICAgICAgICAg
ICAgICAvLyBNYWludGFpbiB0aGUgc3BlY2lhbC1jYXNlIHBvc2l0aW9uIGZvciB0aGUgcm9vdCBv
ZiBhIGNsb25lIHN1YnRyZWUsCiAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdlIHNldCB1
cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCkuCiAgICAgICAgICAgICAgICAgICAgIGNsb25lUG9z
aXRpb24gPSBwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7CkBAIC0xMjIzLDEwICsxMjIzLDEw
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVHZW9tZXRyeShmbG9hdCBwYWdlU2NhbGVG
YWN0b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvCiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25l
TWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNsb25lID0gaXQtPnZhbHVlLmdl
dCgpOworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjbG9uZSA9IGl0LT5zZWNvbmQuZ2V0
KCk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGNsb25lUG9zaXRpb24gPSBhZGp1c3RlZFBvc2l0
aW9uOwogCi0gICAgICAgICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyICYmIG1fcmVwbGljYUxh
eWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+a2V5KSkgeworICAgICAgICAgICAgaWYg
KCFtX3N0cnVjdHVyYWxMYXllciAmJiBtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290
Q2xvbmUoaXQtPmZpcnN0KSkgewogICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVj
aWFsLWNhc2UgcG9zaXRpb24gZm9yIHRoZSByb290IG9mIGEgY2xvbmUgc3VidHJlZSwKICAgICAg
ICAgICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGljYXRlZExheWVyUm9vdCgpLgog
ICAgICAgICAgICAgICAgIGNsb25lUG9zaXRpb24gPSBwb3NpdGlvbkZvckNsb25lUm9vdExheWVy
KCk7CkBAIC0xMjQ2LDggKzEyNDYsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlVHJh
bnNmb3JtKCkKICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJD
bG9uZXMoKSkgewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJD
bG9uZU1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIGN1cnJMYXllciA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAg
ICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmtleSkp
IHsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckxheWVyID0gaXQtPnNlY29uZC5n
ZXQoKTsKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290
Q2xvbmUoaXQtPmZpcnN0KSkgewogICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVj
aWFsLWNhc2UgdHJhbnNmb3JtIGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCiAgICAg
ICAgICAgICAgICAgLy8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4K
ICAgICAgICAgICAgICAgICBjdXJyTGF5ZXItPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKTsKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRh
dGVDaGlsZHJlblRyYW5zZm9ybSgpCiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0g
cHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwogICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9jaGlsZHJlblRy
YW5zZm9ybSk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRTdWJsYXllclRyYW5zZm9ybSht
X2NoaWxkcmVuVHJhbnNmb3JtKTsKICAgICB9CiB9CiAKQEAgLTEyNzUsNyArMTI3NSw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKICAgICBpZiAoTGF5ZXJN
YXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CiAgICAgICAgIExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAg
Zm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBpdC0+dmFsdWUtPnNldE1hc2tzVG9Cb3Vu
ZHMobV9tYXNrc1RvQm91bmRzKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldE1hc2tzVG9C
b3VuZHMobV9tYXNrc1RvQm91bmRzKTsKICAgICB9CiAKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRv
cnMoKTsKQEAgLTEyOTMsNyArMTI5Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVD
b250ZW50c1Zpc2liaWxpdHkoKQogICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAg
PSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CiAgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CiAgICAgICAgICAgICBmb3IgKExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgICAgICAgICBpdC0+dmFsdWUtPnNldENvbnRlbnRzKDApOworICAg
ICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENvbnRlbnRzKDApOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtMTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNv
bnRlbnRzT3BhcXVlKCkKICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVy
Q2xvbmVzLmdldCgpKSB7CiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
ICAgICBpdC0+dmFsdWUtPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKKyAgICAgICAgICAg
IGl0LT5zZWNvbmQtPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKICAgICB9CiB9CiAKQEAg
LTEzMTcsNyArMTMxNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVCYWNrZmFjZVZp
c2liaWxpdHkoKQogICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX3N0cnVj
dHVyYWxMYXllckNsb25lcy5nZXQoKSkgewogICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwogICAgICAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXREb3VibGVTaWRlZChtX2Jh
Y2tmYWNlVmlzaWJpbGl0eSk7CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0RG91Ymxl
U2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzI2
LDcgKzEzMjYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQmFja2ZhY2VWaXNpYmls
aXR5KCkKICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdl
dCgpKSB7CiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBpdC0+
dmFsdWUtPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKyAgICAgICAgICAg
IGl0LT5zZWNvbmQtPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKICAgICB9
CiB9CiAKQEAgLTEzMzgsMTAgKzEzMzgsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUZpbHRlcnMoKQogICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXll
ckNsb25lcygpKSB7CiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXll
ckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmtleSkp
CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25l
KGl0LT5maXJzdCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGl0
LT52YWx1ZS0+c2V0RmlsdGVycyhtX2ZpbHRlcnMpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+
c2V0RmlsdGVycyhtX2ZpbHRlcnMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTQzMCw3ICsx
NDMwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1
Y3R1cmFsTGF5ZXJQdXJwb3NlIHB1cnBvc2UsIGZsb2EKICAgICBpZiAobV9sYXllckNsb25lcykg
ewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9sYXllckNsb25lcy0+
ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9sYXll
ckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBQbGF0Zm9y
bUNBTGF5ZXIqIGN1cnJMYXllciA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgICAgIFBsYXRm
b3JtQ0FMYXllciogY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGN1
cnJMYXllci0+c2V0UG9zaXRpb24ocG9pbnQpOwogICAgICAgICAgICAgY3VyckxheWVyLT5zZXRB
bmNob3JQb2ludChhbmNob3JQb2ludCk7CiAgICAgICAgICAgICBjdXJyTGF5ZXItPnNldFRyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKQEAgLTE0NzUsNyArMTQ3NSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckRyYXdzQ29udGVudChmbG9hdCBwYWdlU2NhbGVG
YWN0b3IsIGNvbnN0IEZsb2F0CiAgICAgICAgIGlmIChtX2xheWVyQ2xvbmVzKSB7CiAgICAgICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9sYXllckNsb25lcy0+ZW5kKCk7
CiAgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbGF5ZXJD
bG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBpdC0+dmFs
dWUtPnNldENvbnRlbnRzKDApOworICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENvbnRl
bnRzKDApOwogICAgICAgICB9CiAgICAgfQogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwpA
QCAtMTUyNiw3ICsxNTI2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRz
SW1hZ2UoKQogICAgICAgICBpZiAobV9jb250ZW50c0xheWVyQ2xvbmVzKSB7CiAgICAgICAgICAg
ICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5l
bmQoKTsKICAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9j
b250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAg
ICAgICAgaXQtPnZhbHVlLT5zZXRDb250ZW50cyhtX2NvbnRlbnRzTGF5ZXItPmNvbnRlbnRzKCkp
OworICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENvbnRlbnRzKG1fY29udGVudHNMYXll
ci0+Y29udGVudHMoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVwZGF0ZUNvbnRl
bnRzUmVjdCgpOwpAQCAtMTU3MCw4ICsxNTcwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZUNvbnRlbnRzUmVjdCgpCiAgICAgaWYgKG1fY29udGVudHNMYXllckNsb25lcykgewogICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVz
LT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Nv
bnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgaXQtPnZhbHVlLT5zZXRQb3NpdGlvbihwb2ludCk7Ci0gICAgICAgICAgICBpdC0+dmFsdWUt
PnNldEJvdW5kcyhyZWN0KTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFBvc2l0aW9uKHBv
aW50KTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEJvdW5kcyhyZWN0KTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTE1ODYsOCArMTU4Niw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVNYXNrTGF5ZXIoKQogICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5
ZXJDbG9uZXMuZ2V0KCkpIHsKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwogICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeyAgICAg
ICAgICAgIAotICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBtYXNrQ2xvbmUgPSBtYXNrTGF5
ZXJDbG9uZU1hcCA/IG1hc2tMYXllckNsb25lTWFwLT5nZXQoaXQtPmtleSkuZ2V0KCkgOiAwOwot
ICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRNYXNrKG1hc2tDbG9uZSk7CisgICAgICAgICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIG1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8gbWFza0xheWVy
Q2xvbmVNYXAtPmdldChpdC0+Zmlyc3QpLmdldCgpIDogMDsKKyAgICAgICAgICAgIGl0LT5zZWNv
bmQtPnNldE1hc2sobWFza0Nsb25lKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE2NTEsMTMg
KzE2NTEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucygp
CiAgICAgaWYgKG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5zaXplKCkpIHsKICAgICAgICAgQW5pbWF0
aW9uc1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9hbmltYXRpb25zVG9Qcm9j
ZXNzLmVuZCgpOwogICAgICAgICBmb3IgKEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBjdXJyQW5pbWF0aW9uTmFtZSA9IGl0LT5r
ZXk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJBbmltYXRpb25OYW1lID0gaXQtPmZp
cnN0OwogICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgYW5pbWF0aW9uSXQgPSBt
X3J1bm5pbmdBbmltYXRpb25zLmZpbmQoY3VyckFuaW1hdGlvbk5hbWUpOwogICAgICAgICAgICAg
aWYgKGFuaW1hdGlvbkl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvblByb2Nlc3NpbmdB
Y3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnZhbHVlOwotICAgICAgICAgICAgY29uc3QgVmVj
dG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gYW5pbWF0aW9uSXQtPnZh
bHVlOworICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vz
c2luZ0luZm8gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJv
cGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gYW5pbWF0aW9uSXQtPnNlY29uZDsKICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewog
ICAgICAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRp
b24gPSBhbmltYXRpb25zW2ldOwogICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvY2Vzc2luZ0lu
Zm8uYWN0aW9uKSB7CkBAIC0xNjg5LDcgKzE2ODksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKICAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVu
ZChwZW5kaW5nQW5pbWF0aW9uKTsKICAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25z
LmFkZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYg
YW5pbWF0aW9ucyA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbj4mIGFuaW1hdGlvbnMgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgICAg
IGFuaW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0xNzE0LDExICsxNzE0LDExIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRB
bmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24qIGNhQW5pbSwgQW5pbWF0ZWRQCiAg
ICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQo
KTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25l
TWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIC8vIFNraXAgaW1t
ZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAg
ICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5r
ZXkpKQorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RD
bG9uZShpdC0+Zmlyc3QpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBpdC0+dmFsdWUtPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7Ci0gICAgICAg
ICAgICBpdC0+dmFsdWUtPmFkZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCwgY2FBbmltKTsK
KyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25J
RCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9u
SUQsIGNhQW5pbSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNzUzLDEwICsxNzUzLDEwIEBA
IGJvb2wgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRl
ZFByb3BlcnR5SUQgcHJvcGVydHksIGNvCiAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1v
dmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYg
aXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5rZXkpKQorICAgICAgICAgICAgaWYgKG1fcmVwbGlj
YUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpdC0+dmFsdWUtPnJlbW92ZUFuaW1hdGlvbkZv
cktleShhbmltYXRpb25JRCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kIC0+cmVtb3ZlQW5pbWF0
aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE3ODUsOSArMTc4NSw5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUNBQW5p
bWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0CiAgICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRl
IHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAg
ICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5rZXkpKQor
ICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShp
dC0+Zmlyc3QpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaXQtPnZh
bHVlLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsIG5ld0FuaW0uZ2V0KCkpOworICAg
ICAgICAgICAgaXQtPnNlY29uZC0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBuZXdB
bmltLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTIzMTEsOCArMjMxMSw4IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKICAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewogICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7
CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1h
cC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpdC0+dmFsdWUtPnNl
dFNwZWVkKDApOwotICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRUaW1lT2Zmc2V0KHQpOworICAg
ICAgICAgICAgaXQtPnNlY29uZC0+c2V0U3BlZWQoMCk7CisgICAgICAgICAgICBpdC0+c2Vjb25k
LT5zZXRUaW1lT2Zmc2V0KHQpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjMyNiw4ICsyMzI2
LDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlc3VtZUFuaW1hdGlvbnMoKQogICAgIGlmIChM
YXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CiAgICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKICAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0U3Bl
ZWQoMSk7Ci0gICAgICAgICAgICBpdC0+dmFsdWUtPnNldFRpbWVPZmZzZXQoMCk7CisgICAgICAg
ICAgICBpdC0+c2Vjb25kLT5zZXRTcGVlZCgxKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNl
dFRpbWVPZmZzZXQoMCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNTM3LDEzICsyNTM3LDEz
IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1h
a2VDbG9uZShDbG9uZUlEIGNsb25lSUQsIFBsCiAgICAgTGF5ZXJNYXA6OkFkZFJlc3VsdCBhZGRS
ZXN1bHQgPSBjbG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7CiAgICAgaWYgKCFhZGRSZXN1bHQu
aXNOZXdFbnRyeSkgewogICAgICAgICAvLyBWYWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlz
dHMgYWxyZWFkeS4KLSAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmdldCgpOworICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLmdldCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXll
cihzb3VyY2VMYXllciwgY2xvbmVMZXZlbCk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICByZXN1
bHRMYXllci0+c2V0TmFtZShTdHJpbmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBj
bG9uZUlEWzBVXSwgc291cmNlTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogI2VuZGlmCi0gICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSByZXN1bHRMYXllcjsKKyAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSByZXN1bHRMYXllcjsKICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0TGF5ZXI7CkBAIC0yNzM1LDkgKzI3MzUsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0T3BhY2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSkKICAgICBpZiAo
bGF5ZXJDbG9uZU1hcCkgewogICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CiAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5r
ZXkpKQorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RD
bG9uZShpdC0+Zmlyc3QpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
aXQtPnZhbHVlLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisgICAgICAgICAgICBpdC0+c2Vjb25k
LT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNzQ5LDEw
ICsyNzQ5LDEwIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVPcGFjaXR5T25MYXllcigp
CiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkp
IHsKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAt
PmVuZCgpOwogICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVy
Q2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKG1f
cmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+a2V5KSkKKyAgICAgICAg
ICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaXQtPnZhbHVlLT5z
ZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPcGFjaXR5
KG1fb3BhY2l0eSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0KaW5kZXggNzA3
MjIwNDIwZTc4YjA1MzAyY2MwMzYyZjEyMjUyNTU1NDI4YTg4Ni4uYThlZDRhYWNhMGIwNjhlNGU3
NjAzNjg0NjJhYzFhZDUyMmZkZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQg
VGlsZUNhY2hlOjp0aWxlQ2FjaGVMYXllckJvdW5kc0NoYW5nZWQoKQogdm9pZCBUaWxlQ2FjaGU6
OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgZm9yIChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICBbaXQtPnZhbHVlLmdldCgpIHNldE5lZWRzRGlzcGxheV07CisgICAgICAgIFtp
dC0+c2Vjb25kLmdldCgpIHNldE5lZWRzRGlzcGxheV07CiB9CiAKIHZvaWQgVGlsZUNhY2hlOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE3Myw5ICsxNzMs
OSBAQCB2b2lkIFRpbGVDYWNoZTo6c2V0U2NhbGUoQ0dGbG9hdCBzY2FsZSkKICAgICByZXZhbGlk
YXRlVGlsZXMoKTsKIAogICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Rp
bGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBbaXQtPnZhbHVlLmdldCgpIHNldENvbnRlbnRzU2NhbGU6ZGV2aWNlU2NhbGVGYWN0b3Jd
OworICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRDb250ZW50c1NjYWxlOmRldmljZVNjYWxl
RmFjdG9yXTsKIAotICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gcmVjdEZvclRpbGVJbmRleChp
dC0+a2V5KTsKKyAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JUaWxlSW5kZXgoaXQt
PmZpcnN0KTsKICAgICAgICAgRmxvYXRSZWN0IHNjYWxlZFRpbGVSZWN0ID0gdGlsZVJlY3Q7CiAK
ICAgICAgICAgc2NhbGVkVGlsZVJlY3Quc2NhbGUoMSAvIG1fc2NhbGUpOwpAQCAtMTk1LDcgKzE5
NSw3IEBAIHZvaWQgVGlsZUNhY2hlOjpzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCBhY2NlbGVy
YXRlc0RyYXdpbmcpCiAgICAgbV9hY2NlbGVyYXRlc0RyYXdpbmcgPSBhY2NlbGVyYXRlc0RyYXdp
bmc7CiAKICAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdp
bigpLCBlbmQgPSBtX3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIFtpdC0+
dmFsdWUuZ2V0KCkgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nOm1fYWNjZWxlcmF0ZXNEcmF3aW5nXTsK
KyAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nOm1fYWNjZWxl
cmF0ZXNEcmF3aW5nXTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFjY2VsZXJhdGVzRHJhd2lu
Zyk7CiAjZW5kaWYKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIFRpbGVDYWNoZTo6c2V0VGlsZURl
YnVnQm9yZGVyV2lkdGgoZmxvYXQgYm9yZGVyV2lkdGgpCiAKICAgICBtX3RpbGVEZWJ1Z0JvcmRl
cldpZHRoID0gYm9yZGVyV2lkdGg7CiAgICAgZm9yIChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICBbaXQtPnZhbHVlLmdldCgpIHNldEJvcmRlcldpZHRoOm1fdGlsZURlYnVnQm9y
ZGVyV2lkdGhdOworICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRCb3JkZXJXaWR0aDptX3Rp
bGVEZWJ1Z0JvcmRlcldpZHRoXTsKIH0KIAogdm9pZCBUaWxlQ2FjaGU6OnNldFRpbGVEZWJ1Z0Jv
cmRlckNvbG9yKENHQ29sb3JSZWYgYm9yZGVyQ29sb3IpCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9p
ZCBUaWxlQ2FjaGU6OnNldFRpbGVEZWJ1Z0JvcmRlckNvbG9yKENHQ29sb3JSZWYgYm9yZGVyQ29s
b3IpCiAKICAgICBtX3RpbGVEZWJ1Z0JvcmRlckNvbG9yID0gYm9yZGVyQ29sb3I7CiAgICAgZm9y
IChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90
aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBbaXQtPnZhbHVlLmdldCgpIHNl
dEJvcmRlckNvbG9yOm1fdGlsZURlYnVnQm9yZGVyQ29sb3IuZ2V0KCldOworICAgICAgICBbaXQt
PnNlY29uZC5nZXQoKSBzZXRCb3JkZXJDb2xvcjptX3RpbGVEZWJ1Z0JvcmRlckNvbG9yLmdldCgp
XTsKIH0KIAogSW50UmVjdCBUaWxlQ2FjaGU6OmJvdW5kcygpIGNvbnN0CkBAIC0zNjEsOSArMzYx
LDkgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAgICAgVmVjdG9yPFRpbGVJ
bmRleD4gdGlsZXNUb1JlbW92ZTsKIAogICAgIGZvciAoVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBjb25zdCBUaWxlSW5kZXgmIHRpbGVJbmRleCA9IGl0LT5rZXk7CisgICAgICAgIGNv
bnN0IFRpbGVJbmRleCYgdGlsZUluZGV4ID0gaXQtPmZpcnN0OwogCi0gICAgICAgIFdlYlRpbGVM
YXllciogdGlsZUxheWVyID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICBXZWJUaWxlTGF5ZXIq
IHRpbGVMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAKICAgICAgICAgaWYgKCFyZWN0Rm9yVGls
ZUluZGV4KHRpbGVJbmRleCkuaW50ZXJzZWN0cyh0aWxlQ292ZXJhZ2VSZWN0KSkgewogICAgICAg
ICAgICAgLy8gUmVtb3ZlIHRoaXMgbGF5ZXIuCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBUaWxl
Q2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAgICAgICAgICAgICBUaWxlSW5kZXggdGlsZUluZGV4
KHgsIHkpOwogCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gcmVjdEZvclRpbGVJbmRl
eCh0aWxlSW5kZXgpOwotICAgICAgICAgICAgUmV0YWluUHRyPFdlYlRpbGVMYXllcj4mIHRpbGVM
YXllciA9IG1fdGlsZXMuYWRkKHRpbGVJbmRleCwgMCkuaXRlcmF0b3ItPnZhbHVlOworICAgICAg
ICAgICAgUmV0YWluUHRyPFdlYlRpbGVMYXllcj4mIHRpbGVMYXllciA9IG1fdGlsZXMuYWRkKHRp
bGVJbmRleCwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgICAgIGlmICghdGlsZUxheWVy
KSB7CiAgICAgICAgICAgICAgICAgdGlsZUxheWVyID0gY3JlYXRlVGlsZUxheWVyKHRpbGVSZWN0
KTsKICAgICAgICAgICAgICAgICBbbV90aWxlQ29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5
ZXI6dGlsZUxheWVyLmdldCgpXTsKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFRpbGVDYWNoZTo6
cmV2YWxpZGF0ZVRpbGVzKCkKIAogICAgIG1fdGlsZUNvdmVyYWdlUmVjdCA9IEludFJlY3QoKTsK
ICAgICBmb3IgKFRpbGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5iZWdpbigpLCBlbmQgPSBt
X3RpbGVzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgY29uc3QgVGlsZUluZGV4
JiB0aWxlSW5kZXggPSBpdC0+a2V5OworICAgICAgICBjb25zdCBUaWxlSW5kZXgmIHRpbGVJbmRl
eCA9IGl0LT5maXJzdDsKIAogICAgICAgICBtX3RpbGVDb3ZlcmFnZVJlY3QudW5pdGUocmVjdEZv
clRpbGVJbmRleCh0aWxlSW5kZXgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3Bw
CmluZGV4IDcwMTY4YjIxMDRkYjM2OWRhMDc1N2ExMTQ0NjIyMTExYmMzMDYxZjAuLjQ4YjIwZDBi
OGJkMjQyYWI1NDliOGZlNDQyZGY0NGFiMzY3MmViODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKQogCiAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2Fu
aW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3Jt
Q0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9hbmltYXRpb25zLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPnZhbHVlLT5zZXRBY3R1YWxTdGFydFRpbWVJ
Zk5lZWRlZChjYWNmQmVnaW5UaW1lKTsKKyAgICAgICAgaXQtPnNlY29uZC0+c2V0QWN0dWFsU3Rh
cnRUaW1lSWZOZWVkZWQoY2FjZkJlZ2luVGltZSk7CiAKICAgICBpZiAobV9vd25lcikKICAgICAg
ICAgbV9vd25lci0+cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZChiZWdpblRpbWUpOwpA
QCAtMTc3LDggKzE3Nyw4IEBAIHN0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlvbnMo
KS5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRv
cHRDRiwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0FDRkxheWVyQWRkQW5p
bWF0aW9uKGxheWVyLT5wbGF0Zm9ybUxheWVyKCksIHMuZ2V0KCksIGl0LT52YWx1ZS0+cGxhdGZv
cm1BbmltYXRpb24oKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENG
LCBpdC0+Zmlyc3QuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIENBQ0ZMYXllckFkZEFuaW1h
dGlvbihsYXllci0+cGxhdGZvcm1MYXllcigpLCBzLmdldCgpLCBpdC0+c2Vjb25kLT5wbGF0Zm9y
bUFuaW1hdGlvbigpKTsKICAgICB9CiB9CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBQYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FMYXllcjo6YW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cmluZyYgawogICAgIGlmIChpdCA9PSBtX2FuaW1hdGlvbnMuZW5kKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICByZXR1cm4gaXQtPnNlY29u
ZDsKIH0KIAogUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6Om1hc2soKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENhY2hlQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCmluZGV4IDBjODY1NTAwZGU4OGMzZDhk
YzYxZmI1YzgzMWQ5ZWMzNGU0MTBmNzAuLjlmODk5OGNkYWZkODEyZTE4OWU2NWEyODVmYjZjNDc1
MzBhNDZlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKQEAgLTIyMywx
MCArMjIzLDEwIEBAIHN0YXRpYyBib29sIExvb2t1cEFsdE5hbWUoY29uc3QgU3RyaW5nJiBuYW1l
LCBTdHJpbmcmIGFsdE5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN0YXRpYyBp
bnQgc3lzdGVtQ3AgPSA6OkdldEFDUCgpOwotICAgIGludCBmb250Q3AgPSBpdGVyLT52YWx1ZS0+
Y29kZVBhZ2U7CisgICAgaW50IGZvbnRDcCA9IGl0ZXItPnNlY29uZC0+Y29kZVBhZ2U7CiAKICAg
ICBpZiAoKGlzQXNjaWkgJiYgc3lzdGVtQ3AgPT0gZm9udENwKSB8fCAoIWlzQXNjaWkgJiYgc3lz
dGVtQ3AgIT0gZm9udENwKSkgewotICAgICAgICBhbHROYW1lID0gU3RyaW5nKGl0ZXItPnZhbHVl
LT5uYW1lKTsKKyAgICAgICAgYWx0TmFtZSA9IFN0cmluZyhpdGVyLT5zZWNvbmQtPm5hbWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMg
Ym9vbCBmb250Q29udGFpbnNDaGFyYWN0ZXIoY29uc3QgRm9udFBsYXRmb3JtRGF0YSogZm9udERh
dGEsCiAKICAgICBIYXNoTWFwPGNvbnN0IHdjaGFyX3QqLCBpY3U6OlVuaWNvZGVTZXQqPjo6aXRl
cmF0b3IgaXQgPSBmb250Q21hcENhY2hlLT5maW5kKGZhbWlseSk7CiAgICAgaWYgKGl0ICE9IGZv
bnRDbWFwQ2FjaGUtPmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlLT5jb250YWlucyhj
aGFyYWN0ZXIpOworICAgICAgICByZXR1cm4gaXQtPnNlY29uZC0+Y29udGFpbnMoY2hhcmFjdGVy
KTsKIAogICAgIEhGT05UIGhmb250ID0gZm9udERhdGEtPmhmb250KCk7CiAgICAgSFduZERDIGhk
YygwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcAppbmRleCAyZmZhYmJiNzY4
MmRlYThhMGUxZmM5ZmRhZWU5YzcxODA1YTQyYTA4Li5jYzUyYzUyZWI3MDU3ODJkZTFmOTY4ZGM4
MDNjNDVlNGYyYWUyMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwCkBA
IC00MTUsNyArNDE1LDcgQEAgYm9vbCBnZXREZXJpdmVkRm9udERhdGEoY29uc3QgVUNoYXIqIGZh
bWlseSwKICAgICAgICAgLy8gY2hlY2sgaXQgYWdhaW5zdCB3aGF0IHdlIGFjdHVhbGx5IHdhbnQg
KGFzIGlzIGRvbmUgaW4KICAgICAgICAgLy8gRm9udENhY2hlV2luLmNwcCkKICAgICAgICAgRm9u
dERhdGFDYWNoZTo6QWRkUmVzdWx0IGVudHJ5ID0gZm9udERhdGFDYWNoZS5hZGQoZm9udEtleSwg
Rm9udERhdGEoKSk7Ci0gICAgICAgIGRlcml2ZWQgPSAmZW50cnkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgICAgICBkZXJpdmVkID0gJmVudHJ5Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgIGRlcml2
ZWQtPmhmb250ID0gQ3JlYXRlRm9udEluZGlyZWN0KGxvZ2ZvbnQpOwogICAgICAgICAvLyBHZXRB
c2NlbnQgbWF5IHJldHVybiBrVW5kZWZpbmVkQXNjZW50LCBidXQgd2Ugc3RpbGwgd2FudCB0bwog
ICAgICAgICAvLyBjYWNoZSBpdCBzbyB0aGF0IHdlIHdvbid0IGhhdmUgdG8gY2FsbCBDcmVhdGVG
b250SW5kaXJlY3Qgb25jZQpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgZ2V0RGVyaXZlZEZvbnRE
YXRhKGNvbnN0IFVDaGFyKiBmYW1pbHksCiAgICAgICAgIGRlcml2ZWQtPmFzY2VudCA9IGdldEFz
Y2VudChkZXJpdmVkLT5oZm9udCk7CiAgICAgICAgIGRlcml2ZWQtPnNwYWNlR2x5cGggPSBnZXRT
cGFjZUdseXBoKGRlcml2ZWQtPmhmb250KTsKICAgICB9IGVsc2UgewotICAgICAgICBkZXJpdmVk
ID0gJml0ZXItPnZhbHVlOworICAgICAgICBkZXJpdmVkID0gJml0ZXItPnNlY29uZDsKICAgICAg
ICAgLy8gTGFzdCB0aW1lLCBHZXRBc2NlbnQgZmFpbGVkIHNvIHRoYXQgb25seSBIRk9OVCB3YXMK
ICAgICAgICAgLy8gY2FjaGVkLiBUcnkgb25jZSBtb3JlIGFzc3VtaW5nIHRoYXQgVHJ5UHJlbG9h
ZEZvbnQKICAgICAgICAgLy8gd2FzIGNhbGxlZCBieSBhIGNhbGxlciBiZXR3ZWVuIGNhbGxzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMmMzZDBjZDRlZGMyY2E4MTM4NzJi
M2JiOTkyMzNhZjgxMzZhMDVhYi4uNWRjNjVlYzVhMjA4MWFhZDQ0NzdkMzI4MjkzOTRhMzYyZDAz
NzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0yMjUsOSArMjI1LDkg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwq
IGxheWVyKQogICAgIFZlY3RvcjxVcGRhdGFibGVUaWxlKj4gaW52YWxpZFRpbGVzOwogCiAgICAg
Zm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1f
dGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyAr
K2l0ZXIpIHsKLSAgICAgICAgaW50IGkgPSBpdGVyLT5rZXkuZmlyc3Q7Ci0gICAgICAgIGludCBq
ID0gaXRlci0+a2V5LnNlY29uZDsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRp
Y19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT52YWx1ZS5nZXQoKSk7CisgICAgICAgIGludCBp
ID0gaXRlci0+Zmlyc3QuZmlyc3Q7CisgICAgICAgIGludCBqID0gaXRlci0+Zmlyc3Quc2Vjb25k
OworICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGls
ZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBu
b3QgZXZlciBiZSBudWxsLgogICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7CiAgICAgaWYgKGhvc3QgJiYgaG9zdCAh
PSBsYXllclRyZWVIb3N0KCkpIHsKICAgICAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGls
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRl
ciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIFVwZGF0
YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+dmFsdWUu
Z2V0KCkpOworICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVw
ZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIG5vdCBldmVyIGJlIG51bGwuCiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OmludmFsaWRhdGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGls
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRl
ciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxl
VGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT52YWx1ZS5nZXQo
KSk7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVU
aWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgQVNTRVJUKHRpbGUpOwogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGV2ZXIgYmUgbnVsbC4KICAgICAgICAgaWYgKCF0
aWxlKQpAQCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUZXh0
dXJlUHJpb3JpdGllcyhjb25zdCBDQ1ByaW9yaXR5Q2FsY3VsYXRvciYgcHJpb3JpCiAKICAgICAv
LyBOb3cgdXBkYXRlIHByaW9yaXRpZXMgb24gYWxsIHRpbGVzIHdlIGhhdmUgaW4gdGhlIGxheWVy
LCBubyBtYXR0ZXIgd2hlcmUgdGhleSBhcmUuCiAgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6
VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsg
aXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVXBkYXRh
YmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT52YWx1ZS5n
ZXQoKSk7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFi
bGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIG5vdCBldmVyIGJlIG51bGwuCiAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNl
dFVwZGF0ZVN0YXRlKCkKIAogICAgIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOwogICAgIGZvciAoQ0NMYXllclRp
bGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygp
LmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSog
dGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT52YWx1ZS5nZXQoKSk7Cisg
ICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4o
aXRlci0+c2Vjb25kLmdldCgpKTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBl
dmVyIGJlIG51bGwuCiAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEYW1hZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKaW5kZXggNzVhMTU2NDgxZTNlMjE3NzlmZjk3
ZTdmNjRlN2QwOTkyMjQ5ZDUzYi4uMTE0NDk5YmExN2VkNGZmMTVkZTA4ZTBjZDQwZmEzMzY3MWE2
MTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcg
QEAgRmxvYXRSZWN0IENDRGFtYWdlVHJhY2tlcjo6dHJhY2tEYW1hZ2VGcm9tTGVmdG92ZXJSZWN0
cygpCiAgICAgRmxvYXRSZWN0IGRhbWFnZVJlY3QgPSBGbG9hdFJlY3QoKTsKIAogICAgIGZvciAo
UmVjdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2N1cnJlbnRSZWN0SGlzdG9yeS0+YmVnaW4oKTsgaXQg
IT0gbV9jdXJyZW50UmVjdEhpc3RvcnktPmVuZCgpOyArK2l0KQotICAgICAgICBkYW1hZ2VSZWN0
LnVuaXRlKGl0LT52YWx1ZSk7CisgICAgICAgIGRhbWFnZVJlY3QudW5pdGUoaXQtPnNlY29uZCk7
CiAKICAgICBtX2N1cnJlbnRSZWN0SGlzdG9yeS0+Y2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rp
cmVjdFJlbmRlcmVyLmNwcAppbmRleCBmYjhhYzFkMjEzNjI3M2EwYjY4ODYxODlkYjI2NmIwZmUy
YTQ2MDZkLi40Njg4YmVkMTliZmM0ZTgzNWJhZGYzNzkyNmQ5MDNkMjZhMGVkMzRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVj
dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmNwcApAQCAtMTE5LDE1ICsxMTksMTUgQEAgdm9pZCBD
Q0RpcmVjdFJlbmRlcmVyOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25z
dCBDQ1JlbmRlclBhc3NMaXMKICAgICBWZWN0b3I8aW50PiBwYXNzZXNUb0RlbGV0ZTsKICAgICBI
YXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJ
dGVyYXRvcjsKICAgICBmb3IgKHBhc3NJdGVyYXRvciA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmJl
Z2luKCk7IHBhc3NJdGVyYXRvciAhPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5lbmQoKTsgKytwYXNz
SXRlcmF0b3IpIHsKLSAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzSW5GcmFt
ZSA9IHJlbmRlclBhc3Nlc0luRnJhbWUuZ2V0KHBhc3NJdGVyYXRvci0+a2V5KTsKKyAgICAgICAg
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzSW5GcmFtZSA9IHJlbmRlclBhc3Nlc0luRnJh
bWUuZ2V0KHBhc3NJdGVyYXRvci0+Zmlyc3QpOwogICAgICAgICBpZiAoIXJlbmRlclBhc3NJbkZy
YW1lKSB7Ci0gICAgICAgICAgICBwYXNzZXNUb0RlbGV0ZS5hcHBlbmQocGFzc0l0ZXJhdG9yLT5r
ZXkpOworICAgICAgICAgICAgcGFzc2VzVG9EZWxldGUuYXBwZW5kKHBhc3NJdGVyYXRvci0+Zmly
c3QpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBJ
bnRTaXplJiByZXF1aXJlZFNpemUgPSByZW5kZXJQYXNzVGV4dHVyZVNpemUocmVuZGVyUGFzc0lu
RnJhbWUpOwogICAgICAgICBHQzNEZW51bSByZXF1aXJlZEZvcm1hdCA9IHJlbmRlclBhc3NUZXh0
dXJlRm9ybWF0KHJlbmRlclBhc3NJbkZyYW1lKTsKLSAgICAgICAgQ2FjaGVkVGV4dHVyZSogdGV4
dHVyZSA9IHBhc3NJdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIENhY2hlZFRleHR1cmUq
IHRleHR1cmUgPSBwYXNzSXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKICAgICAgICAgQVNTRVJUKHRl
eHR1cmUpOwogCiAgICAgICAgIGlmICh0ZXh0dXJlLT5pZCgpICYmICh0ZXh0dXJlLT5zaXplKCkg
IT0gcmVxdWlyZWRTaXplIHx8IHRleHR1cmUtPmZvcm1hdCgpICE9IHJlcXVpcmVkRm9ybWF0KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUaWxpbmdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmNwcAppbmRleCBhODFlMDZjMDUwOTJiMTNm
OWE2YmYwMDQ2OTI1ZGYzZDU0YTI3ZjNmLi45YjU1MTU2ZDk1YmEzNDMzZmY2YzE2YzZlYjU1MDlh
YjcxMDI5ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwCkBAIC0xNTMs
OCArMTUzLDggQEAgdm9pZCBDQ0xheWVyVGlsaW5nRGF0YTo6c2V0Qm91bmRzKGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgY29udGVudFJlY3RUb1RpbGVJbmRpY2VzKEludFJlY3QoSW50UG9pbnQo
KSwgc2l6ZSksIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAgVmVjdG9yPFRpbGVNYXBL
ZXk+IGludmFsaWRUaWxlS2V5czsKICAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSBtX3RpbGVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAg
IGlmIChpdC0+a2V5LmZpcnN0ID4gcmlnaHQgfHwgaXQtPmtleS5zZWNvbmQgPiBib3R0b20pCi0g
ICAgICAgICAgICBpbnZhbGlkVGlsZUtleXMuYXBwZW5kKGl0LT5rZXkpOworICAgICAgICBpZiAo
aXQtPmZpcnN0LmZpcnN0ID4gcmlnaHQgfHwgaXQtPmZpcnN0LnNlY29uZCA+IGJvdHRvbSkKKyAg
ICAgICAgICAgIGludmFsaWRUaWxlS2V5cy5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICB9CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnZhbGlkVGlsZUtleXMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIG1fdGlsZXMucmVtb3ZlKGludmFsaWRUaWxlS2V5c1tpXSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCA0OGRiYjZjZTk0ZTAxNjMxOTFkY2YyMmRkYmYzY2Q2OWQ5ZWYz
NWEyLi4yNGEzMzRjM2ZjNzEyNDdhZjFjMjNiMzJjZmMyMmU5OGFmMjI3YjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDQ0xheWVyVHJlZUhv
c3Q6On5DQ0xheWVyVHJlZUhvc3QoKQogICAgIG51bUxheWVyVHJlZUluc3RhbmNlcy0tOwogICAg
IFJhdGVMaW1pdGVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmF0ZUxpbWl0ZXJzLmJlZ2luKCk7CiAg
ICAgaWYgKGl0ICE9IG1fcmF0ZUxpbWl0ZXJzLmVuZCgpKQotICAgICAgICBpdC0+dmFsdWUtPnN0
b3AoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+c3RvcCgpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6c2V0U3VyZmFjZVJlYWR5KCkKQEAgLTY2OSw3ICs2NjksNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6c3RhcnRSYXRlTGltaXRlcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBSYXRlTGltaXRlck1hcDo6aXRlcmF0
b3IgaXQgPSBtX3JhdGVMaW1pdGVycy5maW5kKGNvbnRleHQpOwogICAgIGlmIChpdCAhPSBtX3Jh
dGVMaW1pdGVycy5lbmQoKSkKLSAgICAgICAgaXQtPnZhbHVlLT5zdGFydCgpOworICAgICAgICBp
dC0+c2Vjb25kLT5zdGFydCgpOwogICAgIGVsc2UgewogICAgICAgICBSZWZQdHI8UmF0ZUxpbWl0
ZXI+IHJhdGVMaW1pdGVyID0gUmF0ZUxpbWl0ZXI6OmNyZWF0ZShjb250ZXh0LCB0aGlzKTsKICAg
ICAgICAgbV9yYXRlTGltaXRlcnMuc2V0KGNvbnRleHQsIHJhdGVMaW1pdGVyKTsKQEAgLTY4MSw3
ICs2ODEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RvcFJhdGVMaW1pdGVyKFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgUmF0ZUxpbWl0ZXJNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9yYXRlTGltaXRlcnMuZmluZChjb250ZXh0KTsKICAgICBpZiAoaXQgIT0g
bV9yYXRlTGltaXRlcnMuZW5kKCkpIHsKLSAgICAgICAgaXQtPnZhbHVlLT5zdG9wKCk7CisgICAg
ICAgIGl0LT5zZWNvbmQtPnN0b3AoKTsKICAgICAgICAgbV9yYXRlTGltaXRlcnMucmVtb3ZlKGl0
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4
IDdiMDA0MTUxZDk4MGZhOTVlMDUwY2I4YTNjMWFlYTA5MDVmNzMzNmIuLjkxODMzYWYxZjQzMzkz
MmRmMjUwMGJkNDVkYmQxZThhYjdhYTM5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIGlubGluZSBDQ1JlbmRlclBh
c3MqIGZpbmRSZW5kZXJQYXNzQnlJZChpbnQgcmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xheWVyVHIK
IHsKICAgICBDQ1JlbmRlclBhc3NJZEhhc2hNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZnJhbWUu
cmVuZGVyUGFzc2VzQnlJZC5maW5kKHJlbmRlclBhc3NJZCk7CiAgICAgQVNTRVJUKGl0ICE9IGZy
YW1lLnJlbmRlclBhc3Nlc0J5SWQuZW5kKCkpOwotICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7
CisgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92ZVJl
bmRlclBhc3Nlc1JlY3Vyc2l2ZShpbnQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRl
ci5jcHAKaW5kZXggNmFhMTgzMzFhYzU2M2U3MmJiMWI3OTEwN2M5NjQ0N2VhN2E0M2JmNi4uM2Fh
ZDE0N2NhNjQ0NzM3ZDRlMmZjZmQ5M2FlYzc4MTJlMmUyMDFmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Jlc291cmNlUHJvdmlkZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjppblVzZUJ5Q29uc3VtZXIoUmVzb3VyY2VJZCBpZCkKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVz
b3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7Ci0g
ICAgcmV0dXJuICEhaXQtPnZhbHVlLmxvY2tGb3JSZWFkQ291bnQgfHwgaXQtPnZhbHVlLmV4cG9y
dGVkOworICAgIHJldHVybiAhIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCB8fCBpdC0+c2Vj
b25kLmV4cG9ydGVkOwogfQogCiBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlVXNhZ2VIaW50IGhpbnQpCkBAIC0xNTQsMTUgKzE1
NCwxNSBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2UoUmVzb3VyY2VJ
ZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291
cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChp
dCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnZhbHVlLmxvY2tlZEZvcldyaXRlICYmICFp
dC0+dmFsdWUubG9ja0ZvclJlYWRDb3VudCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2Vz
LmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tG
b3JSZWFkQ291bnQpOwogCi0gICAgaWYgKGl0LT52YWx1ZS5nbElkICYmICFpdC0+dmFsdWUuZXh0
ZXJuYWwpIHsKKyAgICBpZiAoaXQtPnNlY29uZC5nbElkICYmICFpdC0+c2Vjb25kLmV4dGVybmFs
KSB7CiAgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQt
PmNvbnRleHQzRCgpOwogICAgICAgICBBU1NFUlQoY29udGV4dDNkKTsKLSAgICAgICAgR0xDKGNv
bnRleHQzZCwgY29udGV4dDNkLT5kZWxldGVUZXh0dXJlKGl0LT52YWx1ZS5nbElkKSk7CisgICAg
ICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVyZShpdC0+c2Vjb25kLmds
SWQpKTsKICAgICB9Ci0gICAgaWYgKGl0LT52YWx1ZS5waXhlbHMpCi0gICAgICAgIGRlbGV0ZSBp
dC0+dmFsdWUucGl4ZWxzOworICAgIGlmIChpdC0+c2Vjb25kLnBpeGVscykKKyAgICAgICAgZGVs
ZXRlIGl0LT5zZWNvbmQucGl4ZWxzOwogCiAgICAgbV9yZXNvdXJjZXMucmVtb3ZlKGl0KTsKIH0K
QEAgLTE3Miw4ICsxNzIsOCBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlT3duZWRS
ZXNvdXJjZXMoaW50IHBvb2wpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
ICAgICBSZXNvdXJjZUlkQXJyYXkgdG9EZWxldGU7CiAgICAgZm9yIChSZXNvdXJjZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBtX3Jlc291cmNlcy5lbmQoKTsg
KytpdCkgewotICAgICAgICBpZiAoaXQtPnZhbHVlLnBvb2wgPT0gcG9vbCAmJiAhaXQtPnZhbHVl
LmV4dGVybmFsKQotICAgICAgICAgICAgdG9EZWxldGUuYXBwZW5kKGl0LT5rZXkpOworICAgICAg
ICBpZiAoaXQtPnNlY29uZC5wb29sID09IHBvb2wgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpCisg
ICAgICAgICAgICB0b0RlbGV0ZS5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICB9CiAgICAgZm9yIChS
ZXNvdXJjZUlkQXJyYXk6Oml0ZXJhdG9yIGl0ID0gdG9EZWxldGUuYmVnaW4oKTsgaXQgIT0gdG9E
ZWxldGUuZW5kKCk7ICsraXQpCiAgICAgICAgIGRlbGV0ZVJlc291cmNlKCppdCk7CkBAIC0xODMs
MjQgKzE4MywyNCBAQCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlVHlwZSBDQ1Jlc291cmNl
UHJvdmlkZXI6OnJlc291cmNlVHlwZShSZXNvdXJjZUlkIGlkKQogewogICAgIFJlc291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBt
X3Jlc291cmNlcy5lbmQoKSk7Ci0gICAgcmV0dXJuIGl0LT52YWx1ZS50eXBlOworICAgIHJldHVy
biBpdC0+c2Vjb25kLnR5cGU7CiB9CiAKIHZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQo
UmVzb3VyY2VJZCBpZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdl
UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50U2l6ZSYgZGVzdE9mZnNl
dCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNl
TWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VSVChpdCAh
PSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnZhbHVlLmxvY2tlZEZvcldyaXRlICYmICFpdC0+
dmFsdWUubG9ja0ZvclJlYWRDb3VudCAmJiAhaXQtPnZhbHVlLmV4dGVybmFsKTsKKyAgICBBU1NF
UlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUg
JiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7
CiAKLSAgICBpZiAoaXQtPnZhbHVlLmdsSWQpIHsKKyAgICBpZiAoaXQtPnNlY29uZC5nbElkKSB7
CiAgICAgICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNv
bnRleHQzRCgpOwogICAgICAgICBBU1NFUlQoY29udGV4dDNkKTsKICAgICAgICAgQVNTRVJUKG1f
dGV4U3ViSW1hZ2UuZ2V0KCkpOwotICAgICAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBpdC0+dmFsdWUuZ2xJZCk7Ci0gICAgICAgIG1fdGV4
U3ViSW1hZ2UtPnVwbG9hZChpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0T2Zmc2V0
LCBpdC0+dmFsdWUuZm9ybWF0LCBjb250ZXh0M2QpOworICAgICAgICBjb250ZXh0M2QtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBpdC0+c2Vjb25kLmdsSWQpOwor
ICAgICAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVj
dCwgZGVzdE9mZnNldCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQzZCk7CiAgICAgfQogCi0g
ICAgaWYgKGl0LT52YWx1ZS5waXhlbHMpIHsKKyAgICBpZiAoaXQtPnNlY29uZC5waXhlbHMpIHsK
ICAgICAgICAgU2tCaXRtYXAgc3JjRnVsbDsKICAgICAgICAgc3JjRnVsbC5zZXRDb25maWcoU2tC
aXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBpbWFnZVJlY3Qud2lkdGgoKSwgaW1hZ2VSZWN0Lmhl
aWdodCgpKTsKICAgICAgICAgc3JjRnVsbC5zZXRQaXhlbHMoY29uc3RfY2FzdDx1aW50OF90Kj4o
aW1hZ2UpKTsKQEAgLTIzOCwxNyArMjM4LDE3IEBAIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpCiB7
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBSZXNvdXJjZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKLSAgICBBU1NFUlQoaXQgIT0gbV9y
ZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT52YWx1ZS5sb2NrZWRGb3JXcml0ZSk7Ci0gICAgaXQtPnZh
bHVlLmxvY2tGb3JSZWFkQ291bnQrKzsKLSAgICByZXR1cm4gJml0LT52YWx1ZTsKKyAgICBBU1NF
UlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUp
OworICAgIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCsrOworICAgIHJldHVybiAmaXQtPnNl
Y29uZDsKIH0KIAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0ZvclJlYWQoUmVzb3Vy
Y2VJZCBpZCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJl
c291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwotICAgIEFTU0VS
VChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+dmFsdWUubG9ja0ZvclJlYWRDb3VudCA+
IDApOwotICAgIGl0LT52YWx1ZS5sb2NrRm9yUmVhZENvdW50LS07CisgICAgQVNTRVJUKGl0ICE9
IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCA+IDApOwor
ICAgIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudC0tOwogfQogCiBjb25zdCBDQ1Jlc291cmNl
UHJvdmlkZXI6OlJlc291cmNlKiBDQ1Jlc291cmNlUHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNv
dXJjZUlkIGlkKQpAQCAtMjU2LDggKzI1Niw4IEBAIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2UqIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvcldyaXRlKFJlc291cmNlSWQKICAg
ICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIFJlc291cmNlTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Jlc291
cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSAmJiAhaXQtPnNlY29uZC5s
b2NrRm9yUmVhZENvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsKLSAgICBpdC0+dmFsdWUu
bG9ja2VkRm9yV3JpdGUgPSB0cnVlOwotICAgIHJldHVybiAmaXQtPnZhbHVlOworICAgIGl0LT5z
ZWNvbmQubG9ja2VkRm9yV3JpdGUgPSB0cnVlOworICAgIHJldHVybiAmaXQtPnNlY29uZDsKIH0K
IAogdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0ZvcldyaXRlKFJlc291cmNlSWQgaWQp
CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0Zvcldy
aXRlKFJlc291cmNlSWQgaWQpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
ICAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKICAg
ICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrZWRGb3JX
cml0ZSAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7Ci0gICAgaXQtPnZhbHVlLmxvY2tlZEZvcldy
aXRlID0gZmFsc2U7CisgICAgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSA9IGZhbHNlOwogfQog
CiBDQ1Jlc291cmNlUHJvdmlkZXI6OlNjb3BlZFJlYWRMb2NrR0w6OlNjb3BlZFJlYWRMb2NrR0wo
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIENDUmVzb3Vy
Y2VQcm92aWRlcjo6ZGVzdHJveUNoaWxkKGludCBjaGlsZCkKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogICAgIENoaWxkTWFwOjppdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4u
ZmluZChjaGlsZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fY2hpbGRyZW4uZW5kKCkpOwotICAgIGRl
bGV0ZU93bmVkUmVzb3VyY2VzKGl0LT52YWx1ZS5wb29sKTsKKyAgICBkZWxldGVPd25lZFJlc291
cmNlcyhpdC0+c2Vjb25kLnBvb2wpOwogICAgIG1fY2hpbGRyZW4ucmVtb3ZlKGl0KTsKICAgICB0
cmltTWFpbGJveERlcXVlKCk7CiB9CkBAIC0zOTgsNyArMzk4LDcgQEAgY29uc3QgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkTWFwJiBDQ1Jlc291cmNlUHJvdmlkZXI6OmdldENoaWxkVG9Q
YXJlbnRNYXAKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIENoaWxk
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uZmluZChjaGlsZCk7CiAgICAgQVNT
RVJUKGl0ICE9IG1fY2hpbGRyZW4uZW5kKCkpOwotICAgIHJldHVybiBpdC0+dmFsdWUuY2hpbGRU
b1BhcmVudE1hcDsKKyAgICByZXR1cm4gaXQtPnNlY29uZC5jaGlsZFRvUGFyZW50TWFwOwogfQog
CiBDQ1Jlc291cmNlUHJvdmlkZXI6OlRyYW5zZmVyYWJsZVJlc291cmNlTGlzdCBDQ1Jlc291cmNl
UHJvdmlkZXI6OnByZXBhcmVTZW5kVG9QYXJlbnQoY29uc3QgUmVzb3VyY2VJZEFycmF5JiByZXNv
dXJjZXMpCkBAIC00MTQsNyArNDE0LDcgQEAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUcmFuc2ZlcmFi
bGVSZXNvdXJjZUxpc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpwcmVwYXJlU2VuZFRvUGEKICAgICBm
b3IgKFJlc291cmNlSWRBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXNvdXJjZXMuYmVnaW4o
KTsgaXQgIT0gcmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFRyYW5zZmVyYWJsZVJl
c291cmNlIHJlc291cmNlOwogICAgICAgICBpZiAodHJhbnNmZXJSZXNvdXJjZShjb250ZXh0M2Qs
ICppdCwgJnJlc291cmNlKSkgewotICAgICAgICAgICAgbV9yZXNvdXJjZXMuZmluZCgqaXQpLT52
YWx1ZS5leHBvcnRlZCA9IHRydWU7CisgICAgICAgICAgICBtX3Jlc291cmNlcy5maW5kKCppdCkt
PnNlY29uZC5leHBvcnRlZCA9IHRydWU7CiAgICAgICAgICAgICBsaXN0LnJlc291cmNlcy5hcHBl
bmQocmVzb3VyY2UpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDMzLDcgKzQzMyw3IEBAIENDUmVz
b3VyY2VQcm92aWRlcjo6VHJhbnNmZXJhYmxlUmVzb3VyY2VMaXN0IENDUmVzb3VyY2VQcm92aWRl
cjo6cHJlcGFyZVNlbmRUb0NoCiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRo
IGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQot
ICAgIENoaWxkJiBjaGlsZEluZm8gPSBtX2NoaWxkcmVuLmZpbmQoY2hpbGQpLT52YWx1ZTsKKyAg
ICBDaGlsZCYgY2hpbGRJbmZvID0gbV9jaGlsZHJlbi5maW5kKGNoaWxkKS0+c2Vjb25kOwogICAg
IGZvciAoUmVzb3VyY2VJZEFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHJlc291cmNlcy5iZWdp
bigpOyBpdCAhPSByZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgVHJhbnNmZXJhYmxl
UmVzb3VyY2UgcmVzb3VyY2U7CiAgICAgICAgIGlmICghdHJhbnNmZXJSZXNvdXJjZShjb250ZXh0
M2QsICppdCwgJnJlc291cmNlKSkKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIENDUmVzb3VyY2VQ
cm92aWRlcjo6cmVjZWl2ZUZyb21DaGlsZChpbnQgY2hpbGQsIGNvbnN0IFRyYW5zZmVyYWJsZVJl
c291cmNlTAogICAgICAgICAvLyAoYW5kIGlzIHNpbXBsZXIpIHRvIHdhaXQuCiAgICAgICAgIEdM
Qyhjb250ZXh0M2QsIGNvbnRleHQzZC0+d2FpdFN5bmNQb2ludChyZXNvdXJjZXMuc3luY1BvaW50
KSk7CiAgICAgfQotICAgIENoaWxkJiBjaGlsZEluZm8gPSBtX2NoaWxkcmVuLmZpbmQoY2hpbGQp
LT52YWx1ZTsKKyAgICBDaGlsZCYgY2hpbGRJbmZvID0gbV9jaGlsZHJlbi5maW5kKGNoaWxkKS0+
c2Vjb25kOwogICAgIGZvciAoVmVjdG9yPFRyYW5zZmVyYWJsZVJlc291cmNlPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSByZXNvdXJjZXMucmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlcy5y
ZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwogICAg
ICAgICBHTEMoY29udGV4dDNkLCB0ZXh0dXJlSWQgPSBjb250ZXh0M2QtPmNyZWF0ZVRleHR1cmUo
KSk7CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnJlY2VpdmVG
cm9tUGFyZW50KGNvbnN0IFRyYW5zZmVyYWJsZVJlc291cmNlTGlzdCYgcmVzb3UKICAgICBpZiAo
cmVzb3VyY2VzLnN5bmNQb2ludCkKICAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT53
YWl0U3luY1BvaW50KHJlc291cmNlcy5zeW5jUG9pbnQpKTsKICAgICBmb3IgKFZlY3RvcjxUcmFu
c2ZlcmFibGVSZXNvdXJjZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVzb3VyY2VzLnJlc291cmNl
cy5iZWdpbigpOyBpdCAhPSByZXNvdXJjZXMucmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgIFJlc291cmNlJiByZXNvdXJjZSA9IG1fcmVzb3VyY2VzLmZpbmQoaXQtPmlkKS0+dmFsdWU7
CisgICAgICAgIFJlc291cmNlJiByZXNvdXJjZSA9IG1fcmVzb3VyY2VzLmZpbmQoaXQtPmlkKS0+
c2Vjb25kOwogICAgICAgICBBU1NFUlQocmVzb3VyY2UuZXhwb3J0ZWQpOwogICAgICAgICByZXNv
dXJjZS5leHBvcnRlZCA9IGZhbHNlOwogICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2Qt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCByZXNvdXJjZS5nbElk
KSk7CkBAIC01MDYsMTYgKzUwNiwxNiBAQCBib29sIENDUmVzb3VyY2VQcm92aWRlcjo6dHJhbnNm
ZXJSZXNvdXJjZShXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUmVzb3VyYwogICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgUmVzb3VyY2VNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fcmVz
b3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25k
LmxvY2tGb3JSZWFkQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwotICAgIGlmIChpdC0+
dmFsdWUuZXhwb3J0ZWQpCisgICAgaWYgKGl0LT5zZWNvbmQuZXhwb3J0ZWQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXNvdXJjZS0+aWQgPSBpZDsKLSAgICByZXNvdXJjZS0+Zm9ybWF0
ID0gaXQtPnZhbHVlLmZvcm1hdDsKLSAgICByZXNvdXJjZS0+c2l6ZSA9IGl0LT52YWx1ZS5zaXpl
OworICAgIHJlc291cmNlLT5mb3JtYXQgPSBpdC0+c2Vjb25kLmZvcm1hdDsKKyAgICByZXNvdXJj
ZS0+c2l6ZSA9IGl0LT5zZWNvbmQuc2l6ZTsKICAgICBpZiAoIW1fbWFpbGJveGVzLmlzRW1wdHko
KSkKICAgICAgICAgcmVzb3VyY2UtPm1haWxib3ggPSBtX21haWxib3hlcy50YWtlRmlyc3QoKTsK
ICAgICBlbHNlCiAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5nZW5NYWlsYm94Q0hST01J
VU0ocmVzb3VyY2UtPm1haWxib3gubmFtZSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnZhbHVlLmdsSWQp
KTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIGl0LT5zZWNvbmQuZ2xJZCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5wcm9kdWNlVGV4dHVyZUNIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCByZXNvdXJjZS0+bWFpbGJveC5uYW1lKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MzAs
MTUgKzUzMCwxNSBAQCB2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6dHJpbU1haWxib3hEZXF1ZSgp
CiAgICAgc2l6ZV90IG1heE1haWxib3hDb3VudCA9IDA7CiAgICAgaWYgKG1fY29udGV4dC0+Y2Fw
YWJpbGl0aWVzKCkuaGFzUGFyZW50Q29tcG9zaXRvcikgewogICAgICAgICBmb3IgKFJlc291cmNl
TWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IG1fcmVzb3VyY2Vz
LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoIWl0LT52YWx1ZS5leHBvcnRlZCAmJiAh
aXQtPnZhbHVlLmV4dGVybmFsKQorICAgICAgICAgICAgaWYgKCFpdC0+c2Vjb25kLmV4cG9ydGVk
ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKQogICAgICAgICAgICAgICAgICsrbWF4TWFpbGJveENv
dW50OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgSGFzaFNldDxpbnQ+IGNoaWxk
UG9vbFNldDsKICAgICAgICAgZm9yIChDaGlsZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVu
LmJlZ2luKCk7IGl0ICE9IG1fY2hpbGRyZW4uZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBjaGls
ZFBvb2xTZXQuYWRkKGl0LT52YWx1ZS5wb29sKTsKKyAgICAgICAgICAgIGNoaWxkUG9vbFNldC5h
ZGQoaXQtPnNlY29uZC5wb29sKTsKICAgICAgICAgZm9yIChSZXNvdXJjZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBtX3Jlc291cmNlcy5lbmQoKTsgKytpdCkg
ewotICAgICAgICAgICAgaWYgKGNoaWxkUG9vbFNldC5jb250YWlucyhpdC0+dmFsdWUucG9vbCkp
CisgICAgICAgICAgICBpZiAoY2hpbGRQb29sU2V0LmNvbnRhaW5zKGl0LT5zZWNvbmQucG9vbCkp
CiAgICAgICAgICAgICAgICAgKyttYXhNYWlsYm94Q291bnQ7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlckdsb2JhbENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcAppbmRleCAwYWVmNmNkNDYw
ZDRlMzk4YTVhYTRkNTY4ZTg2NTJlNmYzMjliNTA0Li4zODJjMjc4ZWEyMWQxMzVmMDljNzc2Yzgz
ZjA1MjE2YmE2ZThlZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dDo6Q3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dCgpCiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0Ojp+Q3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dCgpCiB7CiAgICAgZm9yIChDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW1zTWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5iZWdpbigpOyBpdGVyICE9IG1f
cHJvZ3JhbXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgaXRlci0+dmFsdWUtPmRldGFjaEZyb21H
bG9iYWxDb250ZXh0KCk7CisgICAgICAgIGl0ZXItPnNlY29uZC0+ZGV0YWNoRnJvbUdsb2JhbENv
bnRleHQoKTsKIH0KIAogdm9pZCBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0OjpwcmVwYXJlQ29u
dGV4dElmTmVlZGVkKEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCkBAIC02OSw3ICs2OSw3IEBAIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJHbG9iYWxD
b250ZXh0OjpnZXRDb21waWxlZFByCiAKICAgICBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW1z
TWFwOjppdGVyYXRvciBpdGVyID0gbV9wcm9ncmFtcy5maW5kKHByb2dyYW1JbmZvKTsKICAgICBp
ZiAoaXRlciAhPSBtX3Byb2dyYW1zLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7
CisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CiAKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVy
Q29tcGlsZWRQcm9ncmFtPiBjb21waWxlZFByb2dyYW0gPSBDdXN0b21GaWx0ZXJDb21waWxlZFBy
b2dyYW06OmNyZWF0ZSh0aGlzLCBwcm9ncmFtSW5mbyk7CiAgICAgbV9wcm9ncmFtcy5zZXQocHJv
Z3JhbUluZm8sIGNvbXBpbGVkUHJvZ3JhbS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9n
cmFtLmNwcAppbmRleCA5NGU4M2RmOWI4M2IyYjViNTRmZTc0N2E3ZTJhZmNiNDIyNWU5Y2ZkLi5k
MWNmNjEzNGY3MGFlOGFiZjUyZmM2MjNhN2Q2OTY1MzQ4NzlmNjEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBDdXN0b21GaWx0ZXJQcm9n
cmFtOjpyZW1vdmVDbGllbnQoQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudCogY2xpZW50KQogdm9p
ZCBDdXN0b21GaWx0ZXJQcm9ncmFtOjpub3RpZnlDbGllbnRzKCkKIHsKICAgICBmb3IgKEN1c3Rv
bUZpbHRlclByb2dyYW1DbGllbnRMaXN0OjppdGVyYXRvciBpdGVyID0gbV9jbGllbnRzLmJlZ2lu
KCksIGVuZCA9IG1fY2xpZW50cy5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAg
aXRlci0+a2V5LT5ub3RpZnlDdXN0b21GaWx0ZXJQcm9ncmFtTG9hZGVkKHRoaXMpOworICAgICAg
ICBpdGVyLT5maXJzdC0+bm90aWZ5Q3VzdG9tRmlsdGVyUHJvZ3JhbUxvYWRlZCh0aGlzKTsKIH0K
IAogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6cHJvZ3JhbUlu
Zm8oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhcmZidXp6L0hhcmZCdXp6U2tpYS5jcHAKaW5kZXggMWU4ODY3YmI3NTdmMjI0MmU4ZjQ5
NjJmODc1YjFiZGY3YWU5OTEyZS4uZjY4ZWE2MTkyNDVmODY2ZTViZDBkNTc4ZDAxMDQ4NDQ1MjU4
NGMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovSGFyZkJ1enpTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9IYXJmQnV6elNraWEuY3BwCkBAIC0yNDQsMTggKzI0NCwxOCBAQCBzdGF0aWMg
SEJfRmFjZVJlY18qIGdldENhY2hlZEhhcmZidXp6RmFjZShGb250UGxhdGZvcm1EYXRhKiBwbGF0
Zm9ybURhdGEpCiAgICAgICAgIGdIYXJmYnV6ekZhY2VDYWNoZS0+c2V0KHVuaXF1ZUlELCBlbnRy
eSk7CiAgICAgICAgIHJldHVybiBlbnRyeS5maXJzdDsKICAgICB9Ci0gICAgKysocmVzdWx0Lmdl
dCgpLT52YWx1ZS5zZWNvbmQpOwotICAgIHJldHVybiByZXN1bHQuZ2V0KCktPnZhbHVlLmZpcnN0
OworICAgICsrKHJlc3VsdC5nZXQoKS0+c2Vjb25kLnNlY29uZCk7CisgICAgcmV0dXJuIHJlc3Vs
dC5nZXQoKS0+c2Vjb25kLmZpcnN0OwogfQogCiBzdGF0aWMgdm9pZCByZWxlYXNlQ2FjaGVkSGFy
ZmJ1enpGYWNlKFNrRm9udElEIHVuaXF1ZUlEKQogewogICAgIEhhcmZidXp6RmFjZUNhY2hlOjpp
dGVyYXRvciByZXN1bHQgPSBnSGFyZmJ1enpGYWNlQ2FjaGUtPmZpbmQodW5pcXVlSUQpOwogICAg
IEFTU0VSVChyZXN1bHQgIT0gZ0hhcmZidXp6RmFjZUNhY2hlLT5lbmQoKSk7Ci0gICAgQVNTRVJU
KHJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25kID4gMCk7Ci0gICAgLS0ocmVzdWx0LmdldCgpLT52
YWx1ZS5zZWNvbmQpOwotICAgIGlmICghKHJlc3VsdC5nZXQoKS0+dmFsdWUuc2Vjb25kKSkgewot
ICAgICAgICBIQl9GcmVlRmFjZShyZXN1bHQuZ2V0KCktPnZhbHVlLmZpcnN0KTsKKyAgICBBU1NF
UlQocmVzdWx0LmdldCgpLT5zZWNvbmQuc2Vjb25kID4gMCk7CisgICAgLS0ocmVzdWx0LmdldCgp
LT5zZWNvbmQuc2Vjb25kKTsKKyAgICBpZiAoIShyZXN1bHQuZ2V0KCktPnNlY29uZC5zZWNvbmQp
KSB7CisgICAgICAgIEhCX0ZyZWVGYWNlKHJlc3VsdC5nZXQoKS0+c2Vjb25kLmZpcnN0KTsKICAg
ICAgICAgZ0hhcmZidXp6RmFjZUNhY2hlLT5yZW1vdmUodW5pcXVlSUQpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hh
cmZCdXp6TkdGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L25nL0hhcmZCdXp6TkdGYWNlLmNwcAppbmRleCA2MDQ3NTliOGNiZGVkM2M4Yjg0MWRjNjY4
NzdlM2RlYTM0NjFmNzY4Li43ZGQwNDhiM2I0M2ZmNTkzODhlYWY0ZTcyMTBlZTJjY2JkNTU0MjIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9u
Zy9IYXJmQnV6ek5HRmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2UuY3BwCkBAIC02MCw4ICs2MCw4IEBAIEhhcmZC
dXp6TkdGYWNlOjpIYXJmQnV6ek5HRmFjZShGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEs
IHVpbnQ2NF90IHVuaXF1ZUlECiAgICAgICAgIEFTU0VSVChtX2ZhY2UpOwogICAgICAgICBoYXJm
YnV6ekZhY2VDYWNoZSgpLT5zZXQobV91bmlxdWVJRCwgRmFjZUNhY2hlRW50cnkobV9mYWNlLCAx
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgKysocmVzdWx0LmdldCgpLT52YWx1ZS5zZWNvbmQp
OwotICAgICAgICBtX2ZhY2UgPSByZXN1bHQuZ2V0KCktPnZhbHVlLmZpcnN0OworICAgICAgICAr
KyhyZXN1bHQuZ2V0KCktPnNlY29uZC5zZWNvbmQpOworICAgICAgICBtX2ZhY2UgPSByZXN1bHQu
Z2V0KCktPnNlY29uZC5maXJzdDsKICAgICB9CiB9CiAKQEAgLTY5LDEwICs2OSwxMCBAQCBIYXJm
QnV6ek5HRmFjZTo6fkhhcmZCdXp6TkdGYWNlKCkKIHsKICAgICBIYXJmQnV6ek5HRmFjZUNhY2hl
OjppdGVyYXRvciByZXN1bHQgPSBoYXJmYnV6ekZhY2VDYWNoZSgpLT5maW5kKG1fdW5pcXVlSUQp
OwogICAgIEFTU0VSVChyZXN1bHQgIT0gaGFyZmJ1enpGYWNlQ2FjaGUoKS0+ZW5kKCkpOwotICAg
IEFTU0VSVChyZXN1bHQuZ2V0KCktPnZhbHVlLnNlY29uZCA+IDApOwotICAgIC0tKHJlc3VsdC5n
ZXQoKS0+dmFsdWUuc2Vjb25kKTsKLSAgICBpZiAoIShyZXN1bHQuZ2V0KCktPnZhbHVlLnNlY29u
ZCkpIHsKLSAgICAgICAgaGJfZmFjZV9kZXN0cm95KHJlc3VsdC5nZXQoKS0+dmFsdWUuZmlyc3Qp
OworICAgIEFTU0VSVChyZXN1bHQuZ2V0KCktPnNlY29uZC5zZWNvbmQgPiAwKTsKKyAgICAtLShy
ZXN1bHQuZ2V0KCktPnNlY29uZC5zZWNvbmQpOworICAgIGlmICghKHJlc3VsdC5nZXQoKS0+c2Vj
b25kLnNlY29uZCkpIHsKKyAgICAgICAgaGJfZmFjZV9kZXN0cm95KHJlc3VsdC5nZXQoKS0+c2Vj
b25kLmZpcnN0KTsKICAgICAgICAgaGFyZmJ1enpGYWNlQ2FjaGUoKS0+cmVtb3ZlKG1fdW5pcXVl
SUQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAppbmRleCAwYjcxMzM0
N2Y2MDQ2MzU1NDllNTBkNTYzNjUyMThiMjM0NDI2YWNmLi4wNTE5Mzc0MmM1ODUyZGJlOWM5Y2Vk
NjRiOWEwN2FhZDJjMWVhNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCkBAIC00
Myw3ICs0Myw3IEBAIENGRGljdGlvbmFyeVJlZiBTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdB
dHRyaWJ1dGVzKFR5cGVzZXR0aW5nRmVhdHVyZXMgdHlwZXNlCiB7CiAgICAgdW5zaWduZWQga2V5
ID0gdHlwZXNldHRpbmdGZWF0dXJlcyArIDE7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdB
dHRyaWJ1dGVzLmFkZChrZXksIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+KCkpOwotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiBhdHRyaWJ1dGVzRGljdGlvbmFyeSA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIGF0dHJp
YnV0ZXNEaWN0aW9uYXJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5
LmdldCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCmluZGV4IDk3ZWJiZjk5YzNkMmU1ZTcxY2E2
MGRhY2IzZGU4MjVhNDFiNjcxN2QuLjY2ZmU5MGE1OTM5MGU0Y2QyMmY2MTgzOGY4YzZhOWRiZmI1
MmFjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9T
aW1wbGVGb250RGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KQEAgLTQ2MSw3ICs0NjEsNyBAQCBib29sIFNpbXBs
ZUZvbnREYXRhOjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hh
ciogY2hhcmFjdGVycwogCiAgICAgV1RGOjpIYXNoTWFwPFN0cmluZywgYm9vbD46OkFkZFJlc3Vs
dCBhZGRSZXN1bHQgPSBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydC0+YWRkKFN0
cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpLCBmYWxzZSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIAogICAgIFJldGFpblB0cjxD
R0ZvbnRSZWY+IGNnRm9udChBZG9wdENGLCBDVEZvbnRDb3B5R3JhcGhpY3NGb250KHBsYXRmb3Jt
RGF0YSgpLmN0Rm9udCgpLCAwKSk7CiAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIFNpbXBsZUZv
bnREYXRhOjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciog
Y2hhcmFjdGVycwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSB0cnVlOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmNwcAppbmRleCA4YmU5Mzg2MjViNDBlNTNjZWQ2NmRiNTZmYTBmOTlhNGEw
MDRlNmY5Li5hM2MwNTY1OTEyMGZhZDgyY2QxMmI0YTU1YThmNDc0YjIzYzJiZWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIFN0
cmluZyBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybTNET2JqZWN0CiAgICAgaWYgKHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hh
ZGVyU291cmNlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gIiI7CiAKLSAgICBHcmFwaGljc0Nv
bnRleHQzRDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKKyAgICBH
cmFwaGljc0NvbnRleHQzRDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT5zZWNv
bmQ7CiAKICAgICBTdHJpbmcgdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKICAgICBTdHJpbmcgc2hh
ZGVySW5mb0xvZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCmluZGV4IGRmOWNjYjU3NDMyMjYwYmZhNWJiMzU3OTYyM2E4ZjIyYjIwYTBiZDUuLjc3MmNh
ODFhMGExNTgzZjNhMjhkZDhkNjkxZWIwMzljYzBjNTE4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
CiAKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIEhhc2hNYXA8UGxhdGZvcm0zRE9iamVjdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlNoYWRlclNvdXJjZUVudHJ5Pjo6aXRlcmF0b3IgcmVzdWx0ID0g
bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQz
RDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+c2Vjb25k
OwogCiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgICAgIE93bkFycmF5UHRyPEdMY2hh
cj4gaW5mbyA9IGFkb3B0QXJyYXlQdHIobmV3IEdMY2hhcltsZW5ndGhdKTsKQEAgLTExNDUsNyAr
MTE0NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwbmFtZSwgR0MzCiAgICAgICAgICAgICAqdmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQ+KGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC0+dmFsdWUuaXNWYWxpZCk7
CisgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PGludD4ocmVzdWx0LT5zZWNvbmQuaXNWYWxp
ZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5GT19MT0dfTEVOR1RIOgogICAgICAgICBp
ZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKSB7CkBAIC0xMTcyLDcgKzExNzIs
NyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCBzaGFkZXIpCiAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAotICAgIFNoYWRlclNvdXJjZUVudHJ5IGVu
dHJ5ID0gcmVzdWx0LT52YWx1ZTsKKyAgICBTaGFkZXJTb3VyY2VFbnRyeSBlbnRyeSA9IHJlc3Vs
dC0+c2Vjb25kOwogICAgIGlmICghZW50cnkuaXNWYWxpZCkKICAgICAgICAgcmV0dXJuIGVudHJ5
LmxvZzsKIApAQCAtMTE5OCw3ICsxMTk4LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgaWYgKHJlc3VsdCA9
PSBtX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAot
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlLnNvdXJjZTsKKyAgICByZXR1cm4gcmVzdWx0LT5zZWNv
bmQuc291cmNlOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9FR0xEaXNwbGF5T3BlblZHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW52Zy9FR0xEaXNwbGF5T3BlblZHLmNwcAppbmRleCAxYTY4YWVmZjhj
YzhjOWY1NDc2YjRmMDUzNTY2MjBmZTE5MTQxYzRjLi5kNjgxZDc1ODFmYjNmYmYyOWQ4OGUxMjZl
NTM4Mzg3ODIzMGI1MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudmcvRUdMRGlzcGxheU9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0VHTERpc3BsYXlPcGVuVkcuY3BwCkBAIC0xMjEsNyArMTIx
LDcgQEAgRUdMRGlzcGxheU9wZW5WRzo6fkVHTERpc3BsYXlPcGVuVkcoKQogCiAgICAgSGFzaE1h
cDxFR0xTdXJmYWNlLCBFR0xpbnQ+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3N1cmZhY2VDb25m
aWdJZHMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEVHTFN1cmZhY2UsIEVHTGludD46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlQ29uZmlnSWRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgZGVzdHJveVN1cmZhY2UoKCppdCkua2V5KTsKKyAgICAgICAgZGVzdHJveVN1
cmZhY2UoKCppdCkuZmlyc3QpOwogCiAgICAgZWdsVGVybWluYXRlKG1fZGlzcGxheSk7CiAgICAg
QVNTRVJUX0VHTF9OT19FUlJPUigpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgRUdMRGlzcGxh
eU9wZW5WRzo6ZGVzdHJveVN1cmZhY2UoY29uc3QgRUdMU3VyZmFjZSYgc3VyZmFjZSkKIAogICAg
ICAgICAvLyAuLi5idXQgb25seSBpZiB0aGVyZSdzIG5vIG90aGVyIHN1cmZhY2VzIGFzc29jaWF0
ZWQgdG8gdGhhdCBjb250ZXh0LgogICAgICAgICBmb3IgKEhhc2hNYXA8RUdMU3VyZmFjZSwgRUdM
aW50Pjo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VDb25maWdJZHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoKCppdCkudmFsdWUgPT0gc3VyZmFjZUNvbmZpZ0lk
KSB7CisgICAgICAgICAgICBpZiAoKCppdCkuc2Vjb25kID09IHN1cmZhY2VDb25maWdJZCkgewog
ICAgICAgICAgICAgICAgIGlzQ29udGV4dFJlZmVyZW5jZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgRUdMRGlz
cGxheU9wZW5WRzo6ZGVzdHJveVN1cmZhY2UoY29uc3QgRUdMU3VyZmFjZSYgc3VyZmFjZSkKIAog
ICAgIEhhc2hNYXA8RUdMTmF0aXZlV2luZG93VHlwZSwgRUdMU3VyZmFjZT46Oml0ZXJhdG9yIGVu
ZCA9IG1fd2luZG93U3VyZmFjZXMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEVHTE5hdGl2ZVdp
bmRvd1R5cGUsIEVHTFN1cmZhY2U+OjppdGVyYXRvciBpdCA9IG1fd2luZG93U3VyZmFjZXMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS52YWx1ZSA9PSBzdXJm
YWNlKSB7CisgICAgICAgIGlmICgoKml0KS5zZWNvbmQgPT0gc3VyZmFjZSkgewogICAgICAgICAg
ICAgbV93aW5kb3dTdXJmYWNlcy5yZW1vdmUoaXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTQwOSw3ICs0MDksNyBAQCBFR0xDb250ZXh0IEVHTERpc3BsYXlPcGVuVkc6OmNv
bnRleHRGb3JTdXJmYWNlKGNvbnN0IEVHTFN1cmZhY2UmIHN1cmZhY2UpCiAgICAgSGFzaE1hcDxF
R0xpbnQsIEVHTENvbnRleHQ+OjppdGVyYXRvciBlbmQgPSBtX2NvbnRleHRzLmVuZCgpOwogCiAg
ICAgZm9yIChIYXNoTWFwPEVHTGludCwgRUdMQ29udGV4dD46Oml0ZXJhdG9yIGl0ID0gbV9jb250
ZXh0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQo
bV9kaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCAoKml0KS52YWx1ZSk7CisgICAgICAgIGVnbE1h
a2VDdXJyZW50KG1fZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgKCppdCkuc2Vjb25kKTsKICAg
ICAgICAgaWYgKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpIHsKICAgICAgICAgICAgIC8v
IFJlc3RvcmUgcHJldmlvdXMgc3VyZmFjZS9jb250ZXh0LgogICAgICAgICAgICAgaWYgKGN1cnJl
bnRDb250ZXh0ICE9IEVHTF9OT19DT05URVhUKSB7CkBAIC00MTcsOCArNDE3LDggQEAgRUdMQ29u
dGV4dCBFR0xEaXNwbGF5T3BlblZHOjpjb250ZXh0Rm9yU3VyZmFjZShjb25zdCBFR0xTdXJmYWNl
JiBzdXJmYWNlKQogICAgICAgICAgICAgICAgIEFTU0VSVF9FR0xfTk9fRVJST1IoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIC8vIENvb2wsIHN1cmZhY2UgaXMgY29tcGF0aWJsZSB0byBv
bmUgb2Ygb3VyIGV4aXN0aW5nIGNvbnRleHRzLgotICAgICAgICAgICAgbV9jb21wYXRpYmxlQ29u
ZmlnSWRzLnNldChzdXJmYWNlQ29uZmlnSWQsICgqaXQpLmtleSk7Ci0gICAgICAgICAgICByZXR1
cm4gKCppdCkudmFsdWU7CisgICAgICAgICAgICBtX2NvbXBhdGlibGVDb25maWdJZHMuc2V0KHN1
cmZhY2VDb25maWdJZCwgKCppdCkuZmlyc3QpOworICAgICAgICAgICAgcmV0dXJuICgqaXQpLnNl
Y29uZDsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBSZXN0b3JlIHByZXZpb3VzIHN1cmZhY2Uv
Y29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggMDE2MjE0YThhN2QxOTRlNDY3ZWMx
ODE4Y2NjMTI3ZDE2MjJlZTQ4Ni4uYTIyZTcyMGUxNjUwYTBmM2JjZjgxZTRmM2NkZmY3ODE3MGQ4
YWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdHJ1Y3Qg
VGV4dHVyZU1hcHBlckdMRGF0YSB7CiAgICAgICAgICAgICBHTENvbnRleHQgY3VycmVudEdMQ29u
ZXh0ID0gZ2V0Q3VycmVudEdMQ29udGV4dCgpOwogICAgICAgICAgICAgR0xDb250ZXh0RGF0YU1h
cDo6aXRlcmF0b3IgaXQgPSBnbENvbnRleHREYXRhTWFwKCkuZmluZChjdXJyZW50R0xDb25leHQp
OwogICAgICAgICAgICAgaWYgKGl0ICE9IGdsQ29udGV4dERhdGFNYXAoKS5lbmQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBpdC0+
c2Vjb25kOwogCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEdMRGF0YShn
ZXRDdXJyZW50R0xDb250ZXh0KCkpKTsKICAgICAgICAgfQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0
cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICAgICAgICAgIEdMQ29udGV4dERhdGFNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGdsQ29udGV4dERhdGFNYXAoKS5lbmQoKTsKICAgICAgICAg
ICAgIEdMQ29udGV4dERhdGFNYXA6Oml0ZXJhdG9yIGl0OwogICAgICAgICAgICAgZm9yIChpdCA9
IGdsQ29udGV4dERhdGFNYXAoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoaXQtPnZhbHVlID09IHRoaXMpCisgICAgICAgICAgICAgICAgaWYgKGl0LT5z
ZWNvbmQgPT0gdGhpcykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCmluZGV4IDQ2NDlm
NGI2MmQ4ZTE5YWEzYzUzYmFhYzlmNzUyMmNmMTM5ZjMyMzUuLjBmYmRiZTk1Y2FmMTY0NzBkZDA2
MzJmMDRjMTQ0YjgyMGI2ZThiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0+IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpnZXRTaGFkZXJQcm9nCiAK
ICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtTWFwLmZpbmQoc2hhZGVyVHlwZSk7CiAgICAgaWYgKGl0ICE9
IG1fdGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1NYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBp
dC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAgc3dpdGNoIChzaGFk
ZXJUeXBlKSB7CiAgICAgY2FzZSBTaW1wbGU6CkBAIC03NjUsNyArNzY1LDcgQEAgUGFzc1JlZlB0
cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpnZXRT
aGFkZXJGb3JGaWx0ZXIKIAogICAgICAgICBtX2ZpbHRlck1hcC5hZGQoa2V5LCBwcm9ncmFtKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgcHJvZ3JhbSA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAg
cHJvZ3JhbSA9IGl0ZXJhdG9yLT5zZWNvbmQ7CiAKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRQbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9u
dFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMTlmNTI0NTVkMTFiMzU0Y2M0ZDQzZTY4Mzk5Y2U3OWFj
OTliYzBiMi4uMTk3OTBhZDQ5YjMzMDNkZDdiNjJjN2U3YTBhODIzNjc3YjRjZmY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9u
dFBsYXRmb3JtRGF0YS5jcHAKQEAgLTI4Nyw5ICsyODcsOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxG
aXhlZFNpemVGb250RGF0YT4gY3JlYXRlRml4ZWRTaXplRm9udERhdGEoY29uc3QgQXRvbWljU3Ry
aW5nJgogICAgIEZpeGVkU2l6ZUZvbnREYXRhS2V5IGtleShmYW1pbHksIHdlaWdodCwgaXRhbGlj
KTsKICAgICBGaXhlZFNpemVGb250Q2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBnX2ZpeGVkU2l6
ZUZvbnRDYWNoZS5hZGQoa2V5LCBSZWZQdHI8Rml4ZWRTaXplRm9udERhdGE+KCkpOwogICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEZp
eGVkU2l6ZUZvbnREYXRhOjpjcmVhdGUoZmFtaWx5LCB3ZWlnaHQsIGl0YWxpYyk7CisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gRml4ZWRTaXplRm9udERhdGE6OmNyZWF0ZShmYW1p
bHksIHdlaWdodCwgaXRhbGljKTsKIAotICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OworICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogc3RhdGljIExPTkcg
dG9HRElGb250V2VpZ2h0KEZvbnRXZWlnaHQgZm9udFdlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAppbmRleCBhZGZjNjZlMDE1ZTUwMjI2Nzg4
YzIxNDc2OGExNWIyOTEzNjg0M2I4Li4xYTg0ZjhiZDMxOTUyYjI4ZTI2ODI3MWRkMmE1ZjU3ZjQ0
ZDgyN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVj
dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsu
Y3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgRGF0YU9iamVjdEd0ayogRGF0YU9iamVjdEd0azo6Zm9y
Q2xpcGJvYXJkKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQogICAgIH0KIAogICAgIEhhc2hNYXA8
R3RrQ2xpcGJvYXJkKiwgUmVmUHRyPERhdGFPYmplY3RHdGs+ID46Oml0ZXJhdG9yIGl0ID0gb2Jq
ZWN0TWFwLmZpbmQoY2xpcGJvYXJkKTsKLSAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworICAg
IHJldHVybiBpdC0+c2Vjb25kLmdldCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcAppbmRleCBmYzJmNTZlNjE2
NmViMWFhY2RiYWRhOGY1MmZlZjNjNmRkODg2NGNhLi43NjNkMTIwZDA5NDE2MjI3MjY2MGM2MDYz
MmExOTI5ODZmNTQyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBHdGtEcmFn
QW5kRHJvcEhlbHBlcjo6aGFuZGxlR2V0RHJhZ0RhdGEoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQs
IEd0a1NlbGVjdGkKICAgICBEcmFnZ2luZ0RhdGFPYmplY3RzTWFwOjppdGVyYXRvciBpdGVyYXRv
ciA9IG1fZHJhZ2dpbmdEYXRhT2JqZWN0cy5maW5kKGNvbnRleHQpOwogICAgIGlmIChpdGVyYXRv
ciA9PSBtX2RyYWdnaW5nRGF0YU9iamVjdHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBQ
YXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT5maWxsU2VsZWN0aW9u
RGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBpdGVyYXRvci0+dmFsdWUuZ2V0KCkpOworICAgIFBh
c3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPmZpbGxTZWxlY3Rpb25E
YXRhKHNlbGVjdGlvbkRhdGEsIGluZm8sIGl0ZXJhdG9yLT5zZWNvbmQuZ2V0KCkpOwogfQogCiBz
dHJ1Y3QgSGFuZGxlRHJhZ0xhdGVyRGF0YSB7CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBHdGtE
cmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0xlYXZlKEdka0RyYWdDb250ZXh0KiBnZGtDb250
ZXh0LCBEcmFnRXhpdGUKICAgICAvLyB0aGUgZHJhZy1kcm9wIHNpZ25hbC4gV2Ugd2FudCB0aGUg
YWN0aW9ucyBmb3IgZHJhZy1sZWF2ZSB0byBoYXBwZW4gYWZ0ZXIKICAgICAvLyB0aG9zZSBmb3Ig
ZHJhZy1kcm9wLCBzbyBzY2hlZHVsZSB0aGVtIHRvIGhhcHBlbiBhc3luY2hyb25vdXNseSBoZXJl
LgogICAgIEhhbmRsZURyYWdMYXRlckRhdGEqIGRhdGEgPSBuZXcgSGFuZGxlRHJhZ0xhdGVyRGF0
YTsKLSAgICBkYXRhLT5jb250ZXh0ID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGRhdGEtPmNvbnRl
eHQgPSBpdGVyYXRvci0+c2Vjb25kOwogICAgIGRhdGEtPmNvbnRleHQtPmV4aXRlZENhbGxiYWNr
ID0gZXhpdGVkQ2FsbGJhY2s7CiAgICAgZGF0YS0+Z2x1ZSA9IHRoaXM7CiAgICAgZ190aW1lb3V0
X2FkZCgwLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihoYW5kbGVEcmFnTGVhdmVMYXRl
ckNhbGxiYWNrKSwgZGF0YSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgUGFzc093blB0cjxEcmFnRGF0
YT4gR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdNb3Rpb24oR2RrRHJhZ0NvbnRleHQq
IGNvbnQKICAgICAgICAgbV9kcm9wcGluZ0NvbnRleHRzLnNldChjb250ZXh0LCBkcm9wcGluZ0Nv
bnRleHQpOwogICAgICAgICBxdWVyeU5ld0Ryb3BDb250ZXh0RGF0YShkcm9wcGluZ0NvbnRleHQs
IG1fd2lkZ2V0LCB0aW1lKTsKICAgICB9IGVsc2UgewotICAgICAgICBkcm9wcGluZ0NvbnRleHQg
PSBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IGl0ZXJhdG9yLT5z
ZWNvbmQ7CiAgICAgICAgIGRyb3BwaW5nQ29udGV4dC0+bGFzdE1vdGlvblBvc2l0aW9uID0gcG9z
aXRpb247CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgUGFzc093blB0cjxEcmFnRGF0YT4g
R3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdEYXRhUmVjZWl2ZWQoR2RrRHJhZ0NvbnRl
eHQKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9kcm9wcGluZ0NvbnRleHRzLmVuZCgpKQogICAgICAg
ICByZXR1cm4gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8RHJhZ0RhdGEqPigwKSk7CiAKLSAgICBEcm9w
cGluZ0NvbnRleHQqIGRyb3BwaW5nQ29udGV4dCA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBEcm9w
cGluZ0NvbnRleHQqIGRyb3BwaW5nQ29udGV4dCA9IGl0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgZHJv
cHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzLS07CiAgICAgUGFzdGVib2FyZEhlbHBl
cjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+ZmlsbERhdGFPYmplY3RGcm9tRHJvcERhdGEo
c2VsZWN0aW9uRGF0YSwgaW5mbywgZHJvcHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0LmdldCgpKTsK
IApAQCAtMTg1LDcgKzE4NSw3IEBAIFBhc3NPd25QdHI8RHJhZ0RhdGE+IEd0a0RyYWdBbmREcm9w
SGVscGVyOjpoYW5kbGVEcmFnRHJvcChHZGtEcmFnQ29udGV4dCogY29udGV4CiAgICAgaWYgKGl0
ZXJhdG9yID09IG1fZHJvcHBpbmdDb250ZXh0cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKHN0YXRpY19jYXN0PERyYWdEYXRhKj4oMCkpOwogCi0gICAgRHJvcHBpbmdDb250ZXh0KiBk
cm9wcGluZ0NvbnRleHQgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgRHJvcHBpbmdDb250ZXh0KiBk
cm9wcGluZ0NvbnRleHQgPSBpdGVyYXRvci0+c2Vjb25kOwogICAgIGRyb3BwaW5nQ29udGV4dC0+
ZHJvcEhhcHBlbmVkID0gdHJ1ZTsKIAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgRHJhZ0RhdGEo
ZHJvcHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0LmdldCgpLCBwb3NpdGlvbiwgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCmluZGV4IDBhODM4Mjdj
N2ZlYmNiZTQwNTQ4ZmFkNTYyYjU0MTE3MWVjMTY5ZjYuLjc3NDkzOTE1MTcxM2RmMDExMzRkNmNl
YTRlZDlkNzA0YjRkY2ZjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0azMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIGd0a1N0eWxl
Q2hhbmdlZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKikKIHsKICAgICBTdHlsZUNvbnRl
eHRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHN0eWxlQ29udGV4dE1hcCgpLmVuZCgpOwogICAg
IGZvciAoU3R5bGVDb250ZXh0TWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gc3R5bGVDb250ZXh0
TWFwKCkuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgZ3RrX3N0eWxlX2Nv
bnRleHRfaW52YWxpZGF0ZShpdGVyLT52YWx1ZS5nZXQoKSk7CisgICAgICAgIGd0a19zdHlsZV9j
b250ZXh0X2ludmFsaWRhdGUoaXRlci0+c2Vjb25kLmdldCgpKTsKIAogICAgIFBhZ2U6OnNjaGVk
dWxlRm9yY2VkU3R5bGVSZWNhbGNGb3JBbGxQYWdlcygpOwogfQpAQCAtNzksNyArNzksNyBAQCBz
dGF0aWMgR3RrU3R5bGVDb250ZXh0KiBnZXRTdHlsZUNvbnRleHQoR1R5cGUgd2lkZ2V0VHlwZSkK
IHsKICAgICBTdHlsZUNvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBzdHlsZUNvbnRleHRN
YXAoKS5hZGQod2lkZ2V0VHlwZSwgMCk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIAogICAgIEd0a1dpZGdldFBhdGgqIHBh
dGggPSBndGtfd2lkZ2V0X3BhdGhfbmV3KCk7CiAgICAgZ3RrX3dpZGdldF9wYXRoX2FwcGVuZF90
eXBlKHBhdGgsIHdpZGdldFR5cGUpOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBHdGtTdHls
ZUNvbnRleHQqIGdldFN0eWxlQ29udGV4dChHVHlwZSB3aWRnZXRUeXBlKQogICAgIGd0a19zdHls
ZV9jb250ZXh0X3NldF9wYXRoKGNvbnRleHQuZ2V0KCksIHBhdGgpOwogICAgIGd0a193aWRnZXRf
cGF0aF9mcmVlKHBhdGgpOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGNvbnRleHQ7
CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBjb250ZXh0OwogICAgIHJldHVybiBjb250
ZXh0LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMubW0KaW5kZXggZmQ5YjcyNGE0ZDljNGI0NzExNGVkZjdkYmJjODhmYzU4NTJm
MTZkNC4uOTZhYTEyYTI2OTE0N2Y3NjhlZTNmNjQ1MWRmZWI1MjczZjk0ZWM0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtODYs
OCArODYsOCBAQCBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1hcCogc2Nyb2xsYmFyTWFwKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIFNjcm9sbGJhclBhaW50ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IHNj
cm9sbGJhck1hcCgpLT5lbmQoKTsKICAgICBmb3IgKFNjcm9sbGJhclBhaW50ZXJNYXA6Oml0ZXJh
dG9yIGl0ID0gc2Nyb2xsYmFyTWFwKCktPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBpdC0+a2V5LT5zdHlsZUNoYW5nZWQoKTsKLSAgICAgICAgaXQtPmtleS0+aW52YWxpZGF0
ZSgpOworICAgICAgICBpdC0+Zmlyc3QtPnN0eWxlQ2hhbmdlZCgpOworICAgICAgICBpdC0+Zmly
c3QtPmludmFsaWRhdGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKaW5kZXggOGI1YWM0NzhiMjEz
NTA2Y2Q5Y2VhY2E5YmE1ODUxYmNkMjkzYTVjOS4uZjYyNGQ0ZmNiMjkyY2M0MGM1YjY5ZWVkZjNl
NWM4NzUxNTJmMDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBib29sIENyZWRl
bnRpYWxTdG9yYWdlOjpzZXQoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgS1VS
TCYgdXJsKQogICAgIGlmIChpdGVyID09IHBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXAo
KS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEFTU0VSVChvcmlnaW5zV2l0aENy
ZWRlbnRpYWxzKCkuY29udGFpbnMob3JpZ2luU3RyaW5nRnJvbVVSTCh1cmwpKSk7Ci0gICAgcHJv
dGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkuc2V0KGl0ZXItPnZhbHVlLCBjcmVkZW50aWFs
KTsKKyAgICBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAoKS5zZXQoaXRlci0+c2Vjb25k
LCBjcmVkZW50aWFsKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBA
IENyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjb25zdCBLVVJMJiB1cmwpCiAgICAg
UGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgaXRlciA9IGZpbmREZWZh
dWx0UHJvdGVjdGlvblNwYWNlRm9yVVJMKHVybCk7CiAgICAgaWYgKGl0ZXIgPT0gcGF0aFRvRGVm
YXVsdFByb3RlY3Rpb25TcGFjZU1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gQ3JlZGVudGlh
bCgpOwotICAgIHJldHVybiBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAoKS5nZXQoaXRl
ci0+dmFsdWUpOworICAgIHJldHVybiBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAoKS5n
ZXQoaXRlci0+c2Vjb25kKTsKIH0KIAogdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0UHJpdmF0
ZU1vZGUoYm9vbCBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck1hcC5jcHAKaW5kZXggZGVmZTFhZTg0YmYwYWRmMDc3OTQ5NTViMTFhNWRjNzNl
YTAyM2UyNi4uNTAwOTFlMTlkM2FmNTZmZjRhOGRmMTc1YmY4OTc4NzAwNzYxNDI4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4g
SFRUUEhlYWRlck1hcDo6Y29weURhdGEoKSBjb25zdAogCiAgICAgSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kX2l0ID0gZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGJlZ2luKCk7IGl0ICE9IGVuZF9pdDsgKytpdCkgewotICAgICAgICBk
YXRhLT5hcHBlbmQobWFrZV9wYWlyKGl0LT5rZXkuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCksIGl0
LT52YWx1ZS5pc29sYXRlZENvcHkoKSkpOworICAgICAgICBkYXRhLT5hcHBlbmQobWFrZV9wYWly
KGl0LT5maXJzdC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSwgaXQtPnNlY29uZC5pc29sYXRlZENv
cHkoKSkpOwogICAgIH0KICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CiB9CkBAIC0xMDAsNyAr
MTAwLDcgQEAgU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBjaGFyKiBuYW1lKSBjb25z
dAogICAgIGNvbnN0X2l0ZXJhdG9yIGkgPSBmaW5kPGNvbnN0IGNoYXIqLCBDYXNlRm9sZGluZ0NT
dHJpbmdUcmFuc2xhdG9yPihuYW1lKTsKICAgICBpZiAoaSA9PSBlbmQoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBpLT52YWx1ZTsKKyAgICByZXR1cm4gaS0+c2Vjb25k
OwogfQogICAgIAogYm9vbCBIVFRQSGVhZGVyTWFwOjpjb250YWlucyhjb25zdCBjaGFyKiBuYW1l
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1F
SGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5j
cHAKaW5kZXggZjRlM2ViZjY3NGRlNmJkMWQyNGE5NTkwYTQ4MThiZWI2ZmQ4ZGU2My4uNWQ2Yjg1
OGY0NmU0MzgzZmNiMmZlYTYyODU4YWY3NTMyZDQzYTVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFBhc3NS
ZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIqIGJ1ZmZlcikKICAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRl
cnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10eXBlIik7CiAgICAgaWYg
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkgewogICAgICAg
ICAvLyBGSVhNRTogbWFrZSBDb250ZW50VHlwZVBhcnNlciBtb3JlIGZsZXhpYmxlIHNvIHdlIGRv
bid0IGhhdmUgdG8gc3ludGhlc2l6ZSB0aGUgIkNvbnRlbnQtVHlwZToiLgotICAgICAgICBDb250
ZW50VHlwZVBhcnNlciBjb250ZW50VHlwZVBhcnNlcihtYWtlU3RyaW5nKCJDb250ZW50LVR5cGU6
IiwgbWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKTsKKyAgICAgICAgQ29udGVudFR5cGVQ
YXJzZXIgY29udGVudFR5cGVQYXJzZXIobWFrZVN0cmluZygiQ29udGVudC1UeXBlOiIsIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3ItPnNlY29uZCkpOwogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRl
bnRUeXBlID0gY29udGVudFR5cGVQYXJzZXIubWltZVR5cGUoKTsKICAgICAgICAgaWYgKCFtaW1l
SGVhZGVyLT5pc011bHRpcGFydCgpKQogICAgICAgICAgICAgbWltZUhlYWRlci0+bV9jaGFyc2V0
ID0gY29udGVudFR5cGVQYXJzZXIuY2hhcnNldCgpLnN0cmlwV2hpdGVTcGFjZSgpOwpAQCAtMTA1
LDExICsxMDUsMTEgQEAgUGFzc1JlZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVyOjpwYXJzZUhl
YWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciogYnVmZmVyKQogCiAgICAgbWltZVBhcmFtZXRl
cnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10cmFuc2Zlci1lbmNvZGlu
ZyIpOwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5k
KCkpCi0gICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFRyYW5zZmVyRW5jb2RpbmcgPSBwYXJz
ZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsK
KyAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHJhbnNmZXJFbmNvZGluZyA9IHBhcnNlQ29u
dGVudFRyYW5zZmVyRW5jb2RpbmcobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+c2Vjb25kKTsKIAog
ICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQt
bG9jYXRpb24iKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBh
aXJzLmVuZCgpKQotICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRMb2NhdGlvbiA9IG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlOworICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRM
b2NhdGlvbiA9IG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnNlY29uZDsKIAogICAgIHJldHVybiBt
aW1lSGVhZGVyLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggNmQxMmY5ZDg5YjAyNDc3NDZhNTdlMWJi
Y2FmYjJjMjE3ZDU5MTAzNS4uN2RkYzQ3ZTRlYTc5OWE0NmRlZTZmMzJjZmQwNzhlZjc1MTU0ZjFl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY28KICAgICBC
dWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgcHJvdG9jb2xNYXBJ
dGVtID0gYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKS5maW5kKHJlcXVlc3Qu
dXJsKCkucHJvdG9jb2woKSk7CiAKICAgICBpZiAocHJvdG9jb2xNYXBJdGVtICE9IGJ1aWx0aW5S
ZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBwcm90
b2NvbE1hcEl0ZW0tPnZhbHVlKHJlcXVlc3QsIGNsaWVudCk7CisgICAgICAgIHJldHVybiBwcm90
b2NvbE1hcEl0ZW0tPnNlY29uZChyZXF1ZXN0LCBjbGllbnQpOwogCiAgICAgUmVmUHRyPFJlc291
cmNlSGFuZGxlPiBuZXdIYW5kbGUoYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlKHJlcXVlc3Qs
IGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmKSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcAppbmRleCBmNmMwZTEzZTc5Y2YxNDc5ZjhmZWJhNjU3YzBhZmJkMjU2NjdkYmY5Li42NGVi
YzE4YzhhNzQ1MGRmNjRhNjIwYTY2ZDNlMzY4MzE3ZTFjOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAg
LTM3NCw3ICszNzQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJG
aWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cgogICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOwogICAgIEhUVFBIZWFkZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2h0
dHBIZWFkZXJGaWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9ICIsIiArIHZhbHVlOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKIAogICAgIGlmICh1
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIG1fcGxhdGZvcm1SZXF1ZXN0
VXBkYXRlZCA9IGZhbHNlOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6YWRkSFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVs
ZHMpCiB7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVyRmll
bGRzLmVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBo
ZWFkZXJGaWVsZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBhZGRIVFRQSGVh
ZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgYWRkSFRUUEhlYWRlckZpZWxk
KGl0LT5maXJzdCwgaXQtPnNlY29uZCk7CiB9CiAKIGJvb2wgZXF1YWxJZ25vcmluZ0hlYWRlckZp
ZWxkcyhjb25zdCBSZXNvdXJjZVJlcXVlc3RCYXNlJiBhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3RC
YXNlJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L1Jlc291cmNlUmVxdWVzdEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdEJsYWNrQmVycnkuY3BwCmlu
ZGV4IDBjODEyNzM4ZDVjNTVkODdkMjU3NWIzZjc4NmIwMDQ4NmI5MTg1MjQuLjlmNmZmYWJhNTU2
ZDIzMDNmNmZhOWQxYWI5NGJjNmVhYzhkY2FhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3RCbGFja0JlcnJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3Vy
Y2VSZXF1ZXN0QmxhY2tCZXJyeS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldFR5cGUgUmVzb3VyY2VSZXF1ZXN0Ojp0YXJnZXRUeXBlRnJvbU1pbWVUeXBlKGNv
bnN0IFN0cmluZwogICAgIGlmIChpdGVyID09IG1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIFJl
c291cmNlUmVxdWVzdDo6VGFyZ2V0SXNVbnNwZWNpZmllZDsKIAotICAgIHJldHVybiBpdGVyLT52
YWx1ZTsKKyAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6aW5pdGlhbGl6ZVBsYXRmb3JtUmVxdWVzdChOZXR3b3JrUmVxdWVzdCYgcGxhdGZvcm1SZXF1
ZXN0LCBib29sIGNvb2tpZXNFbmFibGVkLCBib29sIGlzSW5pdGlhbCwgYm9vbCBpc1JlZGlyZWN0
KSBjb25zdApAQCAtMTk4LDggKzE5OCw4IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojppbml0aWFs
aXplUGxhdGZvcm1SZXF1ZXN0KE5ldHdvcmtSZXF1ZXN0JiBwbGF0Zm9ybVJlcXVlc3QsCiAgICAg
ICAgIGJvb2wgY29va2llSGVhZGVyTWF5QmVEaXJ0eSA9IGlzUmVkaXJlY3QgfHwgY2FjaGVQb2xp
Y3koKSA9PSBXZWJDb3JlOjpSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSB8fCBjYWNoZVBvbGljeSgp
ID09IFdlYkNvcmU6OlJldHVybkNhY2hlRGF0YUVsc2VMb2FkOwogCiAgICAgICAgIGZvciAoSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBodHRwSGVhZGVyRmllbGRzKCkuYmVnaW4o
KTsgaXQgIT0gaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBT
dHJpbmcga2V5ID0gaXQtPmtleTsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGl0LT52YWx1
ZTsKKyAgICAgICAgICAgIFN0cmluZyBrZXkgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBTdHJp
bmcgdmFsdWUgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKCFrZXkuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGtleSwgIkNvb2tpZSIpKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdvbid0IHVzZSB0aGUgb2xkIGNvb2tpZXMgb2Yg
cmVzb3VyY2VSZXF1ZXN0IGZvciBuZXcgbG9jYXRpb24gYmVjYXVzZSB0aGVzZSBjb29raWVzIG1h
eSBiZSBjaGFuZ2VkIGJ5IHJlZGlyZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMDFl
OGI4YWU1YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uZjZkMWYzODIxMjYyZjE5NTA0
MTU1OWEyNTZjMDJiZDZiZDc4MjllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC00MjgsNyAr
NDI4LDcgQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiBtYWtlRmluYWxSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG8KICAgICAgICAgaWYgKCFzc2xQcm9wcykK
ICAgICAgICAgICAgIHNzbFByb3BzLmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAjaWYgUExBVEZPUk0oV0lOKQotICAg
ICAgICB3a1NldENsaWVudENlcnRpZmljYXRlSW5TU0xQcm9wZXJ0aWVzKHNzbFByb3BzLmdldCgp
LCAoY2xpZW50Q2VydC0+dmFsdWUpLmdldCgpKTsKKyAgICAgICAgd2tTZXRDbGllbnRDZXJ0aWZp
Y2F0ZUluU1NMUHJvcGVydGllcyhzc2xQcm9wcy5nZXQoKSwgKGNsaWVudENlcnQtPnNlY29uZCku
Z2V0KCkpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IDhjZmY4
N2NhMGQ1OGVhMmU1MjNmMzczMGQ2YjRhNzczMGIwNmJlNGIuLjU3YTZmYjJjOGE0YzA4Zjc5ZmJk
NGI5YmM1NWI4NWE5MzQyNjdhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0xMjAsOCAr
MTIwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxkcyhDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKIAogICAgIEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IHJlcXVlc3RIZWFkZXJzLmVuZCgpOwogICAgIGZvciAoSFRUUEhl
YWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0SGVhZGVycy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gaXQtPmtleS5jcmVhdGVD
RlN0cmluZygpOwotICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSA9IGl0LT52YWx1ZS5jcmVhdGVD
RlN0cmluZygpOworICAgICAgICBDRlN0cmluZ1JlZiBrZXkgPSBpdC0+Zmlyc3QuY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUgPSBpdC0+c2Vjb25kLmNyZWF0ZUNG
U3RyaW5nKCk7CiAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJl
cXVlc3QsIGtleSwgdmFsdWUpOwogICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgQ0ZS
ZWxlYXNlKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKaW5kZXggNjViY2MxMGFk
M2QyMDA1ZDY4OWQ3M2U4ZGQ2Nzk4OGI5YzVjYjVkNS4uYWYwNzVlZjllMzIxODhlNzcxNDk3ZWJm
N2M3NGRjMWFhMTVlMjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKQEAgLTcwMyw4
ICs3MDMsOCBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRsZShS
ZXNvdXJjZUhhbmRsZSogam9iKQogICAgICAgICBIVFRQSGVhZGVyTWFwIGN1c3RvbUhlYWRlcnMg
PSBqb2ItPmZpcnN0UmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICAgICAgSFRUUEhl
YWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY3VzdG9tSGVhZGVycy5lbmQoKTsKICAgICAg
ICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGN1c3RvbUhlYWRlcnMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBTdHJpbmcga2V5ID0gaXQt
PmtleTsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAg
IFN0cmluZyBrZXkgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBpdC0+
c2Vjb25kOwogICAgICAgICAgICAgU3RyaW5nIGhlYWRlclN0cmluZyhrZXkpOwogICAgICAgICAg
ICAgaGVhZGVyU3RyaW5nLmFwcGVuZCgiOiAiKTsKICAgICAgICAgICAgIGhlYWRlclN0cmluZy5h
cHBlbmQodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDkzMjE2Y2I1NWU4NTc3MzEzNmYz
ZThjM2EwN2NlNmZiNTU2ZTA2ZDIuLjk2YzQ5N2Q1MDNiNTQ3ZTNiMDFhOWEyNTJhNThmYzJlZWYz
Zjk0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBbbnNSZXF1ZXN0
IHNldFZhbHVlOm5pbCBmb3JIVFRQSGVhZGVyRmllbGQ6W29sZEhlYWRlckZpZWxkTmFtZXMgb2Jq
ZWN0QXRJbmRleDppIC0gMV1dOwogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgW25zUmVxdWVzdCBzZXRWYWx1ZTppdC0+dmFsdWUgZm9ySFRUUEhlYWRl
ckZpZWxkOml0LT5rZXldOworICAgICAgICBbbnNSZXF1ZXN0IHNldFZhbHVlOml0LT5zZWNvbmQg
Zm9ySFRUUEhlYWRlckZpZWxkOml0LT5maXJzdF07CiAKICAgICAvLyBUaGUgYmVsb3cgY2hlY2sg
Y2FuIGJlIHJlbW92ZWQgb25jZSB3ZSByZXF1aXJlIGEgdmVyc2lvbiBvZiBGb3VuZGF0aW9uIHdp
dGggLVtOU011dGFibGVVUkxSZXF1ZXN0IHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheTpdIG1ldGhvZC4KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSA9IFtOU011dGFibGVVUkxSZXF1ZXN0IGluc3Rh
bmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXk6KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3BwCmluZGV4IGU4NGU2NzdhNWY3MmM3
MWU4OWM2MDBmZDc3NzAwYmI2ODIyMTRjMmMuLmRiYjdiNzRkZDU5YzRmNGQwZjJlY2VjZmRiZTA4
MTNkMjhiNzRhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3BwCkBAIC00OSw4ICs0OSw4IEBAIFFOZXR3b3Jr
UmVxdWVzdCBSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVlc3QoTmV0d29ya2luZ0NvbnRl
eHQgKmNvbnRleHQpIGNvCiAgICAgY29uc3QgSFRUUEhlYWRlck1hcCAmaGVhZGVycyA9IGh0dHBI
ZWFkZXJGaWVsZHMoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gaGVhZGVycy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVuZCgpOwogICAgICAgICAgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIFFCeXRlQXJyYXkgbmFtZSA9IFFTdHJpbmcoaXQtPmtleSku
dG9MYXRpbjEoKTsKLSAgICAgICAgUUJ5dGVBcnJheSB2YWx1ZSA9IFFTdHJpbmcoaXQtPnZhbHVl
KS50b0xhdGluMSgpOworICAgICAgICBRQnl0ZUFycmF5IG5hbWUgPSBRU3RyaW5nKGl0LT5maXJz
dCkudG9MYXRpbjEoKTsKKyAgICAgICAgUUJ5dGVBcnJheSB2YWx1ZSA9IFFTdHJpbmcoaXQtPnNl
Y29uZCkudG9MYXRpbjEoKTsKICAgICAgICAgLy8gUU5ldHdvcmtSZXF1ZXN0OjpzZXRSYXdIZWFk
ZXIoKSB3b3VsZCByZW1vdmUgdGhlIGhlYWRlciBpZiB0aGUgdmFsdWUgaXMgbnVsbAogICAgICAg
ICAvLyBNYWtlIHN1cmUgdG8gc2V0IGFuIGVtcHR5IGhlYWRlciBpbnN0ZWFkIG9mIG51bGwgaGVh
ZGVyLgogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApp
bmRleCBkYzNiMmUyYzVmZWUwODQwNjU5OGE0ZjlmOTFmYTc0NmVlNjg2MGY5Li4zMGEyZGU0NTVl
NDJkYmMzYmFhZmFiMzQ5YTU0ZDA4YzViOWM5YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtNDQ4LDcgKzQ0OCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVj
dCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIgZGF0CiAKICAgICAgICAgaWYg
KGhhc1VuaWdub3JlZFRMU0Vycm9ycyhoYW5kbGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBDZXJ0
aWZpY2F0ZXNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5maW5kKGhh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpLmxvd2VyKCkpOwotICAgICAgICAgICAg
aWYgKGl0ZXIgPT0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLmNv
bnRhaW5zKGQtPm1fcmVzcG9uc2Uuc291cE1lc3NhZ2VDZXJ0aWZpY2F0ZSgpKSkgeworICAgICAg
ICAgICAgaWYgKGl0ZXIgPT0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZW5kKCkgfHwgIWl0ZXItPnNl
Y29uZC5jb250YWlucyhkLT5tX3Jlc3BvbnNlLnNvdXBNZXNzYWdlQ2VydGlmaWNhdGUoKSkpIHsK
ICAgICAgICAgICAgICAgICBHT3duUHRyPGNoYXI+IHVyaShzb3VwX3VyaV90b19zdHJpbmcoc291
cF9yZXF1ZXN0X2dldF91cmkoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSksIEZBTFNFKSk7CiAgICAg
ICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1IpLCBTT1VQX1NUQVRVU19TU0xfRkFJTEVE
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXJpLmdldCgpLCB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpLApAQCAtODE5LDcg
KzgxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldEhvc3RBbGxvd3NBbnlIVFRQU0NlcnRp
ZmljYXRlKGNvbnN0IFN0cmluZyYgaG9zdCkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGUoY29uc3QgU3RyaW5nJiBob3N0LCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRp
ZmljYXRlKQogewotICAgIGNsaWVudENlcnRpZmljYXRlcygpLmFkZChob3N0Lmxvd2VyKCksIEhv
c3RUTFNDZXJ0aWZpY2F0ZVNldCgpKS5pdGVyYXRvci0+dmFsdWUuYWRkKGNlcnRpZmljYXRlKTsK
KyAgICBjbGllbnRDZXJ0aWZpY2F0ZXMoKS5hZGQoaG9zdC5sb3dlcigpLCBIb3N0VExTQ2VydGlm
aWNhdGVTZXQoKSkuaXRlcmF0b3ItPnNlY29uZC5hZGQoY2VydGlmaWNhdGUpOwogfQogCiB2b2lk
IFJlc291cmNlSGFuZGxlOjpzZXRJZ25vcmVTU0xFcnJvcnMoYm9vbCBpZ25vcmVTU0xFcnJvcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNTdhYjRkNjQ3YjNiZmZjMjViYTkyMzc3OGM3
MWQ0ZjRiZWUxNWNiOS4uZDcxMjdiNGI1YjhlNDU5YTRjYWVjNTVhNTUyN2JiY2YzYzgzNzc4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKSBjb25z
dAogICAgIGlmICghaGVhZGVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgSFRUUEhlYWRlck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKICAgICAgICAgZm9yIChIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHNvdXBIZWFkZXJz
LCBpdC0+a2V5LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGl0LT52YWx1ZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChzb3VwSGVhZGVycywg
aXQtPmZpcnN0LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGl0LT5zZWNvbmQudXRmOCgpLmRhdGEo
KSk7CiAgICAgfQogCiAgICAgU3RyaW5nIGZpcnN0UGFydHlTdHJpbmcgPSBmaXJzdFBhcnR5Rm9y
Q29va2llcygpLnN0cmluZygpOwpAQCAtNjYsNyArNjYsNyBAQCBTb3VwTWVzc2FnZSogUmVzb3Vy
Y2VSZXF1ZXN0Ojp0b1NvdXBNZXNzYWdlKCkgY29uc3QKICAgICBpZiAoIWhlYWRlcnMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRl
cnMuZW5kKCk7CiAgICAgICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIHNvdXBfbWVz
c2FnZV9oZWFkZXJzX2FwcGVuZChzb3VwSGVhZGVycywgaXQtPmtleS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzb3VwX21lc3Nh
Z2VfaGVhZGVyc19hcHBlbmQoc291cEhlYWRlcnMsIGl0LT5maXJzdC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBpdC0+c2Vjb25kLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAogICAgIFN0cmluZyBm
aXJzdFBhcnR5U3RyaW5nID0gZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3Bv
bnNlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXNwb25zZVNvdXAuY3BwCmluZGV4IDczOWQ0NGIyODVkM2Q5ZDI5MWU4ZDViMjdhYWJlN2U2
OWRlNjVhMWYuLmRkYWE4OTNiNjNhOWYzZjEwMzUzZjBkZWQ1ZWY2M2JhNGUwZmFjZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3Bv
bnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNDYsNyArNDYsNyBAQCBTb3VwTWVzc2FnZSogUmVz
b3VyY2VSZXNwb25zZTo6dG9Tb3VwTWVzc2FnZSgpIGNvbnN0CiAgICAgaWYgKCFoZWFkZXJzLmlz
RW1wdHkoKSkgewogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBo
ZWFkZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBzb3Vw
X21lc3NhZ2VfaGVhZGVyc19hcHBlbmQoc291cEhlYWRlcnMsIGl0LT5rZXkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgaXQtPnZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgc291cF9t
ZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHNvdXBIZWFkZXJzLCBpdC0+Zmlyc3Quc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgaXQtPnNlY29uZC51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKICAgICBzb3Vw
X21lc3NhZ2Vfc2V0X2ZsYWdzKHNvdXBNZXNzYWdlLCBtX3NvdXBGbGFncyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdp
bi5jcHAKaW5kZXggZjI1MDUyNzc1YjBkZWRmZTIxYzc1NWQzZjgzOTk4NTNlN2EwZjM5Ny4uMDIx
MmQwY2RhOThjOWYxMzc5MjhlNjEyZmRmOTUwMzY1YTAxZDBkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNw
cApAQCAtMzIzLDE1ICszMjMsMTUgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRl
ckZpZWxkcyA9IGZpcnN0UmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKTsKIAogICAgIGZvciAo
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBodHRwSGVhZGVyRmllbGRzLmJlZ2lu
KCk7IGl0ICE9IGh0dHBIZWFkZXJGaWVsZHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGl0LT5rZXksICJBY2NlcHQiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShp
dC0+a2V5LCAiUmVmZXJlciIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGl0LT5rZXksICJVc2VyLUFn
ZW50IikpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+Zmlyc3QsICJBY2NlcHQi
KSB8fCBlcXVhbElnbm9yaW5nQ2FzZShpdC0+Zmlyc3QsICJSZWZlcmVyIikgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UoaXQtPmZpcnN0LCAiVXNlci1BZ2VudCIpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKCFodHRwSGVhZGVycy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBodHRw
SGVhZGVycy5hcHBlbmQoJ1xuJyk7CiAKLSAgICAgICAgaHR0cEhlYWRlcnMuYXBwZW5kKGl0LT5r
ZXkuY2hhcmFjdGVycygpLCBpdC0+a2V5Lmxlbmd0aCgpKTsKKyAgICAgICAgaHR0cEhlYWRlcnMu
YXBwZW5kKGl0LT5maXJzdC5jaGFyYWN0ZXJzKCksIGl0LT5maXJzdC5sZW5ndGgoKSk7CiAgICAg
ICAgIGh0dHBIZWFkZXJzLmFwcGVuZCgnOicpOwotICAgICAgICBodHRwSGVhZGVycy5hcHBlbmQo
aXQtPnZhbHVlLmNoYXJhY3RlcnMoKSwgaXQtPnZhbHVlLmxlbmd0aCgpKTsKKyAgICAgICAgaHR0
cEhlYWRlcnMuYXBwZW5kKGl0LT5zZWNvbmQuY2hhcmFjdGVycygpLCBpdC0+c2Vjb25kLmxlbmd0
aCgpKTsKICAgICB9CiAKICAgICBJTlRFUk5FVF9CVUZGRVJTVyBpbnRlcm5ldEJ1ZmZlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SdW5Mb29wUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUnVuTG9vcFF0LmNwcAppbmRleCA1MDFiZDVjMTIzYjBm
MDNjZTlhMGNmOTBlMTcyNjkxZjUwNmQ5YTFiLi4yYTg3ZTJmYzhmNjY3Nzc2OWY3MzE0M2U1NzFl
MDljNWE1NGM2ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SdW5M
b29wUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1J1bkxvb3BRdC5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZChS
dW5Mb29wKiBydW5Mb29wLCBpbnQgSUQpCiB7CiAgICAgVGltZXJNYXA6Oml0ZXJhdG9yIGl0ID0g
cnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuZmluZChJRCk7CiAgICAgQVNTRVJUKGl0ICE9IHJ1bkxv
b3AtPm1fYWN0aXZlVGltZXJzLmVuZCgpKTsKLSAgICBUaW1lckJhc2UqIHRpbWVyID0gaXQtPnZh
bHVlOworICAgIFRpbWVyQmFzZSogdGltZXIgPSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKCF0aW1l
ci0+bV9pc1JlcGVhdGluZykgewogICAgICAgICAvLyBTdG9wIHRoZSB0aW1lciAoY2FsbGluZyBz
dG9wIHdvdWxkIG5lZWQgYW5vdGhlciBoYXNoIHRhYmxlIGxvb2t1cCkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdE
ZWZhdWx0LmNwcAppbmRleCA1ODI2NDkwN2Q1ZTQwYTAwOWI0MGZkNjk5MTgwZjMzZWY3ZDUxN2Mz
Li45MDk0NzM4NDk2OTZiNGMyOTJkNmI5YWMyODViYzdkOWY0YWMyODQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBw
aW5nRGVmYXVsdC5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBVU2NyaXB0Q29kZSBzY3JpcHROYW1l
VG9Db2RlKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSkKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBV
U2NyaXB0Q29kZT46Oml0ZXJhdG9yIGl0ID0gc2NyaXB0TmFtZUNvZGVNYXAuZmluZChzY3JpcHRO
YW1lLmxvd2VyKCkpOwogICAgIGlmIChpdCAhPSBzY3JpcHROYW1lQ29kZU1hcC5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAgICAg
cmV0dXJuIFVTQ1JJUFRfSU5WQUxJRF9DT0RFOwogfQogCkBAIC0zODksNyArMzg5LDcgQEAgVVNj
cmlwdENvZGUgbG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihjb25zdCBTdHJpbmcm
IGxvY2FsZSkKICAgICB3aGlsZSAoIWNhbm9uaWNhbExvY2FsZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIFVTY3JpcHRDb2RlPjo6aXRlcmF0b3IgaXQgPSBsb2NhbGVTY3Jp
cHRNYXAuZmluZChjYW5vbmljYWxMb2NhbGUpOwogICAgICAgICBpZiAoaXQgIT0gbG9jYWxlU2Ny
aXB0TWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAgICAg
IHJldHVybiBpdC0+c2Vjb25kOwogICAgICAgICBzaXplX3QgcG9zID0gY2Fub25pY2FsTG9jYWxl
LnJldmVyc2VGaW5kKCdfJyk7CiAgICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCiAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggZDIyOTJlNGVkNWYxZjAyZDQ0NDEzYzc5ZjgzNTlh
YWNjYzgwNjczNi4uNDc2M2JmODM0YzBlMDFlNjE4Njc3YjhhMTE0MTQ4MDM2MTUyOWE0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdp
c3RyeS5jcHAKQEAgLTE5Niw4ICsxOTYsOCBAQCBzdGF0aWMgdm9pZCBwcnVuZUJsYWNrbGlzdGVk
Q29kZWNzKCkKICAgICAgICAgVGV4dEVuY29kaW5nTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5iZWdpbigpOwogICAgICAgICBUZXh0RW5jb2RpbmdOYW1l
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5lbmQoKTsKICAg
ICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGl0LT52YWx1
ZSA9PSBhdG9taWNOYW1lKQotICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChpdC0+a2V5KTsK
KyAgICAgICAgICAgIGlmIChpdC0+c2Vjb25kID09IGF0b21pY05hbWUpCisgICAgICAgICAgICAg
ICAgbmFtZXMuYXBwZW5kKGl0LT5maXJzdCk7CiAgICAgICAgIH0KIAogICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gbmFtZXMuc2l6ZSgpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgZHVtcFRleHRF
bmNvZGluZ05hbWVNYXAoKQogICAgIFRleHRFbmNvZGluZ05hbWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+YmVnaW4oKTsKICAgICBUZXh0RW5jb2RpbmdOYW1l
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5lbmQoKTsKICAg
ICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiclcycg
PT4gJyVzJ1xuIiwgaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
ICInJXMnID0+ICclcydcbiIsIGl0LT5maXJzdCwgaXQtPnNlY29uZCk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRU
cmFuc2NvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9G
b250VHJhbnNjb2Rlci5jcHAKaW5kZXggNDg0MjI4Y2FhOGU3NjA3MWIzN2E5ZDIwYTk5MmQ1MGEx
ZDQxZjQwYy4uNGUwN2Y1MGZiZGIwYzU3YzNlZWNhNmY4YmU3MWY3NTA1ZGI1M2JjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2Nv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9u
dFRyYW5zY29kZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEZvbnRUcmFuc2NvZGVyOjpDb252ZXJ0
ZXJUeXBlIEZvbnRUcmFuc2NvZGVyOjpjb252ZXJ0ZXJUeXBlKGNvbnN0IEZvbnREZXNjcmlwdGlv
CiAgICAgaWYgKCFmb250RmFtaWx5LmlzTnVsbCgpKSB7CiAgICAgICAgIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBDb252ZXJ0ZXJUeXBlPjo6Y29uc3RfaXRlcmF0b3IgZm91bmQgPSBtX2NvbnZlcnRl
clR5cGVzLmZpbmQoZm9udEZhbWlseSk7CiAgICAgICAgIGlmIChmb3VuZCAhPSBtX2NvbnZlcnRl
clR5cGVzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZvdW5kLT52YWx1ZTsKKyAgICAgICAg
ICAgIHJldHVybiBmb3VuZC0+c2Vjb25kOwogICAgIH0KIAogICAgIC8vIElFJ3MgZGVmYXVsdCBm
b250cyBmb3IgSmFwYW5lc2UgZW5jb2RpbmdzIGNoYW5nZSBiYWNrc2xhc2hlcyBpbnRvIHllbiBz
aWducy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNX
aW4uY3BwCmluZGV4IDg3OWFmNzY5NzcyZmY1MTVmMzU0YWE4YjE5NzE2OTliNjJhYmE2NjMuLmUx
OTIzN2Q2OGQ5MGRmMmY1MDNhZjQyMzlhYTM2N2I2ZjE0ZjI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTA1LDE3ICsx
MDUsMTcgQEAgTGFuZ3VhZ2VNYW5hZ2VyOjpMYW5ndWFnZU1hbmFnZXIoKQogICAgICAgICAgICAg
aSA9IGNvZGVQYWdlQ2hhcnNldHMoKS5zZXQoY3BJbmZvLnVpQ29kZVBhZ2UsIG5hbWUpLml0ZXJh
dG9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChpICE9IGNvZGVQYWdlQ2hhcnNldHMoKS5lbmQo
KSkgewotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0b3Ig
aiA9IGtub3duQ2hhcnNldHMoKS5maW5kKFN0cmluZyhpLT52YWx1ZS5kYXRhKCksIGktPnZhbHVl
Lmxlbmd0aCgpKSk7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgQ2hhcnNldEluZm8+Ojpp
dGVyYXRvciBqID0ga25vd25DaGFyc2V0cygpLmZpbmQoU3RyaW5nKGktPnNlY29uZC5kYXRhKCks
IGktPnNlY29uZC5sZW5ndGgoKSkpOwogICAgICAgICAgICAgQVNTRVJUKGogIT0ga25vd25DaGFy
c2V0cygpLmVuZCgpKTsKLSAgICAgICAgICAgIENoYXJzZXRJbmZvJiBpbmZvID0gai0+dmFsdWU7
Ci0gICAgICAgICAgICBpbmZvLm1fbmFtZSA9IGktPnZhbHVlLmRhdGEoKTsKKyAgICAgICAgICAg
IENoYXJzZXRJbmZvJiBpbmZvID0gai0+c2Vjb25kOworICAgICAgICAgICAgaW5mby5tX25hbWUg
PSBpLT5zZWNvbmQuZGF0YSgpOwogICAgICAgICAgICAgaW5mby5tX2ZyaWVuZGx5TmFtZSA9IGNw
SW5mby53c3pEZXNjcmlwdGlvbjsKICAgICAgICAgICAgIGluZm8ubV9hbGlhc2VzLmFwcGVuZChu
YW1lKTsKICAgICAgICAgICAgIGluZm8ubV9hbGlhc2VzLmFwcGVuZChTdHJpbmcoY3BJbmZvLndz
ekhlYWRlckNoYXJzZXQpLmxhdGluMSgpKTsKICAgICAgICAgICAgIGluZm8ubV9hbGlhc2VzLmFw
cGVuZChTdHJpbmcoY3BJbmZvLndzekJvZHlDaGFyc2V0KS5sYXRpbjEoKSk7CiAgICAgICAgICAg
ICBTdHJpbmcgY3BOYW1lID0gImNwIiArIFN0cmluZzo6bnVtYmVyKGNwSW5mby51aUNvZGVQYWdl
KTsKICAgICAgICAgICAgIGluZm8ubV9hbGlhc2VzLmFwcGVuZChjcE5hbWUubGF0aW4xKCkpOwot
ICAgICAgICAgICAgc3VwcG9ydGVkQ2hhcnNldHMoKS5hZGQoaS0+dmFsdWUuZGF0YSgpKTsKKyAg
ICAgICAgICAgIHN1cHBvcnRlZENoYXJzZXRzKCkuYWRkKGktPnNlY29uZC5kYXRhKCkpOwogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyBVSU5UIGdldENvZGVQ
YWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgLy8gc2F5aW5nICI9PSIgaXMgbm90IGZvdW5kIGZv
ciBjb25zdF9pdGVyYXRvciBhbmQgaXRlcmF0b3IKICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywg
Q2hhcnNldEluZm8+JiBjaGFyc2V0cyA9IGtub3duQ2hhcnNldHMoKTsKICAgICBIYXNoTWFwPFN0
cmluZywgQ2hhcnNldEluZm8+Ojpjb25zdF9pdGVyYXRvciBpID0gY2hhcnNldHMuZmluZChuYW1l
KTsKLSAgICByZXR1cm4gaSA9PSBjaGFyc2V0cy5lbmQoKSA/IENQX0FDUCA6IGktPnZhbHVlLm1f
Y29kZVBhZ2U7CisgICAgcmV0dXJuIGkgPT0gY2hhcnNldHMuZW5kKCkgPyBDUF9BQ1AgOiBpLT5z
ZWNvbmQubV9jb2RlUGFnZTsKIH0KIAogc3RhdGljIFBhc3NPd25QdHI8VGV4dENvZGVjPiBuZXdU
ZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCopCkBA
IC0xNDksOSArMTQ5LDkgQEAgdm9pZCBUZXh0Q29kZWNXaW46OnJlZ2lzdGVyRXh0ZW5kZWRFbmNv
ZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIKICAgICBmb3IgKENoYXJz
ZXRTZXQ6Oml0ZXJhdG9yIGkgPSBzdXBwb3J0ZWRDaGFyc2V0cygpLmJlZ2luKCk7IGkgIT0gc3Vw
cG9ydGVkQ2hhcnNldHMoKS5lbmQoKTsgKytpKSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBD
aGFyc2V0SW5mbz46Oml0ZXJhdG9yIGogPSBrbm93bkNoYXJzZXRzKCkuZmluZCgqaSk7CiAgICAg
ICAgIGlmIChqICE9IGtub3duQ2hhcnNldHMoKS5lbmQoKSkgewotICAgICAgICAgICAgcmVnaXN0
cmFyKGotPnZhbHVlLm1fbmFtZS5kYXRhKCksIGotPnZhbHVlLm1fbmFtZS5kYXRhKCkpOwotICAg
ICAgICAgICAgZm9yIChWZWN0b3I8Q1N0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGFsaWFzID0gai0+
dmFsdWUubV9hbGlhc2VzLmJlZ2luKCk7IGFsaWFzICE9IGotPnZhbHVlLm1fYWxpYXNlcy5lbmQo
KTsgKythbGlhcykKLSAgICAgICAgICAgICAgICByZWdpc3RyYXIoYWxpYXMtPmRhdGEoKSwgai0+
dmFsdWUubV9uYW1lLmRhdGEoKSk7CisgICAgICAgICAgICByZWdpc3RyYXIoai0+c2Vjb25kLm1f
bmFtZS5kYXRhKCksIGotPnNlY29uZC5tX25hbWUuZGF0YSgpKTsKKyAgICAgICAgICAgIGZvciAo
VmVjdG9yPENTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBhbGlhcyA9IGotPnNlY29uZC5tX2FsaWFz
ZXMuYmVnaW4oKTsgYWxpYXMgIT0gai0+c2Vjb25kLm1fYWxpYXNlcy5lbmQoKTsgKythbGlhcykK
KyAgICAgICAgICAgICAgICByZWdpc3RyYXIoYWxpYXMtPmRhdGEoKSwgai0+c2Vjb25kLm1fbmFt
ZS5kYXRhKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQg
VGV4dENvZGVjV2luOjpyZWdpc3RlckV4dGVuZGVkQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciBy
ZWdpc3RyYXIpCiAgICAgZm9yIChDaGFyc2V0U2V0OjppdGVyYXRvciBpID0gc3VwcG9ydGVkQ2hh
cnNldHMoKS5iZWdpbigpOyBpICE9IHN1cHBvcnRlZENoYXJzZXRzKCkuZW5kKCk7ICsraSkgewog
ICAgICAgICBIYXNoTWFwPFN0cmluZywgQ2hhcnNldEluZm8+OjppdGVyYXRvciBqID0ga25vd25D
aGFyc2V0cygpLmZpbmQoKmkpOwogICAgICAgICBpZiAoaiAhPSBrbm93bkNoYXJzZXRzKCkuZW5k
KCkpCi0gICAgICAgICAgICByZWdpc3RyYXIoai0+dmFsdWUubV9uYW1lLmRhdGEoKSwgbmV3VGV4
dENvZGVjV2luLCAwKTsKKyAgICAgICAgICAgIHJlZ2lzdHJhcihqLT5zZWNvbmQubV9uYW1lLmRh
dGEoKSwgbmV3VGV4dENvZGVjV2luLCAwKTsKICAgICB9CiB9CiAKQEAgLTMwMSw3ICszMDEsNyBA
QCB2b2lkIFRleHRDb2RlY1dpbjo6ZW51bWVyYXRlU3VwcG9ydGVkRW5jb2RpbmdzKEVuY29kaW5n
UmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIGxhbmd1YWdlTWFuYWdlcigpOwogICAgIGZvciAoQ2hh
cnNldFNldDo6aXRlcmF0b3IgaSA9IHN1cHBvcnRlZENoYXJzZXRzKCkuYmVnaW4oKTsgaSAhPSBz
dXBwb3J0ZWRDaGFyc2V0cygpLmVuZCgpOyArK2kpIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcs
IENoYXJzZXRJbmZvPjo6aXRlcmF0b3IgaiA9IGtub3duQ2hhcnNldHMoKS5maW5kKCppKTsKLSAg
ICAgICAgaWYgKGogIT0ga25vd25DaGFyc2V0cygpLmVuZCgpICYmICFyZWNlaXZlci5yZWNlaXZl
KGotPnZhbHVlLm1fbmFtZS5kYXRhKCksIGotPnZhbHVlLm1fZnJpZW5kbHlOYW1lLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGotPnZhbHVlLm1fY29kZVBhZ2UpKQorICAgICAgICBp
ZiAoaiAhPSBrbm93bkNoYXJzZXRzKCkuZW5kKCkgJiYgIXJlY2VpdmVyLnJlY2VpdmUoai0+c2Vj
b25kLm1fbmFtZS5kYXRhKCksIGotPnNlY29uZC5tX2ZyaWVuZGx5TmFtZS5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLCBqLT5zZWNvbmQubV9jb2RlUGFnZSkpCiAgICAgICAgICAgICBi
cmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IDc1ZmY5ZGU3YmUxMDIzZjdlMTJmYjk5ZGQx
NmNlNzQ2ZmI4ZWRmMjQuLjYxZTM2MjFiNTNkYzQ5NTg2NTEzYWI3NDE0NGRmNWU2MmJhMWMxNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBib29sIGdldERhdGFNYXBJdGVt
KGNvbnN0IERyYWdEYXRhTWFwKiBkYXRhT2JqZWN0LCBGT1JNQVRFVEMqIGZvcm1hdCwgU3RyCiAg
ICAgRHJhZ0RhdGFNYXA6OmNvbnN0X2l0ZXJhdG9yIGZvdW5kID0gZGF0YU9iamVjdC0+ZmluZChm
b3JtYXQtPmNmRm9ybWF0KTsKICAgICBpZiAoZm91bmQgPT0gZGF0YU9iamVjdC0+ZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpdGVtID0gZm91bmQtPnZhbHVlWzBdOworICAgIGl0
ZW0gPSBmb3VuZC0+c2Vjb25kWzBdOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04MjYsNyAr
ODI2LDcgQEAgdm9pZCBnZXRDbGlwYm9hcmREYXRhKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBG
T1JNQVRFVEMqIGZvcm1hdCwgVmVjdG9yPFN0cmluZz4KICAgICBDbGlwYm9hcmRGb3JtYXRNYXA6
OmNvbnN0X2l0ZXJhdG9yIGZvdW5kID0gZm9ybWF0TWFwLmZpbmQoZm9ybWF0LT5jZkZvcm1hdCk7
CiAgICAgaWYgKGZvdW5kID09IGZvcm1hdE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGZvdW5kLT52YWx1ZS0+Z2V0U3RyaW5nKGRhdGFPYmplY3QsIGZvdW5kLT52YWx1ZS0+Zm9ybWF0
LCBkYXRhU3RyaW5ncyk7CisgICAgZm91bmQtPnNlY29uZC0+Z2V0U3RyaW5nKGRhdGFPYmplY3Qs
IGZvdW5kLT5zZWNvbmQtPmZvcm1hdCwgZGF0YVN0cmluZ3MpOwogfQogCiB2b2lkIHNldENsaXBi
b2FyZERhdGEoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIFVJTlQgZm9ybWF0LCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZGF0YVN0cmluZ3MpCkBAIC04MzUsNyArODM1LDcgQEAgdm9pZCBzZXRDbGlw
Ym9hcmREYXRhKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBVSU5UIGZvcm1hdCwgY29uc3QgVmVj
dG9yPFN0cmluZz4KICAgICBDbGlwYm9hcmRGb3JtYXRNYXA6OmNvbnN0X2l0ZXJhdG9yIGZvdW5k
ID0gZm9ybWF0TWFwLmZpbmQoZm9ybWF0KTsKICAgICBpZiAoZm91bmQgPT0gZm9ybWF0TWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgZm91bmQtPnZhbHVlLT5zZXRTdHJpbmcoZGF0YU9i
amVjdCwgZm91bmQtPnZhbHVlLT5mb3JtYXQsIGRhdGFTdHJpbmdzKTsKKyAgICBmb3VuZC0+c2Vj
b25kLT5zZXRTdHJpbmcoZGF0YU9iamVjdCwgZm91bmQtPnNlY29uZC0+Zm9ybWF0LCBkYXRhU3Ry
aW5ncyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggZjk1MGIwOGNlZmJmNmQwYmUwMWI1ZTQw
YWNkMGRiNjgzYTQyYTNjMy4uZDFjMTM4NmExNDUyMDRjMzhlMTgxYmQ3NWEyOGIyOGM5MDUzNzVk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAg
LTUyNSw3ICs1MjUsNyBAQCBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkV2luOjp0eXBlcygpIGNv
bnN0CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChEcmFnRGF0YU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX2RyYWdEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IG1fZHJhZ0RhdGFNYXAuZW5kKCk7
ICsraXQpIHsKICAgICAgICAgICAgIEZPUk1BVEVUQyBkYXRhOwotICAgICAgICAgICAgZGF0YS5j
ZkZvcm1hdCA9ICgqaXQpLmtleTsKKyAgICAgICAgICAgIGRhdGEuY2ZGb3JtYXQgPSAoKml0KS5m
aXJzdDsKICAgICAgICAgICAgIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChyZXN1bHRzLCBkYXRhKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAppbmRleCAwNzlmOGQ2ZThkNjQ1YjAwZmEyOWExYjRiNWUxNjJiZWZmNjA1ZTk0
Li5lZTAyNTVlMTI4NThlYTM5YjFiYzk0NjY1MTI5MDczYzRkY2ExOTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0yMzgsNyArMjM4LDcg
QEAgc3RhdGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlm
aWVyKQogCiAgICAgSGFzaE1hcDxEV09SRCwgU3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBkaXJlY3Rv
cmllcy5maW5kKHBhdGhJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgIT0gZGlyZWN0b3JpZXMuZW5k
KCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25k
OwogCiAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IHN0b3JhZ2VEaXJlY3RvcnkocGF0aElkZW50aWZp
ZXIpOwogICAgIGRpcmVjdG9yaWVzLmFkZChwYXRoSWRlbnRpZmllciwgZGlyZWN0b3J5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9SdW5Mb29wV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9SdW5Mb29wV2luLmNwcAppbmRleCAxN2Q2ODQ1ZTlm
ZmRjMzkyOGMwNjdjN2MxNTg4M2FhYjkwZDI5YTY4Li4xNjYzYjY2MTMzYWJjMmNiM2ZkMDA1N2Qx
OTY3MTIzN2QwZTc5OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UnVuTG9vcFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1J1bkxvb3BX
aW4uY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVy
RmlyZWQoUnVuTG9vcCogcnVuTG9vcCwgdWludDY0X3QgSUQpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBUaW1lckJhc2UqIHRpbWVyID0gaXQtPnZhbHVlOworICAgIFRpbWVyQmFzZSog
dGltZXIgPSBpdC0+c2Vjb25kOwogCiAgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgewog
ICAgICAgICBydW5Mb29wLT5tX2FjdGl2ZVRpbWVycy5yZW1vdmUoaXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAppbmRleCBkZmJkMDA1ZmM0MzZmOGQ3
MjE2YTIxNzQ2Njk5YjdkZjgxYjU4MDQ4Li4wYzAzY2UwMGYyMjFhZTBhYzgxYjhlZTcyY2ZlMGQw
NTRhMDU2NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0
LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIEhSRVNVTFQgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0
YW5jZShXQ0RhdGFPYmplY3QqKiByZXN1bHQsIGNvbnN0IERyYWdEYXRhTWFwJiBkCiAgICAgKnJl
c3VsdCA9IG5ldyBXQ0RhdGFPYmplY3Q7CiAKICAgICBmb3IgKERyYWdEYXRhTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGRhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZGF0YU1hcC5lbmQoKTsgKytpdCkK
LSAgICAgICAgc2V0Q2xpcGJvYXJkRGF0YSgqcmVzdWx0LCBpdC0+a2V5LCBpdC0+dmFsdWUpOwor
ICAgICAgICBzZXRDbGlwYm9hcmREYXRhKCpyZXN1bHQsIGl0LT5maXJzdCwgaXQtPnNlY29uZCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbmNlL01JTUVUeXBlUmVnaXN0cnlXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW5jZS9NSU1FVHlwZVJlZ2lzdHJ5V2luQ0UuY3BwCmluZGV4IDg4ODg0NzFhOTQxYjY3
MjdkNjU3ZjQ2NDI5N2VkYzhhNjU0MjJlZDkuLjhhMGQzZDJiNjE2MmI0NmRiYjdkNjJmMjJjYTAz
MjZkYzdmY2VkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL01J
TUVUeXBlUmVnaXN0cnlXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvTUlNRVR5cGVSZWdpc3RyeVdpbkNFLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIFN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiAgICAgaW5pdE1JTUVUeXBlRW50ZW5zaW9uTWFwKCk7CiAKICAgICBmb3Ig
KEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpID0gbWltZXR5cGVNYXAuYmVnaW4o
KTsgaSAhPSBtaW1ldHlwZU1hcC5lbmQoKTsgKytpKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShpLT52YWx1ZSwgdHlwZSkpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShp
LT5zZWNvbmQsIHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGktPmZpcnN0OwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvQ29udGV4dE1lbnVXeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250ZXh0TWVudVd4LmNwcAppbmRleCBkZjJl
ZTUyN2Q5NDhlMTYyYWJiODk0MjM4YmIyYjM4NGQ4NjlmNjI0Li40MTg5YWE5NTJmZmViNGJjYTIz
ZGI3MGE5ODA2MWVlZGZmNGYxZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93eC9Db250ZXh0TWVudVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9D
b250ZXh0TWVudVd4LmNwcApAQCAtNjcsOCArNjcsOCBAQCB2b2lkIENvbnRleHRNZW51OjphcHBl
bmRJdGVtKENvbnRleHRNZW51SXRlbSYgaXRlbSkKIAogICAgIEl0ZW1BY3Rpb25NYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IHNfaXRlbUFjdGlvbnMuZW5kKCk7CiAgICAgZm9yIChJdGVtQWN0aW9u
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHNfaXRlbUFjdGlvbnMuYmVnaW4oKTsgIGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBpZiAoaXQtPnZhbHVlID09IGl0ZW1EZXNjcmlwdGlvbi5hY3Rp
b24pCi0gICAgICAgICAgICBpZFd4ID0gaXQtPmtleTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQg
PT0gaXRlbURlc2NyaXB0aW9uLmFjdGlvbikKKyAgICAgICAgICAgIGlkV3ggPSBpdC0+Zmlyc3Q7
CiAgICAgfQogCiAgICAgaWYgKGl0ZW1EZXNjcmlwdGlvbi5zdWJNZW51KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDQ0NTJhZmUxZTRiNjM4YjVmN2Rk
YTBlYzdiMTc5ZDdhZTNkOWQ2ZTMuLjk2MWM0NTQ4NWJmMmQ4Nzc0YWEzMDBjNzg2NTBlYWM5ZGFh
MDVmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0x
NjYsNyArMTY2LDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCgpCiAgICAgICAgIE1J
TUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgbWFwX2l0ID0gKCppdCktPm1pbWVU
b0Rlc2NyaXB0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6
Y29uc3RfaXRlcmF0b3IgbWFwX2VuZCA9ICgqaXQpLT5taW1lVG9EZXNjcmlwdGlvbnMoKS5lbmQo
KTsKICAgICAgICAgZm9yICg7IG1hcF9pdCAhPSBtYXBfZW5kOyArK21hcF9pdCkKLSAgICAgICAg
ICAgIG1fcmVnaXN0ZXJlZE1JTUVUeXBlcy5hZGQobWFwX2l0LT5rZXkpOworICAgICAgICAgICAg
bV9yZWdpc3RlcmVkTUlNRVR5cGVzLmFkZChtYXBfaXQtPmZpcnN0KTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTI0Nyw5ICsyNDcsOSBAQCBTdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1J
TUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAogICAgICAg
ICBNSU1FVG9FeHRlbnNpb25zTWFwOjpjb25zdF9pdGVyYXRvciBtaW1lX2VuZCA9ICgqaXQpLT5t
aW1lVG9FeHRlbnNpb25zKCkuZW5kKCk7CiAKICAgICAgICAgZm9yIChNSU1FVG9FeHRlbnNpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBtaW1lX2l0ID0gKCppdCktPm1pbWVUb0V4dGVuc2lvbnMoKS5i
ZWdpbigpOyBtaW1lX2l0ICE9IG1pbWVfZW5kOyArK21pbWVfaXQpIHsKLSAgICAgICAgICAgIG1p
bWVUeXBlID0gbWltZV9pdC0+a2V5OworICAgICAgICAgICAgbWltZVR5cGUgPSBtaW1lX2l0LT5m
aXJzdDsKICAgICAgICAgICAgIFBsdWdpblBhY2thZ2UqIHByZWZlcnJlZFBsdWdpbiA9IG1fcHJl
ZmVycmVkUGx1Z2lucy5nZXQobWltZVR5cGUpLmdldCgpOwotICAgICAgICAgICAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGV4dGVuc2lvbnMgPSBtaW1lX2l0LT52YWx1ZTsKKyAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25zID0gbWltZV9pdC0+c2Vjb25kOwogICAgICAg
ICAgICAgYm9vbCBmb3VuZE1hcHBpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGV4dGVuc2lvbnNbaV0sIGV4dGVuc2lvbikpIHsKQEAgLTMz
OSw4ICszMzksOCBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpyZW1vdmUoUGx1Z2luUGFja2FnZSog
cGFja2FnZSkKICAgICBNSU1FVG9FeHRlbnNpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHBh
Y2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5iZWdpbigpOwogICAgIE1JTUVUb0V4dGVuc2lvbnNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5lbmQo
KTsKICAgICBmb3IgKCA7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBQbHVnaW5QYWNrYWdl
QnlOYW1lTWFwOjppdGVyYXRvciBwYWNrYWdlSW5NYXAgPSBtX3ByZWZlcnJlZFBsdWdpbnMuZmlu
ZChpdC0+a2V5KTsKLSAgICAgICAgaWYgKHBhY2thZ2VJbk1hcCAhPSBtX3ByZWZlcnJlZFBsdWdp
bnMuZW5kKCkgJiYgcGFja2FnZUluTWFwLT52YWx1ZSA9PSBwYWNrYWdlKQorICAgICAgICBQbHVn
aW5QYWNrYWdlQnlOYW1lTWFwOjppdGVyYXRvciBwYWNrYWdlSW5NYXAgPSBtX3ByZWZlcnJlZFBs
dWdpbnMuZmluZChpdC0+Zmlyc3QpOworICAgICAgICBpZiAocGFja2FnZUluTWFwICE9IG1fcHJl
ZmVycmVkUGx1Z2lucy5lbmQoKSAmJiBwYWNrYWdlSW5NYXAtPnNlY29uZCA9PSBwYWNrYWdlKQog
ICAgICAgICAgICAgbV9wcmVmZXJyZWRQbHVnaW5zLnJlbW92ZShwYWNrYWdlSW5NYXApOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFk
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlci5jcHAKaW5kZXggMzlhZTc5NGUyZmIwOTcyMTlhNTIyM2ViZmJlZWRmNjliNmUyODYy
Yy4uNzUyODY3NmIxMmFhOGJkYThmMzNiMzJlZjQwY2M4NzY1NzY2ZDMxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVD
YWxsKE5QUCBucHAsIE1haW5UaHJlYWRGdW5jdGlvbiBmdW5jdGlvCiAgICAgaWYgKGl0ID09IG1f
Y2FsbFF1ZXVlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpdC0+dmFsdWUuYXBw
ZW5kKENhbGwoZnVuY3Rpb24sIHVzZXJEYXRhKSk7CisgICAgaXQtPnNlY29uZC5hcHBlbmQoQ2Fs
bChmdW5jdGlvbiwgdXNlckRhdGEpKTsKIAogICAgIGlmICghbV9jYWxsUGVuZGluZykgewogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKG1haW5UaHJlYWRDYWxsYmFjaywgdGhpcyk7CkBAIC05Nyw3
ICs5Nyw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6ZGlzcGF0Y2hDYWxscygp
CiAgICAgICAgIC8vIEVtcHR5IGFsbCB0aGUgcXVldWVzIGluIHRoZSBvcmlnaW5hbCBtYXAKICAg
ICAgICAgQ2FsbFF1ZXVlTWFwOjppdGVyYXRvciBlbmQgPSBtX2NhbGxRdWV1ZU1hcC5lbmQoKTsK
ICAgICAgICAgZm9yIChDYWxsUXVldWVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9jYWxsUXVldWVNYXAu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgaXQtPnZhbHVlLmNsZWFyKCk7
CisgICAgICAgICAgICBpdC0+c2Vjb25kLmNsZWFyKCk7CiAgICAgfQogCiAgICAgbV9jYWxsUGVu
ZGluZyA9IGZhbHNlOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlcjo6ZGlzcGF0Y2hDYWxscygpCiAKICAgICBDYWxsUXVldWVNYXA6Oml0ZXJhdG9yIGVu
ZCA9IGNvcHkuZW5kKCk7CiAgICAgZm9yIChDYWxsUXVldWVNYXA6Oml0ZXJhdG9yIGl0ID0gY29w
eS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGRpc3BhdGNoQ2FsbHNGb3JQbHVn
aW4oaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgZGlzcGF0Y2hDYWxsc0ZvclBsdWdpbihp
dC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogfQogCiB2b2lkIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXI6Om1haW5UaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGZkYjc4NjAzNWIwZDE2NTQ4MjFmY2I0NjBhZDRlMmQz
YTcxYTVhMzUuLjAwMjM4MGY1Zjk1M2Y5YmVlMmM1NjVlOWNhNWMxMzJhZDRjMGFmNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAgLTE0Nyw5ICsxNDcsOSBAQCB2
b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oKQogCiAgICAgICAgIEhUVFBIZWFkZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRz
KCkuZW5kKCk7CiAgICAgICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3Jlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaXQtPmtleSk7Cisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpdC0+Zmlyc3QpOwogICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKGl0LT52YWx1ZSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChp
dC0+c2Vjb25kKTsKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9Q
bHVnaW5EYXRhQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVy
cnkvUGx1Z2luRGF0YUJsYWNrQmVycnkuY3BwCmluZGV4IDQ3NDY2MTZkZTMzNWZhODNjZWM5NmQ5
MzBlMjBkOGMyOGU5NGMzYjcuLmQ5MjBkMWZiZDVhMTEyNDYwM2E4Y2Q5OGZhMTM0MzU2ZTczMDZi
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5E
YXRhQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5
L1BsdWdpbkRhdGFCbGFja0JlcnJ5LmNwcApAQCAtNDEsOCArNDEsOCBAQCB2b2lkIFBsdWdpbkRh
dGE6OmluaXRQbHVnaW5zKGNvbnN0IFBhZ2UqKQogICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5lbmQoKTsKICAgICAg
ICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRv
RGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgTWlt
ZUNsYXNzSW5mbyBtaW1lOwotICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmtleTsKLSAgICAg
ICAgICAgIG1pbWUuZGVzYyA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0
LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAg
ICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUu
dHlwZSk7CiAgICAgICAgICAgICBpbmZvLm1pbWVzLmFwcGVuZChtaW1lKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy93eC9QbHVnaW5EYXRhV3guY3BwCmluZGV4IDI3OTUyYzRh
ZThiZmE0OWU5OGIxMWFlOTk1OWZjNzU0ZTRkYjIzYmUuLjBlYjg5MGZlZjA1YTExNWVhY2U0MjYz
NzY4MGEzZDZhMTJmNTc3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd3gv
UGx1Z2luRGF0YVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3d4L1BsdWdpbkRh
dGFXeC5jcHAKQEAgLTUxLDggKzUxLDggQEAgdm9pZCBQbHVnaW5EYXRhOjppbml0UGx1Z2lucyhj
b25zdCBQYWdlKikKICAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lOwogCi0gICAgICAgICAgICBtaW1lLnR5
cGUgPSBpdC0+a2V5OwotICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnZhbHVlOworICAgICAg
ICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0OworICAgICAgICAgICAgbWltZS5kZXNjID0gaXQt
PnNlY29uZDsKICAgICAgICAgICAgIG1pbWUuZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4
dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKIAogICAgICAgICAgICAgaW5mby5taW1lcy5hcHBl
bmQobWltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVh
ZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250
cm9sbGVyLmNwcAppbmRleCBhYThjOGRkMTVhMTVlZWZiNDIxMTNmZDEyNjFmOGYyNWVjMGU4MjU2
Li4wMTNlNGEyMGY1ZjhmMTg1YTJlNDAwYWEwODlkMmY2MTY2MmY3MmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAKQEAgLTE0MCw5
ICsxNDAsOSBAQCB2b2lkIEZsb3dUaHJlYWRDb250cm9sbGVyOjp1bnJlZ2lzdGVyTmFtZWRGbG93
Q29udGVudE5vZGUoTm9kZSogY29udGVudE5vZGUpCiAgICAgQVNTRVJUKGNvbnRlbnROb2RlICYm
IGNvbnRlbnROb2RlLT5pc0VsZW1lbnROb2RlKCkpOwogICAgIEhhc2hNYXA8Tm9kZSosIFJlbmRl
ck5hbWVkRmxvd1RocmVhZCo+OjppdGVyYXRvciBpdCA9IG1fbWFwTmFtZWRGbG93Q29udGVudE5v
ZGVzLmZpbmQoY29udGVudE5vZGUpOwogICAgIEFTU0VSVChpdCAhPSBtX21hcE5hbWVkRmxvd0Nv
bnRlbnROb2Rlcy5lbmQoKSk7Ci0gICAgQVNTRVJUKGl0LT52YWx1ZSk7Ci0gICAgQVNTRVJUKGl0
LT52YWx1ZS0+aGFzQ29udGVudE5vZGUoY29udGVudE5vZGUpKTsKLSAgICBpdC0+dmFsdWUtPnVu
cmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZShjb250ZW50Tm9kZSk7CisgICAgQVNTRVJUKGl0
LT5zZWNvbmQpOworICAgIEFTU0VSVChpdC0+c2Vjb25kLT5oYXNDb250ZW50Tm9kZShjb250ZW50
Tm9kZSkpOworICAgIGl0LT5zZWNvbmQtPnVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50Tm9kZShj
b250ZW50Tm9kZSk7CiAgICAgbV9tYXBOYW1lZEZsb3dDb250ZW50Tm9kZXMucmVtb3ZlKGNvbnRl
bnROb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CmluZGV4IGU3ZDgxOTgyZDY5MDIyYWQ2MmYwODc5YWU2NTc4Yjg3Y2MxNjc2MGQuLjEyNmRiMjdm
OTgxMWQxNWI3OWUzYTgwN2NiZmYxYWUxYzNhNzRiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTQ1OSw3ICs0NTksNyBAQCBib29sIElubGluZUZs
b3dCb3g6OnJlcXVpcmVzSWRlb2dyYXBoaWNCYXNlbGluZShjb25zdCBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGbwogICAgICAgICAgICAgY29uc3QgVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRh
Kj4qIHVzZWRGb250cyA9IDA7CiAgICAgICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVUZXh0Qm94
KCkpIHsKICAgICAgICAgICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5maW5kKHRvSW5saW5lVGV4dEJveChj
dXJyKSk7Ci0gICAgICAgICAgICAgICAgdXNlZEZvbnRzID0gaXQgPT0gdGV4dEJveERhdGFNYXAu
ZW5kKCkgPyAwIDogJml0LT52YWx1ZS5maXJzdDsKKyAgICAgICAgICAgICAgICB1c2VkRm9udHMg
PSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQoKSA/IDAgOiAmaXQtPnNlY29uZC5maXJzdDsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHVzZWRGb250cykgewpAQCAtODIzLDcgKzgy
Myw3IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXN1YWxPdmVyZmxv
dyhJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBHbHlwCiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0g
dGV4dEJveC0+cmVuZGVyZXIoKS0+c3R5bGUoaXNGaXJzdExpbmVTdHlsZSgpKTsKICAgICAKICAg
ICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94
RGF0YU1hcC5maW5kKHRleHRCb3gpOwotICAgIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cg
PSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5lbmQoKSA/IDAgOiAmaXQtPnZhbHVlLnNlY29uZDsKKyAg
ICBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93ID0gaXQgPT0gdGV4dEJveERhdGFNYXAuZW5k
KCkgPyAwIDogJml0LT5zZWNvbmQuc2Vjb25kOwogICAgIGJvb2wgaXNGbGlwcGVkTGluZSA9IHN0
eWxlLT5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCk7CiAKICAgICBpbnQgdG9wR2x5cGhFZGdl
ID0gZ2x5cGhPdmVyZmxvdyA/IChpc0ZsaXBwZWRMaW5lID8gZ2x5cGhPdmVyZmxvdy0+Ym90dG9t
IDogZ2x5cGhPdmVyZmxvdy0+dG9wKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAppbmRleCBlYTc4MDM4N2RmOWJhM2Y5YTNhOWMzMjAyZjY3ZjU2YWJjN2RiMTc5
Li44Mjc3MDc3NmZiZGNmMGVhZGFjMTM0OTFmYTliNGU4YmI1MGQ1OTdhIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTQ0MDMsNyArNDQwMyw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmNsZWFyRmxvYXRzKCkKIAogICAgICAgICBSZW5kZXJlclRvRmxvYXRJbmZv
TWFwOjppdGVyYXRvciBlbmQgPSBmbG9hdE1hcC5lbmQoKTsKICAgICAgICAgZm9yIChSZW5kZXJl
clRvRmxvYXRJbmZvTWFwOjppdGVyYXRvciBpdCA9IGZsb2F0TWFwLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0g
KCppdCkudmFsdWU7CisgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3Qg
PSAoKml0KS5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoIWZsb2F0aW5nT2JqZWN0LT5pc0Rlc2Nl
bmRhbnQoKSkgewogICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxUb3AgPSAwOwogICAgICAg
ICAgICAgICAgIGNoYW5nZUxvZ2ljYWxCb3R0b20gPSBtYXgoY2hhbmdlTG9naWNhbEJvdHRvbSwg
bG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IDE5NTNkZDE1
MWEzYmVhYTUzZTY5NzE0ZGRjZDc2Yjg1ZTU1NmEzZjAuLmI2NGMxZDMxNTZhZDExN2EyNzA5M2I3
NTA4MjJmMGY4ODU2NzkwOTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC03MDcsMTQgKzcwNywxNCBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihSb290SW5saW5lQm94KiBsaW5lQm94
LCBCaWRpUnVuKiBydQogICAgIGlmICghZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlzVGV4dCgpKTsKICAgICAgICAgR2x5cGhPdmVyZmxvd0Fu
ZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5s
aW5lVGV4dEJveChydW4tPm1fYm94KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250
RGF0YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwotICAgICAgICBBU1NFUlQoaXQt
PnZhbHVlLmZpcnN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihmYWxsYmFja0Zv
bnRzLCBpdC0+dmFsdWUuZmlyc3QpOworICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5maXJzdC5p
c0VtcHR5KCkpOworICAgICAgICBjb3B5VG9WZWN0b3IoZmFsbGJhY2tGb250cywgaXQtPnNlY29u
ZC5maXJzdCk7CiAgICAgICAgIHJ1bi0+bV9ib3gtPnBhcmVudCgpLT5jbGVhckRlc2NlbmRhbnRz
SGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKTsKICAgICB9CiAgICAgaWYgKChnbHlwaE92
ZXJmbG93LnRvcCB8fCBnbHlwaE92ZXJmbG93LmJvdHRvbSB8fCBnbHlwaE92ZXJmbG93LmxlZnQg
fHwgZ2x5cGhPdmVyZmxvdy5yaWdodCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+bV9ib3gtPmlz
VGV4dCgpKTsKICAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0ZXJh
dG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPm1fYm94KSwg
bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZsb3co
KSkpLml0ZXJhdG9yOwotICAgICAgICBpdC0+dmFsdWUuc2Vjb25kID0gZ2x5cGhPdmVyZmxvdzsK
KyAgICAgICAgaXQtPnNlY29uZC5zZWNvbmQgPSBnbHlwaE92ZXJmbG93OwogICAgICAgICBydW4t
Pm1fYm94LT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDMz
ZjkzYmRiMTQ2YmQxNTdhZmM2ZmIxNzA3NDFjYTdjMTJmZmM2ODguLjk5ODkzZmNkNDY2M2I1Njc5
MzdlOTZiYzU4ZmFkNjgwMDZiMjVlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgSW1h
Z2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxJ
bWFnZVF1YWxpdHlDb250CiAgICAgaWYgKG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZSkgewogICAg
ICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSBmYWxzZTsKICAgICAgICAgZm9yIChPYmpl
Y3RMYXllclNpemVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RMYXllclNpemVNYXAuYmVnaW4o
KTsgaXQgIT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBp
dC0+a2V5LT5yZXBhaW50KCk7CisgICAgICAgICAgICBpdC0+Zmlyc3QtPnJlcGFpbnQoKTsKICAg
ICB9CiB9CiAKQEAgLTE2MiwxNCArMTYyLDE0IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxl
cjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSCiAK
ICAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBpbiB0aGUgaGFzaHRhYmxlcy4KICAgICBPYmplY3RM
YXllclNpemVNYXA6Oml0ZXJhdG9yIGkgPSBtX29iamVjdExheWVyU2l6ZU1hcC5maW5kKG9iamVj
dCk7Ci0gICAgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCA9IGkgIT0gbV9vYmplY3RMYXllclNpemVN
YXAuZW5kKCkgPyAmaS0+dmFsdWUgOiAwOworICAgIExheWVyU2l6ZU1hcCogaW5uZXJNYXAgPSBp
ICE9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmVuZCgpID8gJmktPnNlY29uZCA6IDA7CiAgICAgTGF5
b3V0U2l6ZSBvbGRTaXplOwogICAgIGJvb2wgaXNGaXJzdFJlc2l6ZSA9IHRydWU7CiAgICAgaWYg
KGlubmVyTWFwKSB7CiAgICAgICAgIExheWVyU2l6ZU1hcDo6aXRlcmF0b3IgaiA9IGlubmVyTWFw
LT5maW5kKGxheWVyKTsKICAgICAgICAgaWYgKGogIT0gaW5uZXJNYXAtPmVuZCgpKSB7CiAgICAg
ICAgICAgICBpc0ZpcnN0UmVzaXplID0gZmFsc2U7Ci0gICAgICAgICAgICBvbGRTaXplID0gai0+
dmFsdWU7CisgICAgICAgICAgICBvbGRTaXplID0gai0+c2Vjb25kOwogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggNTQ1
N2EzYTFkZDE2OGI4NmVkM2JhZGE3MDcwYmE0NjM0NGIzODAyNi4uZGU0NWQ4OTVlMTdlMDlhNzFi
NjM5MWRkOThlODIzMDc3YjIxZDEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcApAQCAtNTcxLDExICs1NzEsMTEgQEAgdm9pZCBSZW5kZXJDb3VudGVyOjpk
ZXN0cm95Q291bnRlck5vZGVzKFJlbmRlck9iamVjdCogb3duZXIpCiAgICAgQ291bnRlck1hcHM6
Oml0ZXJhdG9yIG1hcHNJdGVyYXRvciA9IG1hcHMuZmluZChvd25lcik7CiAgICAgaWYgKG1hcHNJ
dGVyYXRvciA9PSBtYXBzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgQ291bnRlck1hcCog
bWFwID0gbWFwc0l0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBDb3VudGVyTWFwKiBtYXAgPSBt
YXBzSXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKICAgICBDb3VudGVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtYXAtPmVuZCgpOwogICAgIGZvciAoQ291bnRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBBdG9taWNTdHJp
bmcgaWRlbnRpZmllcihpdC0+a2V5LmdldCgpKTsKLSAgICAgICAgZGVzdHJveUNvdW50ZXJOb2Rl
V2l0aG91dE1hcFJlbW92YWwoaWRlbnRpZmllciwgaXQtPnZhbHVlLmdldCgpKTsKKyAgICAgICAg
QXRvbWljU3RyaW5nIGlkZW50aWZpZXIoaXQtPmZpcnN0LmdldCgpKTsKKyAgICAgICAgZGVzdHJv
eUNvdW50ZXJOb2RlV2l0aG91dE1hcFJlbW92YWwoaWRlbnRpZmllciwgaXQtPnNlY29uZC5nZXQo
KSk7CiAgICAgfQogICAgIG1hcHMucmVtb3ZlKG1hcHNJdGVyYXRvcik7CiAgICAgb3duZXItPnNl
dEhhc0NvdW50ZXJOb2RlTWFwKGZhbHNlKTsKQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIFJlbmRl
ckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG93bmVyLCBjb25zdCBB
dG9taWNTdHJpbmcmCiAgICAgQ291bnRlck1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtYXAt
PmZpbmQoaWRlbnRpZmllci5pbXBsKCkpOwogICAgIGlmIChtYXBJdGVyYXRvciA9PSBtYXAtPmVu
ZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJl
bW92YWwoaWRlbnRpZmllciwgbWFwSXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKKyAgICBkZXN0cm95
Q291bnRlck5vZGVXaXRob3V0TWFwUmVtb3ZhbChpZGVudGlmaWVyLCBtYXBJdGVyYXRvci0+c2Vj
b25kLmdldCgpKTsKICAgICBtYXAtPnJlbW92ZShtYXBJdGVyYXRvcik7CiAgICAgLy8gV2UgZG8g
bm90IGRlbGV0ZSAibWFwIiBoZXJlIGV2ZW4gaWYgZW1wdHkgYmVjYXVzZSB3ZSBleHBlY3QgdG8g
cmV1c2UKICAgICAvLyBpdCBzb29uLiBJbiBvcmRlciBmb3IgYSByZW5kZXJlciB0byBsb3NlIGFs
bCBpdHMgY291bnRlcnMgcGVybWFuZW50bHksCkBAIC02MjksMjIgKzYyOSwyMiBAQCBzdGF0aWMg
dm9pZCB1cGRhdGVDb3VudGVycyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIENvdW50ZXJE
aXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGRpcmVjdGl2ZU1hcC0+ZW5kKCk7CiAg
ICAgaWYgKCFyZW5kZXJlci0+aGFzQ291bnRlck5vZGVNYXAoKSkgewogICAgICAgICBmb3IgKENv
dW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZGlyZWN0aXZlTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBtYWtlQ291bnRlck5vZGUocmVuZGVy
ZXIsIEF0b21pY1N0cmluZyhpdC0+a2V5LmdldCgpKSwgZmFsc2UpOworICAgICAgICAgICAgbWFr
ZUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBBdG9taWNTdHJpbmcoaXQtPmZpcnN0LmdldCgpKSwgZmFs
c2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIENvdW50ZXJNYXAqIGNvdW50ZXJNYXAg
PSBjb3VudGVyTWFwcygpLmdldChyZW5kZXJlcik7CiAgICAgQVNTRVJUKGNvdW50ZXJNYXApOwog
ICAgIGZvciAoQ291bnRlckRpcmVjdGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkaXJlY3Rp
dmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8Q291bnRl
ck5vZGU+IG5vZGUgPSBjb3VudGVyTWFwLT5nZXQoaXQtPmtleS5nZXQoKSk7CisgICAgICAgIFJl
ZlB0cjxDb3VudGVyTm9kZT4gbm9kZSA9IGNvdW50ZXJNYXAtPmdldChpdC0+Zmlyc3QuZ2V0KCkp
OwogICAgICAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgICAgIG1ha2VDb3VudGVyTm9kZShyZW5k
ZXJlciwgQXRvbWljU3RyaW5nKGl0LT5rZXkuZ2V0KCkpLCBmYWxzZSk7CisgICAgICAgICAgICBt
YWtlQ291bnRlck5vZGUocmVuZGVyZXIsIEF0b21pY1N0cmluZyhpdC0+Zmlyc3QuZ2V0KCkpLCBm
YWxzZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBSZWZQdHI8
Q291bnRlck5vZGU+IG5ld1BhcmVudCA9IDA7CiAgICAgICAgIFJlZlB0cjxDb3VudGVyTm9kZT4g
bmV3UHJldmlvdXNTaWJsaW5nID0gMDsKICAgICAgICAgCi0gICAgICAgIGZpbmRQbGFjZUZvckNv
dW50ZXIocmVuZGVyZXIsIEF0b21pY1N0cmluZyhpdC0+a2V5LmdldCgpKSwgbm9kZS0+aGFzUmVz
ZXRUeXBlKCksIG5ld1BhcmVudCwgbmV3UHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgaWYgKG5v
ZGUgIT0gY291bnRlck1hcC0+Z2V0KGl0LT5rZXkuZ2V0KCkpKQorICAgICAgICBmaW5kUGxhY2VG
b3JDb3VudGVyKHJlbmRlcmVyLCBBdG9taWNTdHJpbmcoaXQtPmZpcnN0LmdldCgpKSwgbm9kZS0+
aGFzUmVzZXRUeXBlKCksIG5ld1BhcmVudCwgbmV3UHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAg
aWYgKG5vZGUgIT0gY291bnRlck1hcC0+Z2V0KGl0LT5maXJzdC5nZXQoKSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgQ291bnRlck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudCgp
OwogICAgICAgICBpZiAobmV3UGFyZW50ID09IHBhcmVudCAmJiBuZXdQcmV2aW91c1NpYmxpbmcg
PT0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpCkBAIC02NTIsNyArNjUyLDcgQEAgc3RhdGljIHZv
aWQgdXBkYXRlQ291bnRlcnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgaWYgKHBh
cmVudCkKICAgICAgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSk7CiAgICAg
ICAgIGlmIChuZXdQYXJlbnQpCi0gICAgICAgICAgICBuZXdQYXJlbnQtPmluc2VydEFmdGVyKG5v
ZGUuZ2V0KCksIG5ld1ByZXZpb3VzU2libGluZy5nZXQoKSwgaXQtPmtleS5nZXQoKSk7CisgICAg
ICAgICAgICBuZXdQYXJlbnQtPmluc2VydEFmdGVyKG5vZGUuZ2V0KCksIG5ld1ByZXZpb3VzU2li
bGluZy5nZXQoKSwgaXQtPmZpcnN0LmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTY4NCwyMSArNjg0
LDIxIEBAIHZvaWQgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICBDb3VudGVyRGlyZWN0
aXZlTWFwOjpjb25zdF9pdGVyYXRvciBuZXdNYXBFbmQgPSBuZXdDb3VudGVyRGlyZWN0aXZlcy0+
ZW5kKCk7CiAgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRvciBv
bGRNYXBFbmQgPSBvbGRDb3VudGVyRGlyZWN0aXZlcy0+ZW5kKCk7CiAgICAgICAgICAgICBmb3Ig
KENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbmV3Q291bnRlckRpcmVj
dGl2ZXMtPmJlZ2luKCk7IGl0ICE9IG5ld01hcEVuZDsgKytpdCkgewotICAgICAgICAgICAgICAg
IENvdW50ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJhdG9yIG9sZE1hcEl0ID0gb2xkQ291bnRl
ckRpcmVjdGl2ZXMtPmZpbmQoaXQtPmtleSk7CisgICAgICAgICAgICAgICAgQ291bnRlckRpcmVj
dGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3Igb2xkTWFwSXQgPSBvbGRDb3VudGVyRGlyZWN0aXZlcy0+
ZmluZChpdC0+Zmlyc3QpOwogICAgICAgICAgICAgICAgIGlmIChvbGRNYXBJdCAhPSBvbGRNYXBF
bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9sZE1hcEl0LT52YWx1ZSA9PSBpdC0+dmFs
dWUpCisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRNYXBJdC0+c2Vjb25kID09IGl0LT5zZWNv
bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+a2V5Lmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJO
b2RlKHJlbmRlcmVyLCBpdC0+Zmlyc3QuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAvLyBXZSBtdXN0IGNyZWF0ZSB0aGlzIG5vZGUgaGVyZSwgYmVjYXVzZSB0aGUg
Y2hhbmdlZCBub2RlIG1heSBiZSBhIG5vZGUgd2l0aCBubyBkaXNwbGF5IHN1Y2ggYXMKICAgICAg
ICAgICAgICAgICAvLyBhcyB0aG9zZSBjcmVhdGVkIGJ5IHRoZSBpbmNyZW1lbnQgb3IgcmVzZXQg
ZGlyZWN0aXZlcyBhbmQgdGhlIHJlLWxheW91dCB0aGF0IHdpbGwgaGFwcGVuIHdpbGwKICAgICAg
ICAgICAgICAgICAvLyBub3QgY2F0Y2ggdGhlIGNoYW5nZSBpZiB0aGUgbm9kZSBoYWQgbm8gY2hp
bGRyZW4uCi0gICAgICAgICAgICAgICAgbWFrZUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+a2V5
LmdldCgpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgbWFrZUNvdW50ZXJOb2RlKHJlbmRlcmVy
LCBpdC0+Zmlyc3QuZ2V0KCksIGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IERlc3Ryb3lpbmcgb2xkIGNvdW50ZXJzIHRoYXQgZG8gbm90IGV4aXN0IGluIHRoZSBuZXcgY291
bnRlckRpcmVjdGl2ZSBtYXAuCiAgICAgICAgICAgICBmb3IgKENvdW50ZXJEaXJlY3RpdmVNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gb2xkQ291bnRlckRpcmVjdGl2ZXMtPmJlZ2luKCk7IGl0ICE9
b2xkTWFwRW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFuZXdDb3VudGVyRGlyZWN0
aXZlcy0+Y29udGFpbnMoaXQtPmtleSkpCi0gICAgICAgICAgICAgICAgICAgIFJlbmRlckNvdW50
ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZShyZW5kZXJlciwgaXQtPmtleS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgaWYgKCFuZXdDb3VudGVyRGlyZWN0aXZlcy0+Y29udGFpbnMoaXQtPmZpcnN0KSkK
KyAgICAgICAgICAgICAgICAgICAgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKHJl
bmRlcmVyLCBpdC0+Zmlyc3QuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5oYXNDb3VudGVyTm9kZU1hcCgpKQpAQCAtNzEw
LDcgKzcxMCw3IEBAIHZvaWQgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICAvLyBXZSBt
dXN0IGNyZWF0ZSB0aGlzIG5vZGUgaGVyZSwgYmVjYXVzZSB0aGUgYWRkZWQgbm9kZSBtYXkgYmUg
YSBub2RlIHdpdGggbm8gZGlzcGxheSBzdWNoIGFzCiAgICAgICAgICAgICAvLyBhcyB0aG9zZSBj
cmVhdGVkIGJ5IHRoZSBpbmNyZW1lbnQgb3IgcmVzZXQgZGlyZWN0aXZlcyBhbmQgdGhlIHJlLWxh
eW91dCB0aGF0IHdpbGwgaGFwcGVuIHdpbGwKICAgICAgICAgICAgIC8vIG5vdCBjYXRjaCB0aGUg
Y2hhbmdlIGlmIHRoZSBub2RlIGhhZCBubyBjaGlsZHJlbi4KLSAgICAgICAgICAgIG1ha2VDb3Vu
dGVyTm9kZShyZW5kZXJlciwgaXQtPmtleS5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgbWFr
ZUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+Zmlyc3QuZ2V0KCksIGZhbHNlKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcAppbmRleCA3N2YyZWY3Mjg1YmVhMjc5MTUxZTI3NzExNTE0NzZhYTdkYmNhM2EyLi5kMzA1
OWRmMTM1MDQxOWUwZTFkYmNhMmFiNTUxOGU2YjFmNDhmZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC02MjAsNyArNjIwLDcgQEAgdm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gq
IGJveCwgTGF5b3V0VW5pdCBvZmYKICAgICB9CiAKICAgICAvLyBJZiBub3RoaW5nIGNoYW5nZWQs
IGp1c3QgYmFpbC4KLSAgICBSZW5kZXJSZWdpb25SYW5nZSYgcmFuZ2UgPSBpdC0+dmFsdWU7Cisg
ICAgUmVuZGVyUmVnaW9uUmFuZ2UmIHJhbmdlID0gaXQtPnNlY29uZDsKICAgICBpZiAocmFuZ2Uu
c3RhcnRSZWdpb24oKSA9PSBzdGFydFJlZ2lvbiAmJiByYW5nZS5lbmRSZWdpb24oKSA9PSBlbmRS
ZWdpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgUmVuZGVy
Rmxvd1RocmVhZDo6Z2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIFJl
bmRlclJlZ2lvbiomCiAgICAgaWYgKGl0ID09IG1fcmVnaW9uUmFuZ2VNYXAuZW5kKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbnN0IFJlbmRlclJlZ2lvblJhbmdlJiByYW5nZSA9IGl0LT52
YWx1ZTsKKyAgICBjb25zdCBSZW5kZXJSZWdpb25SYW5nZSYgcmFuZ2UgPSBpdC0+c2Vjb25kOwog
ICAgIHN0YXJ0UmVnaW9uID0gcmFuZ2Uuc3RhcnRSZWdpb24oKTsKICAgICBlbmRSZWdpb24gPSBy
YW5nZS5lbmRSZWdpb24oKTsKICAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHN0YXJ0
UmVnaW9uKSAmJiBtX3JlZ2lvbkxpc3QuY29udGFpbnMoZW5kUmVnaW9uKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1NWI3NjE1NzIzMGZlNjQzZjNkOGYw
ZTVjOGEzZmI5ZTQ2NThjMzJkLi4yZDkxZmQ4YjJlZTFmYTMzMWY2NTZkOGM2NzRjZjM4Y2NkNmFi
MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI4NzEs
NyArMjg3MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwKICAgICBwYWludExheWVyKHRoaXMs
IGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QoZGFtYWdlUmVjdCksIExheW91dFNpemUoKSwgcGFp
bnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCByZWdpb24sICZvdmVybGFwVGVzdFJlcXVlc3RzLCBw
YWludEZsYWdzKTsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGVuZCA9IG92
ZXJsYXBUZXN0UmVxdWVzdHMuZW5kKCk7CiAgICAgZm9yIChPdmVybGFwVGVzdFJlcXVlc3RNYXA6
Oml0ZXJhdG9yIGl0ID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGl0LT5rZXktPnNldE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKKyAgICAg
ICAgaXQtPmZpcnN0LT5zZXRPdmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CiB9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZp
b3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290KQpAQCAtMjk0MCwxMSArMjk0MCwxMSBAQCBz
dGF0aWMgdm9pZCBwZXJmb3JtT3ZlcmxhcFRlc3RzKE92ZXJsYXBUZXN0UmVxdWVzdE1hcCYgb3Zl
cmxhcFRlc3RSZXF1ZXN0cywgY29ucwogICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRlcmF0
b3IgZW5kID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5lbmQoKTsKICAgICBMYXlvdXRSZWN0IGJvdW5k
aW5nQm94ID0gbGF5ZXItPmJvdW5kaW5nQm94KHJvb3RMYXllcik7CiAgICAgZm9yIChPdmVybGFw
VGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pbnRlcnNlY3Rz
KGl0LT52YWx1ZSkpCisgICAgICAgIGlmICghYm91bmRpbmdCb3guaW50ZXJzZWN0cyhpdC0+c2Vj
b25kKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGl0LT5rZXktPnNldE92ZXJs
YXBUZXN0UmVzdWx0KHRydWUpOwotICAgICAgICBvdmVybGFwcGVkUmVxdWVzdENsaWVudHMuYXBw
ZW5kKGl0LT5rZXkpOworICAgICAgICBpdC0+Zmlyc3QtPnNldE92ZXJsYXBUZXN0UmVzdWx0KHRy
dWUpOworICAgICAgICBvdmVybGFwcGVkUmVxdWVzdENsaWVudHMuYXBwZW5kKGl0LT5maXJzdCk7
CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3ZlcmxhcHBlZFJlcXVlc3RDbGll
bnRzLnNpemUoKTsgKytpKQogICAgICAgICBvdmVybGFwVGVzdFJlcXVlc3RzLnJlbW92ZShvdmVy
bGFwcGVkUmVxdWVzdENsaWVudHNbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAppbmRleCBjYjRjNWQ2NjExMGM5MjQxMmYzNTBl
YTg5OTMyNzJjZTYyY2Q3ZTA4Li5hY2JmMDdkOWQxYmZkMjAyMWM1NTQxNTI2NmRkNDQzMDUwNTU1
YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvLmNwcApAQCAtNTYsNyArNTYsNyBAQCBSZW5kZXJMYXllckZpbHRlckluZm8qIFJlbmRl
ckxheWVyRmlsdGVySW5mbzo6ZmlsdGVySW5mb0ZvclJlbmRlckxheWVyKGNvbnN0IFJlbgogICAg
IGlmICghc19maWx0ZXJNYXApCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlbmRlckxheWVyRmls
dGVySW5mb01hcDo6aXRlcmF0b3IgaXRlciA9IHNfZmlsdGVyTWFwLT5maW5kKGxheWVyKTsKLSAg
ICByZXR1cm4gKGl0ZXIgIT0gc19maWx0ZXJNYXAtPmVuZCgpKSA/IGl0ZXItPnZhbHVlIDogMDsK
KyAgICByZXR1cm4gKGl0ZXIgIT0gc19maWx0ZXJNYXAtPmVuZCgpKSA/IGl0ZXItPnNlY29uZCA6
IDA7CiB9CiAKIFJlbmRlckxheWVyRmlsdGVySW5mbyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpj
cmVhdGVGaWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXJJZk5lZWRlZChSZW5kZXJMYXllciogbGF5ZXIp
CkBAIC02Nyw3ICs2Nyw3IEBAIFJlbmRlckxheWVyRmlsdGVySW5mbyogUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvOjpjcmVhdGVGaWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXJJZk5lCiAgICAgUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvTWFwOjppdGVyYXRvciBpdGVyID0gc19maWx0ZXJNYXAtPmZpbmQobGF5ZXIp
OwogICAgIGlmIChpdGVyICE9IHNfZmlsdGVyTWFwLT5lbmQoKSkgewogICAgICAgICBBU1NFUlQo
bGF5ZXItPmhhc0ZpbHRlckluZm8oKSk7Ci0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKyAg
ICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKICAgICB9CiAgICAgCiAgICAgUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvKiBmaWx0ZXIgPSBuZXcgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKGxheWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAK
aW5kZXggYzEyZmNmNzNmZDZkZjI2NDFhZjIyNWM5MTkyYzdhNzI5NTI4OTc5Yi4uNWIwMjQ1M2U0
YzZjM2RiYWVkNjNkZGE1MGVhMzM5NGNiZTQ3Y2YyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGVwZW5kc09uKFJlbmRlck5hbWVkRmxvd1Ro
cmVhZCogb3RoZXJSZW5kZXJGbG93VGhyZQogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZENvdW50
ZWRTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0
LmJlZ2luKCk7CiAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkQ291bnRlZFNldDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmVuZCgpOwogICAgIGZvciAoOyBp
dGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsKLSAgICAgICAgY29uc3QgUmVuZGVyTmFtZWRG
bG93VGhyZWFkKiBiZWZvcmVGbG93VGhyZWFkID0gKCppdGVyYXRvcikua2V5OworICAgICAgICBj
b25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIGJlZm9yZUZsb3dUaHJlYWQgPSAoKml0ZXJhdG9y
KS5maXJzdDsKICAgICAgICAgaWYgKGJlZm9yZUZsb3dUaHJlYWQtPmRlcGVuZHNPbihvdGhlclJl
bmRlckZsb3dUaHJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjUx
LDcgKzI1MSw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW1vdmVEZXBlbmRlbmN5
T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVhZCoKIHZvaWQgUmVuZGVyTmFtZWRGbG93
VGhyZWFkOjpwdXNoRGVwZW5kZW5jaWVzKFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3QmIGxpc3Qp
CiB7CiAgICAgZm9yIChSZW5kZXJOYW1lZEZsb3dUaHJlYWRDb3VudGVkU2V0OjppdGVyYXRvciBp
dGVyID0gbV9sYXlvdXRCZWZvcmVUaHJlYWRzU2V0LmJlZ2luKCk7IGl0ZXIgIT0gbV9sYXlvdXRC
ZWZvcmVUaHJlYWRzU2V0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyTmFtZWRGbG93
VGhyZWFkKiBmbG93VGhyZWFkID0gKCppdGVyKS5rZXk7CisgICAgICAgIFJlbmRlck5hbWVkRmxv
d1RocmVhZCogZmxvd1RocmVhZCA9ICgqaXRlcikuZmlyc3Q7CiAgICAgICAgIGlmIChsaXN0LmNv
bnRhaW5zKGZsb3dUaHJlYWQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZsb3dU
aHJlYWQtPnB1c2hEZXBlbmRlbmNpZXMobGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwCmluZGV4IGQ3OTJiODAxOTAzYjExMGNkMjhmNTAzNWNjN2IyZWY1ZTlj
YWQ0MzkuLmRiZGJlODNmN2I1YzU4MzFmOGY5NDQxYmYwMTA1ODQzNjE5YTEzNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAg
UmVuZGVyQm94UmVnaW9uSW5mbyogUmVuZGVyUmVnaW9uOjpzZXRSZW5kZXJCb3hSZWdpb25JbmZv
KGNvbnN0IFJlbmRlckJveCogYm94LAogICAgIGlmICghbV9pc1ZhbGlkIHx8ICFtX2Zsb3dUaHJl
YWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+
JiBib3hJbmZvID0gbV9yZW5kZXJCb3hSZWdpb25JbmZvLmFkZChib3gsIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4mIGJveEluZm8gPSBt
X3JlbmRlckJveFJlZ2lvbkluZm8uYWRkKGJveCwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsK
ICAgICBpZiAoYm94SW5mbykKICAgICAgICAgKmJveEluZm8gPSBSZW5kZXJCb3hSZWdpb25JbmZv
KGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFp
bklzSW5zZXQpOwogICAgIGVsc2UKQEAgLTMxOCw4ICszMTgsOCBAQCB2b2lkIFJlbmRlclJlZ2lv
bjo6c2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKCkKICAgICAgICAgUmVmUHRyPFJlbmRlclN0
eWxlPiBvYmplY3RTdHlsZUluUmVnaW9uOwogICAgICAgICBib29sIG9iamVjdFJlZ2lvblN0eWxl
Q2FjaGVkID0gZmFsc2U7CiAgICAgICAgIGlmIChpdCAhPSBtX3JlbmRlck9iamVjdFJlZ2lvblN0
eWxlLmVuZCgpKSB7Ci0gICAgICAgICAgICBvYmplY3RTdHlsZUluUmVnaW9uID0gaXQtPnZhbHVl
LnN0eWxlOwotICAgICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5jYWNoZWQpOworICAgICAgICAg
ICAgb2JqZWN0U3R5bGVJblJlZ2lvbiA9IGl0LT5zZWNvbmQuc3R5bGU7CisgICAgICAgICAgICBB
U1NFUlQoaXQtPnNlY29uZC5jYWNoZWQpOwogICAgICAgICAgICAgb2JqZWN0UmVnaW9uU3R5bGVD
YWNoZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG9iamVjdFN0eWxlSW5S
ZWdpb24gPSBjb21wdXRlU3R5bGVJblJlZ2lvbihvYmplY3QpOwpAQCAtMzM3LDEyICszMzcsMTIg
QEAgdm9pZCBSZW5kZXJSZWdpb246OnJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSgp
CiAKICAgICBSZW5kZXJPYmplY3RSZWdpb25TdHlsZU1hcCB0ZW1wOwogICAgIGZvciAoUmVuZGVy
T2JqZWN0UmVnaW9uU3R5bGVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlbmRlck9iamVjdFJlZ2lv
blN0eWxlLmJlZ2luKCksIGVuZCA9IG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuZW5kKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBjb25z
dF9jYXN0PFJlbmRlck9iamVjdCo+KGl0ZXItPmtleSk7CisgICAgICAgIFJlbmRlck9iamVjdCog
b2JqZWN0ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihpdGVyLT5maXJzdCk7CiAgICAgICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gb2JqZWN0UmVnaW9uU3R5bGUgPSBvYmplY3QtPnN0eWxlKCk7
Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gb2JqZWN0T3JpZ2luYWxTdHlsZSA9IGl0ZXIt
PnZhbHVlLnN0eWxlOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG9iamVjdE9yaWdpbmFs
U3R5bGUgPSBpdGVyLT5zZWNvbmQuc3R5bGU7CiAgICAgICAgIG9iamVjdC0+c2V0U3R5bGVJbnRl
cm5hbChvYmplY3RPcmlnaW5hbFN0eWxlKTsKIAotICAgICAgICBib29sIHNob3VsZENhY2hlUmVn
aW9uU3R5bGUgPSBpdGVyLT52YWx1ZS5jYWNoZWQ7CisgICAgICAgIGJvb2wgc2hvdWxkQ2FjaGVS
ZWdpb25TdHlsZSA9IGl0ZXItPnNlY29uZC5jYWNoZWQ7CiAgICAgICAgIGlmICghc2hvdWxkQ2Fj
aGVSZWdpb25TdHlsZSkgewogICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBzaG91bGQg
Y2FjaGUgdGhlIGNvbXB1dGVkIHN0eWxlIGluIHJlZ2lvbi4KICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcyA9IENvbnRleHRTZW5zaXRpdmVQcm9w
ZXJ0eU5vbmU7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBSZW5kZXJSZWdpb246OmNvbXB1dGVD
aGlsZHJlblN0eWxlSW5SZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gY2hpbGRTdHlsZUluUmVnaW9uOwogICAgICAgICBib29sIG9i
amVjdFJlZ2lvblN0eWxlQ2FjaGVkID0gZmFsc2U7CiAgICAgICAgIGlmIChpdCAhPSBtX3JlbmRl
ck9iamVjdFJlZ2lvblN0eWxlLmVuZCgpKSB7Ci0gICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdp
b24gPSBpdC0+dmFsdWUuc3R5bGU7CisgICAgICAgICAgICBjaGlsZFN0eWxlSW5SZWdpb24gPSBp
dC0+c2Vjb25kLnN0eWxlOwogICAgICAgICAgICAgb2JqZWN0UmVnaW9uU3R5bGVDYWNoZWQgPSB0
cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0Fub255bW91
cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAppbmRleCBiYzRkOTA0NGY2ZThkM2E3YzYzYjMyOTZmNWVmMzcyZTUzOTExMmUzLi41YzA4ZTdh
MWNlNDAwNDZmY2VkZTkxNDQ1NzIyYzlhMmZjYzUxOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FjaGVkQ29sbGFwc2Vk
Qm9yZGVyKGNvbnN0IFJlbmRlclRhYmwKICAgICBBU1NFUlQodGFibGUoKS0+Y29sbGFwc2VCb3Jk
ZXJzKCkpOwogICAgIEhhc2hNYXA8cGFpcjxjb25zdCBSZW5kZXJUYWJsZUNlbGwqLCBpbnQ+LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZT46Oml0ZXJhdG9yIGl0ID0gbV9jZWxsc0NvbGxhcHNlZEJvcmRl
cnMuZmluZChtYWtlX3BhaXIoY2VsbCwgc2lkZSkpOwogICAgIEFTU0VSVChpdCAhPSBtX2NlbGxz
Q29sbGFwc2VkQm9yZGVycy5lbmQoKSk7Ci0gICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICByZXR1
cm4gaXQtPnNlY29uZDsKIH0KIAogUmVuZGVyVGFibGVTZWN0aW9uKiBSZW5kZXJUYWJsZVNlY3Rp
b246OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3Qq
IHBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCA2NDA0ZDJhZmMxNDZlODE1NTgwNWI5ZWFlODA4NGIyYTQwYjgxZjM1Li4wYmM5ODA0ZmI3NTli
MTFlZDk2YTQwOTEwNmEwMTE2Nzk4YzIwNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCkBAIC0zODAsNyArMzgwLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVN
YWM6OnN5c3RlbUNvbG9yKGludCBjc3NWYWx1ZUlkKSBjb25zdAogICAgIHsKICAgICAgICAgSGFz
aE1hcDxpbnQsIFJHQkEzMj46Oml0ZXJhdG9yIGl0ID0gbV9zeXN0ZW1Db2xvckNhY2hlLmZpbmQo
Y3NzVmFsdWVJZCk7CiAgICAgICAgIGlmIChpdCAhPSBtX3N5c3RlbUNvbG9yQ2FjaGUuZW5kKCkp
Ci0gICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CiAgICAgfQogCiAgICAgQ29sb3IgY29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKaW5kZXggOGZkYzk0YmZjZDQ2MzdmOTQ3OWM5Y2VlZGEzMDcyNTczMTAw
ZjMzMy4uOGNjMzRhMzMwZGM4ODI1NmQ1NTE4MGUwYjU1YjM0NDg3Zjc4ZWNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIEludFJl
Y3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQp
IGNvbnN0CiAgICAgICAgICAgICBzZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBhZG9wdFB0cihuZXcg
UmVuZGVyU2VsZWN0aW9uSW5mbyhvcywgY2xpcFRvVmlzaWJsZUNvbnRlbnQpKSk7CiAgICAgICAg
ICAgICBSZW5kZXJCbG9jayogY2IgPSBvcy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAg
ICB3aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXcoKSkgewotICAgICAgICAgICAgICAgIE93
blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gc2VsZWN0ZWRPYmplY3RzLmFk
ZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIE93blB0cjxS
ZW5kZXJTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gc2VsZWN0ZWRPYmplY3RzLmFkZChjYiwg
bnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZv
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBibG9ja0luZm8g
PSBhZG9wdFB0cihuZXcgUmVuZGVyU2VsZWN0aW9uSW5mbyhjYiwgY2xpcFRvVmlzaWJsZUNvbnRl
bnQpKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnNlbGVjdGlvbkJv
dW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBjb25zdAogICAgIExheW91dFJlY3Qgc2Vs
UmVjdDsKICAgICBTZWxlY3Rpb25NYXA6Oml0ZXJhdG9yIGVuZCA9IHNlbGVjdGVkT2JqZWN0cy5l
bmQoKTsKICAgICBmb3IgKFNlbGVjdGlvbk1hcDo6aXRlcmF0b3IgaSA9IHNlbGVjdGVkT2JqZWN0
cy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8q
IGluZm8gPSBpLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgUmVuZGVyU2VsZWN0aW9uSW5mbyogaW5m
byA9IGktPnNlY29uZC5nZXQoKTsKICAgICAgICAgLy8gUmVuZGVyU2VsZWN0aW9uSW5mbzo6cmVj
dCgpIGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgcmVwYWludENvbnRhaW5lciwgc28gbWFw
IHRvIHBhZ2UgY29vcmRpbmF0ZXMuCiAgICAgICAgIExheW91dFJlY3QgY3VyclJlY3QgPSBpbmZv
LT5yZWN0KCk7CiAgICAgICAgIGlmIChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciA9IGluZm8tPnJlcGFpbnRDb250YWluZXIoKSkgewpAQCAtNTE4LDcgKzUxOCw3IEBAIHZv
aWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFy
dFBvcywgUmVuZGVyT2JqZWN0KiBlCiAgICAgICAgICAgICBpZiAoYmxvY2tSZXBhaW50TW9kZSA9
PSBSZXBhaW50TmV3WE9ST2xkKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0g
b3MtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgICAgIHdoaWxlIChjYiAmJiAhY2It
PmlzUmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE93blB0cjxSZW5kZXJCbG9j
a1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBvbGRTZWxlY3RlZEJsb2Nrcy5hZGQoY2IsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgT3duUHRyPFJlbmRl
ckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG9sZFNlbGVjdGVkQmxvY2tzLmFkZChj
YiwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJs
b2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBibG9ja0luZm8gPSBhZG9wdFB0cihuZXcgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKGNi
KSk7CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVu
ZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKICAgICAvLyBO
b3cgY2xlYXIgdGhlIHNlbGVjdGlvbi4KICAgICBTZWxlY3RlZE9iamVjdE1hcDo6aXRlcmF0b3Ig
b2xkT2JqZWN0c0VuZCA9IG9sZFNlbGVjdGVkT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKFNlbGVj
dGVkT2JqZWN0TWFwOjppdGVyYXRvciBpID0gb2xkU2VsZWN0ZWRPYmplY3RzLmJlZ2luKCk7IGkg
IT0gb2xkT2JqZWN0c0VuZDsgKytpKQotICAgICAgICBpLT5rZXktPnNldFNlbGVjdGlvblN0YXRl
SWZOZWVkZWQoU2VsZWN0aW9uTm9uZSk7CisgICAgICAgIGktPmZpcnN0LT5zZXRTZWxlY3Rpb25T
dGF0ZUlmTmVlZGVkKFNlbGVjdGlvbk5vbmUpOwogCiAgICAgLy8gc2V0IHNlbGVjdGlvbiBzdGFy
dCBhbmQgZW5kCiAgICAgbV9zZWxlY3Rpb25TdGFydCA9IHN0YXJ0OwpAQCAtNTcxLDcgKzU3MSw3
IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGlu
dCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAgICAgICAgICAgICBuZXdTZWxlY3RlZE9iamVj
dHMuc2V0KG8sIGFkb3B0UHRyKG5ldyBSZW5kZXJTZWxlY3Rpb25JbmZvKG8sIHRydWUpKSk7CiAg
ICAgICAgICAgICBSZW5kZXJCbG9jayogY2IgPSBvLT5jb250YWluaW5nQmxvY2soKTsKICAgICAg
ICAgICAgIHdoaWxlIChjYiAmJiAhY2ItPmlzUmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAg
ICAgT3duUHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVj
dGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAg
ICAgIE93blB0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBuZXdTZWxl
Y3RlZEJsb2Nrcy5hZGQoY2IsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAg
ICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgYmxvY2tJbmZvID0gYWRvcHRQdHIobmV3IFJlbmRlckJsb2NrU2VsZWN0aW9uSW5m
byhjYikpOwpAQCAtNTg5LDkgKzU4OSw5IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9u
KFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAKICAg
ICAvLyBIYXZlIGFueSBvZiB0aGUgb2xkIHNlbGVjdGVkIG9iamVjdHMgY2hhbmdlZCBjb21wYXJl
ZCB0byB0aGUgbmV3IHNlbGVjdGlvbj8KICAgICBmb3IgKFNlbGVjdGVkT2JqZWN0TWFwOjppdGVy
YXRvciBpID0gb2xkU2VsZWN0ZWRPYmplY3RzLmJlZ2luKCk7IGkgIT0gb2xkT2JqZWN0c0VuZDsg
KytpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogb2JqID0gaS0+a2V5OworICAgICAgICBSZW5k
ZXJPYmplY3QqIG9iaiA9IGktPmZpcnN0OwogICAgICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKiBu
ZXdJbmZvID0gbmV3U2VsZWN0ZWRPYmplY3RzLmdldChvYmopOwotICAgICAgICBSZW5kZXJTZWxl
Y3Rpb25JbmZvKiBvbGRJbmZvID0gaS0+dmFsdWUuZ2V0KCk7CisgICAgICAgIFJlbmRlclNlbGVj
dGlvbkluZm8qIG9sZEluZm8gPSBpLT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGlmICghbmV3SW5m
byB8fCBvbGRJbmZvLT5yZWN0KCkgIT0gbmV3SW5mby0+cmVjdCgpIHx8IG9sZEluZm8tPnN0YXRl
KCkgIT0gbmV3SW5mby0+c3RhdGUoKSB8fAogICAgICAgICAgICAgKG1fc2VsZWN0aW9uU3RhcnQg
PT0gb2JqICYmIG9sZFN0YXJ0UG9zICE9IG1fc2VsZWN0aW9uU3RhcnRQb3MpIHx8CiAgICAgICAg
ICAgICAobV9zZWxlY3Rpb25FbmQgPT0gb2JqICYmIG9sZEVuZFBvcyAhPSBtX3NlbGVjdGlvbkVu
ZFBvcykpIHsKQEAgLTYwNiwxNCArNjA2LDE0IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0
aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlCiAg
ICAgLy8gQW55IG5ldyBvYmplY3RzIHRoYXQgcmVtYWluIHdlcmUgbm90IGZvdW5kIGluIHRoZSBv
bGQgb2JqZWN0cyBkaWN0LCBhbmQgc28gdGhleSBuZWVkIHRvIGJlIHVwZGF0ZWQuCiAgICAgU2Vs
ZWN0ZWRPYmplY3RNYXA6Oml0ZXJhdG9yIG5ld09iamVjdHNFbmQgPSBuZXdTZWxlY3RlZE9iamVj
dHMuZW5kKCk7CiAgICAgZm9yIChTZWxlY3RlZE9iamVjdE1hcDo6aXRlcmF0b3IgaSA9IG5ld1Nl
bGVjdGVkT2JqZWN0cy5iZWdpbigpOyBpICE9IG5ld09iamVjdHNFbmQ7ICsraSkKLSAgICAgICAg
aS0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICAgICAgaS0+c2Vjb25kLT5yZXBhaW50KCk7CiAKICAg
ICAvLyBIYXZlIGFueSBvZiB0aGUgb2xkIGJsb2NrcyBjaGFuZ2VkPwogICAgIFNlbGVjdGVkQmxv
Y2tNYXA6Oml0ZXJhdG9yIG9sZEJsb2Nrc0VuZCA9IG9sZFNlbGVjdGVkQmxvY2tzLmVuZCgpOwog
ICAgIGZvciAoU2VsZWN0ZWRCbG9ja01hcDo6aXRlcmF0b3IgaSA9IG9sZFNlbGVjdGVkQmxvY2tz
LmJlZ2luKCk7IGkgIT0gb2xkQmxvY2tzRW5kOyArK2kpIHsKLSAgICAgICAgUmVuZGVyQmxvY2sq
IGJsb2NrID0gaS0+a2V5OworICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBpLT5maXJzdDsK
ICAgICAgICAgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKiBuZXdJbmZvID0gbmV3U2VsZWN0ZWRC
bG9ja3MuZ2V0KGJsb2NrKTsKLSAgICAgICAgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKiBvbGRJ
bmZvID0gaS0+dmFsdWUuZ2V0KCk7CisgICAgICAgIFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbyog
b2xkSW5mbyA9IGktPnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG9sZElu
Zm8tPnJlY3RzKCkgIT0gbmV3SW5mby0+cmVjdHMoKSB8fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5l
d0luZm8tPnN0YXRlKCkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAg
ICAgICAgIGlmIChuZXdJbmZvKSB7CkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJP
YmplY3QqIGUKICAgICAvLyBBbnkgbmV3IGJsb2NrcyB0aGF0IHJlbWFpbiB3ZXJlIG5vdCBmb3Vu
ZCBpbiB0aGUgb2xkIGJsb2NrcyBkaWN0LCBhbmQgc28gdGhleSBuZWVkIHRvIGJlIHVwZGF0ZWQu
CiAgICAgU2VsZWN0ZWRCbG9ja01hcDo6aXRlcmF0b3IgbmV3QmxvY2tzRW5kID0gbmV3U2VsZWN0
ZWRCbG9ja3MuZW5kKCk7CiAgICAgZm9yIChTZWxlY3RlZEJsb2NrTWFwOjppdGVyYXRvciBpID0g
bmV3U2VsZWN0ZWRCbG9ja3MuYmVnaW4oKTsgaSAhPSBuZXdCbG9ja3NFbmQ7ICsraSkKLSAgICAg
ICAgaS0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICAgICAgaS0+c2Vjb25kLT5yZXBhaW50KCk7CiAK
ICAgICBtX2ZyYW1lVmlldy0+ZW5kRGVmZXJyZWRSZXBhaW50cygpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCA1YmJmZmU0YmVhNzY2YjdkNjIzY2I4
NmMxMWY5M2E4ZWNhMzcyZTg1Li5mYzRmMmYzNWEzZTc3MGQwNGFjNGM2Y2IyMGEzMzEyNDgxM2Zk
OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNzAs
OSArNzAsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6cmVzdW1lV2lkZ2V0SGllcmFyY2h5VXBkYXRl
cygpCiAgICAgICAgIHdpZGdldE5ld1BhcmVudE1hcCgpLmNsZWFyKCk7CiAgICAgICAgIFdpZGdl
dFRvUGFyZW50TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CiAgICAgICAgIGZvciAoV2lk
Z2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgV2lkZ2V0KiBjaGlsZCA9IGl0LT5rZXkuZ2V0KCk7CisgICAgICAg
ICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmZpcnN0LmdldCgpOwogICAgICAgICAgICAgU2Nyb2xs
VmlldyogY3VycmVudFBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgICAgIEZyYW1l
VmlldyogbmV3UGFyZW50ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgRnJhbWVWaWV3KiBuZXdQ
YXJlbnQgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAgaWYgKG5ld1BhcmVudCAhPSBjdXJyZW50
UGFyZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJlbnQpCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRQYXJlbnQtPnJlbW92ZUNoaWxkKGNoaWxkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCAyYzE4MmUxZDdmYThlZWEzNjc2
YmViYmQ4MWJlMTFiNWMzNGIzNmFhLi40MzEzZmE3MzVhMTZhYzY5YjkxNWMxMmUwYTMzZTJlYTU5
YTY0NDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBA
IC03NTUsOCArNzU1LDggQEAgdm9pZCBSb290SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9y
Qm94KElubGluZUJveCogYm94LCBHbHlwaE92ZXJmbG93QW5kRmFsbGIKICAgICBHbHlwaE92ZXJm
bG93KiBnbHlwaE92ZXJmbG93ID0gMDsKICAgICBpZiAoYm94LT5pc1RleHQoKSkgewogICAgICAg
ICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94
RGF0YU1hcC5maW5kKHRvSW5saW5lVGV4dEJveChib3gpKTsKLSAgICAgICAgdXNlZEZvbnRzID0g
aXQgPT0gdGV4dEJveERhdGFNYXAuZW5kKCkgPyAwIDogJml0LT52YWx1ZS5maXJzdDsKLSAgICAg
ICAgZ2x5cGhPdmVyZmxvdyA9IGl0ID09IHRleHRCb3hEYXRhTWFwLmVuZCgpID8gMCA6ICZpdC0+
dmFsdWUuc2Vjb25kOworICAgICAgICB1c2VkRm9udHMgPSBpdCA9PSB0ZXh0Qm94RGF0YU1hcC5l
bmQoKSA/IDAgOiAmaXQtPnNlY29uZC5maXJzdDsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdyA9IGl0
ID09IHRleHRCb3hEYXRhTWFwLmVuZCgpID8gMCA6ICZpdC0+c2Vjb25kLnNlY29uZDsKICAgICB9
CiAgICAgICAgIAogICAgIGJvb2wgaW5jbHVkZUxlYWRpbmcgPSBpbmNsdWRlTGVhZGluZ0ZvckJv
eChib3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1ZlcnRpY2FsUG9z
aXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1ZlcnRpY2FsUG9zaXRpb25D
YWNoZS5oCmluZGV4IGI3Y2Q3ZTA4NWU3ZjliZWRiNTI4ZjYyZGVlZjU3YTdiYjhhYTViZTEuLmJi
Mzk4Nzc3MjFkYTcwNWMzN2JkM2I4ODE5MDI0Y2QyN2UzNmU1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9WZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVmVydGljYWxQb3NpdGlvbkNhY2hlLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgICAgICBjb25zdCBIYXNoTWFwPFJlbmRlck9iamVjdCosIGludD46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbWFwVG9DaGVjay5maW5kKHJlbmRlcmVyKTsKICAgICAgICAgaWYg
KGl0ID09IG1hcFRvQ2hlY2suZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25VbmRl
ZmluZWQ7Ci0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOwogICAgIH0KICAgICAKICAgICB2b2lkIHNldChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBG
b250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBpbnQgcG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvV3JhcFNoYXBlSW5mby5jcHAKaW5kZXggYWJkMzU1ZWI0MTkwMjU5ZjA2YmFiNzlm
OWVjMTBhZDM3YTlmMjdiYi4uMTU0NzA2NmIyOWRkNGE3M2Q5OGZhYjMzMTZjNmQwMjNlODZlMDUx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1dyYXBTaGFwZUluZm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9XcmFwU2hhcGVJbmZvLmNwcApAQCAtNjAs
NyArNjAsNyBAQCBXcmFwU2hhcGVJbmZvOjp+V3JhcFNoYXBlSW5mbygpCiBXcmFwU2hhcGVJbmZv
KiBXcmFwU2hhcGVJbmZvOjplbnN1cmVXcmFwU2hhcGVJbmZvRm9yUmVuZGVyQmxvY2soUmVuZGVy
QmxvY2sqIGJsb2NrKQogewogICAgIFdyYXBTaGFwZUluZm9NYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSB3cmFwU2hhcGVJbmZvTWFwKCkuYWRkKGJsb2NrLCBjcmVhdGUoYmxvY2spKTsKLSAgICByZXR1
cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJh
dG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKIFdyYXBTaGFwZUluZm8qIFdyYXBTaGFwZUluZm86Ondy
YXBTaGFwZUluZm9Gb3JSZW5kZXJCbG9jayhjb25zdCBSZW5kZXJCbG9jayogYmxvY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNw
cAppbmRleCAyMzcxZDFhYmY5Yzk2YmE0YTQ2MjhiOTNjYTQ5NDJhZjdhMDdiOTVmLi40NTRmN2Fh
NmQwN2I2YmQzMTIzMjM2YmVmY2E0OTllY2ZlNWEwN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTE1OCw3ICsx
NTgsNyBAQCBib29sIFJlbmRlclNWR0lubGluZVRleHQ6OmNoYXJhY3RlclN0YXJ0c05ld1RleHRD
aHVuayhpbnQgcG9zaXRpb24pIGNvbnN0CiAgICAgaWYgKGl0ID09IG1fbGF5b3V0QXR0cmlidXRl
cy5jaGFyYWN0ZXJEYXRhTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHJldHVybiBpdC0+dmFsdWUueCAhPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1
ZSgpIHx8IGl0LT52YWx1ZS55ICE9IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVl
KCk7CisgICAgcmV0dXJuIGl0LT5zZWNvbmQueCAhPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6
ZW1wdHlWYWx1ZSgpIHx8IGl0LT5zZWNvbmQueSAhPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6
ZW1wdHlWYWx1ZSgpOwogfQogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
CmluZGV4IDM4MzJiMmIwMWUzMDUwYTVmODQzYzY1ZjFjZGRjYjBlYzE1M2E5NjUuLmVlNmE0OWRi
ODhhOWZkNmM3NzA1ZmExOGI2ZWVjYTg4MTZlMWEyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0z
MzgsNyArMzM4LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0aXZlQXR0
cmlidXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqIG9iamVjdCwgY28KICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIHByaW1pdHZlID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4ob2JqZWN0LT5ub2RlKCkpOwogCiAgICAgZm9y
ICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0g
aXQtPnZhbHVlOworICAgICAgICBGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0gaXQtPnNlY29uZDsK
ICAgICAgICAgaWYgKCFmaWx0ZXJEYXRhLT5idWlsZGVkKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVjdCogb2JqZWN0LCBjbwogICAgICAgICBi
dWlsZGVyLT5jbGVhclJlc3VsdHNSZWN1cnNpdmUoZWZmZWN0KTsKIAogICAgICAgICAvLyBSZXBh
aW50IHRoZSBpbWFnZSBvbiB0aGUgc2NyZWVuLgotICAgICAgICBtYXJrQ2xpZW50Rm9ySW52YWxp
ZGF0aW9uKGl0LT5rZXksIFJlcGFpbnRJbnZhbGlkYXRpb24pOworICAgICAgICBtYXJrQ2xpZW50
Rm9ySW52YWxpZGF0aW9uKGl0LT5maXJzdCwgUmVwYWludEludmFsaWRhdGlvbik7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCAzMGNlMWI4Y2I0Zjk3OGMwMGRjYmRhMTdkZmI1
NTcyM2NmYzU4MDgxLi41OGUwMDc5YjIyY2IyYzVjMTdkOGYyZDRkNzNjYmJhMjEwYWE5YTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIFJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRl
clN0eWxlKgogICAgIGlmIChncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmIG9iamVjdEJvdW5kaW5nQm94LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPEdyYWRpZW50RGF0YT4mIGdyYWRp
ZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOworICAgIE93blB0cjxHcmFkaWVudERhdGE+JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50
TWFwLmFkZChvYmplY3QsIG51bGxwdHIpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFncmFk
aWVudERhdGEpCiAgICAgICAgIGdyYWRpZW50RGF0YSA9IGFkb3B0UHRyKG5ldyBHcmFkaWVudERh
dGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggM2ExODgyYWNmODIxNzIyODZiMjNiYjU0MmJl
NDA2NmEzYmFjY2NjNy4uYjRhZjk5OTE4NTUyYTE1NDg1MmJiMmE0YjQ3YjAzMGVkYTZhNTMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5
bGUqCiAgICAgaWYgKG1fYXR0cmlidXRlcy5wYXR0ZXJuVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1ggJiYgb2JqZWN0Qm91bmRpbmdCb3guaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBPd25QdHI8UGF0dGVybkRhdGE+
JiBwYXR0ZXJuRGF0YSA9IG1fcGF0dGVybk1hcC5hZGQob2JqZWN0LCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgT3duUHRyPFBhdHRlcm5EYXRhPiYgcGF0dGVybkRhdGEgPSBtX3BhdHRl
cm5NYXAuYWRkKG9iamVjdCwgbnVsbHB0cikuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXBh
dHRlcm5EYXRhKQogICAgICAgICBwYXR0ZXJuRGF0YSA9IGFkb3B0UHRyKG5ldyBQYXR0ZXJuRGF0
YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXND
YWNoZS5jcHAKaW5kZXggOGI0OGNmNTNlNzk5YTBiN2RlMmI1NGE0YzcxNTJlMDkyNzUzOWMwMi4u
Mjk3YzA3YjZhZDQwOWEyN2U2MzU4NTYwMDBjOWFkNGI5MDViNDM1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTE5OCwx
MSArMTk4LDExIEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OnJlc291cmNlRGVzdHJveWVkKFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiByZXNvdXJjZSkKIAogICAgIEhhc2hNYXA8Y29uc3Qg
UmVuZGVyT2JqZWN0KiwgU1ZHUmVzb3VyY2VzKj46Oml0ZXJhdG9yIGVuZCA9IGNhY2hlLT5tX2Nh
Y2hlLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBTVkdSZXNv
dXJjZXMqPjo6aXRlcmF0b3IgaXQgPSBjYWNoZS0+bV9jYWNoZS5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgaXQtPnZhbHVlLT5yZXNvdXJjZURlc3Ryb3llZChyZXNvdXJjZSk7
CisgICAgICAgIGl0LT5zZWNvbmQtPnJlc291cmNlRGVzdHJveWVkKHJlc291cmNlKTsKIAogICAg
ICAgICAvLyBNYXJrIHVzZXJzIG9mIGRlc3Ryb3llZCByZXNvdXJjZXMgYXMgcGVuZGluZyByZXNv
bHV0aW9uIGJhc2VkIG9uIHRoZSBpZCBvZiB0aGUgb2xkIHJlc291cmNlLgogICAgICAgICBFbGVt
ZW50KiByZXNvdXJjZUVsZW1lbnQgPSB0b0VsZW1lbnQocmVzb3VyY2UtPm5vZGUoKSk7Ci0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQqIGNsaWVudEVsZW1lbnQgPSB0b1NWR1N0eWxlZEVsZW1lbnQo
aXQtPmtleS0+bm9kZSgpKTsKKyAgICAgICAgU1ZHU3R5bGVkRWxlbWVudCogY2xpZW50RWxlbWVu
dCA9IHRvU1ZHU3R5bGVkRWxlbWVudChpdC0+Zmlyc3QtPm5vZGUoKSk7CiAgICAgICAgIFNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IGNsaWVudEVsZW1lbnQtPmRvY3VtZW50KCkt
PmFjY2Vzc1NWR0V4dGVuc2lvbnMoKTsKIAogICAgICAgICBleHRlbnNpb25zLT5hZGRQZW5kaW5n
UmVzb3VyY2UocmVzb3VyY2VFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aWRB
dHRyKSwgY2xpZW50RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRleCA1NDZmZWMyNmNlNjk4MWFjZDFmY2Q3YWJlMGEw
YTk4MzhjNzBiNDNjLi4zNGU5M2EwMmVmNzQzMmUzYzI2ZWYyMzYwZDFjZjNmZDQzN2U0MTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5j
cHAKQEAgLTIyNiwxNyArMjI2LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzd2FwSXRlbXNJbkxh
eW91dEF0dHJpYnV0ZXMoU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqIGZpcnN0QXR0CiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChmaXJzdFByZXNlbnQgJiYgbGFzdFByZXNlbnQpIHsKLSAgICAg
ICAgc3RkOjpzd2FwKGl0Rmlyc3QtPnZhbHVlLCBpdExhc3QtPnZhbHVlKTsKKyAgICAgICAgc3Rk
Ojpzd2FwKGl0Rmlyc3QtPnNlY29uZCwgaXRMYXN0LT5zZWNvbmQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKGZpcnN0UHJlc2VudCAmJiAhbGFzdFByZXNlbnQpIHsKLSAgICAg
ICAgbGFzdEF0dHJpYnV0ZXMtPmNoYXJhY3RlckRhdGFNYXAoKS5zZXQobGFzdFBvc2l0aW9uICsg
MSwgaXRGaXJzdC0+dmFsdWUpOworICAgICAgICBsYXN0QXR0cmlidXRlcy0+Y2hhcmFjdGVyRGF0
YU1hcCgpLnNldChsYXN0UG9zaXRpb24gKyAxLCBpdEZpcnN0LT5zZWNvbmQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgLy8gIWZpcnN0UHJlc2VudCAmJiBsYXN0UHJlc2VudAotICAg
IGZpcnN0QXR0cmlidXRlcy0+Y2hhcmFjdGVyRGF0YU1hcCgpLnNldChmaXJzdFBvc2l0aW9uICsg
MSwgaXRMYXN0LT52YWx1ZSk7CisgICAgZmlyc3RBdHRyaWJ1dGVzLT5jaGFyYWN0ZXJEYXRhTWFw
KCkuc2V0KGZpcnN0UG9zaXRpb24gKyAxLCBpdExhc3QtPnNlY29uZCk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgdm9pZCBmaW5kRmlyc3RBbmRMYXN0QXR0cmlidXRlc0luVmVjdG9yKFZlY3RvcjxTVkdU
ZXh0TGF5b3V0QXR0cmlidXRlcyo+JiBhdHRyaWJ1dGVzLCBSZW5kZXJTVkdJbmxpbmVUZXh0KiBm
aXJzdENvbnRleHQsIFJlbmRlclNWR0lubGluZVRleHQqIGxhc3RDb250ZXh0LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
LmNwcAppbmRleCA2N2ZhMGZhOTgyYWQ2MGJhNzI2NTFhODQ1NDk1ODFmN2ViNTBjZDBhLi5hOTI1
OTZjZWVlZGJlMjVhZjc3N2RmNGE0YzgzY2QzZWY5N2I5Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcApA
QCAtNjIsOCArNjIsOCBAQCB2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjpkdW1wKCkgY29u
c3QKICAgICBmcHJpbnRmKHN0ZGVyciwgImNvbnRleHQ6ICVwXG4iLCBtX2NvbnRleHQpOwogICAg
IGNvbnN0IFNWR0NoYXJhY3RlckRhdGFNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2hhcmFj
dGVyRGF0YU1hcC5lbmQoKTsKICAgICBmb3IgKFNWR0NoYXJhY3RlckRhdGFNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9jaGFyYWN0ZXJEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBjb25zdCBTVkdDaGFyYWN0ZXJEYXRhJiBkYXRhID0gaXQtPnZhbHVlOwotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiAtLS0+IHBvcz0laSwgZGF0YT17IiwgaXQtPmtleSk7Cisg
ICAgICAgIGNvbnN0IFNWR0NoYXJhY3RlckRhdGEmIGRhdGEgPSBpdC0+c2Vjb25kOworICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiAtLS0+IHBvcz0laSwgZGF0YT17IiwgaXQtPmZpcnN0KTsKICAg
ICAgICAgZHVtcFNWR0NoYXJhY3RlckRhdGFNYXBWYWx1ZSgieCIsIGRhdGEueCk7CiAgICAgICAg
IGR1bXBTVkdDaGFyYWN0ZXJEYXRhTWFwVmFsdWUoInkiLCBkYXRhLnkpOwogICAgICAgICBkdW1w
U1ZHQ2hhcmFjdGVyRGF0YU1hcFZhbHVlKCJkeCIsIGRhdGEuZHgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIuY3BwCmluZGV4IGI5NjlhNTMxOWU4MGFjNzg3MmE1ZTQxZDhkZTc3NDMwNDhiZGM0
M2IuLmJlMmExMmZlOTYwYjc5MjQ4MzEzZGYzNjk5MTQ1MDNmZWU5YTI5MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzQnVpbGRlci5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRDaGFyYWN0ZXJEYXRhTWFwKFJlbmRlclNWR1RleHQq
IHRleHRSbwogICAgICAgICBkYXRhLnkgPSAwOwogICAgICAgICBtX2NoYXJhY3RlckRhdGFNYXAu
c2V0KDEsIGRhdGEpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFNWR0NoYXJhY3RlckRhdGEmIGRh
dGEgPSBpdC0+dmFsdWU7CisgICAgICAgIFNWR0NoYXJhY3RlckRhdGEmIGRhdGEgPSBpdC0+c2Vj
b25kOwogICAgICAgICBpZiAoZGF0YS54ID09IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0
eVZhbHVlKCkpCiAgICAgICAgICAgICBkYXRhLnggPSAwOwogICAgICAgICBpZiAoZGF0YS55ID09
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVlKCkpCkBAIC0yMTMsNyArMjEzLDcg
QEAgdm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmZpbGxDaGFyYWN0ZXJEYXRh
TWFwKGNvbnN0IFRleHRQb3NpdGlvbiYgcG8KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKLSAgICAgICAgdXBkYXRlQ2hhcmFjdGVyRGF0YShpLCBsYXN0Um90YXRpb24sIGl0LT52
YWx1ZSwgbGVuZ3RoQ29udGV4dCwgeExpc3RQdHIsIHlMaXN0UHRyLCBkeExpc3RQdHIsIGR5TGlz
dFB0ciwgcm90YXRlTGlzdFB0cik7CisgICAgICAgIHVwZGF0ZUNoYXJhY3RlckRhdGEoaSwgbGFz
dFJvdGF0aW9uLCBpdC0+c2Vjb25kLCBsZW5ndGhDb250ZXh0LCB4TGlzdFB0ciwgeUxpc3RQdHIs
IGR4TGlzdFB0ciwgZHlMaXN0UHRyLCByb3RhdGVMaXN0UHRyKTsKICAgICB9CiAKICAgICAvLyBU
aGUgbGFzdCByb3RhdGlvbiB2YWx1ZSBhbHdheXMgc3BhbnMgdGhlIHdob2xlIHNjb3BlLgpAQCAt
MjI5LDcgKzIyOSw3IEBAIHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpmaWxs
Q2hhcmFjdGVyRGF0YU1hcChjb25zdCBUZXh0UG9zaXRpb24mIHBvCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGl0LT52YWx1ZS5yb3RhdGUgPSBsYXN0Um90YXRp
b247CisgICAgICAgIGl0LT5zZWNvbmQucm90YXRlID0gbGFzdFJvdGF0aW9uOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
RW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVu
Z2luZS5jcHAKaW5kZXggYmEyYjc2MzlkM2Y5NWI3Mzg5NDc1ZmEyZGMwMGM5YTZhYTg1YjMxNS4u
NWM1NDliMjFjODc1MjA4NDcyNDZhZjI1NGZkMDU5ZjJlM2I5YjVlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCkBAIC00
NzUsNyArNDc1LDcgQEAgdm9pZCBTVkdUZXh0TGF5b3V0RW5naW5lOjpsYXlvdXRUZXh0T25MaW5l
T3JQYXRoKFNWR0lubGluZVRleHRCb3gqIHRleHRCb3gsIFJlbmQKICAgICAgICAgU1ZHQ2hhcmFj
dGVyRGF0YSBkYXRhOwogICAgICAgICBTVkdDaGFyYWN0ZXJEYXRhTWFwOjppdGVyYXRvciBpdCA9
IGNoYXJhY3RlckRhdGFNYXAuZmluZChtX2xvZ2ljYWxDaGFyYWN0ZXJPZmZzZXQgKyAxKTsKICAg
ICAgICAgaWYgKGl0ICE9IGNoYXJhY3RlckRhdGFNYXAuZW5kKCkpCi0gICAgICAgICAgICBkYXRh
ID0gaXQtPnZhbHVlOworICAgICAgICAgICAgZGF0YSA9IGl0LT5zZWNvbmQ7CiAKICAgICAgICAg
ZmxvYXQgeCA9IGRhdGEueDsKICAgICAgICAgZmxvYXQgeSA9IGRhdGEueTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApp
bmRleCAwNWQ4MDVmNzdmMmY5ZDI5MDAyNjFiMGI2MGNhNjg2ZTFlYTBjYmExLi41YWM4NWNiYmU4
NDc3MTBmZDVhZTFlMjJmZjNmMzM2MjExNmE4NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xNjEsNyAr
MTYxLDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6Om1lYXN1cmVUZXh0UmVuZGVyZXIo
UmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCwgTWVhc3UKICAgICAgICAgICAgIGlmIChkYXRhLT5h
bGxDaGFyYWN0ZXJzTWFwKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgU1ZHQ2hhcmFjdGVyRGF0
YU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkYXRhLT5hbGxDaGFyYWN0ZXJzTWFwLT5maW5kKGRh
dGEtPnZhbHVlTGlzdFBvc2l0aW9uICsgbV90ZXh0UG9zaXRpb24gLSBkYXRhLT5za2lwcGVkQ2hh
cmFjdGVycyAtIHN1cnJvZ2F0ZVBhaXJDaGFyYWN0ZXJzICsgMSk7CiAgICAgICAgICAgICAgICAg
aWYgKGl0ICE9IGRhdGEtPmFsbENoYXJhY3RlcnNNYXAtPmVuZCgpKQotICAgICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGVzLT5jaGFyYWN0ZXJEYXRhTWFwKCkuc2V0KG1fdGV4dFBvc2l0aW9uICsg
MSwgaXQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcy0+Y2hhcmFjdGVy
RGF0YU1hcCgpLnNldChtX3RleHRQb3NpdGlvbiArIDEsIGl0LT5zZWNvbmQpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgdGV4dE1ldHJpY3NWYWx1ZXMtPmFwcGVuZChtX2N1cnJlbnRNZXRy
aWNzKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
Y3BwCmluZGV4IGZjYjEyNmExZDU2ZDVhZmNjOWFiZWJhNjIxZmIwNzc4ZTMyYjdmZTIuLjQ0MjA5
YzZmNTlkMGQyYTFkN2YzM2IyZjExMjlhODdlOTA0NWU3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFN0b3Jh
Z2VBcmVhU3luYzo6c3luY1RpbWVyRmlyZWQoVGltZXI8U3RvcmFnZUFyZWFTeW5jPiopCiAgICAg
ICAgICAgICAgICAgcGFydGlhbFN5bmMgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9pdGVtc1BlbmRpbmdTeW5jLnNldChjaGFuZ2Vk
X2l0LT5rZXkuaXNvbGF0ZWRDb3B5KCksIGNoYW5nZWRfaXQtPnZhbHVlLmlzb2xhdGVkQ29weSgp
KTsKKyAgICAgICAgICAgIG1faXRlbXNQZW5kaW5nU3luYy5zZXQoY2hhbmdlZF9pdC0+Zmlyc3Qu
aXNvbGF0ZWRDb3B5KCksIGNoYW5nZWRfaXQtPnNlY29uZC5pc29sYXRlZENvcHkoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAocGFydGlhbFN5bmMpIHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luY1RpbWVyRmlyZWQoVGltZXI8U3RvcmFnZUFyZWFTeW5j
PiopCiAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgcGVuZGlu
Z19pdCA9IG1faXRlbXNQZW5kaW5nU3luYy5iZWdpbigpOwogICAgICAgICAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIHBlbmRpbmdfZW5kID0gbV9pdGVtc1BlbmRpbmdTeW5j
LmVuZCgpOwogICAgICAgICAgICAgZm9yICg7IHBlbmRpbmdfaXQgIT0gcGVuZGluZ19lbmQ7ICsr
cGVuZGluZ19pdCkKLSAgICAgICAgICAgICAgICBtX2NoYW5nZWRJdGVtcy5yZW1vdmUocGVuZGlu
Z19pdC0+a2V5KTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWRJdGVtcy5yZW1vdmUocGVuZGlu
Z19pdC0+Zmlyc3QpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX3N5bmNTY2hlZHVsZWQp
IHsKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9y
dCgpCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9IGl0ZW1NYXAu
ZW5kKCk7CiAKICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBtX3N0b3JhZ2VB
cmVhLT5pbXBvcnRJdGVtKGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgICAgIG1fc3RvcmFnZUFy
ZWEtPmltcG9ydEl0ZW0oaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKIAogICAgIG1hcmtJbXBvcnRl
ZCgpOwogfQpAQCAtNDM5LDEzICs0MzksMTMgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmMo
Ym9vbCBjbGVhckl0ZW1zLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMKICAg
ICB0cmFuc2FjdGlvbi5iZWdpbigpOwogICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaXRlbXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIC8vIEJhc2VkIG9uIHRoZSBudWxsLW5lc3Mgb2YgdGhlIHNlY29uZCBhcmd1bWVudCwg
ZGVjaWRlIHdoZXRoZXIgdGhpcyBpcyBhbiBpbnNlcnQgb3IgYSBkZWxldGUuCi0gICAgICAgIFNR
TGl0ZVN0YXRlbWVudCYgcXVlcnkgPSBpdC0+dmFsdWUuaXNOdWxsKCkgPyByZW1vdmUgOiBpbnNl
cnQ7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCYgcXVlcnkgPSBpdC0+c2Vjb25kLmlzTnVsbCgp
ID8gcmVtb3ZlIDogaW5zZXJ0OwogCi0gICAgICAgIHF1ZXJ5LmJpbmRUZXh0KDEsIGl0LT5rZXkp
OworICAgICAgICBxdWVyeS5iaW5kVGV4dCgxLCBpdC0+Zmlyc3QpOwogCiAgICAgICAgIC8vIElm
IHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbm9uLW51bGwsIHdlJ3JlIGRvaW5nIGFuIGluc2VydCwg
c28gYmluZCBpdCBhcyB0aGUgdmFsdWUuCi0gICAgICAgIGlmICghaXQtPnZhbHVlLmlzTnVsbCgp
KQotICAgICAgICAgICAgcXVlcnkuYmluZEJsb2IoMiwgaXQtPnZhbHVlKTsKKyAgICAgICAgaWYg
KCFpdC0+c2Vjb25kLmlzTnVsbCgpKQorICAgICAgICAgICAgcXVlcnkuYmluZEJsb2IoMiwgaXQt
PnNlY29uZCk7CiAKICAgICAgICAgaW50IHJlc3VsdCA9IHF1ZXJ5LnN0ZXAoKTsKICAgICAgICAg
aWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TWFwLmNwcAppbmRleCA0MGUxYTM4ZjFjYTRhNzlmMGNlMjQ3MDExNTM0N2FkYjkyOWY0OTgzLi44
ZTQyZDJmMTc2ZGQzYjExMTJhMDFhNTFkOGRiNjJmNGIzOGJiYTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZU1hcC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgU3RyaW5nIFN0b3JhZ2VNYXA6
OmtleSh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgc2V0
SXRlcmF0b3JUb0luZGV4KGluZGV4KTsKLSAgICByZXR1cm4gbV9pdGVyYXRvci0+a2V5OworICAg
IHJldHVybiBtX2l0ZXJhdG9yLT5maXJzdDsKIH0KIAogU3RyaW5nIFN0b3JhZ2VNYXA6OmdldEl0
ZW0oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CkBAIC0xMzMsNyArMTMzLDcgQEAgUGFzc1JlZlB0
cjxTdG9yYWdlTWFwPiBTdG9yYWdlTWFwOjpzZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHUKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjpBZGRSZXN1bHQg
YWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgdmFsdWUpOwogICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSB2YWx1ZTsKKyAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSB2YWx1ZTsKIAogICAgIGludmFsaWRh
dGVJdGVyYXRvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwCmluZGV4IDQ1MDFiMTFmYmMxNWNmNDIzOWQwN2ZjMzc0NzY0MTZkYmI3NWVm
Y2YuLjlkMWFjNTE3YTBlMmU3YjNmMjZiODIzYjI4OWE1OTM5NThiZGM4YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBTCiAgICAgICAgIHJldHVybiBzdG9yYWdlTmFt
ZXNwYWNlLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaXQtPnZhbHVlOworICAgIHJl
dHVybiBpdC0+c2Vjb25kOwogfQogCiBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkK
QEAgLTk3LDcgKzk3LDcgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y29weSgpCiAKICAgICBTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgZW5kID0g
bV9zdG9yYWdlQXJlYU1hcC5lbmQoKTsKICAgICBmb3IgKFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRv
ciBpID0gbV9zdG9yYWdlQXJlYU1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKQotICAgICAgICBu
ZXdOYW1lc3BhY2UtPm1fc3RvcmFnZUFyZWFNYXAuc2V0KGktPmtleSwgaS0+dmFsdWUtPmNvcHko
KSk7CisgICAgICAgIG5ld05hbWVzcGFjZS0+bV9zdG9yYWdlQXJlYU1hcC5zZXQoaS0+Zmlyc3Qs
IGktPnNlY29uZC0+Y29weSgpKTsKICAgICByZXR1cm4gbmV3TmFtZXNwYWNlLnJlbGVhc2UoKTsK
IH0KIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3Nl
KCkKIAogICAgIFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFw
LmVuZCgpOwogICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdG9yYWdl
QXJlYU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+Y2xv
c2UoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y2xvc2UoKTsKIAogICAgIGlmIChtX3N5bmNNYW5h
Z2VyKQogICAgICAgICBtX3N5bmNNYW5hZ2VyLT5jbG9zZSgpOwpAQCAtMTU0LDcgKzE1NCw3IEBA
IHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsZWFyQWxsT3JpZ2luc0ZvckRlbGV0aW9uKCkK
IAogICAgIFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0b3JhZ2VBcmVhTWFwLmVu
ZCgpOwogICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdG9yYWdlQXJl
YU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJG
b3JPcmlnaW5EZWxldGlvbigpOworICAgICAgICBpdC0+c2Vjb25kLT5jbGVhckZvck9yaWdpbkRl
bGV0aW9uKCk7CiB9CiAgICAgCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzeW5jKCkKQEAg
LTE2Miw3ICsxNjIsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzeW5jKCkKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQg
PSBtX3N0b3JhZ2VBcmVhTWFwLmVuZCgpOwogICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9zdG9yYWdlQXJlYU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgIGl0LT52YWx1ZS0+c3luYygpOworICAgICAgICBpdC0+c2Vjb25kLT5zeW5jKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHAKaW5kZXggY2NiNjMyM2U0N2RhODQxYTc2MWNiOTNhMWVjOGVhZDE1NzUw
OTZlYy4uY2FjMWFlYTA3ZTA5MGQ3NGUyNWVhMzQ2MDA5ZjI1YzdkNDY4MGUzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTE1Niw3ICsxNTYs
NyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlQW5pbWF0aW9uRWxlbWVudEZy
b21UYXJnZXQoU1ZHU01JTEVsZW1lbnQqIGFuaQogICAgIEhhc2hNYXA8U1ZHRWxlbWVudCosIEhh
c2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiogPjo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGVkRWxlbWVu
dHMuZmluZCh0YXJnZXRFbGVtZW50KTsKICAgICBBU1NFUlQoaXQgIT0gbV9hbmltYXRlZEVsZW1l
bnRzLmVuZCgpKTsKICAgICAKLSAgICBIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4qIGFuaW1hdGlv
bkVsZW1lbnRzRm9yVGFyZ2V0ID0gaXQtPnZhbHVlOworICAgIEhhc2hTZXQ8U1ZHU01JTEVsZW1l
bnQqPiogYW5pbWF0aW9uRWxlbWVudHNGb3JUYXJnZXQgPSBpdC0+c2Vjb25kOwogICAgIEFTU0VS
VCghYW5pbWF0aW9uRWxlbWVudHNGb3JUYXJnZXQtPmlzRW1wdHkoKSk7CiAKICAgICBhbmltYXRp
b25FbGVtZW50c0ZvclRhcmdldC0+cmVtb3ZlKGFuaW1hdGlvbkVsZW1lbnQpOwpAQCAtMTczLDcg
KzE3Myw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxBbmltYXRpb25F
bGVtZW50c0Zyb21UYXJnZXQoU1ZHRWxlbWVudCogdGFyCiAgICAgaWYgKGl0ID09IG1fYW5pbWF0
ZWRFbGVtZW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaFNldDxTVkdTTUlM
RWxlbWVudCo+KiBhbmltYXRpb25FbGVtZW50c0ZvclRhcmdldCA9IGl0LT52YWx1ZTsKKyAgICBI
YXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4qIGFuaW1hdGlvbkVsZW1lbnRzRm9yVGFyZ2V0ID0gaXQt
PnNlY29uZDsKICAgICBWZWN0b3I8U1ZHU01JTEVsZW1lbnQqPiB0b0JlUmVzZXQ7CiAKICAgICBI
YXNoU2V0PFNWR1NNSUxFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IGFuaW1hdGlvbkVsZW1lbnRz
Rm9yVGFyZ2V0LT5lbmQoKTsKQEAgLTIxOSw5ICsyMTksOSBAQCB2b2lkIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNWR1N0
eWxlZAogCiAgICAgLy8gVGhlIEhhc2hNYXAgYWRkIGZ1bmN0aW9uIGxlYXZlcyB0aGUgbWFwIGFs
b25lIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZWxlbWVudCBpbiB0aGUKICAgICAvLyBt
YXAgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIFNvIHdlIGFkZCB3aXRoIGEgdmFsdWUg
b2YgMCwgYW5kIGl0IGVpdGhlciBmaW5kcyB0aGUKLSAgICAvLyBleGlzdGluZyBlbGVtZW50IG9y
IGFkZHMgYSBuZXcgb25lIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4gVGhlICIuaXRlcmF0b3ItPnZh
bHVlIiBpZGlvbSBnZXRzCisgICAgLy8gZXhpc3RpbmcgZWxlbWVudCBvciBhZGRzIGEgbmV3IG9u
ZSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFRoZSAiLml0ZXJhdG9yLT5zZWNvbmQiIGlkaW9tIGdl
dHMKICAgICAvLyB1cyB0byB0aGUgaXRlcmF0b3IgZnJvbSBhZGQncyByZXN1bHQsIGFuZCB0aGVu
IHRvIHRoZSB2YWx1ZSBpbnNpZGUgdGhlIGhhc2ggdGFibGUuCi0gICAgU1ZHUGVuZGluZ0VsZW1l
bnRzKiYgc2V0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgMCkuaXRlcmF0b3ItPnZhbHVl
OworICAgIFNWR1BlbmRpbmdFbGVtZW50cyomIHNldCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQo
aWQsIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFzZXQpCiAgICAgICAgIHNldCA9IG5l
dyBTVkdQZW5kaW5nRWxlbWVudHM7CiAgICAgc2V0LT5hZGQoZWxlbWVudCk7CkBAIC0yNDYsNyAr
MjQ2LDcgQEAgYm9vbCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzRWxlbWVudFBlbmRpbmdSZXNv
dXJjZXMoU1ZHU3R5bGVkRWxlbWVudCogZWxlbWVudCkKIAogICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTVkdQZW5kaW5nRWxlbWVudHMqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wZW5kaW5n
UmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIFNWR1BlbmRp
bmdFbGVtZW50cyo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiBlbGVt
ZW50cyA9IGl0LT52YWx1ZTsKKyAgICAgICAgU1ZHUGVuZGluZ0VsZW1lbnRzKiBlbGVtZW50cyA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgIEFTU0VSVChlbGVtZW50cyk7CiAKICAgICAgICAgaWYgKGVs
ZW1lbnRzLT5jb250YWlucyhlbGVtZW50KSkKQEAgLTI3NCwxMyArMjc0LDEzIEBAIHZvaWQgU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXMoU1ZH
U3R5bGVkRWxlbWVudCoKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7
CiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTVkdQZW5kaW5nRWxlbWVudHMqPjo6aXRl
cmF0b3IgZW5kID0gbV9wZW5kaW5nUmVzb3VyY2VzLmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBTVkdQZW5kaW5nRWxlbWVudHMqPjo6aXRlcmF0b3IgaXQgPSBtX3Bl
bmRpbmdSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBT
VkdQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlOworICAgICAgICAgICAgU1ZH
UGVuZGluZ0VsZW1lbnRzKiBlbGVtZW50cyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICBBU1NF
UlQoZWxlbWVudHMpOwogICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50cy0+aXNFbXB0eSgpKTsK
IAogICAgICAgICAgICAgZWxlbWVudHMtPnJlbW92ZShlbGVtZW50KTsKICAgICAgICAgICAgIGlm
IChlbGVtZW50cy0+aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVu
ZChpdC0+a2V5KTsKKyAgICAgICAgICAgICAgICB0b0JlUmVtb3ZlZC5hcHBlbmQoaXQtPmZpcnN0
KTsKICAgICAgICAgfQogCiAgICAgICAgIGVsZW1lbnQtPmNsZWFySGFzUGVuZGluZ1Jlc291cmNl
c0lmUG9zc2libGUoKTsKQEAgLTI5NiwxMyArMjk2LDEzIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXMoU1ZHU3R5bGVkRWxlbWVu
dCoKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7CiAgICAgICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBTVkdQZW5kaW5nRWxlbWVudHMqPjo6aXRlcmF0b3IgZW5kID0g
bV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5lbmQoKTsKICAgICAgICAgZm9yIChIYXNoTWFw
PEF0b21pY1N0cmluZywgU1ZHUGVuZGluZ0VsZW1lbnRzKj46Oml0ZXJhdG9yIGl0ID0gbV9wZW5k
aW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIFNWR1BlbmRpbmdFbGVtZW50cyogZWxlbWVudHMgPSBpdC0+dmFsdWU7CisgICAgICAg
ICAgICBTVkdQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnNlY29uZDsKICAgICAgICAg
ICAgIEFTU0VSVChlbGVtZW50cyk7CiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnRzLT5pc0Vt
cHR5KCkpOwogCiAgICAgICAgICAgICBlbGVtZW50cy0+cmVtb3ZlKGVsZW1lbnQpOwogICAgICAg
ICAgICAgaWYgKGVsZW1lbnRzLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdG9CZVJlbW92
ZWQuYXBwZW5kKGl0LT5rZXkpOworICAgICAgICAgICAgICAgIHRvQmVSZW1vdmVkLmFwcGVuZChp
dC0+Zmlyc3QpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gV2UgdXNlIHRoZSByZW1vdmVQZW5k
aW5nUmVzb3VyY2VGb3JSZW1vdmFsIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZSBpdCBkZWFscyB3aXRo
IHNldCBsaWZldGltZSBjb3JyZWN0bHkuCkBAIC0zNjIsNyArMzYyLDcgQEAgSGFzaFNldDxTVkdF
bGVtZW50Kj4qIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5n
VGFyZ2V0KFNWR0UKICAgICBjb25zdCBIYXNoTWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8SGFzaFNl
dDxTVkdFbGVtZW50Kj4gPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZWxlbWVudERlcGVuZGVu
Y2llcy5maW5kKHJlZmVyZW5jZWRFbGVtZW50KTsKICAgICBpZiAoaXQgPT0gbV9lbGVtZW50RGVw
ZW5kZW5jaWVzLmVuZCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gaXQtPnZhbHVl
LmdldCgpOworICAgIHJldHVybiBpdC0+c2Vjb25kLmdldCgpOwogfQogCiB2b2lkIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQqIHJl
ZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxlbWVudCogcmVmZXJlbmNlZEVsZW1lbnQpCkBAIC0zODYs
OCArMzg2LDggQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbFRhcmdldFJl
ZmVyZW5jZXNGb3JFbGVtZW50KFNWR0VsZW1lbnQqIHJlZmUKIAogICAgIEhhc2hNYXA8U1ZHRWxl
bWVudCosIE93blB0cjxIYXNoU2V0PFNWR0VsZW1lbnQqPiA+ID46Oml0ZXJhdG9yIGVuZCA9IG1f
ZWxlbWVudERlcGVuZGVuY2llcy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8U1ZHRWxlbWVudCos
IE93blB0cjxIYXNoU2V0PFNWR0VsZW1lbnQqPiA+ID46Oml0ZXJhdG9yIGl0ID0gbV9lbGVtZW50
RGVwZW5kZW5jaWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBTVkdFbGVt
ZW50KiByZWZlcmVuY2VkRWxlbWVudCA9IGl0LT5rZXk7Ci0gICAgICAgIEhhc2hTZXQ8U1ZHRWxl
bWVudCo+KiByZWZlcmVuY2luZ0VsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICBT
VkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVudCA9IGl0LT5maXJzdDsKKyAgICAgICAgSGFzaFNl
dDxTVkdFbGVtZW50Kj4qIHJlZmVyZW5jaW5nRWxlbWVudHMgPSBpdC0+c2Vjb25kLmdldCgpOwog
ICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnQqPjo6aXRlcmF0b3Igc2V0SXQgPSByZWZlcmVuY2lu
Z0VsZW1lbnRzLT5maW5kKHJlZmVyZW5jaW5nRWxlbWVudCk7CiAgICAgICAgIGlmIChzZXRJdCA9
PSByZWZlcmVuY2luZ0VsZW1lbnRzLT5lbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NDA4LDEwICs0MDgsMTAgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbEVs
ZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KFNWR0VsZW1lbnQqIHJlZmUKICAgICBIYXNoTWFwPFNW
R0VsZW1lbnQqLCBPd25QdHI8SGFzaFNldDxTVkdFbGVtZW50Kj4gPiA+OjppdGVyYXRvciBpdCA9
IG1fZWxlbWVudERlcGVuZGVuY2llcy5maW5kKHJlZmVyZW5jZWRFbGVtZW50KTsKICAgICBpZiAo
aXQgPT0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
QVNTRVJUKGl0LT5rZXkgPT0gcmVmZXJlbmNlZEVsZW1lbnQpOworICAgIEFTU0VSVChpdC0+Zmly
c3QgPT0gcmVmZXJlbmNlZEVsZW1lbnQpOwogICAgIFZlY3RvcjxTVkdFbGVtZW50Kj4gdG9CZU5v
dGlmaWVkOwogCi0gICAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIHJlZmVyZW5jaW5nRWxlbWVudHMg
PSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIHJlZmVyZW5jaW5n
RWxlbWVudHMgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+Ojpp
dGVyYXRvciBzZXRFbmQgPSByZWZlcmVuY2luZ0VsZW1lbnRzLT5lbmQoKTsKICAgICBmb3IgKEhh
c2hTZXQ8U1ZHRWxlbWVudCo+OjppdGVyYXRvciBzZXRJdCA9IHJlZmVyZW5jaW5nRWxlbWVudHMt
PmJlZ2luKCk7IHNldEl0ICE9IHNldEVuZDsgKytzZXRJdCkKICAgICAgICAgdG9CZU5vdGlmaWVk
LmFwcGVuZCgqc2V0SXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGIwMjEyZDdi
YzQ1M2VhNDdiMmNlZjkxNzcxMjEyNGM3ODNiMmM4YjcuLjFjMDljNjE5YjYxZmQ4MmU0ODhlYjBk
NTE2MjQyOGQ4ZTRhMWYyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogICAgICAgICBTVkdFbGVtZW50UmFy
ZURhdGE6OlNWR0VsZW1lbnRSYXJlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSByYXJlRGF0YU1hcC5m
aW5kKHRoaXMpOwogICAgICAgICBBU1NFUlQoaXQgIT0gcmFyZURhdGFNYXAuZW5kKCkpOwogCi0g
ICAgICAgIFNWR0VsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBpdC0+dmFsdWU7CisgICAgICAg
IFNWR0VsZW1lbnRSYXJlRGF0YSogcmFyZURhdGEgPSBpdC0+c2Vjb25kOwogICAgICAgICByYXJl
RGF0YS0+ZGVzdHJveUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpOwogICAgICAgICBpZiAo
U1ZHQ3Vyc29yRWxlbWVudCogY3Vyc29yRWxlbWVudCA9IHJhcmVEYXRhLT5jdXJzb3JFbGVtZW50
KCkpCiAgICAgICAgICAgICBjdXJzb3JFbGVtZW50LT5yZW1vdmVDbGllbnQodGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCmlu
ZGV4IDBlZmE2YTQyYmIwOTM1Y2JlOTQyNTJlNjExOTgzOWRjZGFmMmNmZDAuLmIwMzJmMzE1ODI1
NmU1ZTNjYzg5MDQ1MGNiYTg2ODBiMDdlNGZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAg
dm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0aW9ucyhTTUlMVGltZSBlbGFwc2Vk
LCBib29sIHNlZWtUb1RpbWUpCiAgICAgVmVjdG9yPFNWR1NNSUxFbGVtZW50Kj4gYW5pbWF0aW9u
c1RvQXBwbHk7CiAgICAgUmVzdWx0RWxlbWVudE1hcDo6aXRlcmF0b3IgZW5kID0gcmVzdWx0c0Vs
ZW1lbnRzLmVuZCgpOwogICAgIGZvciAoUmVzdWx0RWxlbWVudE1hcDo6aXRlcmF0b3IgaXQgPSBy
ZXN1bHRzRWxlbWVudHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNWR1NN
SUxFbGVtZW50KiBhbmltYXRpb24gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIFNWR1NNSUxF
bGVtZW50KiBhbmltYXRpb24gPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAoY29udHJp
YnV0aW5nRWxlbWVudHMuY29udGFpbnMoYW5pbWF0aW9uKSkKICAgICAgICAgICAgIGFuaW1hdGlv
bnNUb0FwcGx5LmFwcGVuZChhbmltYXRpb24pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcAppbmRleCAyNWZjYzc3OTdmMDRjMWZlODU5MmI2
MDQxMzhhODZkMjhkZDQzZTY0Li42OTNlZTJhOGZmZjVjN2YzNzIyZmI0NmM5ZmQwYjU1YjVjZDNh
ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuY3Bw
CkBAIC00Nyw4ICs0Nyw4IEBAIFNWR0ltYWdlQ2FjaGU6On5TVkdJbWFnZUNhY2hlKCkKICAgICAg
ICAgLy8gQ2hlY2tzIGlmIHRoZSBjbGllbnQgKGl0LT5maXJzdCkgaXMgc3RpbGwgdmFsaWQuIFRo
ZSBjbGllbnQgc2hvdWxkIHJlbW92ZSBpdHNlbGYgZnJvbSB0aGlzCiAgICAgICAgIC8vIGNhY2hl
IGJlZm9yZSBpdHMgZW5kIG9mIGxpZmUsIG90aGVyd2lzZSB0aGUgZm9sbG93aW5nIEFTU0VSVCB3
aWxsIGNyYXNoIG9uIHB1cmUgdmlydHVhbAogICAgICAgICAvLyBmdW5jdGlvbiBjYWxsIG9yIGEg
Z2VuZXJhbCBjcmFzaC4KLSAgICAgICAgQVNTRVJUKGl0LT5rZXktPnJlc291cmNlQ2xpZW50VHlw
ZSgpID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7Ci0gICAgICAgIGRlbGV0
ZSBpdC0+dmFsdWUuYnVmZmVyOworICAgICAgICBBU1NFUlQoaXQtPmZpcnN0LT5yZXNvdXJjZUNs
aWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVudDo6ZXhwZWN0ZWRUeXBlKCkpOworICAgICAg
ICBkZWxldGUgaXQtPnNlY29uZC5idWZmZXI7CiAgICAgfQogCiAgICAgbV9pbWFnZURhdGFNYXAu
Y2xlYXIoKTsKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBTVkdJbWFnZUNhY2hlOjpyZW1vdmVDbGll
bnRGcm9tQ2FjaGUoY29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqIGNsaWVudCkKICAgICBpZiAoaXQg
PT0gbV9pbWFnZURhdGFNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRlbGV0ZSBp
dC0+dmFsdWUuYnVmZmVyOworICAgIGRlbGV0ZSBpdC0+c2Vjb25kLmJ1ZmZlcjsKICAgICBtX2lt
YWdlRGF0YU1hcC5yZW1vdmUoaXQpOwogfQogCkBAIC04MCwxNCArODAsMTQgQEAgU1ZHSW1hZ2VD
YWNoZTo6U2l6ZUFuZFNjYWxlcyBTVkdJbWFnZUNhY2hlOjpyZXF1ZXN0ZWRTaXplQW5kU2NhbGVz
KGNvbnN0IENhY2hlZEkKICAgICBTaXplQW5kU2NhbGVzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc2l6ZUFuZFNjYWxlc01hcC5maW5kKGNsaWVudCk7CiAgICAgaWYgKGl0ID09IG1fc2l6ZUFu
ZFNjYWxlc01hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIFNpemVBbmRTY2FsZXMoKTsKLSAgICBy
ZXR1cm4gaXQtPnZhbHVlOworICAgIHJldHVybiBpdC0+c2Vjb25kOwogfQogCiB2b2lkIFNWR0lt
YWdlQ2FjaGU6OmltYWdlQ29udGVudENoYW5nZWQoKQogewogICAgIEltYWdlRGF0YU1hcDo6aXRl
cmF0b3IgZW5kID0gbV9pbWFnZURhdGFNYXAuZW5kKCk7CiAgICAgZm9yIChJbWFnZURhdGFNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICBpdC0+dmFsdWUuaW1hZ2VOZWVkc1VwZGF0ZSA9IHRydWU7CisgICAgICAgIGl0LT5z
ZWNvbmQuaW1hZ2VOZWVkc1VwZGF0ZSA9IHRydWU7CiAKICAgICAvLyBJZiB3ZSdyZSBpbiB0aGUg
bWlkZGxlIG9mIGxheW91dCwgc3RhcnQgcmVkcmF3aW5nIGRpcnR5CiAgICAgLy8gaW1hZ2VzIG9u
IGEgdGltZXI7IG90aGVyd2lzZSBpdCdzIHNhZmUgdG8gZHJhdyBpbW1lZGlhdGVseS4KQEAgLTEw
Myw3ICsxMDMsNyBAQCB2b2lkIFNWR0ltYWdlQ2FjaGU6OnJlZHJhdygpCiB7CiAgICAgSW1hZ2VE
YXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX2ltYWdlRGF0YU1hcC5lbmQoKTsKICAgICBmb3IgKElt
YWdlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlRGF0YU1hcC5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgSW1hZ2VEYXRhJiBkYXRhID0gaXQtPnZhbHVlOworICAgICAg
ICBJbWFnZURhdGEmIGRhdGEgPSBpdC0+c2Vjb25kOwogICAgICAgICBpZiAoIWRhdGEuaW1hZ2VO
ZWVkc1VwZGF0ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBJZiB0aGUgY29u
dGVudCBjaGFuZ2VkIHdlIHJlZHJhdyB1c2luZyBvdXIgZXhpc3RpbmcgSW1hZ2VCdWZmZXIuCkBA
IC0xMzksOSArMTM5LDkgQEAgSW1hZ2UqIFNWR0ltYWdlQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlQml0
bWFwSW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHIKICAgICBpZiAoc2l6ZUl0
ID09IG1fc2l6ZUFuZFNjYWxlc01hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKIAotICAgIEludFNpemUgc2l6ZSA9IHNpemVJdC0+dmFsdWUuc2l6ZTsKLSAgICBm
bG9hdCB6b29tID0gc2l6ZUl0LT52YWx1ZS56b29tOwotICAgIGZsb2F0IHNjYWxlID0gc2l6ZUl0
LT52YWx1ZS5zY2FsZTsKKyAgICBJbnRTaXplIHNpemUgPSBzaXplSXQtPnNlY29uZC5zaXplOwor
ICAgIGZsb2F0IHpvb20gPSBzaXplSXQtPnNlY29uZC56b29tOworICAgIGZsb2F0IHNjYWxlID0g
c2l6ZUl0LT5zZWNvbmQuc2NhbGU7CiAKICAgICAvLyBGSVhNRSAoODUzMzUpOiBUaGlzIG5lZWRz
IHRvIHRha2UgQ1NTIHRyYW5zZm9ybSBzY2FsZSBpbnRvIGFjY291bnQgYXMgd2VsbC4KICAgICBQ
YWdlKiBwYWdlID0gcmVuZGVyZXItPmRvY3VtZW50KCktPnBhZ2UoKTsKQEAgLTE1Myw3ICsxNTMs
NyBAQCBJbWFnZSogU1ZHSW1hZ2VDYWNoZTo6bG9va3VwT3JDcmVhdGVCaXRtYXBJbWFnZUZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcgogICAgIC8vIExvb2t1cCBpbWFnZSBmb3IgY2xp
ZW50IGluIGNhY2hlIGFuZCBldmVudHVhbGx5IHVwZGF0ZSBpdC4KICAgICBJbWFnZURhdGFNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZURhdGFNYXAuZmluZChjbGllbnQpOwogICAgIGlmIChpdCAh
PSBtX2ltYWdlRGF0YU1hcC5lbmQoKSkgewotICAgICAgICBJbWFnZURhdGEmIGRhdGEgPSBpdC0+
dmFsdWU7CisgICAgICAgIEltYWdlRGF0YSYgZGF0YSA9IGl0LT5zZWNvbmQ7CiAKICAgICAgICAg
Ly8gQ29tbW9uIGNhc2U6IGltYWdlIHNpemUgJiB6b29tIHJlbWFpbmVkIHRoZSBzYW1lLgogICAg
ICAgICBpZiAoZGF0YS5zaXplQW5kU2NhbGVzLnNpemUgPT0gc2l6ZSAmJiBkYXRhLnNpemVBbmRT
Y2FsZXMuem9vbSA9PSB6b29tICYmIGRhdGEuc2l6ZUFuZFNjYWxlcy5zY2FsZSA9PSBzY2FsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuaAppbmRleCAxOTE1ODBkZDhhYmU1OWY1MTc5ODQ3ODlmZWYzZGY5ZDFhYmM2YzIx
Li40NGQzMjI3YjgzZTliODcxOGU3OWQ4YzE0YzllM2JlM2E2YWY2Mzg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5o
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIE9ubHkgYWxsb3dl
ZCBmb3IgZWZmZWN0cyBiZWxvbmdzIHRvIHRoaXMgYnVpbGRlci4KICAgICAgICAgQVNTRVJUKG1f
ZWZmZWN0UmVmZXJlbmNlcy5jb250YWlucyhlZmZlY3QpKTsKLSAgICAgICAgcmV0dXJuIG1fZWZm
ZWN0UmVmZXJlbmNlcy5maW5kKGVmZmVjdCktPnZhbHVlOworICAgICAgICByZXR1cm4gbV9lZmZl
Y3RSZWZlcmVuY2VzLmZpbmQoZWZmZWN0KS0+c2Vjb25kOwogICAgIH0KIAogICAgIC8vIFJlcXVp
cmVkIHRvIGNoYW5nZSB0aGUgYXR0cmlidXRlcyBvZiBhIGZpbHRlciBkdXJpbmcgYW4gc3ZnQXR0
cmlidXRlQ2hhbmdlZC4KQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+OjppdGVyYXRvciBl
bmQgPSBtX2J1aWx0aW5FZmZlY3RzLmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+OjppdGVyYXRvciBpdGVyYXRvciA9IG1fYnVp
bHRpbkVmZmVjdHMuYmVnaW4oKTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKQotICAgICAg
ICAgICAgIG1fZWZmZWN0UmVmZXJlbmNlcy5hZGQoaXRlcmF0b3ItPnZhbHVlLCBGaWx0ZXJFZmZl
Y3RTZXQoKSk7CisgICAgICAgICAgICAgbV9lZmZlY3RSZWZlcmVuY2VzLmFkZChpdGVyYXRvci0+
c2Vjb25kLCBGaWx0ZXJFZmZlY3RTZXQoKSk7CiAgICAgfQogCiAgICAgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gbV9idWlsdGluRWZmZWN0czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAppbmRl
eCA2YTFmMDA5N2I2MWJjMGI1ZGIwOTgwMTU1MDkwM2MxOTA0NDk2N2JhLi42ZGZkYWM2ZGQ1Nzhh
ZjMwZjZkZWFiN2NkMjY1ODM2MDQ0MmYzYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCkBAIC01OCw4ICs1OCw4IEBAIHB1
YmxpYzoKICAgICAgICAgQ2FjaGUqIGNhY2hlID0gYW5pbWF0ZWRQcm9wZXJ0eUNhY2hlKCk7CiAg
ICAgICAgIGNvbnN0IENhY2hlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjYWNoZS0+ZW5kKCk7CiAg
ICAgICAgIGZvciAoQ2FjaGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2FjaGUtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGl0LT52YWx1ZSA9PSB0aGlzKSB7Ci0g
ICAgICAgICAgICAgICAgY2FjaGUtPnJlbW92ZShpdC0+a2V5KTsKKyAgICAgICAgICAgIGlmIChp
dC0+c2Vjb25kID09IHRoaXMpIHsKKyAgICAgICAgICAgICAgICBjYWNoZS0+cmVtb3ZlKGl0LT5m
aXJzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRv
UHJvcGVydHlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5jcHAKaW5kZXggY2M0NmNjZmEwODFmZmM4ODMwOWI3ZWYyMmQ2M2Yw
ZjM0ZWZkODE3Yy4uYmUzMWNjM2M3ZGEyZjUwZjUxZjY5YjU1NDQwMjY1ZGIxMzViNTI4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdm9pZCBTVkdBdHRyaWJ1dGVU
b1Byb3BlcnR5TWFwOjphZGRQcm9wZXJ0aWVzKFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAmIG1h
cCkKIHsKICAgICBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5t
X21hcC5lbmQoKTsKICAgICBmb3IgKEF0dHJpYnV0ZVRvUHJvcGVydGllc01hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAubV9tYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFByb3Bl
cnRpZXNWZWN0b3IqIHZlY3RvciA9IGl0LT52YWx1ZTsKKyAgICAgICAgUHJvcGVydGllc1ZlY3Rv
ciogdmVjdG9yID0gaXQtPnNlY29uZDsKICAgICAgICAgQVNTRVJUKHZlY3Rvcik7CiAKICAgICAg
ICAgUHJvcGVydGllc1ZlY3Rvcjo6aXRlcmF0b3IgdmVjdG9yRW5kID0gdmVjdG9yLT5lbmQoKTsK
QEAgLTgxLDEyICs4MSwxMiBAQCB2b2lkIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OnN5bmNo
cm9uaXplUHJvcGVydGllcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudAogICAgIEFTU0VSVChj
b250ZXh0RWxlbWVudCk7CiAgICAgQXR0cmlidXRlVG9Qcm9wZXJ0aWVzTWFwOjppdGVyYXRvciBl
bmQgPSBtX21hcC5lbmQoKTsKICAgICBmb3IgKEF0dHJpYnV0ZVRvUHJvcGVydGllc01hcDo6aXRl
cmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUHJv
cGVydGllc1ZlY3RvciogdmVjdG9yID0gaXQtPnZhbHVlOworICAgICAgICBQcm9wZXJ0aWVzVmVj
dG9yKiB2ZWN0b3IgPSBpdC0+c2Vjb25kOwogICAgICAgICBBU1NFUlQodmVjdG9yKTsKIAogICAg
ICAgICBQcm9wZXJ0aWVzVmVjdG9yOjppdGVyYXRvciB2ZWN0b3JFbmQgPSB2ZWN0b3ItPmVuZCgp
OwogICAgICAgICBmb3IgKFByb3BlcnRpZXNWZWN0b3I6Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdmVj
dG9yLT5iZWdpbigpOyB2ZWN0b3JJdCAhPSB2ZWN0b3JFbmQ7ICsrdmVjdG9ySXQpCi0gICAgICAg
ICAgICBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBpdC0+a2V5LCAqdmVjdG9y
SXQpOworICAgICAgICAgICAgc3luY2hyb25pemVQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgaXQt
PmZpcnN0LCAqdmVjdG9ySXQpOwogICAgIH0gCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuY3BwCmluZGV4IGE2OWZiNzI0NmZiY2ZhZjZiZTZmODg4NzcyMzdjYmUxYTZm
YjQxY2EuLmQ3ZWFmNWRiNDZlZThjYTc4MGViNzYxYzhmNDJiNDc2YzkwNTU3NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIGJv
b2wgV29ya2VyQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICBBY3RpdmVE
T01PYmplY3RzTWFwJiBhY3RpdmVPYmplY3RzID0gYWN0aXZlRE9NT2JqZWN0cygpOwogICAgIEFj
dGl2ZURPTU9iamVjdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBhY3Rp
dmVPYmplY3RzLmVuZCgpOwogICAgIGZvciAoQWN0aXZlRE9NT2JqZWN0c01hcDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGFjdGl2ZU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3Rz
RW5kOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKGl0ZXItPmtleS0+aGFzUGVuZGluZ0FjdGl2aXR5
KCkpCisgICAgICAgIGlmIChpdGVyLT5maXJzdC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuY3BwCmluZGV4IDIzNTUyOWYxZmViOTcxMjhjMzFkOTZhMzBkYTBjZGZm
YmJlOWQwZWIuLjU5YTkzMDdlYWMxNzg0YjY5OWMzZmVkMjBhNDU1YTc5ZjA4OTEwN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtMTI3LDcgKzEy
Nyw3IEBAIHZvaWQgV29ya2VyRXZlbnRRdWV1ZTo6Y2xvc2UoKQogewogICAgIG1faXNDbG9zZWQg
PSB0cnVlOwogICAgIGZvciAoRXZlbnRUYXNrTWFwOjppdGVyYXRvciBpdCA9IG1fZXZlbnRUYXNr
TWFwLmJlZ2luKCk7IGl0ICE9IG1fZXZlbnRUYXNrTWFwLmVuZCgpOyArK2l0KSB7Ci0gICAgICAg
IEV2ZW50RGlzcGF0Y2hlclRhc2sqIHRhc2sgPSBpdC0+dmFsdWU7CisgICAgICAgIEV2ZW50RGlz
cGF0Y2hlclRhc2sqIHRhc2sgPSBpdC0+c2Vjb25kOwogICAgICAgICB0YXNrLT5jYW5jZWwoKTsK
ICAgICB9CiAgICAgbV9ldmVudFRhc2tNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDQ1ZjNmY2RiZTYyYzcwYWEwMTA0NWZiZGFkMTk2NjI3N2I2MzI5
ZGUuLjExMWE2NDlhMTNlNzZhZWY4MzcwYjE4MmM5NTFjYTllNzVjZmIyMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtOTIwLDcgKzkyMCw3IEBAIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OnNldFJlcXVlc3RIZWFkZXJJbnRlcm5hbChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0CiB7CiAgICAgSFRUUEhlYWRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cmVxdWVzdEhlYWRlcnMuYWRkKG5hbWUsIHZhbHVlKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9ICIsICIgKyB2YWx1ZTsKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gIiwgIiArIHZhbHVlOwogfQogCiBTdHJp
bmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlcXVlc3RIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKSBjb25zdApAQCAtOTQ3LDE2ICs5NDcsMTYgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0Ojpn
ZXRBbGxSZXNwb25zZUhlYWRlcnMoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIC8v
ICAgICAyKSBUaGVyZSdzIG5vIGtub3duIGhhcm0gaW4gaGlkaW5nIFNldC1Db29raWUgaGVhZGVy
IGZpZWxkcyBlbnRpcmVseTsgd2UgZG9uJ3QKICAgICAgICAgLy8gICAgICAgIGtub3cgYW55IHdp
ZGVseSB1c2VkIHRlY2huaXF1ZSB0aGF0IHJlcXVpcmVzIGFjY2VzcyB0byB0aGVtLgogICAgICAg
ICAvLyAgICAgMykgRmlyZWZveCBoYXMgaW1wbGVtZW50ZWQgdGhpcyBwb2xpY3kuCi0gICAgICAg
IGlmIChpc1NldENvb2tpZUhlYWRlcihpdC0+a2V5KSAmJiAhc2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
TG9hZExvY2FsUmVzb3VyY2VzKCkpCisgICAgICAgIGlmIChpc1NldENvb2tpZUhlYWRlcihpdC0+
Zmlyc3QpICYmICFzZWN1cml0eU9yaWdpbigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICghbV9zYW1lT3JpZ2luUmVxdWVzdCAm
JiAhaXNPbkFjY2Vzc0NvbnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlzdChpdC0+a2V5KSAmJiAh
YWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldC5jb250YWlucyhpdC0+a2V5KSkKKyAgICAgICAg
aWYgKCFtX3NhbWVPcmlnaW5SZXF1ZXN0ICYmICFpc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVh
ZGVyV2hpdGVsaXN0KGl0LT5maXJzdCkgJiYgIWFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJTZXQu
Y29udGFpbnMoaXQtPmZpcnN0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT5rZXkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChpdC0+Zmlyc3QpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnOicpOwogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChpdC0+dmFsdWUpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChpdC0+c2Vjb25kKTsK
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xyJyk7CiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCdcbicpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CmluZGV4IDAwMTliYzQzNjUwNGJhMmIyMWRlZmVmZjMwZjY0ODBjMWVmOTgxZTMuLjNjOTBlM2I1
MTcxODU5YTU2ZTg3MmJiNzY1MmY1OTU5OGE2MzdkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
RnVuY3Rpb25zLmNwcApAQCAtNzIzLDcgKzcyMyw3IEBAIEZ1bmN0aW9uKiBjcmVhdGVGdW5jdGlv
bihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uKj4mIGFyZ3MpCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIEZ1bmN0aW9uUmVjPjo6aXRlcmF0b3IgZnVuY3Rpb25NYXBJdGVy
ID0gZnVuY3Rpb25NYXAtPmZpbmQobmFtZSk7CiAgICAgRnVuY3Rpb25SZWMqIGZ1bmN0aW9uUmVj
ID0gMDsKIAotICAgIGlmIChmdW5jdGlvbk1hcEl0ZXIgPT0gZnVuY3Rpb25NYXAtPmVuZCgpIHx8
ICEoZnVuY3Rpb25SZWMgPSAmZnVuY3Rpb25NYXBJdGVyLT52YWx1ZSktPmFyZ3MuY29udGFpbnMo
YXJncy5zaXplKCkpKQorICAgIGlmIChmdW5jdGlvbk1hcEl0ZXIgPT0gZnVuY3Rpb25NYXAtPmVu
ZCgpIHx8ICEoZnVuY3Rpb25SZWMgPSAmZnVuY3Rpb25NYXBJdGVyLT5zZWNvbmQpLT5hcmdzLmNv
bnRhaW5zKGFyZ3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBGdW5jdGlvbiog
ZnVuY3Rpb24gPSBmdW5jdGlvblJlYy0+ZmFjdG9yeUZuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFy
c2VyLmNwcAppbmRleCA3NDkxODBkYmU1ZWU4ZjliMTIyZmNkYTFlNjk4MTY5YzAwOWY4ZjgwLi5i
NWU2YTkyMzc1OTNiNGFhYTJhMjQzZjJmZjlkODZlNTdmOTMwYTk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFBhcnNlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgYm9vbCBpc0F4aXNOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RlcDo6QXhpcyYgdHlwZSkKICAgICBBeGlzTmFtZXNNYXA6
Oml0ZXJhdG9yIGl0ID0gYXhpc05hbWVzLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ID09IGF4aXNO
YW1lcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHR5cGUgPSBpdC0+dmFsdWU7
CisgICAgdHlwZSA9IGl0LT5zZWNvbmQ7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGE5MTI5ODhkYTYzOGNj
Zjg0MmU3YjE3YWY1ZTQzNDQ2ZThhMzJkMjguLmUyMWM4MjdjMjVkYmM1ZWZkMzFiZTcwNWY5ZjM2
ZjUyZGU1NDgyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcApAQCAtMjI1LDggKzIyNSw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiogeHNsdFBhcmFtQXJy
YXlGcm9tUGFyYW1ldGVyTWFwKFhTTFRQcm9jZXNzb3I6OlBhcmFtZXRlck1hcCYKICAgICBYU0xU
UHJvY2Vzc29yOjpQYXJhbWV0ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IHBhcmFtZXRlcnMuZW5kKCk7
CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZvciAoWFNMVFByb2Nlc3Nvcjo6UGFyYW1l
dGVyTWFwOjppdGVyYXRvciBpdCA9IHBhcmFtZXRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIHBhcmFtZXRlckFycmF5W2luZGV4KytdID0gZmFzdFN0ckR1cChpdC0+a2V5
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBwYXJhbWV0ZXJBcnJheVtpbmRleCsrXSA9IGZhc3RT
dHJEdXAoaXQtPnZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBwYXJhbWV0ZXJBcnJheVtp
bmRleCsrXSA9IGZhc3RTdHJEdXAoaXQtPmZpcnN0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBw
YXJhbWV0ZXJBcnJheVtpbmRleCsrXSA9IGZhc3RTdHJEdXAoaXQtPnNlY29uZC51dGY4KCkuZGF0
YSgpKTsKICAgICB9CiAgICAgcGFyYW1ldGVyQXJyYXlbaW5kZXhdID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JRdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcAppbmRleCAwYzQxNDBhOGQ3OWVkZWZhNTAyMzM1ZmUw
MTgzMTJmNDc1ZjE3MGY0Li5hNjdjNWZkZTc2ZmNjNTY4Y2UzYzRjNjhjNjEwNjBkNDBiYjkzMTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvclF0LmNwcApAQCAtMTQyLDcgKzE0Miw3
IEBAIGJvb2wgWFNMVFByb2Nlc3Nvcjo6dHJhbnNmb3JtVG9TdHJpbmcoTm9kZSogc291cmNlTm9k
ZSwgU3RyaW5nJiwgU3RyaW5nJiByZXN1bHRTCiAKICAgICBYU0xUUHJvY2Vzc29yOjpQYXJhbWV0
ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcGFyYW1ldGVycy5lbmQoKTsKICAgICBmb3IgKFhTTFRQ
cm9jZXNzb3I6OlBhcmFtZXRlck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhcmFtZXRlcnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBxdWVyeS5iaW5kVmFyaWFibGUoUVN0cmluZyhp
dC0+a2V5KSwgUVhtbEl0ZW0oUVZhcmlhbnQoUVN0cmluZyhpdC0+dmFsdWUpKSkpOworICAgICAg
ICBxdWVyeS5iaW5kVmFyaWFibGUoUVN0cmluZyhpdC0+Zmlyc3QpLCBRWG1sSXRlbShRVmFyaWFu
dChRU3RyaW5nKGl0LT5zZWNvbmQpKSkpOwogCiAgICAgUVN0cmluZyBzb3VyY2U7CiAgICAgaWYg
KHNvdXJjZUlzRG9jdW1lbnQgJiYgb3duZXJEb2N1bWVudC0+dHJhbnNmb3JtU291cmNlKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggOTY3
MTU0ODhhNzk3NzU3NTdjNzMwNmI1ZTQ2ZjkzODdjMGNhZjM2NC4uZDNjMmNlOTNhNjI1YjZkY2Mx
ZmIxMzE0NTk4ZGU4ODAxMDY0MWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvQmFja2luZ1N0b3JlLmNwcApAQCAtNzExLDggKzcxMSw4IEBAIHZvaWQgQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6c2V0QmFja2luZ1N0b3JlUmVjdChjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgYmFj
a2luZ1N0CiAgICAgLy8gb3VyIG5ldyBiYWNraW5nIHN0b3JlIHJlY3QuCiAgICAgVGlsZU1hcDo6
Y29uc3RfaXRlcmF0b3IgdGlsZU1hcEVuZCA9IGN1cnJlbnRNYXAuZW5kKCk7CiAgICAgZm9yIChU
aWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGN1cnJlbnRNYXAuYmVnaW4oKTsgaXQgIT0gdGls
ZU1hcEVuZDsgKytpdCkgewotICAgICAgICBUaWxlSW5kZXggb2xkSW5kZXggPSBpdC0+a2V5Owot
ICAgICAgICBCYWNraW5nU3RvcmVUaWxlKiB0aWxlID0gaXQtPnZhbHVlOworICAgICAgICBUaWxl
SW5kZXggb2xkSW5kZXggPSBpdC0+Zmlyc3Q7CisgICAgICAgIEJhY2tpbmdTdG9yZVRpbGUqIHRp
bGUgPSBpdC0+c2Vjb25kOwogCiAgICAgICAgIC8vIFJlc2V0IHRoZSBvbGQgaW5kZXguCiAgICAg
ICAgIHJlc2V0VGlsZShvbGRJbmRleCwgdGlsZSwgZmFsc2UgLypyZXNldEJhY2tncm91bmQqLyk7
CkBAIC03NjgsOCArNzY4LDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzZXRCYWNraW5n
U3RvcmVSZWN0KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBiYWNraW5nU3QKICAgICBzaXplX3Qg
aSA9IDA7CiAgICAgVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgbGVmdE92ZXJFbmQgPSBsZWZ0T3Zl
clRpbGVzLmVuZCgpOwogICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsZWZ0
T3ZlclRpbGVzLmJlZ2luKCk7IGl0ICE9IGxlZnRPdmVyRW5kOyArK2l0KSB7Ci0gICAgICAgIFRp
bGVJbmRleCBvbGRJbmRleCA9IGl0LT5rZXk7Ci0gICAgICAgIEJhY2tpbmdTdG9yZVRpbGUqIHRp
bGUgPSBpdC0+dmFsdWU7CisgICAgICAgIFRpbGVJbmRleCBvbGRJbmRleCA9IGl0LT5maXJzdDsK
KyAgICAgICAgQmFja2luZ1N0b3JlVGlsZSogdGlsZSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGlm
IChpID49IGluZGV4ZXNUb0ZpbGwuc2l6ZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc0NCw3ICsxNzQ0LDcgQEAgUGxhdGZv
cm06OkludFJlY3QgQmFja2luZ1N0b3JlUHJpdmF0ZTo6dmlzaWJsZVRpbGVzUmVjdCgpIGNvbnN0
CiAgICAgVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY3VycmVudE1hcC5lbmQoKTsKICAg
ICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY3VycmVudE1hcC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgVGlsZVJlY3QgdGlsZVJlY3Q7Ci0gICAgICAgIHRp
bGVSZWN0LmZpcnN0ID0gaXQtPmtleTsKKyAgICAgICAgdGlsZVJlY3QuZmlyc3QgPSBpdC0+Zmly
c3Q7CiAgICAgICAgIHRpbGVSZWN0LnNlY29uZCA9IHRoaXMtPnRpbGVSZWN0KCk7CiAgICAgICAg
IFBsYXRmb3JtOjpJbnRSZWN0IHRpbGUgPSBtYXBGcm9tVGlsZXNUb1RyYW5zZm9ybWVkQ29udGVu
dHModGlsZVJlY3QpOwogICAgICAgICBpZiAodGlsZS5pbnRlcnNlY3RzKHZpc2libGVDb250ZW50
c1JlY3QoKSkpCkBAIC0xODA1LDcgKzE4MDUsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlc2V0VGlsZXMoYm9vbCByZXNldEJhY2tncm91bmQpCiAKICAgICBUaWxlTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBjdXJyZW50TWFwLmVuZCgpOwogICAgIGZvciAoVGlsZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBjdXJyZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgcmVzZXRUaWxlKGl0LT5rZXksIGl0LT52YWx1ZSwgcmVzZXRCYWNrZ3JvdW5kKTsKKyAgICAg
ICAgcmVzZXRUaWxlKGl0LT5maXJzdCwgaXQtPnNlY29uZCwgcmVzZXRCYWNrZ3JvdW5kKTsKIH0K
IAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVUaWxlcyhib29sIHVwZGF0ZVZpc2li
bGUsIGJvb2wgaW1tZWRpYXRlKQpAQCAtMTgxOCwxMCArMTgxOCwxMCBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OnVwZGF0ZVRpbGVzKGJvb2wgdXBkYXRlVmlzaWJsZSwgYm9vbCBpbW1lZGlh
dGUpCiAKICAgICBUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXJyZW50TWFwLmVuZCgp
OwogICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjdXJyZW50TWFwLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBib29sIGlzVmlzaWJsZSA9IGlzVGlsZVZp
c2libGUoaXQtPmtleSk7CisgICAgICAgIGJvb2wgaXNWaXNpYmxlID0gaXNUaWxlVmlzaWJsZShp
dC0+Zmlyc3QpOwogICAgICAgICBpZiAoIXVwZGF0ZVZpc2libGUgJiYgaXNWaXNpYmxlKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHVwZGF0ZVRpbGUoaXQtPmtleSwgaW1tZWRpYXRl
KTsKKyAgICAgICAgdXBkYXRlVGlsZShpdC0+Zmlyc3QsIGltbWVkaWF0ZSk7CiAgICAgfQogfQog
CkBAIC0xODQyLDggKzE4NDIsOCBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnVwZGF0ZVRp
bGVzRm9yU2Nyb2xsT3JOb3RSZW5kZXJlZFJlZ2lvbihib29sIGNoZWNrTG9hZAogCiAgICAgVGls
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY3VycmVudE1hcC5lbmQoKTsKICAgICBmb3IgKFRp
bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY3VycmVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgVGlsZUluZGV4IGluZGV4ID0gaXQtPmtleTsKLSAgICAgICAgQmFj
a2luZ1N0b3JlVGlsZSogdGlsZSA9IGl0LT52YWx1ZTsKKyAgICAgICAgVGlsZUluZGV4IGluZGV4
ID0gaXQtPmZpcnN0OworICAgICAgICBCYWNraW5nU3RvcmVUaWxlKiB0aWxlID0gaXQtPnNlY29u
ZDsKICAgICAgICAgYm9vbCBpc1Zpc2libGUgPSBpc1RpbGVWaXNpYmxlKGluZGV4KTsKICAgICAg
ICAgLy8gVGhlIHJlY3QgaW4gdHJhbnNmb3JtZWQgY29udGVudHMgY29vcmRpbmF0ZXMuCiAgICAg
ICAgIFBsYXRmb3JtOjpJbnRSZWN0IHJlY3Qob3JpZ2luT2ZUaWxlKGluZGV4KSwgdGlsZVNpemUo
KSk7CkBAIC0xOTg2LDggKzE5ODYsOCBAQCBCYWNraW5nU3RvcmVQcml2YXRlOjpUaWxlUmVjdExp
c3QgQmFja2luZ1N0b3JlUHJpdmF0ZTo6bWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudAogICAgIFRp
bGVSZWN0TGlzdCB0aWxlUmVjdExpc3Q7CiAgICAgVGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gdGlsZU1hcC5lbmQoKTsKICAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
dGlsZU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgVGlsZUluZGV4IGlu
ZGV4ID0gaXQtPmtleTsKLSAgICAgICAgQmFja2luZ1N0b3JlVGlsZSogdGlsZSA9IGl0LT52YWx1
ZTsKKyAgICAgICAgVGlsZUluZGV4IGluZGV4ID0gaXQtPmZpcnN0OworICAgICAgICBCYWNraW5n
U3RvcmVUaWxlKiB0aWxlID0gaXQtPnNlY29uZDsKIAogICAgICAgICAvLyBOZWVkIHRvIG1hcCB0
aGUgcmVjdCB0byB0aWxlIGNvb3JkaW5hdGVzLgogICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBy
ID0gcmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmNwcAppbmRleCAy
Y2Q3YzE3NDUyN2RmMTBmMzkwYTE2NWJhYTdiZDk2ZjRmNTNmZDhmLi42YjI5MjEwMjk0NjI3N2Rh
MjhlNzk4ZDdlZWRmOGI5MzljNTMxOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNl
bnRlckltcGwuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVy
SW1wbDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIGlmIChpdCA9PSBt
X25vdGlmaWNhdGlvbnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxhdGZvcm1Q
cmVzZW50ZXItPmNhbmNlbChzdGQ6OnN0cmluZyhpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSkpOwor
ICAgIG1fcGxhdGZvcm1QcmVzZW50ZXItPmNhbmNlbChzdGQ6OnN0cmluZyhpdC0+c2Vjb25kLnV0
ZjgoKS5kYXRhKCkpKTsKICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0KTsKIH0KIApAQCAt
MTA4LDEyICsxMDgsMTIgQEAgdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsOjpvblBlcm1p
c3Npb24oY29uc3Qgc3RkOjpzdHJpbmcmIGRvbWFpbiwgYm9vbCBpc0EKICAgICBTdHJpbmcgZG9t
YWluU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChkb21haW4uY19zdHIoKSk7CiAgICAgUGVybWlz
c2lvblJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZXJtaXNzaW9uUmVxdWVzdHMuYmVnaW4o
KTsKICAgICBmb3IgKDsgaXQgIT0gbV9wZXJtaXNzaW9uUmVxdWVzdHMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgaWYgKGl0LT5rZXktPnVybCgpLmhvc3QoKSAhPSBkb21haW5TdHJpbmcpCisgICAg
ICAgIGlmIChpdC0+Zmlyc3QtPnVybCgpLmhvc3QoKSAhPSBkb21haW5TdHJpbmcpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoaXNBbGxvd2VkKSB7CiAgICAgICAgICAgICBt
X2FsbG93ZWREb21haW5zLmFkZChkb21haW5TdHJpbmcpOwotICAgICAgICAgICAgaXQtPnZhbHVl
LT5oYW5kbGVFdmVudCgpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+aGFuZGxlRXZlbnQoKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2FsbG93ZWREb21haW5zLnJlbW92ZShkb21h
aW5TdHJpbmcpOwogCkBAIC0xNDQsOSArMTQ0LDkgQEAgdm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXJJbXBsOjpub3RpZmljYXRpb25DbGlja2VkKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCkKICAgICBT
dHJpbmcgaWRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGlkLmNfc3RyKCkpOwogICAgIE5vdGlm
aWNhdGlvbk1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKTsKICAgICBm
b3IgKDsgaXQgIT0gbV9ub3RpZmljYXRpb25zLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChp
dC0+dmFsdWUgPT0gaWRTdHJpbmcgJiYgaXQtPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IGl0
LT5rZXk7Ci0gICAgICAgICAgICBpdC0+a2V5LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgICAgIGlmIChpdC0+
c2Vjb25kID09IGlkU3RyaW5nICYmIGl0LT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSB7CisgICAgICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBpdC0+
Zmlyc3Q7CisgICAgICAgICAgICBpdC0+Zmlyc3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZmFsc2UsIHRydWUpKTsKICAgICAgICAgICAgIG1f
bm90aWZpY2F0aW9ucy5yZW1vdmUobm90aWZpY2F0aW9uKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvQWJvdXREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0Fib3V0RGF0YS5jcHAKaW5kZXggNWUxYjc3ZTNiM2Y5ZjM2MzYyM2M0ZmI2ZjFhNmQwODkx
M2FhMDEyYi4uN2I3YTFkNTlhYjg1NzgxYzI5ZWI5MjE5ZWIzNTcyY2I2ODcwOTNlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEu
Y3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgZHVtcEpTQ1R5cGVDb3VudFNldFRv
VGFibGVIVE1MKFN0cmluZyYgdGFibGVIVE1MLCBKU0M6OlR5cGVDb3VudFNldCoKICAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChKU0M6OlR5cGVDb3VudFNldDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IHR5cGVDb3VudFNldC0+YmVnaW4oKTsgaXRlciAhPSB0eXBlQ291bnRTZXQtPmVuZCgpOyAr
K2l0ZXIpCi0gICAgICAgIHRhYmxlSFRNTCArPSBudW1iZXJUb0hUTUxUcihpdGVyLT5rZXksIGl0
ZXItPnZhbHVlKTsKKyAgICAgICAgdGFibGVIVE1MICs9IG51bWJlclRvSFRNTFRyKGl0ZXItPmZp
cnN0LCBpdGVyLT5zZWNvbmQpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1lbW9yeVBhZ2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXll
cnMuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXll
cnMuY3BwCmluZGV4IDI3YzYyYjYwMDBkNTc2MmQzOWVkMTE2MmZlYmQ0MzZiNDMzOGQ1NWUuLmE0
OWY1OTRmMmMyMGMyYzMxNzkzMjM5MmQ3MWE1NDU2ODliNWM0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBGcmFtZUxheWVyczo6cmVtb3ZlTGF5ZXJCeUZyYW1lKEZyYW1l
KiBmcmFtZSkKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIEZyYW1lTGF5ZXJNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9mcmFtZUxheWVycy5maW5kKGZyYW1lKTsKICAgICBpZiAoaXQgIT0gbV9mcmFtZUxh
eWVycy5lbmQoKSkgewotICAgICAgICBMYXllcldlYktpdFRocmVhZCogbGF5ZXIgPSBpdC0+dmFs
dWU7CisgICAgICAgIExheWVyV2ViS2l0VGhyZWFkKiBsYXllciA9IGl0LT5zZWNvbmQ7CiAgICAg
ICAgIGlmIChsYXllci0+c3VwZXJsYXllcigpKQogICAgICAgICAgICAgbGF5ZXItPnJlbW92ZUZy
b21TdXBlcmxheWVyKCk7CiAgICAgICAgIG1fZnJhbWVMYXllcnMucmVtb3ZlKGl0KTsKQEAgLTEw
NCw3ICsxMDQsNyBAQCB2b2lkIEZyYW1lTGF5ZXJzOjpjb21taXRPbldlYktpdFRocmVhZChkb3Vi
bGUgc2NhbGUpCiAgICAgQVNTRVJUKG1fcm9vdExheWVyKTsKICAgICBpZiAoIWlzUm9vdExheWVy
TWFpbkZyYW1lTGF5ZXIoKSkgewogICAgICAgICBmb3IgKEZyYW1lTGF5ZXJNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9mcmFtZUxheWVycy5iZWdpbigpOyBpdCAhPSBtX2ZyYW1lTGF5ZXJzLmVuZCgpOyAr
K2l0KQotICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRBYnNvbHV0ZU9mZnNldChmcmFtZUxheWVy
QWJzb2x1dGVPZmZzZXQoaXQtPmtleSkpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0QWJz
b2x1dGVPZmZzZXQoZnJhbWVMYXllckFic29sdXRlT2Zmc2V0KGl0LT5maXJzdCkpOwogICAgIH0K
ICAgICBtX3Jvb3RMYXllci0+Y29tbWl0T25XZWJLaXRUaHJlYWQoc2NhbGUpOwogfQpAQCAtMTEy
LDcgKzExMiw3IEBAIHZvaWQgRnJhbWVMYXllcnM6OmNvbW1pdE9uV2ViS2l0VGhyZWFkKGRvdWJs
ZSBzY2FsZSkKIHZvaWQgRnJhbWVMYXllcnM6OmNhbGN1bGF0ZVJvb3RMYXllcigpCiB7CiAgICAg
aWYgKG1fZnJhbWVMYXllcnMuc2l6ZSgpID09IDEgJiYgbV9mcmFtZUxheWVycy5iZWdpbigpLT5m
aXJzdCA9PSBtX3BhZ2VQcml2YXRlLT5tX21haW5GcmFtZSkKLSAgICAgICAgbV9yb290TGF5ZXIg
PSBtX2ZyYW1lTGF5ZXJzLmJlZ2luKCktPnZhbHVlOworICAgICAgICBtX3Jvb3RMYXllciA9IG1f
ZnJhbWVMYXllcnMuYmVnaW4oKS0+c2Vjb25kOwogICAgIGVsc2UgaWYgKG1fcm9vdEdyYXBoaWNz
TGF5ZXIpCiAgICAgICAgIG1fcm9vdExheWVyID0gbV9yb290R3JhcGhpY3NMYXllci0+cGxhdGZv
cm1MYXllcigpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAppbmRleCAxZWVhYzY2N2JkZjY2YjNmMTkzZmIzMzVhMzg3MTI4ZmJjOTEyNjc0Li40YzBl
ZDljZDcxN2I2ZjRkNWFhNmFmYWY5NzBiZWI2OTY3OTY4OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgV2ViR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnJlbW92ZShjb25zdCBXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uCiAgICAgR2VvbG9jYXRpb25JZE1hcDo6aXRlcmF0b3IgaXQgPSBtX3ByaXZhdGUt
Pm1fZ2VvbG9jYXRpb25JZE1hcC5maW5kKGdlb2xvY2F0aW9uKTsKICAgICBpZiAoaXQgPT0gbV9w
cml2YXRlLT5tX2dlb2xvY2F0aW9uSWRNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZCA9IGl0LT52YWx1ZTsKKyAgICBpZCA9IGl0LT5zZWNvbmQ7CiAgICAgbV9wcml2YXRl
LT5tX2dlb2xvY2F0aW9uSWRNYXAucmVtb3ZlKGl0KTsKICAgICBtX3ByaXZhdGUtPm1faWRHZW9s
b2NhdGlvbk1hcC5yZW1vdmUoaWQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNzUsNyArNzUsNyBA
QCBib29sIFdlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpyZW1vdmUoaW50
IGlkLCBXZWJLaXQ6OldlYkdlb2xvY2F0aQogICAgIElkR2VvbG9jYXRpb25NYXA6Oml0ZXJhdG9y
IGl0ID0gbV9wcml2YXRlLT5tX2lkR2VvbG9jYXRpb25NYXAuZmluZChpZCk7CiAgICAgaWYgKGl0
ID09IG1fcHJpdmF0ZS0+bV9pZEdlb2xvY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uID0gaXQtPnZhbHVlOworICAgIEdl
b2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IGl0LT5zZWNvbmQ7CiAgICAgcGVybWlzc2lvblJlcXVl
c3QgPSBXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKICAgICBt
X3ByaXZhdGUtPm1faWRHZW9sb2NhdGlvbk1hcC5yZW1vdmUoaXQpOwogICAgIG1fcHJpdmF0ZS0+
bV9nZW9sb2NhdGlvbklkTWFwLnJlbW92ZShnZW9sb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKaW5kZXggZjJmYzI4NTk0NDRjNDhhNzJk
ZDk0YWRjMTFkMTg4MTdmNWViNDVkOC4uMDFkODc4YTBhOWYyYzFjODkxNDkxOTFiYzhjODcxZDhj
ZGNmNjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0
YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRh
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEoY29u
c3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCiAKICAgICBzaXplX3Qg
aSA9IDA7CiAgICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29u
c3RfaXRlcmF0b3Igc3RvcmVJdGVyYXRvciA9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigp
OyBzdG9yZUl0ZXJhdG9yICE9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytzdG9yZUl0
ZXJhdG9yKSB7Ci0gICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0
b3JlID0gc3RvcmVJdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmIG9iamVjdFN0b3JlID0gc3RvcmVJdGVyYXRvci0+c2Vjb25kOwogICAgICAgICBP
YmplY3RTdG9yZSB3ZWJPYmplY3RTdG9yZTsKICAgICAgICAgd2ViT2JqZWN0U3RvcmUubmFtZSA9
IG9iamVjdFN0b3JlLm5hbWU7CiAgICAgICAgIHdlYk9iamVjdFN0b3JlLmtleVBhdGggPSBvYmpl
Y3RTdG9yZS5rZXlQYXRoOwpAQCAtNTUsNyArNTUsNyBAQCBXZWJJREJNZXRhZGF0YTo6V2ViSURC
TWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCiAK
ICAgICAgICAgc2l6ZV90IGogPSAwOwogICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRh
dGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpbmRleEl0ZXJhdG9yID0gb2JqZWN0U3RvcmUu
aW5kZXhlcy5iZWdpbigpOyBpbmRleEl0ZXJhdG9yICE9IG9iamVjdFN0b3JlLmluZGV4ZXMuZW5k
KCk7ICsraW5kZXhJdGVyYXRvcikgewotICAgICAgICAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgaW5kZXggPSBpbmRleEl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IElEQklu
ZGV4TWV0YWRhdGEmIGluZGV4ID0gaW5kZXhJdGVyYXRvci0+c2Vjb25kOwogICAgICAgICAgICAg
SW5kZXggd2ViSW5kZXg7CiAgICAgICAgICAgICB3ZWJJbmRleC5uYW1lID0gaW5kZXgubmFtZTsK
ICAgICAgICAgICAgIHdlYkluZGV4LmtleVBhdGggPSBpbmRleC5rZXlQYXRoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkludGVudC5jcHAKaW5kZXggMDQxYzdmMmU5YzUwMzU3NTliZDhl
M2ViYjM0M2ZjNGNmZmRiN2QwZC4uNTU3NzVlY2ZjZGMxNjIwNGU1ODQwNmExNTc4YWU4ZWI2Njg3
ZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW50ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnRlbnQuY3BwCkBAIC0xODgs
NyArMTg4LDcgQEAgV2ViU3RyaW5nIFdlYkludGVudDo6ZXh0cmFzVmFsdWUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lKSBjb25zdAogICAgIFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIHZhbCA9IG1fcHJpdmF0ZS0+ZXh0cmFzKCkuZmluZChuYW1lKTsKICAgICBpZiAo
dmFsID09IG1fcHJpdmF0ZS0+ZXh0cmFzKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBXZWJTdHJp
bmcoKTsKLSAgICByZXR1cm4gdmFsLT52YWx1ZTsKKyAgICByZXR1cm4gdmFsLT5zZWNvbmQ7CiAj
ZWxzZQogICAgIHJldHVybiBXZWJTdHJpbmcoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXJUZXN0LmNwcAppbmRleCAyNDUxNGNkNThmYmZkMDBhYWE4ODcyNDJhMWFjMzYzMzFjYWVi
NzgwLi4zNTg5ODNiODM5OTMxNGNkYTAzN2M4YzAzMjQ5ZWU5YjY3MmU5NjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgVEVTVF9GKFdl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0UGFyYW1ldGVycykKICAgICBFWFBF
Q1RfRVEoMiwgbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLnNpemUoKSk7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz46Oml0ZXJhdG9yIHBhcmFtZXRlciA9IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5m
aW5kKCJtYXgtY2hhbm5lbHMiKTsKICAgICBFWFBFQ1RfVFJVRShwYXJhbWV0ZXIgIT0gbV9wYXJz
ZWRQYXJhbWV0ZXJzWzBdLmVuZCgpKTsKLSAgICBFWFBFQ1RfRVEoIjQiLCBwYXJhbWV0ZXItPnZh
bHVlKTsKKyAgICBFWFBFQ1RfRVEoIjQiLCBwYXJhbWV0ZXItPnNlY29uZCk7CiAgICAgcGFyYW1l
dGVyID0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmZpbmQoImZsb3ctY29udHJvbCIpOwogICAgIEVY
UEVDVF9UUlVFKHBhcmFtZXRlciAhPSBtX3BhcnNlZFBhcmFtZXRlcnNbMF0uZW5kKCkpOwotICAg
IEVYUEVDVF9UUlVFKHBhcmFtZXRlci0+dmFsdWUuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KHBhcmFtZXRlci0+c2Vjb25kLmlzTnVsbCgpKTsKIH0KIAogVEVTVF9GKFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0TXVsdGlwbGUpCkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBU
RVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RNdWx0aXBsZSkKICAg
ICAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHBhcnNlZFBhcmFtZXRlcnMgPSBt
X3BhcnNlZFBhcmFtZXRlcnNbaV07CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXS5wYXJh
bWV0ZXJzLnNpemUoKSwgbV9wYXJzZWRQYXJhbWV0ZXJzW2ldLnNpemUoKSk7CiAgICAgICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yID0gZXhw
ZWN0ZWRQYXJhbWV0ZXJzLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGV4cGVjdGVkUGFyYW1ldGVycy5l
bmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIHBhcnNlZCA9IHBhcnNlZFBhcmFtZXRlcnMuZmluZChpdGVyYXRvci0+
a2V5KTsKKyAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBwYXJzZWQgPSBwYXJzZWRQYXJhbWV0ZXJzLmZpbmQoaXRlcmF0b3ItPmZpcnN0KTsKICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHBhcnNlZCAhPSBwYXJzZWRQYXJhbWV0ZXJzLmVuZCgpKTsKLSAg
ICAgICAgICAgIGlmIChpdGVyYXRvci0+dmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAg
RVhQRUNUX1RSVUUocGFyc2VkLT52YWx1ZS5pc051bGwoKSk7CisgICAgICAgICAgICBpZiAoaXRl
cmF0b3ItPnNlY29uZC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShwYXJz
ZWQtPnNlY29uZC5pc051bGwoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
RVhQRUNUX0VRKGl0ZXJhdG9yLT52YWx1ZSwgcGFyc2VkLT52YWx1ZSk7CisgICAgICAgICAgICAg
ICAgRVhQRUNUX0VRKGl0ZXJhdG9yLT5zZWNvbmQsIHBhcnNlZC0+c2Vjb25kKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDY2ZTk3ZmY5NmM2MzMy
NWM3MTMyY2NmZDc2NDYwZjE4YjNiZjA5MDQuLjk2YTU3OTFlZTJhOWYwNjU0MTFkMjk4NGFiMGE0
ZjgyYTFmYThkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtNTQ4LDcgKzU0OCw3
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0
ZWRXb3JsZChjb25zdCBFdmFzX09iamVjdCoKICAgICBlbHNlIHsKICAgICAgICAgV1RGOjpIYXNo
TWFwPGludCwgUmVmUHRyPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCA+ID46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gd29ybGRNYXAuZmluZCh3b3JsZElEKTsKICAgICAgICAgaWYgKGl0ICE9IHdvcmxk
TWFwLmVuZCgpKQotICAgICAgICAgICAgc2NyaXB0V29ybGQgPSAoKml0KS52YWx1ZTsKKyAgICAg
ICAgICAgIHNjcmlwdFdvcmxkID0gKCppdCkuc2Vjb25kOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIHNjcmlwdFdvcmxkID0gV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29y
bGQoKTsKICAgICAgICAgICAgIHdvcmxkTWFwLnNldCh3b3JsZElELCBzY3JpcHRXb3JsZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmNwcAppbmRleCAwOThkMzAzYTRhYzU5NWM0Njc2Yjk1NThmMjQyNTYyOTVj
NWE3ZTg1Li41YjQwMzA4YTIxOTA3NWMwNGZlMTZmMDUzYWE5YzI3ZDMzYWQ0ZDZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0VmbC5jcHAKQEAgLTk5LDggKzk5LDggQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFnZSwgVmVjdG9yPFBsdWdpbkluZm8+Jgog
ICAgICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
aW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAg
ICBNaW1lQ2xhc3NJbmZvIG1pbWU7CiAKLSAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5rZXk7
Ci0gICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+dmFsdWU7CisgICAgICAgICAgICBtaW1lLnR5
cGUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+c2Vjb25kOwogICAg
ICAgICAgICAgbWltZS5leHRlbnNpb25zID0gcGFja2FnZS0+bWltZVRvRXh0ZW5zaW9ucygpLmdl
dChtaW1lLnR5cGUpOwogICAgICAgICAgICAgcGx1Z2luSW5mby5taW1lcy5hcHBlbmQobWltZSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50LmNwcAppbmRleCA4M2JjZTg3
NjRhZjZhZDc5NzQ0MzY5MmY1Mzk2ZTNiYWFiMzU1ODhjLi43NmMyZDY4ZGFhNzIxMjRlYTViNjFi
N2UyNGYwMzRjMmMwY2RiODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ludGVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19pbnRlbnQuY3BwCkBA
IC0xMjAsNyArMTIwLDcgQEAgY29uc3QgY2hhciogZXdrX2ludGVudF9leHRyYV9nZXQoY29uc3Qg
RXdrX0ludGVudCogaW50ZW50LCBjb25zdCBjaGFyKiBrZXkpCiAgICAgV1RGOjpIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdmFsID0gY29yZS0+ZXh0cmFzKCkuZmluZChT
dHJpbmc6OmZyb21VVEY4KGtleSkpOwogICAgIGlmICh2YWwgPT0gY29yZS0+ZXh0cmFzKCkuZW5k
KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZCh2
YWwtPnZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCh2YWwtPnNlY29uZC51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCmluZGV4IDkxMDNjODQ2MDk0ZDUxZjhmNWI5NDg3NGNkNjdh
ZjA0Nzk5MDlhZTAuLjI5MjE3M2FlMjkyZjUxMjExODdlOGJlNTA1MDM5M2Q3YzMzODRjNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzR3RrLmNwcApAQCAtODgsOCArODgsOCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRl
Z2llc0d0azo6Z2V0UGx1Z2luSW5mbyhjb25zdCBQYWdlKiBwYWdlLCBWZWN0b3I8UGx1Z2luSW5m
bz4mCiAgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOwogICAgICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9u
c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7Ci0gICAgICAg
ICAgICBtaW1lLnR5cGUgPSBpdC0+a2V5OwotICAgICAgICAgICAgbWltZS5kZXNjID0gaXQtPnZh
bHVlOworICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmZpcnN0OworICAgICAgICAgICAgbWlt
ZS5kZXNjID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgIG1pbWUuZXh0ZW5zaW9ucyA9IHBhY2th
Z2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS50eXBlKTsKICAgICAgICAgICAgIHBsdWdp
bkluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCmluZGV4IGIzYTFkNzVjYTEy
YjZhZTBmNjQ1YmY5MmIxMjhhNTgwMGEyMGVjY2YuLjZiYWJmZTRkZDkyZTUxNDJjZTBjNGY3MmMz
OWE2Y2I2YzNkZGUxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRmYXZpY29uZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRmYXZpY29uZGF0YWJhc2UuY3BwCkBAIC02MTQsMTggKzYxNCwxOCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRGYXZpY29uRGF0YWJhc2VJbXBvcnRGaW5pc2hlZChXZWJLaXRGYXZpY29uRGF0YWJhc2Uq
IGRhdGFiYXNlKQogICAgIFZlY3RvcjxTdHJpbmc+IHRvRGVsZXRlVVJMczsKICAgICBQZW5kaW5n
SWNvblJlcXVlc3RNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGRhdGFiYXNlLT5wcml2LT5wZW5k
aW5nSWNvblJlcXVlc3RzLmVuZCgpOwogICAgIGZvciAoUGVuZGluZ0ljb25SZXF1ZXN0TWFwOjpj
b25zdF9pdGVyYXRvciBpdGVyID0gZGF0YWJhc2UtPnByaXYtPnBlbmRpbmdJY29uUmVxdWVzdHMu
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBTdHJpbmcgaWNvblVSTCA9
IGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoaXRlci0+a2V5KTsK
KyAgICAgICAgU3RyaW5nIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25V
UkxGb3JQYWdlVVJMKGl0ZXItPmZpcnN0KTsKICAgICAgICAgaWYgKCFpY29uVVJMLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFBlbmRpbmdJY29uUmVxdWVzdFZl
Y3RvciogaWNvbnMgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgUGVuZGluZ0ljb25SZXF1ZXN0VmVj
dG9yKiBpY29ucyA9IGl0ZXItPnNlY29uZDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpY29ucy0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFBlbmRpbmdJY29uUmVxdWVzdCog
cmVxdWVzdCA9IGljb25zLT5hdChpKS5nZXQoKTsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5h
c3luY1Jlc3VsdCgpKQogICAgICAgICAgICAgICAgIHJlcXVlc3QtPmFzeW5jUmVzdWx0Q29tcGxl
dGUoMCk7CiAgICAgICAgIH0KIAotICAgICAgICB0b0RlbGV0ZVVSTHMuYXBwZW5kKGl0ZXItPmtl
eSk7CisgICAgICAgIHRvRGVsZXRlVVJMcy5hcHBlbmQoaXRlci0+Zmlyc3QpOwogICAgIH0KIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG9EZWxldGVVUkxzLnNpemUoKTsgKytpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2luLmNwcAppbmRleCAwMWQwYmI1
ZjJiZmQ3MDBmNmIzYzlmYzRmOGU0MjBjNTcyNDg2ZWMyLi5lMDNiMWVhNmRhMzNiN2UyZjAwMjI1
NWNlODc3Nzg2MjRjZGE3MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VicGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2VicGx1Z2luLmNwcApAQCAtMjM3LDEwICsyMzcsMTAgQEAgR1NMaXN0KiB3ZWJraXRfd2ViX3Bs
dWdpbl9nZXRfbWltZXR5cGVzKFdlYktpdFdlYlBsdWdpbiogcGx1Z2luKQogCiAgICAgZm9yIChN
SU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRp
b25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBXZWJLaXRXZWJQbHVnaW5N
SU1FVHlwZSogbWltZVR5cGUgPSBnX3NsaWNlX25ldzAoV2ViS2l0V2ViUGx1Z2luTUlNRVR5cGUp
OwotICAgICAgICBtaW1lVHlwZS0+bmFtZSA9IGdfc3RyZHVwKGl0LT5rZXkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIG1pbWVUeXBlLT5kZXNjcmlwdGlvbiA9IGdfc3RyZHVwKGl0LT52YWx1ZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbWltZVR5cGUtPm5hbWUgPSBnX3N0cmR1cChpdC0+Zmly
c3QudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1pbWVUeXBlLT5kZXNjcmlwdGlvbiA9IGdfc3Ry
ZHVwKGl0LT5zZWNvbmQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXh0ZW5zaW9ucyA9IHByaXYtPmNvcmVQbHVnaW4tPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQoaXQt
PmtleSk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBwcml2LT5jb3JlUGx1
Z2luLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KGl0LT5maXJzdCk7CiAgICAgICAgIG1pbWVUeXBl
LT5leHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Z2NoYXIqKj4oZ19tYWxsb2MwKHNpemVvZihjaGFy
KikgKiAoZXh0ZW5zaW9ucy5zaXplKCkgKyAxKSkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykKICAgICAgICAgICAgIG1pbWVUeXBlLT5l
eHRlbnNpb25zW2ldID0gZ19zdHJkdXAoZXh0ZW5zaW9uc1tpXS51dGY4KCkuZGF0YSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBlNzgxZDMyZmQxZGU5NTBk
OTE0YWY0ODM0OTc2NDIwZGY1ODdkYWY3Li42OTY0ZmM5NDliNTEyMTczYTZiZGM1ZTcwYjU2MThk
MzFjYjY3N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0y
MzgsNyArMjM4LDcgQEAgc3RhdGljIGlubGluZSBXZWJIaXN0b3J5RGF0ZUtleSBkYXRlS2V5KE5T
VGltZUludGVydmFsIGRhdGUpCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIERhdGVUb0VudHJp
ZXNNYXA6Oml0ZXJhdG9yIGl0ID0gX2VudHJpZXNCeURhdGUtPmZpbmQoZGF0ZUtleSk7Ci0gICAg
TlNNdXRhYmxlQXJyYXkgKmVudHJpZXNGb3JEYXRlID0gaXQtPnZhbHVlLmdldCgpOworICAgIE5T
TXV0YWJsZUFycmF5ICplbnRyaWVzRm9yRGF0ZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgW2Vu
dHJpZXNGb3JEYXRlIHJlbW92ZU9iamVjdElkZW50aWNhbFRvOmVudHJ5XTsKICAgICAKICAgICAv
LyByZW1vdmUgdGhpcyBkYXRlIGVudGlyZWx5IGlmIHRoZXJlIGFyZSBubyBvdGhlciBlbnRyaWVz
IG9uIGl0CkBAIC00NDAsNyArNDQwLDcgQEAgc3RhdGljIGlubGluZSBXZWJIaXN0b3J5RGF0ZUtl
eSBkYXRlS2V5KE5TVGltZUludGVydmFsIGRhdGUpCiAgICAgICAgIGRheXNBc1RpbWVJbnRlcnZh
bHMucmVzZXJ2ZUNhcGFjaXR5KF9lbnRyaWVzQnlEYXRlLT5zaXplKCkpOwogICAgICAgICBEYXRl
VG9FbnRyaWVzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBfZW50cmllc0J5RGF0ZS0+ZW5kKCk7
CiAgICAgICAgIGZvciAoRGF0ZVRvRW50cmllc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBfZW50
cmllc0J5RGF0ZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgZGF5c0Fz
VGltZUludGVydmFscy5hcHBlbmQoaXQtPmtleSk7CisgICAgICAgICAgICBkYXlzQXNUaW1lSW50
ZXJ2YWxzLmFwcGVuZChpdC0+Zmlyc3QpOwogCiAgICAgICAgIHNvcnQoZGF5c0FzVGltZUludGVy
dmFscy5iZWdpbigpLCBkYXlzQXNUaW1lSW50ZXJ2YWxzLmVuZCgpKTsKICAgICAgICAgc2l6ZV90
IGNvdW50ID0gZGF5c0FzVGltZUludGVydmFscy5zaXplKCk7CkBAIC04OTcsNyArODk3LDcgQEAg
V2ViSGlzdG9yeVdyaXRlcjo6V2ViSGlzdG9yeVdyaXRlcihEYXRlVG9FbnRyaWVzTWFwKiBlbnRy
aWVzQnlEYXRlKQogICAgIG1fZGF0ZUtleXMucmVzZXJ2ZUNhcGFjaXR5KG1fZW50cmllc0J5RGF0
ZS0+c2l6ZSgpKTsKICAgICBEYXRlVG9FbnRyaWVzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X2VudHJpZXNCeURhdGUtPmVuZCgpOwogICAgIGZvciAoRGF0ZVRvRW50cmllc01hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2VudHJpZXNCeURhdGUtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgbV9kYXRlS2V5cy5hcHBlbmQoaXQtPmtleSk7CisgICAgICAgIG1fZGF0ZUtleXMu
YXBwZW5kKGl0LT5maXJzdCk7CiAgICAgc29ydChtX2RhdGVLZXlzLmJlZ2luKCksIG1fZGF0ZUtl
eXMuZW5kKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNv
cmVTdGF0aXN0aWNzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGlj
cy5tbQppbmRleCA4ZGU2MzEzOWI3NzQzNzZiYmQxZjdjMTEwNmY2ZWVkYmRkM2U1YjI3Li4yOTZk
ZDZiMjViZDhiZGI3N2EzYzY4MGUxMzI0ZTViMzk3ZDI2NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTg5LDggKzg5LDggQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAgICAgT3duUHRyPFR5cGVDb3VudFNldD4gY291bnRzKEpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5wcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRz
KCkpOwogICAgIEhhc2hDb3VudGVkU2V0PGNvbnN0IGNoYXIqPjo6aXRlcmF0b3IgZW5kID0gY291
bnRzLT5lbmQoKTsKICAgICBmb3IgKEhhc2hDb3VudGVkU2V0PGNvbnN0IGNoYXIqPjo6aXRlcmF0
b3IgaXQgPSBjb3VudHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGl0LT52YWx1ZTsgKytpKQotICAgICAgICAgICAgW3Jlc3VsdCBh
ZGRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOml0LT5rZXldXTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0LT5zZWNvbmQ7ICsraSkKKyAgICAgICAgICAg
IFtyZXN1bHQgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzppdC0+Zmly
c3RdXTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTA0LDggKzEwNCw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIE93blB0cjxUeXBlQ291bnRTZXQ+IGNvdW50cyhK
U0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCktPmhlYXAub2JqZWN0VHlwZUNvdW50cygp
KTsKICAgICBIYXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj46Oml0ZXJhdG9yIGVuZCA9IGNvdW50
cy0+ZW5kKCk7CiAgICAgZm9yIChIYXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj46Oml0ZXJhdG9y
IGl0ID0gY291bnRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBpdC0+dmFsdWU7ICsraSkKLSAgICAgICAgICAgIFtyZXN1bHQgYWRk
T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzppdC0+a2V5XV07CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdC0+c2Vjb25kOyArK2kpCisgICAgICAgICAgICBb
cmVzdWx0IGFkZE9iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6aXQtPmZpcnN0
XV07CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1t
CmluZGV4IDNjZTA4OWJlZDI3YTRjMjNhZjIzYzc1MDkyNGE5ZDg5YWMwYzcxMWMuLmU0OWQ1MGY0
YmNiZDVjMWNiY2I4MzdjOGYyOTQ2M2Q0ZGMyZjQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdl
ci5tbQpAQCAtNzMsNyArNzMsNyBAQCBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eSogTmV0c2NhcGVQ
bHVnaW5Ib3N0TWFuYWdlcjo6aG9zdEZvclBsdWdpbihjb25zdCBXVEY6OlN0cgogICAgIAogICAg
IC8vIFRoZSBwYWNrYWdlIHdhcyBhbHJlYWR5IGluIHRoZSBtYXAsIGp1c3QgcmV0dXJuIGl0Lgog
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAg
ICAgIAogICAgIG1hY2hfcG9ydF90IGNsaWVudFBvcnQ7CiAgICAgaWYgKG1hY2hfcG9ydF9hbGxv
Y2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRfUklHSFRfUkVDRUlWRSwgJmNsaWVudFBv
cnQpICE9IEtFUk5fU1VDQ0VTUykgewpAQCAtOTUsNyArOTUsNyBAQCBOZXRzY2FwZVBsdWdpbkhv
c3RQcm94eSogTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6aG9zdEZvclBsdWdpbihjb25zdCBX
VEY6OlN0cgogICAgIAogICAgIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5KiBob3N0UHJveHkgPSBu
ZXcgTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkoY2xpZW50UG9ydCwgcGx1Z2luSG9zdFBvcnQsIHBs
dWdpbkhvc3RQU04sIHNob3VsZENhY2hlTWlzc2luZ1Byb3BlcnRpZXNBbmRNZXRob2RzKTsKICAg
ICAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gaG9zdFByb3h5OworICAgIHJlc3VsdC5p
dGVyYXRvci0+c2Vjb25kID0gaG9zdFByb3h5OwogICAgIAogICAgIHJldHVybiBob3N0UHJveHk7
CiB9CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpw
bHVnaW5Ib3N0RGllZChOZXRzY2FwZVBsdWdpbkhvc3RQcm94eSogcGx1Z2luSG8KIAogICAgIC8v
IFRoaXMgaGFzIE8obikgY29tcGxleGl0eSBidXQgdGhlIG51bWJlciBvZiBhY3RpdmUgcGx1Zy1p
biBob3N0cyBpcyB2ZXJ5IHNtYWxsIHNvIGl0IHNob3VsZG4ndCBtYXR0ZXIuCiAgICAgZm9yIChQ
bHVnaW5Ib3N0TWFwOjppdGVyYXRvciBpdCA9IG1fcGx1Z2luSG9zdHMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUgPT0gcGx1Z2luSG9zdCkgeworICAg
ICAgICBpZiAoaXQtPnNlY29uZCA9PSBwbHVnaW5Ib3N0KSB7CiAgICAgICAgICAgICBtX3BsdWdp
bkhvc3RzLnJlbW92ZShpdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI4
Niw3ICsyODYsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXI6OmRpZENyZWF0ZVdp
bmRvdygpCiAgICAgLy8gU2VlIGlmIGFueSBvZiBvdXIgaG9zdHMgYXJlIGluIGZ1bGwtc2NyZWVu
IG1vZGUuCiAgICAgUGx1Z2luSG9zdE1hcDo6aXRlcmF0b3IgZW5kID0gbV9wbHVnaW5Ib3N0cy5l
bmQoKTsKICAgICBmb3IgKFBsdWdpbkhvc3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wbHVnaW5Ib3N0
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgTmV0c2NhcGVQbHVnaW5Ib3N0
UHJveHkqIGhvc3RQcm94eSA9IGl0LT52YWx1ZTsKKyAgICAgICAgTmV0c2NhcGVQbHVnaW5Ib3N0
UHJveHkqIGhvc3RQcm94eSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIAogICAgICAgICBpZiAoIWhv
c3RQcm94eS0+aXNNZW51QmFyVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBNYWtlIG91cnNl
bHZlcyB0aGUgZnJvbnQgcHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggMGZiMjZk
MGE5Yjg0NzUyMjZiZWZjYzM0OTY4YjlmNTA2ZWI5MTViYy4uYWY2ZjJiZTk5NjljYjExY2IzM2E1
NjMxN2ZkZGE4YzJjZjYxY2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTE0NCw3ICsx
NDQsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5OjpwbHVnaW5Ib3N0RGllZCgpCiAg
IAogICAgIFBsdWdpbkluc3RhbmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0YW5jZXMu
ZW5kKCk7CiAgICAgZm9yIChQbHVnaW5JbnN0YW5jZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBp
bnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnBs
dWdpbkhvc3REaWVkKCk7CisgICAgICAgIGl0LT5zZWNvbmQtPnBsdWdpbkhvc3REaWVkKCk7CiAg
ICAgCiAgICAgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c2hhcmVkKCkucGx1Z2luSG9zdERp
ZWQodGhpcyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggMDFlNDg4
MjA0OThlMjMxZjVlMTUwOWUzYzYyYjFkZjkyZmM3MDdlOC4uOTEwNDQzMDVmYmE2YjIzYWIyNTU1
MDZjMTE3YTEyNGFjNDkzMWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9j
YWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KEpTR2xvYmFsRGF0YSYKICAgICAKICAgICBIYXNoTWFw
PEpTQzo6SlNPYmplY3QqLCBwYWlyPHVpbnQzMl90LCB1aW50MzJfdD4gPjo6aXRlcmF0b3IgaXRl
ciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQob2JqZWN0KTsKICAgICBpZiAoaXRlciAhPSBtX2pz
T2JqZWN0VG9JRE1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLmZpcnN0Owor
ICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kLmZpcnN0OwogICAgIAogICAgIGRvIHsKICAgICAg
ICAgb2JqZWN0SUQgPSArK21fb2JqZWN0SURDb3VudGVyOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZv
aWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6cmV0YWluKEpT
Qzo6SlNPYmplY3QqIG9iamVjdCkKICAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBwYWlyPHVp
bnQzMl90LCB1aW50MzJfdD4gPjo6aXRlcmF0b3IgaXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZp
bmQob2JqZWN0KTsKICAgICBBU1NFUlQoaXRlciAhPSBtX2pzT2JqZWN0VG9JRE1hcC5lbmQoKSk7
CiAKLSAgICBpdGVyLT52YWx1ZS5zZWNvbmQgPSBpdGVyLT52YWx1ZS5zZWNvbmQgKyAxOworICAg
IGl0ZXItPnNlY29uZC5zZWNvbmQgPSBpdGVyLT5zZWNvbmQuc2Vjb25kICsgMTsKIH0KIAogdm9p
ZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpyZWxlYXNlKEpT
Qzo6SlNPYmplY3QqIG9iamVjdCkKQEAgLTE3MCwxMCArMTcwLDEwIEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6cmVsZWFzZShKU0M6OkpTT2JqZWN0
KiBvYmplY3QpCiAgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwgdWlu
dDMyX3Q+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX2pzT2JqZWN0VG9JRE1hcC5maW5kKG9iamVjdCk7
CiAgICAgQVNTRVJUKGl0ZXIgIT0gbV9qc09iamVjdFRvSURNYXAuZW5kKCkpOwogCi0gICAgQVNT
RVJUKGl0ZXItPnZhbHVlLnNlY29uZCA+IDApOwotICAgIGl0ZXItPnZhbHVlLnNlY29uZCA9IGl0
ZXItPnZhbHVlLnNlY29uZCAtIDE7Ci0gICAgaWYgKCFpdGVyLT52YWx1ZS5zZWNvbmQpIHsKLSAg
ICAgICAgbV9pZFRvSlNPYmplY3RNYXAucmVtb3ZlKGl0ZXItPnZhbHVlLmZpcnN0KTsKKyAgICBB
U1NFUlQoaXRlci0+c2Vjb25kLnNlY29uZCA+IDApOworICAgIGl0ZXItPnNlY29uZC5zZWNvbmQg
PSBpdGVyLT5zZWNvbmQuc2Vjb25kIC0gMTsKKyAgICBpZiAoIWl0ZXItPnNlY29uZC5zZWNvbmQp
IHsKKyAgICAgICAgbV9pZFRvSlNPYmplY3RNYXAucmVtb3ZlKGl0ZXItPnNlY29uZC5maXJzdCk7
CiAgICAgICAgIG1fanNPYmplY3RUb0lETWFwLnJlbW92ZShpdGVyKTsKICAgICB9CiB9CkBAIC0x
OTcsMTAgKzE5NywxMCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxP
YmplY3RNYXA6OmZvcmdldCh1aW50MzJfdCBvYmplY3RJRCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwgdWlu
dDMyX3Q+ID46Oml0ZXJhdG9yIHJJdGVyID0gbV9qc09iamVjdFRvSURNYXAuZmluZChpdGVyLT52
YWx1ZS5nZXQoKSk7CisgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwg
dWludDMyX3Q+ID46Oml0ZXJhdG9yIHJJdGVyID0gbV9qc09iamVjdFRvSURNYXAuZmluZChpdGVy
LT5zZWNvbmQuZ2V0KCkpOwogCiAgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBiZWluZyBzZW50IHRv
IHBsdWctaW4gcmlnaHQgbm93LCB0aGVuIGl0J3Mgbm90IHRoZSB0aW1lIHRvIGZvcmdldC4KLSAg
ICBpZiAockl0ZXItPnZhbHVlLnNlY29uZCAhPSAxKQorICAgIGlmIChySXRlci0+c2Vjb25kLnNl
Y29uZCAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2pzT2JqZWN0VG9JRE1h
cC5yZW1vdmUockl0ZXIpOwpAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpkZXN0cm95KCkKICAgICAKICAgICBGcmFtZUxvYWRNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuZW5kKCk7CiAgICAgZm9yIChGcmFtZUxvYWRNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIFsoaXQtPmtleSkgX3NldEludGVybmFsTG9hZERlbGVnYXRlOm5pbF07Cisg
ICAgICAgIFsoaXQtPmZpcnN0KSBfc2V0SW50ZXJuYWxMb2FkRGVsZWdhdGU6bmlsXTsKIAogICAg
IF9XS1BIRGVzdHJveVBsdWdpbkluc3RhbmNlKG1fcGx1Z2luSG9zdFByb3h5LT5wb3J0KCksIG1f
cGx1Z2luSUQsIHJlcXVlc3RJRCk7CiAgCkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OndlYkZyYW1lRGlkRmluaXNoTG9hZFdpdGhSZWFzb24oV2Vi
RnJhbWUqIHdlYkYKICAgICBGcmFtZUxvYWRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRnJh
bWVMb2Fkcy5maW5kKHdlYkZyYW1lKTsKICAgICBBU1NFUlQoaXQgIT0gbV9wZW5kaW5nRnJhbWVM
b2Fkcy5lbmQoKSk7CiAgICAgICAgIAotICAgIFBsdWdpblJlcXVlc3QqIHBsdWdpblJlcXVlc3Qg
PSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzdCA9IGl0
LT5zZWNvbmQuZ2V0KCk7CiAgICAgX1dLUEhMb2FkVVJMTm90aWZ5KG1fcGx1Z2luSG9zdFByb3h5
LT5wb3J0KCksIG1fcGx1Z2luSUQsIHBsdWdpblJlcXVlc3QtPnJlcXVlc3RJRCgpLCByZWFzb24p
OwogIAogICAgIG1fcGVuZGluZ0ZyYW1lTG9hZHMucmVtb3ZlKGl0KTsKQEAgLTE2MjgsNyArMTYy
OCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjYW5jZWxDaGVja0lmQWxs
b3dlZFRvTG9hZFVSTCh1aW50MzJfdCBjaGVja0lECiAgICAgaWYgKGl0ID09IG1fdXJsQ2hlY2tz
LmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgV2ViUGx1Z2luQ29udGFpbmVyQ2hl
Y2sgKmNoZWNrID0gaXQtPnZhbHVlLmdldCgpOworICAgIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNr
ICpjaGVjayA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgW2NoZWNrIGNhbmNlbF07CiAgICAgbV91
cmxDaGVja3MucmVtb3ZlKGl0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDU5OGVlOGYzN2IwMTAxYTU2M2RhOWM0NmQ1
YmQ1YTQ1ZDU1Yjc3MWEuLjg5OGM1ZTIxNDA2OWZjOWJiZmQzNDljNWI0YzZiYThmNzM1NWUyNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbQpAQCAtMzU5LDggKzM1OSw4IEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgTWV0aG9kTWFwOjppdGVyYXRv
ciBleGlzdGluZ01hcEVudHJ5ID0gbV9tZXRob2RzLmZpbmQobmFtZS5pbXBsKCkpOwogICAgIGlm
IChleGlzdGluZ01hcEVudHJ5ICE9IG1fbWV0aG9kcy5lbmQoKSkgewogICAgICAgICBNZXRob2RM
aXN0IG1ldGhvZExpc3Q7Ci0gICAgICAgIGlmIChleGlzdGluZ01hcEVudHJ5LT52YWx1ZSkKLSAg
ICAgICAgICAgIG1ldGhvZExpc3QuYXBwZW5kKGV4aXN0aW5nTWFwRW50cnktPnZhbHVlKTsKKyAg
ICAgICAgaWYgKGV4aXN0aW5nTWFwRW50cnktPnNlY29uZCkKKyAgICAgICAgICAgIG1ldGhvZExp
c3QuYXBwZW5kKGV4aXN0aW5nTWFwRW50cnktPnNlY29uZCk7CiAgICAgICAgIHJldHVybiBtZXRo
b2RMaXN0OwogICAgIH0KICAgICAKQEAgLTM4MiwxMSArMzgyLDExIEBAIE1ldGhvZExpc3QgUHJv
eHlJbnN0YW5jZTo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAg
Ly8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3
aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBNZXRob2RNYXA6OkFkZFJlc3VsdCBt
YXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5hbWUuaW1wbCgpLCAwKTsKICAgICBpZiAobWFw
QWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV3IFByb3h5TWV0aG9kKG1ldGhvZE5hbWUpOworICAg
ICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IG5ldyBQcm94eU1ldGhvZChtZXRo
b2ROYW1lKTsKIAogICAgIE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKLSAgICBpZiAobWFwQWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgbWV0aG9kTGlzdC5hcHBlbmQobWFwQWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgaWYgKG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kKQorICAgICAgICBtZXRob2RMaXN0LmFwcGVuZChtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCk7CiAgICAgcmV0dXJuIG1ldGhvZExpc3Q7CiB9CiAKQEAgLTQwMiw3ICs0MDIsNyBAQCBG
aWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhbiBlbnRyeSBpbiB0aGUgbWFwLCB1c2UgaXQu
CiAgICAgRmllbGRNYXA6Oml0ZXJhdG9yIGV4aXN0aW5nTWFwRW50cnkgPSBtX2ZpZWxkcy5maW5k
KG5hbWUuaW1wbCgpKTsKICAgICBpZiAoZXhpc3RpbmdNYXBFbnRyeSAhPSBtX2ZpZWxkcy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIGV4aXN0aW5nTWFwRW50cnktPnZhbHVlOworICAgICAgICByZXR1
cm4gZXhpc3RpbmdNYXBFbnRyeS0+c2Vjb25kOwogICAgIAogICAgIHVpbnQ2NF90IGlkZW50aWZp
ZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIo
bmFtZS5hc2NpaSgpLmRhdGEoKSkpOwogICAgIHVpbnQzMl90IHJlcXVlc3RJRCA9IG1faW5zdGFu
Y2VQcm94eS0+bmV4dFJlcXVlc3RJRCgpOwpAQCAtNDIyLDggKzQyMiw4IEBAIEZpZWxkKiBQcm94
eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8g
QWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGls
ZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBGaWVsZE1hcDo6QWRkUmVzdWx0IG1hcEFk
ZFJlc3VsdCA9IG1fZmllbGRzLmFkZChuYW1lLmltcGwoKSwgMCk7CiAgICAgaWYgKG1hcEFkZFJl
c3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBQcm94eUZpZWxkKGlkZW50aWZpZXIpOwotICAgIHJldHVy
biBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBtYXBBZGRSZXN1bHQuaXRl
cmF0b3ItPnNlY29uZCA9IG5ldyBQcm94eUZpZWxkKGlkZW50aWZpZXIpOworICAgIHJldHVybiBt
YXBBZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKIH0KIAogSlNDOjpKU1ZhbHVlIFByb3h5SW5z
dGFuY2U6OmZpZWxkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGaWVsZCogZmllbGQpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCmluZGV4IDZhMWViNjQwYTBkYWNmMGNjZTAxZWVkMzgxOTIzNTBiNWRjODUyZjMuLjRl
MWFhZDQ5NTI4Y2Q3ZDA4MWQ0MTM1MjQ1NGI5Yzg1N2ZiYzI1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC03MTAsNyAr
NzEwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlY3QmIG5yLCBO
UFJlY3QmIG5wcikKIAogICAgIEhhc2hNYXA8dWludDMyX3QsIFBsdWdpblRpbWVyKj46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IHRpbWVycy0+ZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPHVpbnQzMl90
LCBQbHVnaW5UaW1lcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRpbWVycy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFBsdWdpblRpbWVyKiB0aW1lciA9IGl0LT52YWx1ZTsK
KyAgICAgICAgUGx1Z2luVGltZXIqIHRpbWVyID0gaXQtPnNlY29uZDsKICAgICAgICAgdGltZXIt
PnN0b3AoKTsKICAgICB9ICAgIAogfQpAQCAtNzI4LDcgKzcyOCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBnZXROUFJlY3QoY29uc3QgTlNSZWN0JiBuciwgTlBSZWN0JiBucHIpCiAgICAgCiAgICAg
SGFzaE1hcDx1aW50MzJfdCwgUGx1Z2luVGltZXIqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGlt
ZXJzLT5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8dWludDMyX3QsIFBsdWdpblRpbWVyKj46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gdGltZXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgUGx1Z2luVGltZXIqIHRpbWVyID0gaXQtPnZhbHVlOworICAgICAgICBQbHVnaW5UaW1l
ciogdGltZXIgPSBpdC0+c2Vjb25kOwogICAgICAgICBBU1NFUlQoIXRpbWVyLT5pc0FjdGl2ZSgp
KTsKICAgICAgICAgdGltZXItPnN0YXJ0KF9pc0NvbXBsZXRlbHlPYnNjdXJlZCk7CiAgICAgfSAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlm
aWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCBmMGM0OWE2Y2NjNDUwZTY0MWVjMTI2NTI3NDNiYzZj
OTA4ZmJkMjZiLi5lMmEwNWM2YThiYWMyNjFkZTVmZjVhZDAwM2NjOGZjMWFhZWY4MmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50Lm1tCkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIG1fbm90aWZpY2F0aW9u
TWFwLnNldChub3RpZmljYXRpb24sIHdlYk5vdGlmaWNhdGlvbik7CiAKICAgICBOb3RpZmljYXRp
b25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQo
bm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvcjxSZXRhaW5QdHI8
V2ViTm90aWZpY2F0aW9uPiA+KCkpLml0ZXJhdG9yOwotICAgIGl0LT52YWx1ZS5hcHBlbmQod2Vi
Tm90aWZpY2F0aW9uKTsKKyAgICBpdC0+c2Vjb25kLmFwcGVuZCh3ZWJOb3RpZmljYXRpb24pOwog
CiAgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBzaG93Tm90aWZpY2F0aW9u
OndlYk5vdGlmaWNhdGlvbi5nZXQoKSBmcm9tV2ViVmlldzptX3dlYlZpZXddOwogICAgIHJldHVy
biB0cnVlOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpj
bGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBp
ZiAoaXQgPT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmVuZCgpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+ID4mIHdlYk5vdGlm
aWNhdGlvbnMgPSBpdC0+dmFsdWU7CisgICAgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRp
b24+ID4mIHdlYk5vdGlmaWNhdGlvbnMgPSBpdC0+c2Vjb25kOwogICAgIE5TTXV0YWJsZUFycmF5
ICpuc0lEcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgc2l6ZV90IGNvdW50ID0gd2Vi
Tm90aWZpY2F0aW9ucy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aQogCiAg
ICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNv
bnRleHRNYXAuZmluZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgQVNTRVJUKGl0ICE9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQoKSk7Ci0gICAgc2l6
ZV90IGluZGV4ID0gaXQtPnZhbHVlLmZpbmQod2ViTm90aWZpY2F0aW9uKTsKKyAgICBzaXplX3Qg
aW5kZXggPSBpdC0+c2Vjb25kLmZpbmQod2ViTm90aWZpY2F0aW9uKTsKICAgICBBU1NFUlQoaW5k
ZXggIT0gbm90Rm91bmQpOwotICAgIGl0LT52YWx1ZS5yZW1vdmUoaW5kZXgpOwotICAgIGlmIChp
dC0+dmFsdWUuaXNFbXB0eSgpKQorICAgIGl0LT5zZWNvbmQucmVtb3ZlKGluZGV4KTsKKyAgICBp
ZiAoaXQtPnNlY29uZC5pc0VtcHR5KCkpCiAgICAgICAgIG1fbm90aWZpY2F0aW9uQ29udGV4dE1h
cC5yZW1vdmUoaXQpOwogCiAgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBu
b3RpZmljYXRpb25EZXN0cm95ZWQ6d2ViTm90aWZpY2F0aW9uLmdldCgpXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGI5YTAwMDZkNzlhMzQzNjBmMjk5YzNj
ODQxYmI3OTYyZjM3MmQ1OGIuLjUwNWRiNTMwMjEwNGVhODQ4ZmI4MjAxMjdmYTI5NGIzMTZiZTA5
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMjM3Niw3
ICsyMzc2LDcgQEAgc3RhdGljIFN0cmluZyBjb21tYW5kTmFtZUZvclNlbGVjdG9yKFNFTCBzZWxl
Y3RvcikKICAgICBzdGF0aWMgY29uc3QgU2VsZWN0b3JOYW1lTWFwKiBleGNlcHRpb25NYXAgPSBj
cmVhdGVTZWxlY3RvckV4Y2VwdGlvbk1hcCgpOwogICAgIFNlbGVjdG9yTmFtZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBleGNlcHRpb25NYXAtPmZpbmQoc2VsZWN0b3IpOwogICAgIGlmIChpdCAh
PSBleGNlcHRpb25NYXAtPmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgICAg
ICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgY29sb24u
CiAgICAgLy8gTm8gbmVlZCB0byBjYXBpdGFsaXplIHRoZSBjb21tYW5kIG5hbWUgc2luY2UgRWRp
dG9yIGNvbW1hbmQgbmFtZXMgYXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggM2Ri
Njk3Njk4YzM3YzEyN2YxNjcxNWZkNGUyZGIyNWYzZTAxNzIwMC4uMDhlODYxODNhNmI2ZWE0NDA4
N2VmMjQ3MWZkOTAwMmQ0YjYwNDBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAt
MjI1OCw3ICsyMjU4LDcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdENvbnRlbnRUeXBlRnJvbVBsdWdp
blZlY3Rvcihjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+JiBwbHUKICAgICAgICAgTUlNRVRv
RGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBtYXBfaXQgPSBwbHVnaW5zW2ldLT5taW1l
VG9EZXNjcmlwdGlvbnMoKS5iZWdpbigpOwogICAgICAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6
OmNvbnN0X2l0ZXJhdG9yIG1hcF9lbmQgPSBwbHVnaW5zW2ldLT5taW1lVG9EZXNjcmlwdGlvbnMo
KS5lbmQoKTsKICAgICAgICAgZm9yICg7IG1hcF9pdCAhPSBtYXBfZW5kOyArK21hcF9pdCkKLSAg
ICAgICAgICAgICpsaXN0IDw8IG1hcF9pdC0+a2V5OworICAgICAgICAgICAgKmxpc3QgPDwgbWFw
X2l0LT5maXJzdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2lu
ZGF0YWJhc2UuY3BwCmluZGV4IGM1MzI4YzhmNjc1ZjJjNjZmN2I5YjQyMGQ2NTEzN2ZkOWY4NmI4
OTYuLmE3YTNiNWYyYzFlODlmNDc0MzdjMDhhOTdmY2IyOTY3ODZiZjhlNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApAQCAtMTIyLDggKzEyMiw4IEBA
IFFMaXN0PFFXZWJQbHVnaW5JbmZvOjpNaW1lVHlwZT4gUVdlYlBsdWdpbkluZm86Om1pbWVUeXBl
cygpIGNvbnN0CiAKICAgICAgICAgZm9yIChNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbWltZVRvRGVzY3JpcHRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICAgICAgTWltZVR5cGUgbWltZVR5cGU7Ci0gICAgICAgICAgICBtaW1lVHlwZS5u
YW1lID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1pbWVUeXBlLmRlc2NyaXB0aW9uID0gaXQtPnZh
bHVlOworICAgICAgICAgICAgbWltZVR5cGUubmFtZSA9IGl0LT5maXJzdDsKKyAgICAgICAgICAg
IG1pbWVUeXBlLmRlc2NyaXB0aW9uID0gaXQtPnNlY29uZDsKIAogICAgICAgICAgICAgUVN0cmlu
Z0xpc3QgZmlsZUV4dGVuc2lvbnM7CiAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNp
b25zID0gbV9wYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWVUeXBlLm5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmNwcAppbmRleCA3ZDRiMGI3NWY5ZDJjNGU3Njc5ZGIzZDA3YjU2MTdhNDIxNDA0
YzU2Li5jZDRhYjBkNzJkODY4MTI1ZGM4NmVlOTg3YmNjZTZlZjNhYjFhZDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c1F0LmNwcApAQCAtMTMzLDggKzEzMyw4IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6Omdl
dFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSogcGFnZSwgVmVjdG9yPFdlYkNvCiAgICAg
ICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVU
b0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIE1p
bWVDbGFzc0luZm8gbWltZTsKIAotICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmtleTsKLSAg
ICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9
IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CiAgICAgICAg
ICAgICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1p
bWUudHlwZSk7CiAKICAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcuaCBiL1NvdXJjZS9XZWJLaXQv
d2luL0NPTVByb3BlcnR5QmFnLmgKaW5kZXggOGU4NGU0NzQwYWEzYTk4NjM1OTRiZWRjZWNlOGUz
NzEyYWQ0YTJmZi4uYzc2ODYzZjE1MDEyZjJlYWRlMGRjZTE1ZmRkYjczOWJmYmMyNzljMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCkBAIC0xNDcsOSArMTQ3LDkgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hU
eXBlPjo6UmVhZChMUEMKIAogICAgIFZBUlRZUEUgcmVxdWVzdGVkVHlwZSA9IFZfVlQocFZhcik7
CiAgICAgVl9WVChwVmFyKSA9IFZUX0VNUFRZOwotICAgIENPTVZhcmlhbnRTZXR0ZXI8VmFsdWVU
eXBlPjo6c2V0VmFyaWFudChwVmFyLCBpdC0+dmFsdWUpOworICAgIENPTVZhcmlhbnRTZXR0ZXI8
VmFsdWVUeXBlPjo6c2V0VmFyaWFudChwVmFyLCBpdC0+c2Vjb25kKTsKIAotICAgIGlmIChyZXF1
ZXN0ZWRUeXBlICE9IENPTVZhcmlhbnRTZXR0ZXI8VmFsdWVUeXBlPjo6dmFyaWFudFR5cGUoaXQt
PnZhbHVlKSAmJiByZXF1ZXN0ZWRUeXBlICE9IFZUX0VNUFRZKQorICAgIGlmIChyZXF1ZXN0ZWRU
eXBlICE9IENPTVZhcmlhbnRTZXR0ZXI8VmFsdWVUeXBlPjo6dmFyaWFudFR5cGUoaXQtPnNlY29u
ZCkgJiYgcmVxdWVzdGVkVHlwZSAhPSBWVF9FTVBUWSkKICAgICAgICAgcmV0dXJuIDo6VmFyaWFu
dENoYW5nZVR5cGUocFZhciwgcFZhciwgVkFSSUFOVF9OT1VTRVJPVkVSUklERSB8IFZBUklBTlRf
QUxQSEFCT09MLCByZXF1ZXN0ZWRUeXBlKTsKIAogICAgIHJldHVybiBTX09LOwpAQCAtMjE3LDEy
ICsyMTcsMTIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1
ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPjo6R2V0UHJvcGUKICAgICAgICAgLy9wUHJvcEJhZ1tq
XS5jbHNpZDsgICAgLy8gKENMU0lEKSBDTFNJRCBvZiB0aGUgb2JqZWN0LiBUaGlzIG1lbWJlciBp
cyB2YWxpZCBvbmx5IGlmIGR3VHlwZSBpcyBQUk9QQkFHMl9UWVBFX09CSkVDVC4KIAogICAgICAg
ICBwUHJvcEJhZ1tqXS5kd1R5cGUgPSBQUk9QQkFHMl9UWVBFX0RBVEE7Ci0gICAgICAgIHBQcm9w
QmFnW2pdLnZ0ID0gQ09NVmFyaWFudFNldHRlcjxWYWx1ZVR5cGU+Ojp2YXJpYW50VHlwZShjdXJy
ZW50LT52YWx1ZSk7CisgICAgICAgIHBQcm9wQmFnW2pdLnZ0ID0gQ09NVmFyaWFudFNldHRlcjxW
YWx1ZVR5cGU+Ojp2YXJpYW50VHlwZShjdXJyZW50LT5zZWNvbmQpOwogICAgICAgICBwUHJvcEJh
Z1tqXS5kd0hpbnQgPSBpUHJvcGVydHkgKyBqOwotICAgICAgICBwUHJvcEJhZ1tqXS5wc3RyTmFt
ZSA9IChMUE9MRVNUUilDb1Rhc2tNZW1BbGxvYyhzaXplb2Yod2NoYXJfdCkqKGN1cnJlbnQtPmtl
eS5sZW5ndGgoKSsxKSk7CisgICAgICAgIHBQcm9wQmFnW2pdLnBzdHJOYW1lID0gKExQT0xFU1RS
KUNvVGFza01lbUFsbG9jKHNpemVvZih3Y2hhcl90KSooY3VycmVudC0+Zmlyc3QubGVuZ3RoKCkr
MSkpOwogICAgICAgICBpZiAoIXBQcm9wQmFnW2pdLnBzdHJOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIEVfT1VUT0ZNRU1PUlk7Ci0gICAgICAgIHdjc2NweV9zKHBQcm9wQmFnW2pdLnBzdHJOYW1l
LCBjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSwgc3RhdGljX2Nhc3Q8U3RyaW5nPihjdXJyZW50LT5r
ZXkpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOworICAgICAgICB3Y3NjcHlfcyhw
UHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3VycmVudC0+Zmlyc3QubGVuZ3RoKCkrMSwgc3RhdGljX2Nh
c3Q8U3RyaW5nPihjdXJyZW50LT5maXJzdCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KSk7CiAgICAgICAgICsrKnBjUHJvcGVydGllczsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5kZXggMmYyMmIwM2M2MjI1MDAy
YWUyMTljYTBmNDViYTQ3ZDI5ODBjMzdhMC4uYzFjYTlmMjE0ZjI0OWMwYTQ5ZjFmY2IxMjJmMDZh
ZDM0OTNiNGIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3Rp
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3Rp
Y3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzCiAgICAgSXRlcmF0b3IgZW5k
ID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5
cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1l
cy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50
TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50
TWFwLnNldChjdXJyZW50LT5maXJzdCwgY3VycmVudC0+c2Vjb25kKTsKIAogICAgIENPTVB0cjxJ
UHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVh
dGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFt
ZXNBbmRDb3VudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjEzMGY3NmJkMmE2NzY5N2Fk
ZTdhMzY3ODg0NTI0M2E5ZjZhNzFhNS4uMjMwZjMzMjNmNTQyOTFkMDFlMTQxOTgxNzhmYTIxNmE0
OGMwY2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC05Myw4ICs5Myw4IEBAIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBW
ZWN0b3I8V2ViQ29yZTo6CiAgICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWltZTsKIAotICAgICAgICAgICAgbWlt
ZS50eXBlID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT52YWx1ZTsKKyAg
ICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUuZGVzYyA9
IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1l
VG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7CiAKICAgICAgICAgICAgIGluZm8ubWltZXMu
YXBwZW5kKG1pbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCA4MjMzNWE3OGE3NWY4
YzgyMmRkOTk2ZTVkNjg5OGMzOWMwNGUzYjMyLi5lODQyYzE0MDczNWM3MTk5MWE1ZDExZThiOWQz
YjU3ZjdkNWNkMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtODM0LDcgKzgzNCw3
IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6cmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzKElXZWJIaXN0
b3J5SXRlbSogZW50cnkpCiAKICAgICBEYXRlVG9FbnRyaWVzTWFwOjppdGVyYXRvciBmb3VuZCA9
IG1fZW50cmllc0J5RGF0ZS5maW5kKGRhdGVLZXkpOwogICAgIEFTU0VSVChmb3VuZCAhPSBtX2Vu
dHJpZXNCeURhdGUuZW5kKCkpOwotICAgIENGTXV0YWJsZUFycmF5UmVmIGVudHJpZXNGb3JEYXRl
ID0gZm91bmQtPnZhbHVlLmdldCgpOworICAgIENGTXV0YWJsZUFycmF5UmVmIGVudHJpZXNGb3JE
YXRlID0gZm91bmQtPnNlY29uZC5nZXQoKTsKIAogICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5
R2V0Q291bnQoZW50cmllc0ZvckRhdGUpOwogICAgIGZvciAoaW50IGkgPSBjb3VudCAtIDE7IGkg
Pj0gMDsgLS1pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01BUEku
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0Q09NQVBJLmNwcAppbmRleCA0ZDhmZjA5NWJk
YTk2MDdkMjlhMTQ1Yjg1N2M3OGRkZmY4ZTM1ZTdhLi45YzljYzAyNmI0N2I0ZmVhOTYwYzYzOTg0
NmUwZWJhNTFjNDY1M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRDT01B
UEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdENPTUFQSS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgc3RhdGljIENPTVB0cjxJQ2xhc3NGYWN0b3J5PiBjbGFzc0ZhY3RvcnkoY29uc3Qg
Q0xTSUQmIGNsc2lkKQogICAgIHN0YXRpYyBGYWN0b3J5TWFwJiBmYWN0b3JpZXMgPSAqbmV3IEZh
Y3RvcnlNYXA7CiAKICAgICBGYWN0b3J5TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZmFjdG9yaWVz
LmFkZChjbHNpZCwgMCk7Ci0gICAgQ09NUHRyPElDbGFzc0ZhY3Rvcnk+JiBmYWN0b3J5ID0gcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBDT01QdHI8SUNsYXNzRmFjdG9yeT4mIGZhY3Rvcnkg
PSByZXN1bHQuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkgJiYg
RkFJTEVEKERsbEdldENsYXNzT2JqZWN0KGNsc2lkLCBfX3V1aWRvZihmYWN0b3J5KSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZmYWN0b3J5KSkpKQogICAgICAgICBmYWN0b3J5ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRleCBjN2I4ZWQxYWM3N2NlNmUx
OTI2YWE1ZGIyMjQyNGYyZWVlMWEzNTBjLi45Y2Q5NWM3YWM5MzU5NTMwMDdlMTU3ZGNhNzRlODA3
YzQ1YWVlMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRTdGF0aXN0aWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcApAQCAtMTQ0
LDkgKzE0NCw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViS2l0U3RhdGlzdGljczo6
Y29tQ2xhc3NOYW1lQ291bnRzKAogICAgIEl0ZXJhdG9yIGVuZCA9IGdDbGFzc05hbWVDb3VudC5l
bmQoKTsKICAgICBWZWN0b3I8VUNoYXI+IHZlY3RvcjsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJl
bnQgPSBnQ2xhc3NOYW1lQ291bnQuYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkg
ewotICAgICAgICBhcHBlbmQodmVjdG9yLCBTdHJpbmc6OmZvcm1hdCgiJTR1IiwgY3VycmVudC0+
dmFsdWUpKTsKKyAgICAgICAgYXBwZW5kKHZlY3RvciwgU3RyaW5nOjpmb3JtYXQoIiU0dSIsIGN1
cnJlbnQtPnNlY29uZCkpOwogICAgICAgICB2ZWN0b3IuYXBwZW5kKCdcdCcpOwotICAgICAgICBh
cHBlbmQodmVjdG9yLCBzdGF0aWNfY2FzdDxTdHJpbmc+KGN1cnJlbnQtPmtleSkpOworICAgICAg
ICBhcHBlbmQodmVjdG9yLCBzdGF0aWNfY2FzdDxTdHJpbmc+KGN1cnJlbnQtPmZpcnN0KSk7CiAg
ICAgICAgIHZlY3Rvci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogICAgICpvdXRwdXQgPSBCU3RyaW5n
KFN0cmluZzo6YWRvcHQodmVjdG9yKSkucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggMzFjODExOWE1MDJiOWNlZTY1ZTQyMGJmNTE3
ZWU3OWFhMTI4NDFiMC4uYzcxOTJkOGQzY2RiMmNkYWUyYmFhNzFhZTYwZjdiYTlkODFlZDdlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC0xMjAs
NyArMTIwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OnBvc3ROb3RpZmljYXRpb25J
bnRlcm5hbChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXQKIAogICAgIC8vIEludGVudGlvbmFs
bHkgbWFrZSBhIGNvcHkgb2YgdGhlIGxpc3QgdG8gYXZvaWQgdGhlIHBvc3NpYmlsaXR5IG9mIGVy
cm9ycwogICAgIC8vIGZyb20gYSBtdXRhdGlvbiBvZiB0aGUgbGlzdCBpbiB0aGUgb25Ob3RpZnkg
Y2FsbGJhY2suCi0gICAgT2JqZWN0T2JzZXJ2ZXJMaXN0IGxpc3QgPSBpdC0+dmFsdWU7CisgICAg
T2JqZWN0T2JzZXJ2ZXJMaXN0IGxpc3QgPSBpdC0+c2Vjb25kOwogCiAgICAgT2JzZXJ2ZXJMaXN0
SXRlcmF0b3IgZW5kID0gbGlzdC5lbmQoKTsKICAgICBmb3IgKE9ic2VydmVyTGlzdEl0ZXJhdG9y
IGl0MiA9IGxpc3QuYmVnaW4oKTsgaXQyICE9IGVuZDsgKytpdDIpIHsKQEAgLTE0OSw3ICsxNDks
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6YWRk
T2JzZXJ2ZXIoCiAgICAgU3RyaW5nIG5hbWUobm90aWZpY2F0aW9uTmFtZSwgU3lzU3RyaW5nTGVu
KG5vdGlmaWNhdGlvbk5hbWUpKTsKICAgICBNYXBwZWRPYnNlcnZlcnM6Oml0ZXJhdG9yIGl0ID0g
ZC0+bV9tYXBwZWRPYnNlcnZlcnMuZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gZC0+bV9tYXBw
ZWRPYnNlcnZlcnMuZW5kKCkpCi0gICAgICAgIGl0LT52YWx1ZS5hcHBlbmQoT2JqZWN0T2JzZXJ2
ZXJQYWlyKGFuT2JqZWN0LCBvYnNlcnZlcikpOworICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChP
YmplY3RPYnNlcnZlclBhaXIoYW5PYmplY3QsIG9ic2VydmVyKSk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIE9iamVjdE9ic2VydmVyTGlzdCBsaXN0OwogICAgICAgICBsaXN0LmFwcGVuZChPYmplY3RP
YnNlcnZlclBhaXIoYW5PYmplY3QsIG9ic2VydmVyKSk7CkBAIC0xOTgsNyArMTk4LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OnJlbW92ZU9ic2Vy
dmVyKAogICAgIGlmIChpdCA9PSBkLT5tX21hcHBlZE9ic2VydmVycy5lbmQoKSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIE9iamVjdE9ic2VydmVyTGlzdCYgb2JzZXJ2ZXJMaXN0ID0g
aXQtPnZhbHVlOworICAgIE9iamVjdE9ic2VydmVyTGlzdCYgb2JzZXJ2ZXJMaXN0ID0gaXQtPnNl
Y29uZDsKICAgICBPYnNlcnZlckxpc3RJdGVyYXRvciBlbmQgPSBvYnNlcnZlckxpc3QuZW5kKCk7
CiAKICAgICBpbnQgaSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCmluZGV4IGQ1NTc5
NzIzMTE2MTU5MWQ1ZmRiMTcxNTgwNDQ1OGRiNzgyYzkxZjIuLjNmOGM5MDdjNzM5ZjA4Y2RiOTkx
NmU4MzZmOWIwOGRlNjc4NDUxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCkBAIC05
NCw4ICs5NCw4IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFBsdWdpbkluZm8o
Y29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYgb3V0CiAgICAgICAgIGZvciAoTUlNRVRv
RGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIE1pbWVDbGFzc0luZm8gbWlt
ZTsKIAotICAgICAgICAgICAgbWltZS50eXBlID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1pbWUu
ZGVzYyA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIG1pbWUudHlwZSA9IGl0LT5maXJzdDsKKyAg
ICAgICAgICAgIG1pbWUuZGVzYyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICBtaW1lLmV4dGVu
c2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUudHlwZSk7CiAKICAg
ICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5kKG1pbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IGFmMTYzYmU2ZDliNjRjMzA5
ZDkxOWFkMWI3MzY1ODhlYjI2MzFjYmEuLmRkNTRkZmVlZjkxYTdkZTMxMTkxNWU5M2Q5YWZiZWIx
M2ExY2JlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTc1LDggKzc1LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpwYWlyPFQsIFU+ID4gewogdGVtcGxhdGU8
dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+ID4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdURjo6S2V5VmFsdWVQ
YWlyPEtleVR5cGUsIFZhbHVlVHlwZT4mIHBhaXIpCiAgICAgewotICAgICAgICBlbmNvZGVyLT5l
bmNvZGUocGFpci5rZXkpOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGUocGFpci52YWx1ZSk7Cisg
ICAgICAgIGVuY29kZXItPmVuY29kZShwYWlyLmZpcnN0KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlKHBhaXIuc2Vjb25kKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBXVEY6OktleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+
JiBwYWlyKQpAQCAtODksOCArODksOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBl
bmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFsdQogICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgcGFpci5rZXkgPSBrZXk7Ci0gICAgICAgIHBhaXIudmFsdWUgPSB2YWx1ZTsK
KyAgICAgICAgcGFpci5maXJzdCA9IGtleTsKKyAgICAgICAgcGFpci5zZWNvbmQgPSB2YWx1ZTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDM0NDllMzUyZTEwY2VjYjA0N2JlMDlm
YWI4OGUwYWY5MDY5MzJhZDIuLmQyMmI4YjRjMWI4YzUyOGNlY2I4YjIxYzcwNTQwZjMwNmNiM2Vl
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNw
cApAQCAtMTAyLDEyICsxMDIsMTIgQEAgUGFzc1JlZlB0cjxDb25uZWN0aW9uOjpTeW5jTWVzc2Fn
ZVN0YXRlPiBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpnZXRPckNyZWEKICAgICBTeW5j
TWVzc2FnZVN0YXRlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3luY01lc3NhZ2VTdGF0ZU1hcCgp
LmFkZChydW5Mb29wLCAwKTsKIAogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAg
ICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgICAgICByZXR1cm4gcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kOwogICAgIH0KIAogICAg
IFJlZlB0cjxTeW5jTWVzc2FnZVN0YXRlPiBzeW5jTWVzc2FnZVN0YXRlID0gYWRvcHRSZWYobmV3
IFN5bmNNZXNzYWdlU3RhdGUocnVuTG9vcCkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzeW5jTWVzc2FnZVN0YXRlLmdldCgpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0g
c3luY01lc3NhZ2VTdGF0ZS5nZXQoKTsKIAogICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlLnJl
bGVhc2UoKTsKIH0KQEAgLTM2MiwxMCArMzYyLDEwIEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNv
ZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCB1aW50
CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogCiAg
ICAgICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkLCB1aW50NjRfdD4sIEFyZ3VtZW50RGVj
b2Rlcio+OjppdGVyYXRvciBpdCA9IG1fd2FpdEZvck1lc3NhZ2VNYXAuZmluZChtZXNzYWdlQW5k
RGVzdGluYXRpb24pOwotICAgICAgICBpZiAoaXQtPnZhbHVlKSB7CisgICAgICAgIGlmIChpdC0+
c2Vjb25kKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbV93YWl0Rm9yTWVzc2FnZU1hcCBzaG91
bGQgcmVhbGx5IGhvbGQgT3duUHRycyB0bwogICAgICAgICAgICAgLy8gQXJndW1lbnREZWNvZGVy
cywgYnV0IEhhc2hNYXAgZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCBPd25QdHJzLgotICAgICAg
ICAgICAgT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4gYXJndW1lbnRzID0gYWRvcHRQdHIoaXQtPnZh
bHVlKTsKKyAgICAgICAgICAgIE93blB0cjxBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IGFk
b3B0UHRyKGl0LT5zZWNvbmQpOwogICAgICAgICAgICAgbV93YWl0Rm9yTWVzc2FnZU1hcC5yZW1v
dmUoaXQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzLnJlbGVh
c2UoKTsKQEAgLTUzOSw4ICs1MzksOCBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWlu
Z01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudAogICAgICAg
ICAKICAgICAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVpbnQ2NF90PiwgQXJndW1l
bnREZWNvZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV93YWl0Rm9yTWVzc2FnZU1hcC5maW5kKHN0ZDo6
bWFrZV9wYWlyKG1lc3NhZ2VJRC50b0ludCgpLCBpbmNvbWluZ01lc3NhZ2UuZGVzdGluYXRpb25J
RCgpKSk7CiAgICAgICAgIGlmIChpdCAhPSBtX3dhaXRGb3JNZXNzYWdlTWFwLmVuZCgpKSB7Ci0g
ICAgICAgICAgICBpdC0+dmFsdWUgPSBpbmNvbWluZ01lc3NhZ2UucmVsZWFzZUFyZ3VtZW50cygp
LmxlYWtQdHIoKTsKLSAgICAgICAgICAgIEFTU0VSVChpdC0+dmFsdWUpOworICAgICAgICAgICAg
aXQtPnNlY29uZCA9IGluY29taW5nTWVzc2FnZS5yZWxlYXNlQXJndW1lbnRzKCkubGVha1B0cigp
OworICAgICAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQpOwogICAgICAgICAKICAgICAgICAgICAg
IG1fd2FpdEZvck1lc3NhZ2VDb25kaXRpb24uc2lnbmFsKCk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCmluZGV4IDY4
ODVkNDg1YmQxMTZkMzI4ZGVjZDAyYWFmNTRjOTE4NzgyYjJmMTYuLjFkZmFiODNjY2ZiMjRjOWYw
MGVlNDBkMmRhYTFjOTViMTYzODJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0
ay9Xb3JrUXVldWVHdGsuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXb3JrUXVldWU6OnJl
Z2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvciwgaW50IGNvbmRpdGlv
biwgY28KICAgICAgICAgVmVjdG9yPEV2ZW50U291cmNlKj4gc291cmNlczsKICAgICAgICAgRXZl
bnRTb3VyY2VJdGVyYXRvciBpdCA9IG1fZXZlbnRTb3VyY2VzLmZpbmQoZmlsZURlc2NyaXB0b3Ip
OwogICAgICAgICBpZiAoaXQgIT0gbV9ldmVudFNvdXJjZXMuZW5kKCkpIAotICAgICAgICAgICAg
c291cmNlcyA9IGl0LT52YWx1ZTsKKyAgICAgICAgICAgIHNvdXJjZXMgPSBpdC0+c2Vjb25kOwog
CiAgICAgICAgIHNvdXJjZXMuYXBwZW5kKGV2ZW50U291cmNlKTsKICAgICAgICAgbV9ldmVudFNv
dXJjZXMuc2V0KGZpbGVEZXNjcmlwdG9yLCBzb3VyY2VzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCB2
b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQgZmlsZURlc2Ny
aXB0b3IpCiAgICAgQVNTRVJUKG1fZXZlbnRTb3VyY2VzLmNvbnRhaW5zKGZpbGVEZXNjcmlwdG9y
KSk7CiAKICAgICBpZiAoaXQgIT0gbV9ldmVudFNvdXJjZXMuZW5kKCkpIHsKLSAgICAgICAgVmVj
dG9yPEV2ZW50U291cmNlKj4gc291cmNlcyA9IGl0LT52YWx1ZTsKKyAgICAgICAgVmVjdG9yPEV2
ZW50U291cmNlKj4gc291cmNlcyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzb3VyY2VzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgc291cmNlc1tpXS0+
Y2FuY2VsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Xb3Jr
UXVldWVNYWMuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5j
cHAKaW5kZXggNmU1NGNlZTBiNzA5ODQwYTU0Zjc2Y2RhYTQyNGZlZWI0NjI5MDliMS4uYWU0NzNl
ZTVjYzg0ZTU4NDI5YjA0MzljY2Q5MjFhYzJjNDkyZmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1dvcmtRdWV1ZU1hYy5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdv
cmtRdWV1ZTo6dW5yZWdpc3Rlck1hY2hQb3J0RXZlbnRIYW5kbGVyKG1hY2hfcG9ydF90IG1hY2hQ
b3J0KQogICAgIAogICAgIEFTU0VSVChtX2V2ZW50U291cmNlcy5jb250YWlucyhtYWNoUG9ydCkp
OwogCi0gICAgRXZlbnRTb3VyY2UqIGV2ZW50U291cmNlID0gaXQtPnZhbHVlOworICAgIEV2ZW50
U291cmNlKiBldmVudFNvdXJjZSA9IGl0LT5zZWNvbmQ7CiAgICAgLy8gQ2FuY2VsIGFuZCByZWxl
YXNlIHRoZSBzb3VyY2UuIEl0IHdpbGwgYmUgZGVsZXRlZCBpbiBpdHMgZmluYWxpemUgaGFuZGxl
ci4KICAgICBkaXNwYXRjaF9zb3VyY2VfY2FuY2VsKGV2ZW50U291cmNlLT5kaXNwYXRjaFNvdXJj
ZSgpKTsKICAgICBkaXNwYXRjaF9yZWxlYXNlKGV2ZW50U291cmNlLT5kaXNwYXRjaFNvdXJjZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2Jq
ZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0
TWFwLmNwcAppbmRleCBiNWVjMmQ5ZGEzOWYyNmRjYjQzMjBkOTVlMDNmMmZjYWU0ZTdkN2RmLi43
NjQxYWY1ZThjODkyZDFkMzdlZTk2ZGE5YjdlNjA1ODk5NzNlODhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCkBAIC0yMDAs
NyArMjAwLDcgQEAgdm9pZCBOUFJlbW90ZU9iamVjdE1hcDo6cGx1Z2luRGVzdHJveWVkKFBsdWdp
biogcGx1Z2luKQogCiAgICAgLy8gR2F0aGVyIHRoZSByZWNlaXZlcnMgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgcGx1Zy1pbi4KICAgICBmb3IgKEhhc2hNYXA8dWludDY0X3QsIE5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTlBPYmplY3RzLmJl
Z2luKCksIGVuZCA9IG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKiBucE9iamVjdE1lc3NhZ2VSZWNl
aXZlciA9IGl0LT52YWx1ZTsKKyAgICAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIqIG5wT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyID0gaXQtPnNlY29uZDsKICAgICAgICAgaWYgKG5wT2JqZWN0TWVz
c2FnZVJlY2VpdmVyLT5wbHVnaW4oKSA9PSBwbHVnaW4pCiAgICAgICAgICAgICBtZXNzYWdlUmVj
ZWl2ZXJzLmFwcGVuZChucE9iamVjdE1lc3NhZ2VSZWNlaXZlcik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAppbmRleCAyZWM1YmI0ZDUyYjIwNzUxZmRi
NTdlZDY2MjgwZWE5MDdiZDM5YjUwLi5lZTRhYjY0ZmZhNWI2M2I5MmMwOTk5NTU0ODVmMjBlMjE1
NTVlNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaApAQCAt
OTMsOCArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpN
YXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOwogICAgICAgICAgICAgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLmVuZCgp
OwogICAgICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAg
IGVuY29kZXItPmVuY29kZShpdC0+a2V5KTsKLSAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNv
ZGUoT3duZXIoaXQtPnZhbHVlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlKGl0LT5maXJzdCk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE93bmVyKGl0
LT5zZWNvbmQuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9y
ZS5jcHAKaW5kZXggM2JhMjdlZGMwNjA2NzllYmQ1ZGNlZTBhNTdmZmQ3YTViOWQwYjlmZC4uODk3
MzRiZjBlZmIwODAzODBlZGM2NDVlM2VjNzFkY2RmMzY3YzZmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHN0
YXRpYyB0eXBlbmFtZSBNYXBUeXBlOjpNYXBwZWRUeXBlIHZhbHVlRm9yS2V5KGNvbnN0IE1hcFR5
cGUmIG1hcCwgY29uc3QgdHlwZW5hCiB7CiAgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtYXAuZmluZChrZXkpOwogICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAg
cmV0dXJuIGRlZmF1bHRWYWx1ZUZvcktleTx0eXBlbmFtZSBNYXBUeXBlOjpNYXBwZWRUeXBlPihr
ZXkpOwogfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIGJvb2wgV2ViUHJlZmVyZW5jZXNTdG9yZTo6Z2V0
Qm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAogICAgIC8vIEZJWE1FOiBF
eHRlbmQgb3ZlcnJpZGluZyB0byBvdGhlciBrZXkgdHlwZXMgdXNlZCBmcm9tIFRlc3RSdW5uZXIu
CiAgICAgQm9vbE92ZXJyaWRlc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBib29sVGVzdFJ1bm5l
ck92ZXJyaWRlc01hcCgpLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgIT0gYm9vbFRlc3RSdW5uZXJP
dmVycmlkZXNNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKKyAgICAgICAg
cmV0dXJuIGl0LT5zZWNvbmQ7CiAgICAgcmV0dXJuIHZhbHVlRm9yS2V5KG1fYm9vbFZhbHVlcywg
a2V5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVB
cmd1bWVudENvZGVyc01hYy5tbQppbmRleCAwZjlkM2Q4YTNiZmI3Mzc0M2IzOTMzNTMzNWRjNWY1
OGMxZDE0NzgwLi4xOTZhYjExYzdhNzQzMTA3ZDM4MDBlMWZmOGZhNWJlMWYyYjNiODE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQpAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVy
cm9yPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VFcnJvCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3RyaW5nVXNlcklu
Zm9NYXAuYmVnaW4oKTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gc3RyaW5nVXNlckluZm9NYXAuZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpuc1N0cmluZyhpdC0+dmFsdWUpIGZv
cktleTpuc1N0cmluZyhpdC0+a2V5KV07CisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6bnNT
dHJpbmcoaXQtPnNlY29uZCkgZm9yS2V5Om5zU3RyaW5nKGl0LT5maXJzdCldOwogCiAgICAgaWYg
KGNlcnRpZmljYXRlLmNlcnRpZmljYXRlQ2hhaW4oKSkKICAgICAgICAgW3VzZXJJbmZvIHNldE9i
amVjdDooTlNBcnJheSAqKWNlcnRpZmljYXRlLmNlcnRpZmljYXRlQ2hhaW4oKSBmb3JLZXk6QCJO
U0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcAppbmRleCBhNDM5Y2FmZjFlNDg4ZTEwMmM1NTBhZDA0
ZjM0NmQ1OTk2ZGQxODkyLi5jODliZjQ0ZjE3MTkwYjAyYzQxMTJiY2JlZDZlMGM0MWZhM2M2NzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvQXJndW1lbnRDb2RlcnNRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQuY3BwCkBA
IC04Niw4ICs4Niw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEcmFnRGF0YT46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERyYWdEYXRhCiAgICAgICAgIE1JTUVEYXRh
SGFzaE1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsKICAgICAgICAgTUlNRURhdGFIYXNo
TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgICAgIFFCeXRlQXJyYXkgYnl0ZXMoKGNoYXIqKWl0LT52YWx1ZS5k
YXRhKCksIGl0LT52YWx1ZS5zaXplKCkpOwotICAgICAgICAgICAgbWltZURhdGEtPnNldERhdGEo
aXQtPmtleSwgYnl0ZXMpOworICAgICAgICAgICAgUUJ5dGVBcnJheSBieXRlcygoY2hhciopaXQt
PnNlY29uZC5kYXRhKCksIGl0LT5zZWNvbmQuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1pbWVEYXRh
LT5zZXREYXRhKGl0LT5maXJzdCwgYnl0ZXMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1Nv
dXAuY3BwCmluZGV4IDMzZDliZDNmZjIwZTYxOTBjYzNjZTRmZjg1OTkzOGIwMzk0ZWQ2YzEuLmRi
ZTJjNTFjZGNmYjc5OGFmYWNkMmZkMWRiZmE0OTJiMWExZWZiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3Bw
CkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVIKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShoZWFkZXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAo
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCksIGVuZCA9
IGhlYWRlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgcmVzcG9uc2Uuc2V0SFRU
UEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogCiAgICAgdWludDMyX3Qgc291
cE1lc3NhZ2VGbGFnczsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzb3VwTWVzc2FnZUZsYWdz
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YmFja19mb3J3YXJkX2xpc3QuY3BwCmluZGV4IDMxZWY1YWZhZmU2ZDM1OTk0MmQ0MmU1ZTdkNWQ0
Y2YyZmUyMjkxNjkuLmY2YmQwYTc2MGU2ZmVhZWRmM2ZlMDMzYzgxZjNhMWEwOWQxYTg0NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2Zvcndh
cmRfbGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Jh
Y2tfZm9yd2FyZF9saXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdHJ1Y3QgX0V3a19CYWNrX0Zv
cndhcmRfTGlzdCB7CiAgICAgICAgIEl0ZW1zTWFwOjppdGVyYXRvciBpdCA9IHdyYXBwZXJDYWNo
ZS5iZWdpbigpOwogICAgICAgICBJdGVtc01hcDo6aXRlcmF0b3IgZW5kID0gd3JhcHBlckNhY2hl
LmVuZCgpOwogICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdW5yZWYoaXQtPnZhbHVlKTsKKyAgICAgICAgICAgIGV3
a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VucmVmKGl0LT5zZWNvbmQpOwogICAgIH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApp
bmRleCBjZjJmY2MzZjkyMThhZGYwMmM0NDViYTMyNTBmMmQwYjNmMGJiZGUxLi43MTUwNGY2NDFk
MjA2NWRmMmJmNjg4ZGE0NWU5NWQ1YTUxZGI1OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVj
dCBfRXdrX0NvbnRleHQgewogICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBFd2tfRG93bmxvYWRf
Sm9iKj46Oml0ZXJhdG9yIGl0ID0gZG93bmxvYWRKb2JzLmJlZ2luKCk7CiAgICAgICAgIEhhc2hN
YXA8dWludDY0X3QsIEV3a19Eb3dubG9hZF9Kb2IqPjo6aXRlcmF0b3IgZW5kID0gZG93bmxvYWRK
b2JzLmVuZCgpOwogICAgICAgICBmb3IgKCA7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAg
IGV3a19kb3dubG9hZF9qb2JfdW5yZWYoaXQtPnZhbHVlKTsKKyAgICAgICAgICAgIGV3a19kb3du
bG9hZF9qb2JfdW5yZWYoaXQtPnNlY29uZCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDcxNDM4MDI3MTAzN2YwYTNm
NWVjM2VmNTljNDU3MWEzYmRmMDQ5OTcuLmNlN2Y3YjQ1NDk0NjNjMTBmYmFjY2I3NTczYTNiZWFh
ZGUyNTNiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9sb2Fk
aW5nX3Jlc291cmNlc19jbGVhcihMb2FkaW5nUmVzb3VyY2VzTWFwJiBsb2FkaW5nUgogICAgIExv
YWRpbmdSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbG9hZGluZ1Jlc291cmNlc01hcC5iZWdp
bigpOwogICAgIExvYWRpbmdSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IGxvYWRpbmdSZXNv
dXJjZXNNYXAuZW5kKCk7CiAgICAgZm9yICggOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGV3
a193ZWJfcmVzb3VyY2VfdW5yZWYoaXQtPnZhbHVlKTsKKyAgICAgICAgZXdrX3dlYl9yZXNvdXJj
ZV91bnJlZihpdC0+c2Vjb25kKTsKIAogICAgIGxvYWRpbmdSZXNvdXJjZXNNYXAuY2xlYXIoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggMWYwMWI0ODU1NTU1N2Y5ZTBlZGRlODQ4YmQ0NjZhNjExYmFiZTFhOS4uZWU4
NmQ0NDhhODgyYThhNjdiNTFjYzY4Y2Q0NTNiZTVhYWIwN2NjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIzMDAsNyAr
MjMwMCw3IEBAIEdMaXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNlcyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmll
dy0+cHJpdjsKICAgICBSZXNvdXJjZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByaXYtPnN1
YnJlc291cmNlc01hcC5lbmQoKTsKICAgICBmb3IgKFJlc291cmNlc01hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBwcml2LT5zdWJyZXNvdXJjZXNNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICBzdWJyZXNvdXJjZXMgPSBnX2xpc3RfcHJlcGVuZChzdWJyZXNvdXJjZXMsIGl0LT52
YWx1ZS5nZXQoKSk7CisgICAgICAgIHN1YnJlc291cmNlcyA9IGdfbGlzdF9wcmVwZW5kKHN1YnJl
c291cmNlcywgaXQtPnNlY29uZC5nZXQoKSk7CiAKICAgICByZXR1cm4gZ19saXN0X3JldmVyc2Uo
c3VicmVzb3VyY2VzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCAxOTA5MTE3MzE2N2ZmNjNjNzBjZGFm
MWZiOTAxNGY5ZDYxMzNmM2I3Li40OTI1YjVhN2MxY2VlOWM4NGZlNTg0MmJjZDBjMWE5MTIyNmU1
OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VDb250YWluZXJGb3JhbGwoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIGdib29s
ZWFuIGkKICAgICBXZWJLaXRXZWJWaWV3Q2hpbGRyZW5NYXAgY2hpbGRyZW4gPSBwcml2LT5jaGls
ZHJlbjsKICAgICBXZWJLaXRXZWJWaWV3Q2hpbGRyZW5NYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGNoaWxkcmVuLmVuZCgpOwogICAgIGZvciAoV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwOjpjb25z
dF9pdGVyYXRvciBjdXJyZW50ID0gY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsr
Y3VycmVudCkKLSAgICAgICAgKCpjYWxsYmFjaykoY3VycmVudC0+a2V5LCBjYWxsYmFja0RhdGEp
OworICAgICAgICAoKmNhbGxiYWNrKShjdXJyZW50LT5maXJzdCwgY2FsbGJhY2tEYXRhKTsKIAog
ICAgIGlmIChpbmNsdWRlSW50ZXJuYWxzICYmIHByaXYtPmluc3BlY3RvclZpZXcpCiAgICAgICAg
ICgqY2FsbGJhY2spKHByaXYtPmluc3BlY3RvclZpZXcsIGNhbGxiYWNrRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5nVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCmluZGV4
IGNhMWNhZDU4MjU5OWZkMGM2MGIyNTI0YzZiYzc3Mjc2OWQyZmQzOWEuLjYzYzU4ODk1ZjcxMjkz
YjFiNTQ1OGQ5ZWI2ODQxZDBhMDY0ODE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0xOTQsOCArMTk0LDggQEAgc3Rh
dGljIEJPT0wgaXNGb3JjaW5nUHJldmlld1VwZGF0ZTsKIC0gKHVpbnQ2NF90KV9leHBlY3RlZFBy
ZXZpZXdDYWxsYmFja0ZvclJlY3Q6KGNvbnN0IEludFJlY3QmKXJlY3QKIHsKICAgICBmb3IgKEhh
c2hNYXA8dWludDY0X3QsIFdlYkNvcmU6OkludFJlY3Q+OjppdGVyYXRvciBpdGVyID0gX2V4cGVj
dGVkUHJldmlld0NhbGxiYWNrcy5iZWdpbigpOyBpdGVyICE9IF9leHBlY3RlZFByZXZpZXdDYWxs
YmFja3MuZW5kKCk7ICsraXRlcikgewotICAgICAgICBpZiAoaXRlci0+dmFsdWUgID09IHJlY3Qp
Ci0gICAgICAgICAgICByZXR1cm4gaXRlci0+a2V5OworICAgICAgICBpZiAoaXRlci0+c2Vjb25k
ICA9PSByZWN0KQorICAgICAgICAgICAgcmV0dXJuIGl0ZXItPmZpcnN0OwogICAgIH0KICAgICBy
ZXR1cm4gMDsKIH0KQEAgLTIyOSw4ICsyMjksOCBAQCBzdGF0aWMgdm9pZCBwYWdlRGlkRHJhd1Rv
UERGKFdLRGF0YVJlZiBkYXRhUmVmLCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4dAog
ICAgICAgICAgICAgQVNTRVJUKFt2aWV3IF9pc1ByaW50aW5nUHJldmlld10pOwogCiAgICAgICAg
ICAgICBpZiAoZGF0YSkgewotICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6SW50UmVj
dCwgVmVjdG9yPHVpbnQ4X3Q+ID46OkFkZFJlc3VsdCBlbnRyeSA9IHZpZXctPl9wYWdlUHJldmll
d3MuYWRkKGl0ZXItPnZhbHVlLCBWZWN0b3I8dWludDhfdD4oKSk7Ci0gICAgICAgICAgICAgICAg
ZW50cnkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIEhhc2hNYXA8V2ViQ29yZTo6SW50UmVjdCwgVmVjdG9yPHVpbnQ4
X3Q+ID46OkFkZFJlc3VsdCBlbnRyeSA9IHZpZXctPl9wYWdlUHJldmlld3MuYWRkKGl0ZXItPnNl
Y29uZCwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICAgICAgICAgIGVudHJ5Lml0ZXJhdG9y
LT5zZWNvbmQuYXBwZW5kKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB2aWV3LT5fZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tzLnJlbW92ZShj
b250ZXh0LT5jYWxsYmFja0lEKTsKICAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXNwb25zZVRv
TGF0ZXN0UmVxdWVzdCA9IHZpZXctPl9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxsYmFjayA9PSBj
b250ZXh0LT5jYWxsYmFja0lEOwpAQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBh
cmVEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZCh2b2lkKiB1bnR5cGVkQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGRm
RGF0YUJ5dGVzID0gcGFnZVByZXZpZXdJdGVyYXRvci0+dmFsdWU7CisgICAgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBwZGZEYXRhQnl0ZXMgPSBwYWdlUHJldmlld0l0ZXJhdG9yLT5zZWNvbmQ7CiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gcGRmRGF0YShBZG9wdE5TLCBbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlczpwZGZEYXRhQnl0ZXMuZGF0YSgpIGxlbmd0aDpwZGZEYXRhQnl0ZXMuc2l6ZSgp
XSk7CiAgICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1bWVudChBZG9wdE5TLCBbW3Bk
ZkRvY3VtZW50Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhEYXRhOnBkZkRhdGEuZ2V0KCldKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDE5M2ExZDA1
MmNlMjljMzExZTQ4MGRhM2Y4NTU1YjkzZDEyMDg1NGUuLmViNmI4MTljNWQ0MDU2Mzk4MTVlZTdi
MTg5NTZlYzcxMDhhNWRhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KQEAgLTQyMyw3ICs0MjMsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbW1hbmROYW1lRm9y
U2VsZWN0b3IoU0VMIHNlbGVjdG9yKQogICAgIHN0YXRpYyBjb25zdCBTZWxlY3Rvck5hbWVNYXAq
IGV4Y2VwdGlvbk1hcCA9IGNyZWF0ZVNlbGVjdG9yRXhjZXB0aW9uTWFwKCk7CiAgICAgU2VsZWN0
b3JOYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGV4Y2VwdGlvbk1hcC0+ZmluZChzZWxlY3Rv
cik7CiAgICAgaWYgKGl0ICE9IGV4Y2VwdGlvbk1hcC0+ZW5kKCkpCi0gICAgICAgIHJldHVybiBp
dC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogICAgIAogICAgIC8vIFJlbW92
ZSB0aGUgdHJhaWxpbmcgY29sb24uCiAgICAgLy8gTm8gbmVlZCB0byBjYXBpdGFsaXplIHRoZSBj
b21tYW5kIG5hbWUgc2luY2UgRWRpdG9yIGNvbW1hbmQgbmFtZXMgYXJlCkBAIC03MzcsNyArNzM3
LDcgQEAgc3RhdGljIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soV0tTdHJpbmdSZWYgY29t
bWFuZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQKIAogICAgIC8vIEFkZCB0aGlzIGl0ZW0gdG8g
dGhlIHZlY3RvciBvZiBpdGVtcyBmb3IgYSBnaXZlbiBjb21tYW5kIHRoYXQgYXJlIGF3YWl0aW5n
IHZhbGlkYXRpb24uCiAgICAgVmFsaWRhdGlvbk1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IF9k
YXRhLT5fdmFsaWRhdGlvbk1hcC5hZGQoY29tbWFuZE5hbWUsIFZhbGlkYXRpb25WZWN0b3IoKSk7
Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoaXRlbSk7CisgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT5zZWNvbmQuYXBwZW5kKGl0ZW0pOwogICAgIGlmIChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkgewogICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGFscmVhZHkgYXdhaXRpbmcgdmFs
aWRhdGlvbiBmb3IgdGhpcyBjb21tYW5kLCBzdGFydCB0aGUgYXN5bmNocm9ub3VzIHZhbGlkYXRp
b24gcHJvY2Vzcy4KICAgICAgICAgLy8gRklYTUU6IFRoZW9yZXRpY2FsbHksIHRoZXJlIGlzIGEg
cmFjZSBoZXJlOyB3aGVuIHdlIGdldCB0aGUgYW5zd2VyIGl0IG1pZ2h0IGJlIG9sZCwgZnJvbSBh
IHByZXZpb3VzIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmNwcAppbmRleCA3N2ZkYzBhMjZmODhkNDMwN2E3YjYwMDdkYWJkNTNmMjkwNmQ1NDdlLi44NGY2
ZWJkMmYxNjU4ZTY5OTY1ZTQ3MWJhMzYyNWE5MjI4OWZhYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC04MCwxNSArODAsMTUgQEAgdm9pZCBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZShpbnQgaWQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnMKIHsKICAgICBIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChp
dCAhPSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuaW5jcmVtZW50UmVwYWludENvdW50
KCk7Ci0gICAgaXQtPnZhbHVlLnNldEJhY2tCdWZmZXIodGFyZ2V0UmVjdCwgc291cmNlUmVjdCwg
YmFja0J1ZmZlciwgb2Zmc2V0KTsKKyAgICBpdC0+c2Vjb25kLmluY3JlbWVudFJlcGFpbnRDb3Vu
dCgpOworICAgIGl0LT5zZWNvbmQuc2V0QmFja0J1ZmZlcih0YXJnZXRSZWN0LCBzb3VyY2VSZWN0
LCBiYWNrQnVmZmVyLCBvZmZzZXQpOwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0dXJlKCkgY29uc3QKIHsKICAgICBIYXNoTWFwPGlu
dCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90
aWxlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8aW50LCBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0gaXQtPnZhbHVl
LnRleHR1cmUoKTsKKyAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBpdC0+
c2Vjb25kLnRleHR1cmUoKTsKICAgICAgICAgaWYgKHRleHR1cmUpCiAgICAgICAgICAgICByZXR1
cm4gdGV4dHVyZTsKICAgICB9CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwKICAgICBIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRl
cmF0b3IgZW5kID0gbV90aWxlcy5lbmQoKTsKICAgICBGbG9hdFJlY3QgY292ZXJlZFJlY3Q7CiAg
ICAgZm9yIChIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0
b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUmIHRpbGUgPSBpdC0+dmFsdWU7CisgICAgICAgIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlVGlsZSYgdGlsZSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIGlmICgh
dGlsZS50ZXh0dXJlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTU2LDcgKzE1Niw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCiAKICAgICBIYXNoTWFwPGludCwgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgdGlsZXNFbmQgPSBtX3RpbGVzLmVuZCgpOwog
ICAgIGZvciAoSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJh
dG9yIGl0ID0gbV90aWxlcy5iZWdpbigpOyBpdCAhPSB0aWxlc0VuZDsgKytpdCkKLSAgICAgICAg
aXQtPnZhbHVlLnN3YXBCdWZmZXJzKHRleHR1cmVNYXBwZXIpOworICAgICAgICBpdC0+c2Vjb25k
LnN3YXBCdWZmZXJzKHRleHR1cmVNYXBwZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXgg
ZmNjMWY2NzU2NWI2OGE4YTA3ODhhMDFhNGQzOGE5ODc5Zjc2NDE5Yy4uNmIwZGU3ZjI1NGIxODAz
ZDAzNjlhNmNmNGY4ODM5ODliODM4OTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBMYXllclRyZWVD
b29yZGluYXRvclByb3h5Ojp1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxl
SUQsIGNvbnMKICAgICAgICAgICAgIHN1cmZhY2UgPSBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUo
dXBkYXRlSW5mby5zdXJmYWNlSGFuZGxlKTsKICAgICAgICAgICAgIG1fc3VyZmFjZXMuYWRkKHRv
a2VuLCBzdXJmYWNlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdXJmYWNlID0gaXQt
PnZhbHVlOworICAgICAgICAgICAgc3VyZmFjZSA9IGl0LT5zZWNvbmQ7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHN1cmZhY2UgPSBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUodXBkYXRlSW5mby5zdXJm
YWNlSGFuZGxlKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5k
ZXggNWUwY2UyZjhkMTUxMzU4NjZiMmZjZDdiZGY5ZTRhN2M3OGU4NWYyZi4uNDgxYjlmNzRiODk4
NjExOTQ2Y2I2ODc0ZGRiYWUyOTUyMjA3OWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFk
anVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMoKQogCiAgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGVu
ZCA9IG1fZml4ZWRMYXllcnMuZW5kKCk7CiAgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQg
PSBtX2ZpeGVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgdG9UZXh0
dXJlTWFwcGVyTGF5ZXIoaXQtPnZhbHVlKS0+c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVk
KGRlbHRhKTsKKyAgICAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoaXQtPnNlY29uZCktPnNldFNj
cm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChkZWx0YSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikK
QEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzKFdl
YkxheWVySUQgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhcwogICAgICAgICBjYW52
YXNCYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRl
KCk7CiAgICAgICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuc2V0KGlkLCBjYW52YXNCYWNraW5n
U3RvcmUpOwogICAgIH0gZWxzZQotICAgICAgICBjYW52YXNCYWNraW5nU3RvcmUgPSBpdC0+dmFs
dWU7CisgICAgICAgIGNhbnZhc0JhY2tpbmdTdG9yZSA9IGl0LT5zZWNvbmQ7CiAKICAgICBjYW52
YXNCYWNraW5nU3RvcmUtPnNldEdyYXBoaWNzU3VyZmFjZShncmFwaGljc1N1cmZhY2VUb2tlbiwg
Y2FudmFzU2l6ZSwgZnJvbnRCdWZmZXIpOwogICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEo
Y2FudmFzQmFja2luZ1N0b3JlLmdldCgpKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIExheWVy
VHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3Rv
cjxXZWJMYXllcklEPgogewogICAgIGVuc3VyZUxheWVyKGlkKTsKICAgICBMYXllck1hcDo6aXRl
cmF0b3IgaXQgPSBtX2xheWVycy5maW5kKGlkKTsKLSAgICBHcmFwaGljc0xheWVyKiBsYXllciA9
IGl0LT52YWx1ZTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0LT5zZWNvbmQ7CiAgICAg
VmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBjaGlsZHJlbjsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2hpbGRJRHMuc2l6ZSgpOyArK2kpIHsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIExh
eWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCBpZCwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZgogICAgIExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fbGF5ZXJzLmZp
bmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX2xheWVycy5lbmQoKSk7CiAKLSAgICBHcmFwaGlj
c0xheWVyKiBsYXllciA9IGl0LT52YWx1ZTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0
LT5zZWNvbmQ7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAjZW5kaWYKQEAg
LTI1MCw3ICsyNTAsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKFdl
YkxheWVySUQgaWQsIGNvbnN0IFdlYkxheWVySW5mbyYgbGF5ZXJJbgogICAgIExheWVyTWFwOjpp
dGVyYXRvciBpdCA9IG1fbGF5ZXJzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX2xheWVy
cy5lbmQoKSk7CiAKLSAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0LT52YWx1ZTsKKyAgICBH
cmFwaGljc0xheWVyKiBsYXllciA9IGl0LT5zZWNvbmQ7CiAKICAgICBsYXllci0+c2V0UmVwbGlj
YXRlZEJ5TGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5yZXBsaWNhKSk7CiAgICAgbGF5ZXItPnNl
dE1hc2tMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLm1hc2spKTsKQEAgLTM3Nyw3ICszNzcsNyBA
QCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjphc3NpZ25JbWFnZVRvTGF5ZXIoR3JhcGhpY3NMYXll
ciogbGF5ZXIsIGludDY0X3QgaW1hZ2VJRAogCiAgICAgSGFzaE1hcDxpbnQ2NF90LCBSZWZQdHI8
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gPjo6aXRlcmF0b3IgaXQgPSBtX2RpcmVjdGx5Q29t
cG9zaXRlZEltYWdlcy5maW5kKGltYWdlSUQpOwogICAgIEFTU0VSVChpdCAhPSBtX2RpcmVjdGx5
Q29tcG9zaXRlZEltYWdlcy5lbmQoKSk7Ci0gICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShp
dC0+dmFsdWUuZ2V0KCkpOworICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoaXQtPnNlY29u
ZC5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFRpbGVPcGVyYXRp
b25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAwZDQx
NjM1NTQ2NWZmOTBkYTZiY2YwOGVjMzViODRjMTcxYTUzOTk2Li43MWJlYWY1YTVjMzFkNDU1Y2E4
ZDJiMWEyODgxY2EyYTcyNzE0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3RzKCkKICAgICBQZW5kaW5nUmVxdWVz
dE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdSZXF1ZXN0cy5iZWdpbigpOwogICAg
IFBlbmRpbmdSZXF1ZXN0TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdSZXF1ZXN0
cy5lbmQoKTsKICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUt
PmludmFsaWRhdGUoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+aW52YWxpZGF0ZSgpOwogCiAgICAg
bV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNw
cAppbmRleCAzYTllMjNlZWRmOTdiNjRkYjgxNmUzYWJiZGJjMjlkNmJiODdmMmI4Li5lY2IxNzFi
YjQ3MmI2YmFlZjNlZmMyOTI3ZjcxOGE2MWFmNDRjZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JT
ZXJ2ZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFdlYkluc3BlY3RvclNlcnZlcjo6fldlYkluc3Bl
Y3RvclNlcnZlcigpCiAgICAgLy8gQ2xvc2UgYW55IHJlbWFpbmluZyBvcGVuIGNvbm5lY3Rpb25z
LgogICAgIEhhc2hNYXA8dW5zaWduZWQsIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qPjo6aXRl
cmF0b3IgZW5kID0gbV9jb25uZWN0aW9uTWFwLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDx1bnNp
Z25lZCwgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbio+OjppdGVyYXRvciBpdCA9IG1fY29ubmVj
dGlvbk1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKKyAgICAgICAgV2ViU29ja2V0
U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIFdlYklu
c3BlY3RvclByb3h5KiBjbGllbnQgPSBtX2NsaWVudE1hcC5nZXQoY29ubmVjdGlvbi0+aWRlbnRp
ZmllcigpKTsKICAgICAgICAgY2xvc2VDb25uZWN0aW9uKGNsaWVudCwgY29ubmVjdGlvbik7CiAg
ICAgfQpAQCAtNzgsNyArNzgsNyBAQCBpbnQgV2ViSW5zcGVjdG9yU2VydmVyOjpyZWdpc3RlclBh
Z2UoV2ViSW5zcGVjdG9yUHJveHkqIGNsaWVudCkKICNpZm5kZWYgQVNTRVJUX0RJU0FCTEVECiAg
ICAgQ2xpZW50TWFwOjppdGVyYXRvciBlbmQgPSBtX2NsaWVudE1hcC5lbmQoKTsKICAgICBmb3Ig
KENsaWVudE1hcDo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIEFTU0VSVChpdC0+dmFsdWUgIT0gY2xpZW50KTsKKyAgICAgICAgQVNT
RVJUKGl0LT5zZWNvbmQgIT0gY2xpZW50KTsKICNlbmRpZgogCiAgICAgaW50IHBhZ2VJZCA9IG1f
bmV4dEF2YWlsYWJsZVBhZ2VJZCsrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggYmVkYTUzZGI3YzRhNjUzNjY1OGZiZGJlODlhZTA4YmNlY2U1MDBmNC4u
NTcyMDZlYjdiYjUyYThkOGE4NDhkZjU5NjdhMTBjNGI3MGUwNzdhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVy
L1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDYsOSArMTA2LDkgQEAgdm9pZCBX
ZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kSFRUUFJlc3BvbnNlSGVhZGVyKGludCBzdGF0
dXNDb2RlLCBjb25zdCBTdHIKICAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOwogICAgIEhUVFBI
ZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlckZpZWxkcy5lbmQoKTsKICAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyRmllbGRzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBidWlsZGVyLmFwcGVuZChpdC0+a2V5KTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoaXQtPmZpcnN0KTsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjogIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGl0LT52YWx1ZSArICJcclxuIik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGl0LT5zZWNvbmQgKyAiXHJcbiIpOwogICAgIH0KICAgICBi
dWlsZGVyLmFwcGVuZCgiXHJcbiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL3F0L1dlYkluc3BlY3RvclNlcnZlclF0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvcXQvV2ViSW5zcGVjdG9yU2VydmVy
UXQuY3BwCmluZGV4IGE5M2VhOTE2MmJjOWNhZjQxMDFmZTMzZDExZTYxMGIwYzJkNWVmODcuLjhk
ZTBmOTMyZGIyNjAzYWU4OTg4ZGViYjMwMjcxMjYwYzBjNmFjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvcXQvV2ViSW5zcGVjdG9yU2VydmVy
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvcXQv
V2ViSW5zcGVjdG9yU2VydmVyUXQuY3BwCkBAIC04MywxNiArODMsMTYgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JTZXJ2ZXI6OmJ1aWxkUGFnZUxpc3QoVmVjdG9yPGNoYXI+JiBkYXRhLCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogICAgIGJ1aWxkZXIuYXBwZW5kKCJbICIpOwogICAgIENsaWVudE1hcDo6aXRl
cmF0b3IgZW5kID0gbV9jbGllbnRNYXAuZW5kKCk7CiAgICAgZm9yIChDbGllbnRNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9jbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+cGFnZSgpOworICAgICAgICBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UgPSBpdC0+c2Vjb25kLT5wYWdlKCk7CiAgICAgICAgIGlmIChpdCAh
PSBtX2NsaWVudE1hcC5iZWdpbigpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ7IFwiaWRcIjogIiArIFN0cmluZzo6bnVtYmVyKGl0
LT5rZXkpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoInsgXCJpZFwiOiAiICsgU3RyaW5nOjpu
dW1iZXIoaXQtPmZpcnN0KSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIFwidGl0bGVcIjog
XCIiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQod2ViUGFnZS0+cGFnZVRpdGxlKCkpOwogICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiXCIsIFwidXJsXCI6IFwiIik7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHdlYlBhZ2UtPmFjdGl2ZVVSTCgpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlwi
LCBcImluc3BlY3RvclVybFwiOiBcIiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChyZW1vdGVJ
bnNwZWN0b3JQYWdlUGF0aCgpICsgU3RyaW5nOjpudW1iZXIoaXQtPmtleSkpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZChyZW1vdGVJbnNwZWN0b3JQYWdlUGF0aCgpICsgU3RyaW5nOjpudW1iZXIo
aXQtPmZpcnN0KSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcIiB9Iik7CiAgICAgfQogICAg
IGJ1aWxkZXIuYXBwZW5kKCIgXSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDRhMGM0NzUyOTM3Yjg3
MmQ1ZGUyNjljOTE2OTRlMjIxOGQzMjBlMWQuLjA3OTIyOTg1ZTQ1NjVmM2M3M2NhZGMzYTBjZjQ1
NTIxN2M2MTk5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZVJlcXVlc3Rz
KCkKICAgICBQZW5kaW5nUmVxdWVzdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdS
ZXF1ZXN0cy5iZWdpbigpOwogICAgIFBlbmRpbmdSZXF1ZXN0TWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX3BlbmRpbmdSZXF1ZXN0cy5lbmQoKTsKICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICBpdC0+dmFsdWUtPmludmFsaWRhdGUoKTsKKyAgICAgICAgaXQtPnNlY29uZC0+
aW52YWxpZGF0ZSgpOwogICAgIAogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA0OWRkYWM4ZTUxMWY2OGI5OWJlYjg0MDk2YjM0NDdjYjM3NWU5ZjVm
Li4xMmFiZjZkYzJlNGYyYTBjYTE2MmI0ZjE5YjMyZWEwNTZmYWU4MjJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAKQEAgLTE0OSwxMCArMTQ5LDEwIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Q
cm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKQogICAgIH0KIAogICAgIHdoaWxlICghbV9w
ZW5kaW5nR2V0U2l0ZXNSZXBsaWVzLmlzRW1wdHkoKSkKLSAgICAgICAgZGlkR2V0U2l0ZXNXaXRo
RGF0YShWZWN0b3I8U3RyaW5nPigpLCBtX3BlbmRpbmdHZXRTaXRlc1JlcGxpZXMuYmVnaW4oKS0+
a2V5KTsKKyAgICAgICAgZGlkR2V0U2l0ZXNXaXRoRGF0YShWZWN0b3I8U3RyaW5nPigpLCBtX3Bl
bmRpbmdHZXRTaXRlc1JlcGxpZXMuYmVnaW4oKS0+Zmlyc3QpOwogCiAgICAgd2hpbGUgKCFtX3Bl
bmRpbmdDbGVhclNpdGVEYXRhUmVwbGllcy5pc0VtcHR5KCkpCi0gICAgICAgIGRpZENsZWFyU2l0
ZURhdGEobV9wZW5kaW5nQ2xlYXJTaXRlRGF0YVJlcGxpZXMuYmVnaW4oKS0+a2V5KTsKKyAgICAg
ICAgZGlkQ2xlYXJTaXRlRGF0YShtX3BlbmRpbmdDbGVhclNpdGVEYXRhUmVwbGllcy5iZWdpbigp
LT5maXJzdCk7CiAKICAgICAvLyBUZWxsIHRoZSBwbHVnLWluIHByb2Nlc3MgbWFuYWdlciB0byBm
b3JnZXQgYWJvdXQgdGhpcyBwbHVnLWluIHByb2Nlc3MgcHJveHkuIFRoaXMgbWF5IGNhdXNlIHVz
IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9wbHVnaW5Qcm9jZXNzTWFuYWdlci0+cmVtb3ZlUGx1Z2lu
UHJvY2Vzc1Byb3h5KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
CmluZGV4IDk0NTExOTEzM2ZjZTJhOGFlOTkzMjg4ZTk2MTg2OTBmYjU4OTYxZGEuLjFiNTNiMDQ4
NjJmNGQ4NDUyNzJhOTNmMzg5YmJjMmFlMDMwZWE2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxN
dXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlRGljdGlvbmFyeUZyb21IYXNoTWFwKGNvbnN0IEhhc2hN
YXA8UwogICAgIFJlZlB0cjxNdXRhYmxlRGljdGlvbmFyeT4gcmVzdWx0ID0gTXV0YWJsZURpY3Rp
b25hcnk6OmNyZWF0ZSgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCB1aW50NjRf
dD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgcmVzdWx0LT5zZXQoaXQtPmtleSwgUmVmUHRyPFdlYlVJbnQ2ND4oV2ViVUludDY0Ojpj
cmVhdGUoaXQtPnZhbHVlKSkuZ2V0KCkpOworICAgICAgICByZXN1bHQtPnNldChpdC0+Zmlyc3Qs
IFJlZlB0cjxXZWJVSW50NjQ+KFdlYlVJbnQ2NDo6Y3JlYXRlKGl0LT5zZWNvbmQpKS5nZXQoKSk7
CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkljb25EYXRhYmFzZS5jcHAKaW5kZXggZDJhMTA2ZmUwNmVjYzI5MWU0ZmQ4NWU1ZTljMTBk
MzJiZTkyMDMwNS4uYzBjNzA2MTdiZTI3YWQ0ZDIwYzQyMGYxZGU0MzY5MTgzZDUyOTMyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTI2Mywx
NCArMjYzLDE0IEBAIHZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRGaW5pc2hVUkxJbXBvcnQoKQog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ0xv
YWREZWNpc2lvblVSTE1hcC5lbmQoKTsKICAgICAKICAgICBmb3IgKDsgaSAhPSBlbmQ7ICsraSkg
ewotICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBwZXJmb3JtaW5nIGRl
bGF5ZWQgY2FsbGJhY2sgb24gY2FsbGJhY2sgSUQgJWkgZm9yIHBhZ2UgdXJsICVzIiwgKGludClp
LT5rZXksIGktPnZhbHVlLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgSWNvbkxvYWREZWNpc2lv
biBkZWNpc2lvbiA9IG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hyb25vdXNMb2FkRGVjaXNpb25G
b3JJY29uVVJMKGktPnZhbHVlLCAwKTsKKyAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIldLMiBV
SVByb2Nlc3MgcGVyZm9ybWluZyBkZWxheWVkIGNhbGxiYWNrIG9uIGNhbGxiYWNrIElEICVpIGZv
ciBwYWdlIHVybCAlcyIsIChpbnQpaS0+Zmlyc3QsIGktPnNlY29uZC5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgIEljb25Mb2FkRGVjaXNpb24gZGVjaXNpb24gPSBtX2ljb25EYXRhYmFzZUltcGwt
PnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChpLT5zZWNvbmQsIDApOwogCiAgICAg
ICAgIC8vIERlY2lzaW9ucyBzaG91bGQgbmV2ZXIgYmUgdW5rbm93biBhZnRlciB0aGUgaW5pdGFs
IGltcG9ydCBpcyBjb21wbGV0ZQogICAgICAgICBBU1NFUlQoZGVjaXNpb24gIT0gSWNvbkxvYWRV
bmtub3duKTsKIAogICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdlIG5lZWQg
dG8ga25vdyB3aGljaCBjb25uZWN0aW9uIHRvIHNlbmQgdGhpcyBtZXNzYWdlIHRvLgotICAgICAg
ICBtX3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViSWNvbkRhdGFi
YXNlUHJveHk6OlJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbihzdGF0aWNfY2FzdDxpbnQ+KGRlY2lz
aW9uKSwgaS0+a2V5KSk7CisgICAgICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJhc2VQcm94eTo6UmVjZWl2ZWRJY29uTG9hZERlY2lzaW9u
KHN0YXRpY19jYXN0PGludD4oZGVjaXNpb24pLCBpLT5maXJzdCkpOwogICAgIH0KICAgICAKICAg
ICBtX3BlbmRpbmdMb2FkRGVjaXNpb25VUkxNYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAppbmRleCBjNmQ4YzY0YmE4NTk2MjUxZDVkMzZjZmU5
MTlhMjk2MzgyNzExOTRjLi42MzJhYTNiNzU1NGRiMjQzYmQzNzVkZDc5MjEzOTUzMWU2OWFlMWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwCkBAIC03OCw3
ICs3OCw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gV2ViSW50ZW50RGF0YTo6
ZXh0cmFzKCkgY29uc3QKICAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIHdrRXh0cmFz
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3N0
b3JlLmV4dHJhcy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fc3RvcmUuZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5rZXksIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT52YWx1
ZSkpOworICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShp
dC0+c2Vjb25kKSk7CiAKICAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQod2tF
eHRyYXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBhMjBlNDY3ZmU3NjdkNjQ0NDg5MmVjNjE1MjIzYzhmNjI4ZmJiMmE4Li4yMmEyYjdm
MmM3YTI0MWNlZGU5NmI5NzRiZTM0YWI0NDYwYjcxN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjY2LDkgKzI2Niw5IEBAIGJvb2wgV2Vi
UHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgS1VSTCYg
dXJsKQogICAgIC8vIEl0ZW1zIGluIGJhY2svZm9yd2FyZCBsaXN0IGhhdmUgYmVlbiBhbHJlYWR5
IGNoZWNrZWQuCiAgICAgLy8gT25lIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIGZpbGUgVVJMcyBpbiBiL2YgbGlzdCBpcyBpZiB0aGUgbGlzdCBoYXMgYmVl
biByZWluc3RhdGVkIGFmdGVyIGEgY3Jhc2ggb3IgYSBicm93c2VyIHJlc3RhcnQuCiAgICAgZm9y
IChXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2Fy
ZExpc3RJdGVtTWFwLmJlZ2luKCksIGVuZCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQo
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXIt
PnZhbHVlLT51cmwoKSkuZmlsZVN5c3RlbVBhdGgoKSA9PSBwYXRoKQorICAgICAgICBpZiAoS1VS
TChLVVJMKCksIGl0ZXItPnNlY29uZC0+dXJsKCkpLmZpbGVTeXN0ZW1QYXRoKCkgPT0gcGF0aCkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXIt
PnZhbHVlLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCisgICAgICAg
IGlmIChLVVJMKEtVUkwoKSwgaXRlci0+c2Vjb25kLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lzdGVt
UGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI5
MSwxNSArMjkxLDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0ZW0o
dWludDY0X3QgaXRlbUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsCiAKICAgICBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9iYWNrRm9yd2FyZExpc3RJdGVt
TWFwLmFkZChpdGVtSUQsIDApOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KG9yaWdpbmFsVVJMLCB1cmwsIHRpdGxlLCBiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9y
d2FyZERhdGEuc2l6ZSgpLCBpdGVtSUQpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnNlY29u
ZCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgdXJsLCB0aXRs
ZSwgYmFja0ZvcndhcmREYXRhLmRhdGEoKSwgYmFja0ZvcndhcmREYXRhLnNpemUoKSwgaXRlbUlE
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFVwZGF0ZSBleGlzdGluZyBpdGVt
LgotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNldE9yaWdpbmFsVVJMKG9yaWdpbmFsVVJM
KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zZXRVUkwodXJsKTsKLSAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLT5zZXRUaXRsZSh0aXRsZSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+c2V0QmFja0ZvcndhcmREYXRhKGJhY2tGb3J3YXJkRGF0YS5kYXRhKCksIGJhY2tGb3J3
YXJkRGF0YS5zaXplKCkpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5zZXRPcmlnaW5h
bFVSTChvcmlnaW5hbFVSTCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldFVSTCh1
cmwpOworICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLT5zZXRUaXRsZSh0aXRsZSk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQtPnNldEJhY2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERh
dGEuZGF0YSgpLCBiYWNrRm9yd2FyZERhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgUGFzc093blB0cjxW
ZWN0b3I8UGx1Z2luSW5mbz4gPiBwbHVnaW5JbmZvcykKQEAgLTU3OCw3ICs1NzgsNyBAQCBzaXpl
X3QgV2ViUHJvY2Vzc1Byb3h5OjpmcmFtZUNvdW50SW5QYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkg
Y29uc3QKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiA+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9mcmFt
ZU1hcC5iZWdpbigpOyBpdGVyICE9IG1fZnJhbWVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAg
ICBpZiAoaXRlci0+dmFsdWUtPnBhZ2UoKSA9PSBwYWdlKQorICAgICAgICBpZiAoaXRlci0+c2Vj
b25kLT5wYWdlKCkgPT0gcGFnZSkKICAgICAgICAgICAgICsrcmVzdWx0OwogICAgIH0KICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmNwcAppbmRleCBmY2E3MWExZDA5NWZlZWZhYmEwNWE2YTcyNWZkYjQzNjM1ODE0
YjY2Li5kNmJkYjhlMTUzMTQ1MGIxMmFiYzgyZDg2YjJmYzAxM2YxMzU0M2I3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5j
ZWxSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpbwogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2dlb2xvY2F0aW9uVG9JRE1hcC5yZW1vdmUoaXQpOwotICAgIG1faWRUb0dlb2xvY2F0aW9u
TWFwLnJlbW92ZShpdC0+dmFsdWUpOworICAgIG1faWRUb0dlb2xvY2F0aW9uTWFwLnJlbW92ZShp
dC0+c2Vjb25kKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IGdlb2xv
Y2F0aW9uSUQsIGJvb2wgYWxsb3dlZCkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lv
bkRlY2lzaW8KICAgICBpZiAoaXQgPT0gbV9pZFRvR2VvbG9jYXRpb25NYXAuZW5kKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbiA9IGl0LT52YWx1ZTsK
KyAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24gPSBpdC0+c2Vjb25kOwogICAgIGdlb2xvY2F0
aW9uLT5zZXRJc0FsbG93ZWQoYWxsb3dlZCk7CiAKICAgICBtX2lkVG9HZW9sb2NhdGlvbk1hcC5y
ZW1vdmUoaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5j
cHAKaW5kZXggNzdlMDMwOTNkNWZkMGQ5NjQyNGQzMTU0Zjc3Yzk0ZDQxOTRiMTZlYS4uMGM0Mjk1
ZTYxMmNkZDc2ZjAzYTUzMTNkNDVlNmNlYzFmYjFlODU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC02OSwxMCArNjksMTAgQEAgUGFzc1Jl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
Z2V0T3JDcmVhdGUoTm9kZSoKIAogICAgIERPTUhhbmRsZUNhY2hlOjpBZGRSZXN1bHQgcmVzdWx0
ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQobm9kZSwgMCk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
PihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPihyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CiAKICAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpjcmVhdGUobm9kZSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG5vZGVIYW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBub2RlSGFu
ZGxlLmdldCgpOwogICAgIHJldHVybiBub2RlSGFuZGxlLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCBkNjAwMGFi
OTEzMzI5Y2Q1N2RhYjNlM2ZkNjQwMTRjNzZlOTUyZGMyLi4xYjc0ZjAxMjQwMDhkYjNjMDc4Mjhl
YTZmNmQyYzA1YWMwNTljMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUo
UmFuCiAKICAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNh
Y2hlKCkuYWRkKHJhbmdlLCAwKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAg
ICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPihyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwogCiAgICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6Y3JlYXRlKHJhbmdlKTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gcmFuZ2VI
YW5kbGUuZ2V0KCk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSByYW5nZUhhbmRsZS5n
ZXQoKTsKICAgICByZXR1cm4gcmFuZ2VIYW5kbGUucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCmluZGV4IGQ4YWMzYTI1ZGYzNWI0YTA1ZjAyMmMxMGEzMzg0
N2Y2NmZmOTZlOGMuLjkyZGU2MWM2YzJiZDZlOWU0MmM0NzVkYWEwN2MwMTc3OWIxNzU3Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVJbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFBhc3NS
ZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcygp
IGNvbnN0CiAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKICAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVuZCgp
OwogICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
ZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgd2tFeHRyYXMuc2V0KGl0
LT5rZXksIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT52YWx1ZSkpOworICAgICAgICB3a0V4dHJhcy5z
ZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CiAKICAgICByZXR1
cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQod2tFeHRyYXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDI1MWM0MTI0NTRjNTUzN2VhZDJlYjQ4NTVlMzZj
MWUzODdiYTRjMTUuLjJkNjY3ZWY1ZTE3MmIxZDhjY2Q4NjNlNDE3MWM2ZjRiNDM0ZDE4OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgTm90
aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnBvbGlj
eUZvck9yaWdpbihXZWJDb3JlOjoKICAgICBBU1NFUlQoIW9yaWdpbi0+aXNVbmlxdWUoKSk7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGVybWlzc2lv
bnNNYXAuZmluZChvcmlnaW4tPnRvUmF3U3RyaW5nKCkpOwogICAgIGlmIChpdCAhPSBtX3Blcm1p
c3Npb25zTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlID8gTm90aWZpY2F0aW9u
Q2xpZW50OjpQZXJtaXNzaW9uQWxsb3dlZCA6IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bkRlbmllZDsKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQgPyBOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb25BbGxvd2VkIDogTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uRGVuaWVk
OwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
bk5vdEFsbG93ZWQ7CkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAg
IG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwog
ICAgIAogICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmlj
YXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgVmVjdG9yPHVpbnQ2NF90PigpKS5pdGVyYXRvcjsKLSAgICBpdC0+dmFsdWUuYXBwZW5kKG5v
dGlmaWNhdGlvbklEKTsKKyAgICBpdC0+c2Vjb25kLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlv
bi0+dGl0bGUoKSwgbm90aWZpY2F0aW9uLT5ib2R5KCksIG5vdGlmaWNhdGlvbi0+aWNvblVSTCgp
LnN0cmluZygpLCBub3RpZmljYXRpb24tPnRhZygpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9u
SUQpLCBwYWdlLT5wYWdlSUQoKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCoKICAgICBpZiAoaXQgPT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmVuZCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9u
SURzID0gaXQtPnZhbHVlOworICAgIFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyA9
IGl0LT5zZWNvbmQ7CiAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Q2xlYXJOb3RpZmljYXRpb25zKG5vdGlmaWNh
dGlvbklEcyksIHBhZ2UtPnBhZ2VJRCgpKTsKICAgICBzaXplX3QgY291bnQgPSBub3RpZmljYXRp
b25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpA
QCAtMjMzLDEwICsyMzMsMTAgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpyZW1vdmVO
b3RpZmljYXRpb25Gcm9tQ29udGV4dE1hcCh1aW50NjRfdCBub3RpZmljYXQKICAgICAvLyBUaGlz
IGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBtYW5hZ2luZyB0aGUgaGFzaCBtYXBzLgogICAgIE5v
dGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0
TWFwLmZpbmQobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFT
U0VSVChpdCAhPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpOwotICAgIHNpemVfdCBp
bmRleCA9IGl0LT52YWx1ZS5maW5kKG5vdGlmaWNhdGlvbklEKTsKKyAgICBzaXplX3QgaW5kZXgg
PSBpdC0+c2Vjb25kLmZpbmQobm90aWZpY2F0aW9uSUQpOwogICAgIEFTU0VSVChpbmRleCAhPSBu
b3RGb3VuZCk7Ci0gICAgaXQtPnZhbHVlLnJlbW92ZShpbmRleCk7Ci0gICAgaWYgKGl0LT52YWx1
ZS5pc0VtcHR5KCkpCisgICAgaXQtPnNlY29uZC5yZW1vdmUoaW5kZXgpOworICAgIGlmIChpdC0+
c2Vjb25kLmlzRW1wdHkoKSkKICAgICAgICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLnJlbW92
ZShpdCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXgg
MGNlNzAzYzBhZDg4MDNjYTI4ZGQ1NDMxOGU3MTg5NDM2MzZkNjk2Mi4uMzU4NTMzZmViZmM4NjI3
YjljM2FjYWY2NjA2ODE0ZWI4ZGQyNzFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1h
cC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6aW52YWxp
ZGF0ZSgpCiAgICAgVmVjdG9yPE5QT2JqZWN0Kj4gb2JqZWN0czsKIAogICAgIGZvciAoSGFzaE1h
cDxOUE9iamVjdCosIEpTQzo6V2VhazxKU05QT2JqZWN0PiA+OjppdGVyYXRvciBwdHIgPSBtX2pz
TlBPYmplY3RzLmJlZ2luKCksIGVuZCA9IG1fanNOUE9iamVjdHMuZW5kKCk7IHB0ciAhPSBlbmQ7
ICsrcHRyKSB7Ci0gICAgICAgIEpTTlBPYmplY3QqIGpzTlBPYmplY3QgPSBwdHItPnZhbHVlLmdl
dCgpOworICAgICAgICBKU05QT2JqZWN0KiBqc05QT2JqZWN0ID0gcHRyLT5zZWNvbmQuZ2V0KCk7
CiAgICAgICAgIGlmICghanNOUE9iamVjdCkgLy8gU2tpcCB6b21iaWVzLgogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIG9iamVjdHMuYXBwZW5kKGpzTlBPYmplY3QtPmxlYWtOUE9iamVj
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IGYxZTc5ZTQ1ZDgxNmQyNzBjYjQ1
YzEwMzA4MzVmNDZmOTMyM2EwNTYuLmIyMDc0MzIxM2JjNWVhNDEzYzJmMDk2M2QzOWM2YTIyMzM0
ZmQxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMTk5LDggKzE5OSw4IEBAIE5Q
RXJyb3IgTmV0c2NhcGVQbHVnaW46OmRlc3Ryb3lTdHJlYW0oTlBTdHJlYW0qIHN0cmVhbSwgTlBS
ZWFzb24gcmVhc29uKQogICAgIE5ldHNjYXBlUGx1Z2luU3RyZWFtKiBwbHVnaW5TdHJlYW0gPSAw
OwogCiAgICAgZm9yIChTdHJlYW1zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RyZWFtcy5i
ZWdpbigpLCBlbmQgPSBtX3N0cmVhbXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBpZiAoaXQtPnZhbHVlLT5ucFN0cmVhbSgpID09IHN0cmVhbSkgewotICAgICAgICAgICAgcGx1
Z2luU3RyZWFtID0gaXQtPnZhbHVlLmdldCgpOworICAgICAgICBpZiAoaXQtPnNlY29uZC0+bnBT
dHJlYW0oKSA9PSBzdHJlYW0pIHsKKyAgICAgICAgICAgIHBsdWdpblN0cmVhbSA9IGl0LT5zZWNv
bmQuZ2V0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTM4Nyw3
ICszODcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjp1bnNjaGVkdWxlVGltZXIodW5zaWduZWQg
dGltZXJJRCkKICAgICBpZiAoaXQgPT0gbV90aW1lcnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIE93blB0cjxUaW1lcj4gdGltZXIgPSBhZG9wdFB0cihpdC0+dmFsdWUpOworICAgIE93
blB0cjxUaW1lcj4gdGltZXIgPSBhZG9wdFB0cihpdC0+c2Vjb25kKTsKICAgICBtX3RpbWVycy5y
ZW1vdmUoaXQpOwogCiAgICAgdGltZXItPnN0b3AoKTsKQEAgLTc2Miw4ICs3NjIsOCBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luOjpmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElE
KQogICAgIGlmIChpdCA9PSBtX3BlbmRpbmdVUkxOb3RpZmljYXRpb25zLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTdHJpbmcgdXJsID0gaXQtPnZhbHVlLmZpcnN0OwotICAgIHZvaWQq
IG5vdGlmaWNhdGlvbkRhdGEgPSBpdC0+dmFsdWUuc2Vjb25kOworICAgIFN0cmluZyB1cmwgPSBp
dC0+c2Vjb25kLmZpcnN0OworICAgIHZvaWQqIG5vdGlmaWNhdGlvbkRhdGEgPSBpdC0+c2Vjb25k
LnNlY29uZDsKIAogICAgIG1fcGVuZGluZ1VSTE5vdGlmaWNhdGlvbnMucmVtb3ZlKGl0KTsKICAg
ICAKQEAgLTc3OCw4ICs3NzgsOCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpmcmFtZURpZEZhaWwo
dWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkKICAgICBpZiAoaXQgPT0gbV9w
ZW5kaW5nVVJMTm90aWZpY2F0aW9ucy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIHVybCA9IGl0LT52YWx1ZS5maXJzdDsKLSAgICB2b2lkKiBub3RpZmljYXRpb25EYXRhID0g
aXQtPnZhbHVlLnNlY29uZDsKKyAgICBTdHJpbmcgdXJsID0gaXQtPnNlY29uZC5maXJzdDsKKyAg
ICB2b2lkKiBub3RpZmljYXRpb25EYXRhID0gaXQtPnNlY29uZC5zZWNvbmQ7CiAKICAgICBtX3Bl
bmRpbmdVUkxOb3RpZmljYXRpb25zLnJlbW92ZShpdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNjRhZTFhNGU0YjI4
ZDM4YWJjNjc3OWZiY2JmMDZlYWViMTM2ZDlkOS4uZDA3ZjhiNzlkNmE4MDJhZjc5NDA3YmE5NTY2
MDE1NjkyYmU1ZjVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRI
VFRQSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgbG9uZyBsb25nJiBl
eHBlCiAgICAgCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGl0LT5rZXkuY2hh
cmFjdGVycygpLCBpdC0+a2V5Lmxlbmd0aCgpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoaXQtPmZpcnN0LmNoYXJhY3RlcnMoKSwgaXQtPmZpcnN0Lmxlbmd0aCgpKTsKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yLmNoYXJhY3RlcnMoKSwgc2VwYXJhdG9yLmxl
bmd0aCgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaXQtPnZhbHVlLmNoYXJhY3Rl
cnMoKSwgaXQtPnZhbHVlLmxlbmd0aCgpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
aXQtPnNlY29uZC5jaGFyYWN0ZXJzKCksIGl0LT5zZWNvbmQubGVuZ3RoKCkpOwogICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKICAgICB9CiAgICAgCkBAIC0yODQsNyArMjg0LDcg
QEAgUGx1Z2luVmlldzo6flBsdWdpblZpZXcoKQogCiAgICAgLy8gQ2FuY2VsIGFsbCBwZW5kaW5n
IGZyYW1lIGxvYWRzLgogICAgIGZvciAoRnJhbWVMb2FkTWFwOjppdGVyYXRvciBpdCA9IG1fcGVu
ZGluZ0ZyYW1lTG9hZHMuYmVnaW4oKSwgZW5kID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+a2V5LT5zZXRMb2FkTGlzdGVuZXIoMCk7Cisg
ICAgICAgIGl0LT5maXJzdC0+c2V0TG9hZExpc3RlbmVyKDApOwogCiAgICAgaWYgKG1fcGx1Z2lu
KSB7CiAgICAgICAgIG1faXNCZWluZ0Rlc3Ryb3llZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA3
MzU2MDk0ZGU4NjE4OWEwZTU4NDM2YTdhZDc3MjE3MmI4ZGI5MWQyLi40ZjE3NmRkODZhNDU1YjM3
NTA5MzFmMmNjOTRmYjljZTc4MTVhYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmxheWVy
QnlJRChXZWJLaXQ6OldlYkxheWVySUQKICAgICBIYXNoTWFwPFdlYkxheWVySUQsIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IHRhYmxlLmZpbmQoaWQpOwogICAgIGlm
IChpdCA9PSB0YWJsZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGl0LT52
YWx1ZTsKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0KIAogc3RhdGljIFdlYkxheWVySUQgdG9X
ZWJMYXllcklEKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IDU3NGMwNzlkY2Y0YjRlZTc0
NGM2NGFlYTcwOWQwNTIwM2ZiMWUyNjIuLmEzYTU3MjkwNzNiZGU5ZmY3MzM1ZTdjMmE3YTg0Y2Vh
M2VkNTgzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBpbnQ2NF90IExheWVyVHJlZUNvb3Jk
aW5hdG9yOjphZG9wdEltYWdlQmFja2luZ1N0b3JlKEltYWdlKiBpbWFnZSkKICAgICBIYXNoTWFw
PGludDY0X3QsIGludD46Oml0ZXJhdG9yIGl0ID0gbV9kaXJlY3RseUNvbXBvc2l0ZWRJbWFnZVJl
ZkNvdW50cy5maW5kKGtleSk7CiAKICAgICBpZiAoaXQgIT0gbV9kaXJlY3RseUNvbXBvc2l0ZWRJ
bWFnZVJlZkNvdW50cy5lbmQoKSkgewotICAgICAgICArKyhpdC0+dmFsdWUpOworICAgICAgICAr
KyhpdC0+c2Vjb25kKTsKICAgICAgICAgcmV0dXJuIGtleTsKICAgICB9CiAKQEAgLTQ3OSw5ICs0
NzksOSBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxlYXNlSW1hZ2VCYWNraW5nU3Rv
cmUoaW50NjRfdCBrZXkpCiAgICAgaWYgKGl0ID09IG1fZGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VS
ZWZDb3VudHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGl0LT52YWx1ZS0tOworICAg
IGl0LT5zZWNvbmQtLTsKIAotICAgIGlmIChpdC0+dmFsdWUpCisgICAgaWYgKGl0LT5zZWNvbmQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VSZWZDb3Vu
dHMucmVtb3ZlKGl0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGJlODJhMTk3YTcz
NmQ2MjMyYTU0MzdkYTljMjkwMmViMDVjYTNhMGIuLjRjYTRlNWZkYjcyY2ZjZWFjNjk1NDVkZDE3
ZDlmN2EyY2M4NDY4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMTMwLDkgKzEz
MCw5IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92ZUl0ZW0odWludDY0X3Qg
aXRlbUlEKQogICAgIGlmIChpdCA9PSBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKLSAgICBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+cmVtb3ZlKGl0
LT52YWx1ZS5nZXQoKSk7CisgICAgV2ViQ29yZTo6cGFnZUNhY2hlKCktPnJlbW92ZShpdC0+c2Vj
b25kLmdldCgpKTsKIAotICAgIGhpc3RvcnlJdGVtVG9JRE1hcCgpLnJlbW92ZShpdC0+dmFsdWUp
OworICAgIGhpc3RvcnlJdGVtVG9JRE1hcCgpLnJlbW92ZShpdC0+c2Vjb25kKTsKICAgICBpZFRv
SGlzdG9yeUl0ZW1NYXAoKS5yZW1vdmUoaXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMjIyNzNjMWY2NDYy
MWQ5ZmYwMjgwZTc1Y2U2MTM1YmE1ZDI1YWI3My4uYzJmMDE2NTM3NTk1M2I1M2NjM2NkMWI5ZWI0
MzFkYjVlY2ViOTNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBTdHJpbmcg
Y29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29uc3QgU3RyaW5nJiBzZWxlY3Rvck5hbWUpCiAg
ICAgc3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCogZXhjZXB0aW9uTWFwID0gY3JlYXRlU2Vs
ZWN0b3JFeGNlcHRpb25NYXAoKTsKICAgICBTZWxlY3Rvck5hbWVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gZXhjZXB0aW9uTWFwLT5maW5kKHNlbGVjdG9yTmFtZSk7CiAgICAgaWYgKGl0ICE9IGV4
Y2VwdGlvbk1hcC0+ZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWU7CisgICAgICAgIHJl
dHVybiBpdC0+c2Vjb25kOwogCiAgICAgLy8gUmVtb3ZlIHRoZSB0cmFpbGluZyBjb2xvbi4KICAg
ICAvLyBObyBuZWVkIHRvIGNhcGl0YWxpemUgdGhlIGNvbW1hbmQgbmFtZSBzaW5jZSBFZGl0b3Ig
Y29tbWFuZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmFhOTIwNDE1OTZjOTM5ZmE5ZjIxNDgxYTljN2Vi
YTRkNThiNjlkOC4uMTQ5MGZmM2NhZjc0MzczY2M2YmQ2MDMxZjRiYmM1YWQ3ODk5ODhmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMzksNyArMzM5LDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjp2aXNpdGVkTGlua1N0YXRlQ2hhbmdlZChjb25zdCBWZWN0b3I8
V2ViQ29yZTo6TGlua0hhc2g+JiBsaW5rSGEKICAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYlBhZ2VHcm91cFByb3h5PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGFnZUdyb3Vw
TWFwLmJlZ2luKCk7CiAgICAgICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3Jv
dXBQcm94eT4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wYWdlR3JvdXBNYXAuZW5kKCk7CiAg
ICAgICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBQYWdlOjp2aXNpdGVk
U3RhdGVDaGFuZ2VkKFBhZ2VHcm91cDo6cGFnZUdyb3VwKGl0LT52YWx1ZS0+aWRlbnRpZmllcigp
KSwgbGlua0hhc2hlc1tpXSk7CisgICAgICAgICAgICBQYWdlOjp2aXNpdGVkU3RhdGVDaGFuZ2Vk
KFBhZ2VHcm91cDo6cGFnZUdyb3VwKGl0LT5zZWNvbmQtPmlkZW50aWZpZXIoKSksIGxpbmtIYXNo
ZXNbaV0pOwogICAgIH0KIAogICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JWaXN0ZWRMaW5r
U3R5bGVSZWNhbGMoKTsKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmFsbFZp
c2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKCkKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
UGFnZUdyb3VwUHJveHk+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wYWdlR3JvdXBNYXAuYmVn
aW4oKTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+ID46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGFnZUdyb3VwTWFwLmVuZCgpOwogICAgIGZvciAoOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIFBhZ2U6OmFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFn
ZUdyb3VwOjpwYWdlR3JvdXAoaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpKTsKKyAgICAgICAgUGFn
ZTo6YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXA6OnBhZ2VHcm91cChpdC0+c2Vjb25k
LT5pZGVudGlmaWVyKCkpKTsKIAogICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JWaXN0ZWRM
aW5rU3R5bGVSZWNhbGMoKTsKIH0KQEAgLTUyNyw3ICs1MjcsNyBAQCBXZWJQYWdlKiBXZWJQcm9j
ZXNzOjpmb2N1c2VkV2ViUGFnZSgpIGNvbnN0CiB7ICAgIAogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJQYWdlPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BhZ2VNYXAuZW5kKCk7
CiAgICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX3BhZ2VNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IFdlYlBhZ2UqIHBhZ2UgPSAoKml0KS52YWx1ZS5nZXQoKTsKKyAgICAgICAgV2ViUGFnZSogcGFn
ZSA9ICgqaXQpLnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYgKHBhZ2UtPndpbmRvd0FuZFdlYlBh
Z2VBcmVGb2N1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFnZTsKICAgICB9CkBAIC01NDUs
MTQgKzU0NSwxNCBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJgogICAgIC8vIGxpbmspIHRoZSBX
ZWJQYWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0
aHJvdWdoIHRoZSBub3JtYWwgd2F5LiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
UGFnZT4gPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCAwKTsKICAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0
b3ItPnZhbHVlKTsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdlYlBhZ2U6OmNy
ZWF0ZShwYWdlSUQsIHBhcmFtZXRlcnMpOworICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRv
ci0+c2Vjb25kKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgPSBXZWJQYWdlOjpj
cmVhdGUocGFnZUlELCBwYXJhbWV0ZXJzKTsKIAogICAgICAgICAvLyBCYWxhbmNlZCBieSBhbiBl
bmFibGVUZXJtaW5hdGlvbiBpbiByZW1vdmVXZWJQYWdlLgogICAgICAgICBkaXNhYmxlVGVybWlu
YXRpb24oKTsKICAgICB9CiAKLSAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Cisg
ICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
OjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKQEAgLTc4OSwxMSArNzg5LDExIEBAIFdl
YlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdy
b3VwRGF0YSYgcGFnZUdyb3VwRGF0CiB7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YlBhZ2VHcm91cFByb3h5PiA+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlR3JvdXBNYXAuYWRk
KHBhZ2VHcm91cERhdGEucGFnZUdyb3VwSUQsIDApOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkgewotICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShwYWdlR3Jv
dXBEYXRhKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNlY29uZCk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kID0gV2ViUGFnZUdyb3VwUHJveHk6OmNyZWF0ZShw
YWdlR3JvdXBEYXRhKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAK
ICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCkBAIC05MTIsNyArOTEyLDcgQEAgc3RhdGljIHZvaWQg
ZnJvbUNvdW50ZWRTZXRUb0hhc2hNYXAoVHlwZUNvdW50U2V0KiBjb3VudGVkU2V0LCBIYXNoTWFw
PFN0cmluZywgdWkKIHsKICAgICBUeXBlQ291bnRTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNv
dW50ZWRTZXQtPmVuZCgpOwogICAgIGZvciAoVHlwZUNvdW50U2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGNvdW50ZWRTZXQtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbWFwLnNl
dChpdC0+a2V5LCBpdC0+dmFsdWUpOworICAgICAgICBtYXAuc2V0KGl0LT5maXJzdCwgaXQtPnNl
Y29uZCk7CiB9CiAKIHN0YXRpYyB2b2lkIGdldFdlYkNvcmVNZW1vcnlDYWNoZVN0YXRpc3RpY3Mo
VmVjdG9yPEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gPiYgcmVzdWx0KQpAQCAtMTA4NSw3ICsx
MDg1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRD
aGVja2VyU3RhdGUmIHRleHRDaGVja2VyU3RhdGUpCiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViUGFnZT4gPjo6aXRlcmF0b3IgZW5kID0gbV9wYWdlTWFwLmVuZCgpOwogICAgIGZv
ciAoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID46Oml0ZXJhdG9yIGl0ID0gbV9w
YWdlTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXZWJQYWdlKiBwYWdl
ID0gKCppdCkudmFsdWUuZ2V0KCk7CisgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSAoKml0KS5zZWNv
bmQuZ2V0KCk7CiAgICAgICAgIGlmIChjb250aW51b3VzU3BlbGxDaGVja2luZ1R1cm5lZE9mZikK
ICAgICAgICAgICAgIHBhZ2UtPnVubWFya0FsbE1pc3NwZWxsaW5ncygpOwogICAgICAgICBpZiAo
Z3JhbW1hckNoZWNraW5nVHVybmVkT2ZmKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM1MGQ5YmMwNDM3Mzc3ZTZkODBjMGQxNTMwZDUxNDk5MjFj
MWMwYjYuLmQ3NWYwNDNhYzkwM2I0ZDM0MmQ5MzEyYWNlZDA4N2ZiZThkOTFhMGYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBA
QAorMjAxMi0wOC0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjgzNi4KKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2ODM2CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE2MworCisgICAgICAgIEJyb2tlIGFsbCBB
cHBsZSBwb3J0cywgRUZMLCBhbmQgUXQuIChSZXF1ZXN0ZWQgYnkgdGtlbnQgb24KKyAgICAgICAg
I3dlYmtpdCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXI6OmFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcDoKKyAgICAgICAgKE5vdGlmaWNh
dGlvblByZXNlbnRlcjo6c2ltdWxhdGVDbGljayk6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVz
ZW50ZXI6OnNob3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvQ3BwQm91bmRDbGFzcy5jcHA6CisgICAgICAgIChDcHBCb3VuZENsYXNzOjp+Q3BwQm91bmRD
bGFzcyk6CisgICAgICAgIChDcHBCb3VuZENsYXNzOjppbnZva2UpOgorICAgICAgICAoQ3BwQm91
bmRDbGFzczo6Z2V0UHJvcGVydHkpOgorICAgICAgICAoQ3BwQm91bmRDbGFzczo6c2V0UHJvcGVy
dHkpOgorICAgICAgICAoQ3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKToKKyAgICAgICAgKENw
cEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoYXBwbHlGb250TWFwKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6cHJpbnRSZXNvdXJjZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6On5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcik6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6d2luTm90aWZpY2F0aW9uUmVjZWl2ZWQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAg
ICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAg
ICAgICAgKHdvcmxkSURGb3JXb3JsZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpldmFsdWF0ZVNj
cmlwdEluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpET01XaW5kb3dFeHRlbnNpb25CYXNpYzo6d2lsbERlc3Ryb3lQYWdlKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZV9CdW5kbGUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RE9NV2luZG93RXh0ZW5zaW9u
Tm9DYWNoZTo6d2lsbERlc3Ryb3lQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjp3
b3JsZElERm9yV29ybGQpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZCk6CisKIDIwMTItMDgtMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWly
YSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUg
Zmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyLmNwcAppbmRleCAxM2M4ZmYxZWM0YzFjZGU1NTA3NjY5OGRmY2ZlNWU4NzEy
NmE4MmViLi43MTYyMjJmOWFjY2ZlOGZmYmUzNTk5Nzg1MzgzNzY0NzA2YzY0ZTFlIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIE1vY2tXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXI6OmFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJp
bmcmIHJlcwogICAgICAgICBTdHJpbmcgbGFuZ1N0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgobGFu
Z3VhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmICghbV9yZWNvZ25pdGlvblJlc3VsdHMu
Y29udGFpbnMobGFuZ1N0cmluZykpCiAgICAgICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0cy5z
ZXQobGFuZ1N0cmluZywgVmVjdG9yPFdlYlNwZWVjaElucHV0UmVzdWx0PigpKTsKLSAgICAgICAg
bV9yZWNvZ25pdGlvblJlc3VsdHMuZmluZChsYW5nU3RyaW5nKS0+dmFsdWUuYXBwZW5kKHJlcyk7
CisgICAgICAgIG1fcmVjb2duaXRpb25SZXN1bHRzLmZpbmQobGFuZ1N0cmluZyktPnNlY29uZC5h
cHBlbmQocmVzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL05vdGlmaWNhdGlvblByZXNlbnRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCmluZGV4IGEyMTU4OGY3NDRlNWMz
ZjVhYjcwZGJkYjAzYzI3NWM1MDcwOGYwM2EuLjBjNTQwMGY1ZTllOGY3MTcwZWNmNTk5YTgxYmQ0
MjZmYmQ3NzI5MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL05v
dGlmaWNhdGlvblByZXNlbnRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIE5vdGlm
aWNhdGlvblByZXNlbnRlcjo6c2ltdWxhdGVDbGljayhjb25zdCBXZWJTdHJpbmcmIHRpdGxlKQog
ICAgIGlmIChtX2FjdGl2ZU5vdGlmaWNhdGlvbnMuZmluZChpZCkgPT0gbV9hY3RpdmVOb3RpZmlj
YXRpb25zLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgY29uc3QgV2Vi
Tm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24gPSBtX2FjdGl2ZU5vdGlmaWNhdGlvbnMuZmluZChp
ZCktPnZhbHVlOworICAgIGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uID0gbV9h
Y3RpdmVOb3RpZmljYXRpb25zLmZpbmQoaWQpLT5zZWNvbmQ7CiAgICAgV2ViTm90aWZpY2F0aW9u
IGV2ZW50VGFyZ2V0KG5vdGlmaWNhdGlvbik7CiAgICAgZXZlbnRUYXJnZXQuZGlzcGF0Y2hDbGlj
a0V2ZW50KCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC04OSw3ICs4OSw3IEBAIGJvb2wgTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpzaG93KGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQogICAgICAgICBXVEY6OlN0cmluZyByZXBsYWNlSWQobm90aWZpY2F0aW9uLnJlcGxhY2VJZCgp
LmRhdGEoKSwgbm90aWZpY2F0aW9uLnJlcGxhY2VJZCgpLmxlbmd0aCgpKTsKICAgICAgICAgaWYg
KG1fcmVwbGFjZW1lbnRzLmZpbmQocmVwbGFjZUlkKSAhPSBtX3JlcGxhY2VtZW50cy5lbmQoKSkK
ICAgICAgICAgICAgIHByaW50ZigiUkVQTEFDSU5HIE5PVElGSUNBVElPTiAlc1xuIiwKLSAgICAg
ICAgICAgICAgICAgICBtX3JlcGxhY2VtZW50cy5maW5kKHJlcGxhY2VJZCktPnZhbHVlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgIG1fcmVwbGFjZW1lbnRzLmZpbmQocmVwbGFj
ZUlkKS0+c2Vjb25kLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIG1fcmVwbGFjZW1lbnRzLnNl
dChyZXBsYWNlSWQsIFdURjo6U3RyaW5nKGlkZW50aWZpZXIuZGF0YSgpLCBpZGVudGlmaWVyLmxl
bmd0aCgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9DcHBCb3VuZENsYXNzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvQ3BwQm91bmRDbGFzcy5jcHAKaW5kZXggMWIyOWQyYjBmNTVkMDFm
NzM4NzE0NTc4NzdmOWRiZGYwNmYxYjQ5MS4uOWI0YTNiNjQ2NDVkMDU3YjQxNzJlMWM3ZGZhMDdj
N2E2MmU3N2NmOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9DcHBCb3VuZENsYXNzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL0NwcEJvdW5kQ2xhc3MuY3BwCkBAIC0yMDMsMTAgKzIwMywxMCBAQCBi
b29sIENwcE5QT2JqZWN0OjpzZXRQcm9wZXJ0eShOUE9iamVjdCogbnBPYmosIE5QSWRlbnRpZmll
ciBpZGVudCwgY29uc3QgTlBWYXJpYQogQ3BwQm91bmRDbGFzczo6fkNwcEJvdW5kQ2xhc3MoKQog
ewogICAgIGZvciAoTWV0aG9kTGlzdDo6aXRlcmF0b3IgaSA9IG1fbWV0aG9kcy5iZWdpbigpOyBp
ICE9IG1fbWV0aG9kcy5lbmQoKTsgKytpKQotICAgICAgICBkZWxldGUgaS0+dmFsdWU7CisgICAg
ICAgIGRlbGV0ZSBpLT5zZWNvbmQ7CiAKICAgICBmb3IgKFByb3BlcnR5TGlzdDo6aXRlcmF0b3Ig
aSA9IG1fcHJvcGVydGllcy5iZWdpbigpOyBpICE9IG1fcHJvcGVydGllcy5lbmQoKTsgKytpKQot
ICAgICAgICBkZWxldGUgaS0+dmFsdWU7CisgICAgICAgIGRlbGV0ZSBpLT5zZWNvbmQ7CiAKICAg
ICAvLyBVbnJlZ2lzdGVyIG91cnNlbHZlcyBpZiB3ZSB3ZXJlIGJvdW5kIHRvIGEgZnJhbWUuCiAg
ICAgaWYgKG1fYm91bmRUb0ZyYW1lKQpAQCAtMjM3LDcgKzIzNyw3IEBAIGJvb2wgQ3BwQm91bmRD
bGFzczo6aW52b2tlKE5QSWRlbnRpZmllciBpZGVudCwKICAgICAgICAgfQogICAgICAgICBjYWxs
YmFjayA9IG1fZmFsbGJhY2tDYWxsYmFjay5nZXQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2Fs
bGJhY2sgPSAoKm1ldGhvZCkudmFsdWU7CisgICAgICAgIGNhbGxiYWNrID0gKCptZXRob2QpLnNl
Y29uZDsKIAogICAgIC8vIEJ1aWxkIGEgQ3BwQXJndW1lbnRMaXN0IGFyZ3VtZW50IHZlY3RvciBm
cm9tIHRoZSBOUFZhcmlhbnRzIGNvbWluZyBpbi4KICAgICBDcHBBcmd1bWVudExpc3QgY3BwQXJn
dW1lbnRzKGFyZ3VtZW50Q291bnQpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIGJvb2wgQ3BwQm91bmRD
bGFzczo6Z2V0UHJvcGVydHkoTlBJZGVudGlmaWVyIGlkZW50LCBOUFZhcmlhbnQqIHJlc3VsdCkg
Y29uc3QKICAgICB9CiAKICAgICBDcHBWYXJpYW50IGNwcFZhbHVlOwotICAgIGlmICghY2FsbGJh
Y2stPnZhbHVlLT5nZXRWYWx1ZSgmY3BwVmFsdWUpKQorICAgIGlmICghY2FsbGJhY2stPnNlY29u
ZC0+Z2V0VmFsdWUoJmNwcFZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNwcFZh
bHVlLmNvcHlUb05QVmFyaWFudChyZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjc0LDcg
KzI3NCw3IEBAIGJvb2wgQ3BwQm91bmRDbGFzczo6c2V0UHJvcGVydHkoTlBJZGVudGlmaWVyIGlk
ZW50LCBjb25zdCBOUFZhcmlhbnQqIHZhbHVlKQogCiAgICAgQ3BwVmFyaWFudCBjcHBWYWx1ZTsK
ICAgICBjcHBWYWx1ZS5zZXQoKnZhbHVlKTsKLSAgICByZXR1cm4gKCpjYWxsYmFjaykudmFsdWUt
PnNldFZhbHVlKGNwcFZhbHVlKTsKKyAgICByZXR1cm4gKCpjYWxsYmFjaykuc2Vjb25kLT5zZXRW
YWx1ZShjcHBWYWx1ZSk7CiB9CiAKIHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKGNv
bnN0IHN0cmluZyYgbmFtZSwgQ2FsbGJhY2sqIGNhbGxiYWNrKQpAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFtZSwgQ2Fs
bGJhY2sqIGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IFdlYkJpbmRpbmdzOjpn
ZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7CiAgICAgTWV0aG9kTGlzdDo6aXRlcmF0
b3Igb2xkQ2FsbGJhY2sgPSBtX21ldGhvZHMuZmluZChpZGVudCk7CiAgICAgaWYgKG9sZENhbGxi
YWNrICE9IG1fbWV0aG9kcy5lbmQoKSkgewotICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnZh
bHVlOworICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnNlY29uZDsKICAgICAgICAgaWYgKCFj
YWxsYmFjaykgewogICAgICAgICAgICAgbV9tZXRob2RzLnJlbW92ZShvbGRDYWxsYmFjayk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBDcHBCb3VuZENsYXNz
OjpiaW5kUHJvcGVydHkoY29uc3Qgc3RyaW5nJiBuYW1lLCBQcm9wZXJ0eUNhbGxiYWNrKiBjYWxs
YmFjaykKICAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBXZWJCaW5kaW5nczo6Z2V0U3RyaW5nSWRl
bnRpZmllcihuYW1lLmNfc3RyKCkpOwogICAgIFByb3BlcnR5TGlzdDo6aXRlcmF0b3Igb2xkQ2Fs
bGJhY2sgPSBtX3Byb3BlcnRpZXMuZmluZChpZGVudCk7CiAgICAgaWYgKG9sZENhbGxiYWNrICE9
IG1fcHJvcGVydGllcy5lbmQoKSkgewotICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnZhbHVl
OworICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnNlY29uZDsKICAgICAgICAgaWYgKCFjYWxs
YmFjaykgewogICAgICAgICAgICAgbV9wcm9wZXJ0aWVzLnJlbW92ZShvbGRDYWxsYmFjayk7CiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggNmVjMGU0MzRkZGY0ZTFmZjRiYzgzZDdlZTk3NjIxZjJm
ODYwNDUxOC4uYzRkZTBhYmMxNDQ1MGExMDlhYWNhN2Y5NzdhMjllODkzOWIyNmNlNCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcApAQCAt
MTU2LDkgKzE1Niw5IEBAIHR5cGVkZWYgdm9pZCAoKlNldEZvbnRGYW1pbHlXcmFwcGVyKShXZWJT
ZXR0aW5ncyosIGNvbnN0IFdlYlN0cmluZyYsIFVTY3JpcHRDb2RlCiBzdGF0aWMgdm9pZCBhcHBs
eUZvbnRNYXAoV2ViU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBXZWJQcmVmZXJlbmNlczo6U2Ny
aXB0Rm9udEZhbWlseU1hcCYgbWFwLCBTZXRGb250RmFtaWx5V3JhcHBlciBzZXR0ZXIpCiB7CiAg
ICAgZm9yIChXZWJQcmVmZXJlbmNlczo6U2NyaXB0Rm9udEZhbWlseU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IG1hcC5iZWdpbigpOyBpdGVyICE9IG1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAg
ICAgIGNvbnN0IFdlYlN0cmluZyYgZm9udCA9IGl0ZXItPnZhbHVlOworICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIGZvbnQgPSBpdGVyLT5zZWNvbmQ7CiAgICAgICAgIGlmICghZm9udC5pc051bGwo
KSAmJiAhZm9udC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAoKnNldHRlcikoc2V0dGluZ3MsIGZv
bnQsIHN0YXRpY19jYXN0PFVTY3JpcHRDb2RlPihpdGVyLT5rZXkpKTsKKyAgICAgICAgICAgICgq
c2V0dGVyKShzZXR0aW5ncywgZm9udCwgc3RhdGljX2Nhc3Q8VVNjcmlwdENvZGU+KGl0ZXItPmZp
cnN0KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5jcHAKaW5kZXggNGUzZTU5MmY0YjlhZDhlYzZlMGViN2Y1MmY1NzBiYmVhYjMxMDMx
ZS4uZGIwZWE1ZWVmZjI5ZmFmZGJjMTAyYTExZjU2ZDBmODI2YTgyYTZmNiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTc2Myw3ICsxNzYz
LDcgQEAgdm9pZCBXZWJWaWV3SG9zdDo6cHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKFdlYkZy
YW1lKiB3ZWJmcmFtZSwgY29uc3QgY2hhciogbXMKIHZvaWQgV2ViVmlld0hvc3Q6OnByaW50UmVz
b3VyY2VEZXNjcmlwdGlvbih1bnNpZ25lZCBpZGVudGlmaWVyKQogewogICAgIFJlc291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmZpbmQoaWRlbnRpZmllcik7
Ci0gICAgcHJpbnRmKCIlcyIsIGl0ICE9IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmVuZCgpID8g
aXQtPnZhbHVlLmNfc3RyKCkgOiAiPHVua25vd24+Iik7CisgICAgcHJpbnRmKCIlcyIsIGl0ICE9
IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmVuZCgpID8gaXQtPnNlY29uZC5jX3N0cigpIDogIjx1
bmtub3duPiIpOwogfQogCiB2b2lkIFdlYlZpZXdIb3N0OjpzZXRQZW5kaW5nRXh0cmFEYXRhKFBh
c3NPd25QdHI8VGVzdFNoZWxsRXh0cmFEYXRhPiBleHRyYURhdGEpCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAppbmRl
eCBlYjM4YjU0MzVjMTY5ZDJiZGZiMDU2OGM2M2VhMjAzYjVjNmZhM2RjLi43ZjlhYTZjYzJlZTky
OWIyYmY4ZWE0MTZmNWQ2NWJiMDU2ZTNlYWQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6On5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
CiAgICAgICAgIFVuaG9va1dpbkV2ZW50KG1fbm90aWZpY2F0aW9uc0V2ZW50SG9vayk7CiAKICAg
ICBmb3IgKEhhc2hNYXA8UGxhdGZvcm1VSUVsZW1lbnQsIEpTT2JqZWN0UmVmPjo6aXRlcmF0b3Ig
aXQgPSBtX25vdGlmaWNhdGlvbkxpc3RlbmVycy5iZWdpbigpOyBpdCAhPSBtX25vdGlmaWNhdGlv
bkxpc3RlbmVycy5lbmQoKTsgKytpdCkKLSAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChmcmFtZS0+
Z2xvYmFsQ29udGV4dCgpLCBpdC0+dmFsdWUpOworICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGZy
YW1lLT5nbG9iYWxDb250ZXh0KCksIGl0LT5zZWNvbmQpOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50
IHkpCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVt
b3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
d2luTm90aWZpY2F0aW9uUmVjZWl2ZWQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgY29uc3Qg
c3RyaW5nJiBldmVudE5hbWUpCiB7CiAgICAgZm9yIChIYXNoTWFwPFBsYXRmb3JtVUlFbGVtZW50
LCBKU09iamVjdFJlZj46Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25MaXN0ZW5lcnMuYmVn
aW4oKTsgaXQgIT0gbV9ub3RpZmljYXRpb25MaXN0ZW5lcnMuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgQ09NUHRyPElTZXJ2aWNlUHJvdmlkZXI+IHRoaXNTZXJ2aWNlUHJvdmlkZXIoUXVlcnksIGl0
LT5rZXkpOworICAgICAgICBDT01QdHI8SVNlcnZpY2VQcm92aWRlcj4gdGhpc1NlcnZpY2VQcm92
aWRlcihRdWVyeSwgaXQtPmZpcnN0KTsKICAgICAgICAgaWYgKCF0aGlzU2VydmljZVByb3ZpZGVy
KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjp3aW5Ob3RpZmljYXRpb25SZWNlaXZlZChQbGF0Zm9ybVVJRWxl
bWVudCBlbGVtZW50LAogCiAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc05vdGlm
aWNhdGlvbihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZXZlbnROYW1lLmNf
c3RyKCkpKTsKICAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5n
KGZyYW1lLT5nbG9iYWxDb250ZXh0KCksIGpzTm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICAgICAg
SlNPYmplY3RDYWxsQXNGdW5jdGlvbihmcmFtZS0+Z2xvYmFsQ29udGV4dCgpLCBpdC0+dmFsdWUs
IDAsIDEsICZhcmd1bWVudCwgMCk7CisgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oZnJh
bWUtPmdsb2JhbENvbnRleHQoKSwgaXQtPnNlY29uZCwgTlVMTCwgMSwgJmFyZ3VtZW50LCBOVUxM
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VM
b2FkRGVsZWdhdGUuY3BwCmluZGV4IDY4NTk3ODBmMzkyZjE4ZTMwNjYxYjA0OTI3YjRjY2NiZjNj
NDcxYTIuLjkwYjlhZTBmY2MzZjYxN2Y0ZmY2NzU1NjJkYTI5NmVlNWUyYmJjMzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcApAQCAt
NjYsNyArNjYsNyBAQCB3c3RyaW5nIFJlc291cmNlTG9hZERlbGVnYXRlOjpkZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdCh1bnNpZ25lZCBsb25nIGlkZQogICAgIGlmIChpdCA9PSBtX3Vy
bE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIEwiPHVua25vd24+IjsKIAotICAgIHJldHVybiB1
cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoaXQtPnZhbHVlKTsKKyAgICByZXR1cm4gdXJsU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KGl0LT5zZWNvbmQpOwogfQogCiB3c3RyaW5nIFJlc291cmNlTG9hZERl
bGVnYXRlOjpkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChJV2ViVVJMUmVxdWVzdCog
cmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVy
V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRl
eCA5Njg2MDI2MmVlYWQwOGZmYzg5ZjkwOWM5Mzk3NDg1OTQ5MzQzYTc5Li5hMmMxNWUzMGRjMWUw
NjBiZjU4NTM1YWRiNzRiODRiOTA3ODhlNGMxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xMjQ2LDggKzEyNDYsOCBAQCB1bnNpZ25lZCB3b3JsZElE
Rm9yV29ybGQoSVdlYlNjcmlwdFdvcmxkKiB3b3JsZCkKIHsKICAgICBXb3JsZE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gd29ybGRNYXAoKS5lbmQoKTsKICAgICBmb3IgKFdvcmxkTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IHdvcmxkTWFwKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIGlmIChpdC0+dmFsdWUgPT0gd29ybGQpCi0gICAgICAgICAgICByZXR1cm4gaXQtPmtl
eTsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQgPT0gd29ybGQpCisgICAgICAgICAgICByZXR1cm4g
aXQtPmZpcnN0OwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTI3MSw3ICsxMjcxLDcgQEAg
dm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3
b3JsZElELCBKU09iamVjdFJlZiBnbG8KICAgICAgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJ
bnN0YW5jZShfX3V1aWRvZihXZWJTY3JpcHRXb3JsZCksIDAsIF9fdXVpZG9mKHdvcmxkKSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3b3JsZCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9IGVsc2UgewotICAgICAgICBDT01QdHI8SVdlYlNjcmlwdFdvcmxkPiYgd29ybGRTbG90ID0g
d29ybGRNYXAoKS5hZGQod29ybGRJRCwgMCkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBDT01Q
dHI8SVdlYlNjcmlwdFdvcmxkPiYgd29ybGRTbG90ID0gd29ybGRNYXAoKS5hZGQod29ybGRJRCwg
MCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgaWYgKCF3b3JsZFNsb3QgJiYgRkFJTEVEKFdl
YktpdENyZWF0ZUluc3RhbmNlKF9fdXVpZG9mKFdlYlNjcmlwdFdvcmxkKSwgMCwgX191dWlkb2Yo
d29ybGRTbG90KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZ3b3JsZFNsb3QpKSkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIHdvcmxkID0gd29ybGRTbG90OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
X0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcAppbmRleCA1YjEyOTZmNDdkMTlkMjhiOWRlN2ZjZThk
MTMxYWE0MDU0NzZiZGQxLi45OGJmYWIzNWFmNDZjZjQ5YzYyYmNjOWIwYTg1OTQ1N2Y0OGNjMWMx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93
RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcApAQCAtMTcxLDggKzE3
MSw4IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uQmFzaWM6OndpbGxEZXN0cm95UGFnZShXS0J1
bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmKQogICAgIEhhc2hNYXA8V0tCdW5kbGVET01XaW5kb3dF
eHRlbnNpb25SZWYsIGludD46Oml0ZXJhdG9yIGl0ID0gbV9leHRlbnNpb25Ub1JlY29yZE1hcC5i
ZWdpbigpOwogICAgIEhhc2hNYXA8V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGludD46
Oml0ZXJhdG9yIGVuZCA9IG1fZXh0ZW5zaW9uVG9SZWNvcmRNYXAuZW5kKCk7CiAgICAgZm9yICg7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChp
dC0+a2V5LCBSZW1vdmVkKTsKLSAgICAgICAgV0tSZWxlYXNlKGl0LT5rZXkpOworICAgICAgICB1
cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChpdC0+Zmlyc3QsIFJlbW92ZWQpOworICAgICAgICBX
S1JlbGVhc2UoaXQtPmZpcnN0KTsKICAgICB9CiAKICAgICBtX2V4dGVuc2lvblRvUmVjb3JkTWFw
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcAppbmRl
eCA0MTFlMTE1ZWE0NGZiZTQ4NzBlN2YxZjMxZDkwNWU4NTc3ZjA3ZTIyLi44ZjZjZDdiMzczNWI1
YWUyNzlkMGFkYjc3MTg1YzVkMjgwNzExY2FlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlX0J1bmRsZS5jcHAKQEAgLTE3OCw4ICsxNzgsOCBAQCB2b2lkIERPTVdpbmRvd0V4dGVu
c2lvbk5vQ2FjaGU6OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVm
KQogICAgIEhhc2hNYXA8V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGludD46Oml0ZXJh
dG9yIGl0ID0gbV9leHRlbnNpb25Ub1JlY29yZE1hcC5iZWdpbigpOwogICAgIEhhc2hNYXA8V0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGludD46Oml0ZXJhdG9yIGVuZCA9IG1fZXh0ZW5z
aW9uVG9SZWNvcmRNYXAuZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29yZChpdC0+a2V5LCBSZW1vdmVkKTsKLSAgICAg
ICAgV0tSZWxlYXNlKGl0LT5rZXkpOworICAgICAgICB1cGRhdGVFeHRlbnNpb25TdGF0ZVJlY29y
ZChpdC0+Zmlyc3QsIFJlbW92ZWQpOworICAgICAgICBXS1JlbGVhc2UoaXQtPmZpcnN0KTsKICAg
ICB9CiAKICAgICBtX2V4dGVuc2lvblRvUmVjb3JkTWFwLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBm
ODQyOTc4NDFmZjc0MjE0ZGJhYWEyZDJmMTlkY2Q3MmU0YTcwNTk0Li5iOTRlNWQ0NzYzYTExOGM0
ZWQ2ZDg1MmQ0MTc4NDJhMDVlMTRiNDRkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTQ1NSw4ICs0NTUsOCBAQCB1
bnNpZ25lZCBUZXN0UnVubmVyOjp3b3JsZElERm9yV29ybGQoV0tCdW5kbGVTY3JpcHRXb3JsZFJl
ZiB3b3JsZCkKIHsKICAgICBXb3JsZE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gd29ybGRNYXAo
KS5lbmQoKTsKICAgICBmb3IgKFdvcmxkTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHdvcmxkTWFw
KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUgPT0g
d29ybGQpCi0gICAgICAgICAgICByZXR1cm4gaXQtPmtleTsKKyAgICAgICAgaWYgKGl0LT5zZWNv
bmQgPT0gd29ybGQpCisgICAgICAgICAgICByZXR1cm4gaXQtPmZpcnN0OwogICAgIH0KIAogICAg
IHJldHVybiAwOwpAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGQoSlNDb250ZXh0UmVmIGNvbnRleHQsIHVuc2lnbmVkIHdvCiAg
ICAgaWYgKCF3b3JsZElEKQogICAgICAgICB3b3JsZC5hZG9wdChXS0J1bmRsZVNjcmlwdFdvcmxk
Q3JlYXRlV29ybGQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxl
U2NyaXB0V29ybGRSZWY+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRS
ZWY+JiB3b3JsZFNsb3QgPSB3b3JsZE1hcCgpLmFkZCh3b3JsZElELCAwKS5pdGVyYXRvci0+c2Vj
b25kOwogICAgICAgICBpZiAoIXdvcmxkU2xvdCkKICAgICAgICAgICAgIHdvcmxkU2xvdC5hZG9w
dChXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKSk7CiAgICAgICAgIHdvcmxkID0gd29y
bGRTbG90Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>