<?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>122439</bug_id>
          
          <creation_ts>2013-10-06 21:59:18 -0700</creation_ts>
          <short_desc>Add OVERRIDE and virtual where appropriate</short_desc>
          <delta_ts>2013-10-07 09:25:23 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936964</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-06 21:59:18 -0700</bug_when>
    <thetext>Add OVERRIDE and virtual where appropriate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936966</commentid>
    <comment_count>1</comment_count>
      <attachid>213564</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-06 22:24:20 -0700</bug_when>
    <thetext>Created attachment 213564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936969</commentid>
    <comment_count>2</comment_count>
      <attachid>213564</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-06 22:41:22 -0700</bug_when>
    <thetext>Comment on attachment 213564
Patch

Attachment 213564 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3565002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936970</commentid>
    <comment_count>3</comment_count>
      <attachid>213564</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-06 22:45:31 -0700</bug_when>
    <thetext>Comment on attachment 213564
Patch

Attachment 213564 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3381007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936974</commentid>
    <comment_count>4</comment_count>
      <attachid>213564</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-06 23:12:37 -0700</bug_when>
    <thetext>Comment on attachment 213564
Patch

Attachment 213564 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3473036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936992</commentid>
    <comment_count>5</comment_count>
      <attachid>213564</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-07 00:31:24 -0700</bug_when>
    <thetext>Comment on attachment 213564
Patch

Attachment 213564 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/3356126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937050</commentid>
    <comment_count>6</comment_count>
      <attachid>213585</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-07 08:15:59 -0700</bug_when>
    <thetext>Created attachment 213585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937092</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-07 09:25:23 -0700</bug_when>
    <thetext>Committed r157044: &lt;http://trac.webkit.org/changeset/157044&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213564</attachid>
            <date>2013-10-06 22:24:20 -0700</date>
            <delta_ts>2013-10-07 08:15:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122439-20131006222419.patch</filename>
            <type>text/plain</type>
            <size>465236</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MGE1OWI4YTdkMDk1MmE0YzQ1ODQ1YWRjMDMxYjdkZDE1NGQ3Njk1Li5mMzliYTJlZGY3YjI5ZDg0
ODE2ZWRmOWM0MmUyNWU3M2EzMjMyNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxMy0xMC0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBPVkVSUklERSBhbmQgdmlydHVhbCB3aGVyZSBhcHByb3ByaWF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkv
SlNBUElXcmFwcGVyT2JqZWN0Lm1tOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjp+SlNDYWxsYmFja09iamVjdERh
dGEpOgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5tbToKKyAgICAgICAgKiBBUEkvSlNT
Y3JpcHRSZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNTY3JpcHQ6On5PcGFxdWVKU1NjcmlwdCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRv
clNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5o
OgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmg6CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFs
aXplci5oOgorICAgICAgICAqIGRmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oOgorICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorICAgICAgICAqIGhlYXAvU3VwZXJS
ZWdpb24uaDoKKyAgICAgICAgKiBqaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oOgorICAgICAg
ICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwOgorICAgICAgICAqIGpp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAg
ICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgICogaml0L0pJVFRvREZHRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgICogaml0L0p1bXBSZXBsYWNlbWVudFdhdGNo
cG9pbnQuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0Rh
dGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAg
ICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9s
bGVyLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5oOgorCiAyMDEzLTEwLTA2ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5pZmllZCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHZpYSB0aGUganNjIHNoZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4MWMzNWZlZjRiYTdkY2NlMTRk
N2Q5MTExYzBkM2NjZjAzZmJhZjguLjQzMmE0NjMxNzQ1NWFjZmVjMTljYzMzYjYxYWRmNWEyYzkz
NjgwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTAtMDYgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgT1ZFUlJJREUgYW5kIHZpcnR1YWwg
d2hlcmUgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL0NvbXBpbGVyLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVh
bS5oOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oOgorCiAyMDEzLTEwLTA2ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSYW5nZSBjb25zdHJ1
Y3RvcnMgc2hvdWxkIHRha2UgYSBEb2N1bWVudCYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiMGNlNmEyMTA4
OTI5YjJlZjRkYTY0ZDdkMTNiY2YzYTUxZDViZC4uMjhkZmY0ZjM4Y2FlYjExYWRmYWNhM2RiMWE1
NzdiZDBkZDU4YjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOSBAQAorMjAxMy0xMC0wNiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBPVkVS
UklERSBhbmQgdmlydHVhbCB3aGVyZSBhcHByb3ByaWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Qcm9jZXNzaW5nRXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZERT
UEtlcm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vRGVsYXlEU1BLZXJuZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Lmg6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TW9ja09iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVz
c0luZGljYXRvci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3Qu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlUm93Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmg6CisgICAg
ICAgICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2Uu
aDoKKyAgICAgICAgKiBicmlkZ2UvYy9jX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9yb290Lmg6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6CisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNoZWV0Lmg6CisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQmVmb3JlVGV4
dEluc2VydGVkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6CisgICAgICAg
ICogZG9tL0NoaWxkTm9kZUxpc3QuaDoKKyAgICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01h
cC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2
ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5oOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0Vycm9yRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9t
L1BhZ2VUcmFuc2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVudC5oOgor
ICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAqIGRv
bS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogZG9tL1RhZ05vZGVMaXN0Lmg6CisgICAgICAg
ICogZG9tL1RleHQuaDoKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9t
L1RyYW5zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50Lmg6CisgICAgICAgICog
ZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL1dlYktpdFRyYW5zaXRp
b25FdmVudC5oOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmg6
CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVU
aHJlYWRUYXNrLmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaDoKKyAgICAg
ICAgKiBodG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxB
bmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTExhYmVsRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50VHlwZXMuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAg
ICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudENsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1BPREludGVydmFsVHJlZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFy
VGltaW5nRnVuY3Rpb246On5MaW5lYXJUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjp+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjp+U3RlcHNUaW1pbmdGdW5j
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNZXRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkU3Ry
aW5nLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAg
ICAqIHN2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRl
YXJPZmYuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2Zm
Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorCiAyMDEzLTEwLTA2ICBBbmRyZWFz
IEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSYW5nZSBjb25zdHJ1Y3RvcnMg
c2hvdWxkIHRha2UgYSBEb2N1bWVudCYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0Lm1tCmluZGV4IGMwNmRlMzk3OGYxZWQ0MzM4Mzg1ODNhZDRhYzkw
ZDg5YWY5MGZmMjAuLjA5ZGFkZThiMjRlMWE0OTA1NmFkNDI5NTVkZTMyOGEzYWVlYmFhOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tCkBA
IC0zOCw4ICszOCw4IEBACiAKIGNsYXNzIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyIDog
cHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCopOwotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIE9WRVJSSURFOwogfTsK
IAogc3RhdGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmpl
Y3RIYW5kbGVPd25lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdC5oCmluZGV4IDlkMzY2ODU1NjBhMmE0YTQ3NTk0Yjc3MzlhYWYzMzVhZmZmMzUyMjAuLjUx
MDE2NGQ5ZGYxOWE2MTQxNTdjYzdiZjcxYWY0YTc5NTU2YTA4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVj
dCBKU0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIEpTQ2xh
c3NSZXRhaW4oanNDbGFzcyk7CiAgICAgfQogICAgIAotICAgIH5KU0NhbGxiYWNrT2JqZWN0RGF0
YSgpCisgICAgdmlydHVhbCB+SlNDYWxsYmFja09iamVjdERhdGEoKQogICAgIHsKICAgICAgICAg
SlNDbGFzc1JlbGVhc2UoanNDbGFzcyk7CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0cnVj
dCBKU0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIFByaXZh
dGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwogICAgIH07CiAgICAgT3duUHRyPEpTUHJpdmF0
ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOwotICAgIHZpcnR1YWwgdm9pZCBmaW5h
bGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUo
SGFuZGxlPFVua25vd24+LCB2b2lkKikgT1ZFUlJJREU7CiB9OwogCiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCA3NTgwODJmOWY5OTIwYTEz
YWZjMzJmNzI1MjM3YjFlMGY5NDQxZmJiLi45OGVhZmNhMGU3MWZkNzVmODMyMzgwMTFkMDFmZWQ4
ZjFiMDlmYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdl
ZFZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUu
bW0KQEAgLTQwLDggKzQwLDggQEAKIAogY2xhc3MgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciA6
IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9y
JikgT1ZFUlJJREU7CiB9OwogCiBzdGF0aWMgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciogbWFu
YWdlZFZhbHVlSGFuZGxlT3duZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0
UmVmLmNwcAppbmRleCA4YTVmM2NhZjMzYTE0ZDUwMDM4MTRmYTM2MmY5ZTljMTk0MDE2MGI4Li45
YmE4MmE2Zjc1ZTQwMGViZTI4YmZhZDg2MDYzNzNjOWI1YzUxMmVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBXVEY6OmFkb3B0UmVmKG5ldyBPcGFxdWVKU1NjcmlwdCh2bSwgdXJsLCBz
dGFydGluZ0xpbmVOdW1iZXIsIHNvdXJjZSkpOwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYg
c291cmNlKCkgY29uc3QgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc291cmNl
KCkgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZTsKICAgICB9
CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIH5PcGFxdWVK
U1NjcmlwdCgpIHsgfQorICAgIHZpcnR1YWwgfk9wYXF1ZUpTU2NyaXB0KCkgeyB9CiAKICAgICBW
TSogbV92bTsKICAgICBTdHJpbmcgbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYmRkYTU4OWEzNThlY2JkOTAyZmFmZjZhMDMxM2M3ZDhk
MmQ0ODg2Ni4uODZhYmM1NGI5ZWM4MzQ4YjY0MDUxNjkwMzZhM2E0MjlhYzg5MDY2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTAxLDggKzkwMSw4
IEBAIHB1YmxpYzoKICAgICBib29sIG1fZGlkRmFpbEZUTENvbXBpbGF0aW9uOwogICAgIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CisgICAgdmly
dHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBPVkVSUklERTsKIAogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpOwpAQCAt
MTEyNyw4ICsxMTI3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEpJVCkKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKLSAgICB2aXJ0dWFsIERGRzo6
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7CisgICAgdmlydHVhbCBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBERkc6OkNhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIE9WRVJSSURFOwogI2VuZGlmCiB9
OwogCkBAIC0xMTQ5LDggKzExNDksOCBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKLSAgICB2
aXJ0dWFsIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7Cisg
ICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIE9WRVJSSURF
OwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgpAQCAtMTE3MSw4ICsxMTcxLDggQEAgcHVibGljOgog
ICAgIAogI2lmIEVOQUJMRShKSVQpCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBDb2RlQmxvY2sq
IHJlcGxhY2VtZW50KCk7Ci0gICAgdmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWxJbnRlcm5hbCgpOworICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxl
dmVsSW50ZXJuYWwoKSBPVkVSUklERTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmgKaW5kZXggOTBmNjZjZGRjMWMxYzcyNGI5OWE5ZDg4MGU2NzA4NGI5NGJlOWY2
NS4uMmZhNTYwZTgxMTYwMDBlYzkyNTg1ODEzNWM5OTFlN2RlMTM2ZmQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
T3duUHRyPFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+JiBoZWFkKTsKIAogcHJvdGVj
dGVkOgotICAgIHZvaWQgZmlyZUludGVybmFsKCk7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJbnRl
cm5hbCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVT
dHViSW5mbyYgbV9ob2xkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDc2NDdlZDQ0NWNkOGE2MDhl
NzkyYmFiOTVkNmU2Mzc1YjgxMTZlMjAuLjUxYzBjNmEwZWM4NGYzZTc5MmVmODYzZWM0Njk2MDAx
NGM5ZWIyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlp
ZnlTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0
aXZlSklUKiBqaXQpCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRp
dmVKSVQqIGppdCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGxpbmtGcm9tKGppdCk7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDg2NjE2MWFkZjFl
MDFmN2M5MTAwMDY4NDllYTRiMTNjZjVhOTA0ZGMuLjcyNTI4ZjE0ZGJmNWViOTcyZjlmODEzMGNl
NGNlOTc2MDAwYzUwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZ2Vu
ZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQorICAgIHZpcnR1YWwgdm9pZCBnZW5l
cmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJSSURFCiAgICAgewogICAgICAg
ICBsaW5rRnJvbShqaXQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFu
cy5zaXplKCk7ICsraSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVj
dGVkOgotICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQorICAg
IHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJS
SURFCiAgICAgewogICAgICAgICBsaW5rRnJvbShqaXQpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9wbGFucy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmFpbGVkRmluYWxpemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5oCmluZGV4IGFkMzk4MmVjNmE3Njk1MmIxNGI1MjVm
YWU4ZmU5ZjRkMGY4OGE5YjQuLjVhMDk4NjJjODExMWJhODczMTMxM2VhNzM0ODNiNWIzOGY0OGEy
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmFpbGVkRmluYWxp
emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGYWlsZWRGaW5hbGl6ZXIu
aApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgRmFpbGVkRmluYWxpemVyKFBsYW4mKTsK
ICAgICB2aXJ0dWFsIH5GYWlsZWRGaW5hbGl6ZXIoKTsKICAgICAKLSAgICBib29sIGZpbmFsaXpl
KCk7Ci0gICAgYm9vbCBmaW5hbGl6ZUZ1bmN0aW9uKCk7CisgICAgdmlydHVhbCBib29sIGZpbmFs
aXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpbmFsaXplRnVuY3Rpb24oKSBPVkVS
UklERTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggODY0Y2NhODJiMWNiNWVlOTAyZjc5YzZmOGE3ZGM4NWU2
ODBjNGYxYS4uNTJkZGRjNWQyMTdkMTM3NmYzMDFkYzNiYjUxZDczM2YyMmVjMGQ1YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTQ4LDEwICs0OCwxMCBAQCBjbGFz
cyBKSVRDb21waWxlcjsKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7CiBw
dWJsaWM6CiAgICAgSklUQ29kZSgpOwotICAgIH5KSVRDb2RlKCk7CisgICAgdmlydHVhbCB+SklU
Q29kZSgpOwogICAgIAotICAgIENvbW1vbkRhdGEqIGRmZ0NvbW1vbigpOwotICAgIEpJVENvZGUq
IGRmZygpOworICAgIHZpcnR1YWwgQ29tbW9uRGF0YSogZGZnQ29tbW9uKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBKSVRDb2RlKiBkZmcoKSBPVkVSUklERTsKICAgICAKICAgICBPU1JFbnRyeURh
dGEqIGFwcGVuZE9TUkVudHJ5RGF0YSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBt
YWNoaW5lQ29kZU9mZnNldCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVEZpbmFsaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRGaW5hbGl6ZXIuaAppbmRleCAyZGJhOGQzMDViZjFiY2UyY2JmMGU0ODUwMDJkZDIwZWY2ZmQ0
YWQ2Li41Yzg1YTljZDk5M2FiM2Y5YWY2Mjg1MGM4ZTFkZWExYjU5Zjc3MGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKQEAgLTQyLDggKzQyLDggQEAg
cHVibGljOgogICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiwgUGFz
c093blB0cjxMaW5rQnVmZmVyPiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGFyaXR5Q2hlY2sgPSBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwoKSk7CiAgICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7CiAg
ICAgCi0gICAgYm9vbCBmaW5hbGl6ZSgpOwotICAgIGJvb2wgZmluYWxpemVGdW5jdGlvbigpOwor
ICAgIHZpcnR1YWwgYm9vbCBmaW5hbGl6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBm
aW5hbGl6ZUZ1bmN0aW9uKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6
ZUNvbW1vbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5l
U3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDFmOGU4
N2EyMDZhZTI5YWRhOGQ3MzVmYTg0ZWRkMjA3Y2I5MjQ2ODEuLjc4ZGU4NmZiZWMwOWZmMTYxOTA1
OTdmMjM2MWJiZTM3NTliNjk1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByb3RlY3RlZDoKLSAg
ICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KSBPVkVSUklERQogICAg
IHsKICAgICAgICAgbGlua0Zyb20oaml0KTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggYTIxZWIzNmQxMmE3YWFk
NGQ3MDg3ZWI4ZDY1ZmUxZDVlZWRkNmE4Yy4uNjM5ZWYxOTFhOWI0NDA2YjNkNjMyMWY4NWE3Mzk2
OWRlMDVkZDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGpp
dC0+c2lsZW50U3BpbGxBbGxSZWdpc3RlcnNJbXBsKGZhbHNlLCBtX3BsYW5zLCBleHRyYWN0UmVz
dWx0KHJlc3VsdCkpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGwoKSBjb25zdAorICAgIHZpcnR1YWwgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCgp
IGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV9jYWxsOwogICAgIH0KQEAg
LTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQorICAgIHZpcnR1YWwgdm9p
ZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwogICAgICAgICB0aGlzLT5yZWNvcmRDYWxsKGppdC0+
Y2FsbE9wZXJhdGlvbih0aGlzLT5tX2Z1bmN0aW9uLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVz
dWx0KSkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpCisgICAg
dmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIHRoaXMtPnNldFVwKGppdCk7CiAgICAgICAgIHRoaXMtPnJlY29y
ZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uKHRoaXMtPm1fZnVuY3Rpb24sIGV4dHJhY3RSZXN1bHQo
dGhpcy0+bV9yZXN1bHQpLCBtX2FyZ3VtZW50MSkpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNw
ZWN1bGF0aXZlSklUKiBqaXQpCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3Bl
Y3VsYXRpdmVKSVQqIGppdCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHRoaXMtPnNldFVwKGpp
dCk7CiAgICAgICAgIHRoaXMtPnJlY29yZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uKHRoaXMtPm1f
ZnVuY3Rpb24sIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBtX2FyZ3VtZW50MSwgbV9h
cmd1bWVudDIpKTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0
ZWQ6ICAgIAotICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQor
ICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9W
RVJSSURFCiAgICAgewogICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwogICAgICAgICB0aGlzLT5y
ZWNvcmRDYWxsKApAQCAtNDQxLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0
KQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQp
IE9WRVJSSURFCiAgICAgewogICAgICAgICB0aGlzLT5saW5rRnJvbShqaXQpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFzc2lnbm1lbnRzOyBpLS07KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNmJmMTZm
NDNhOWJiZGNlZGYxZjhlMDdhYTkzYTMyYWUyNjdlZDA1Ni4uOGI5NDZkNDA3NTI5ZWRkYWJmZDdj
ODEwOTg1YTU2YWVlMjBjNDFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MTIsNyArNTEyLDcgQEAgcHVibGljOgogICAg
IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChT
cGVjdWxhdGl2ZUpJVCogaml0KQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNw
ZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJSSURFCiAgICAgewogICAgICAgICB0aGlzLT5zZXRVcChq
aXQpOwogICAgICAgICB0aGlzLT5yZWNvcmRDYWxsKGppdC0+Y2FsbE9wZXJhdGlvbih0aGlzLT5t
X2Z1bmN0aW9uLCB0aGlzLT5tX3Jlc3VsdCwgbV9hcmcxLCBtX2FyZzIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAppbmRleCAxOTk1NmJiMmZmZWExNTgyZTExYTM2OGRhNDM2OTQ4MTY5YTI0
MWFkLi42ZWIxMzY0ZDE4NTNmMzYyNDAxYTAwMzMyZDE1ZmI1NjQ0NGQ2M2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMTYsNyArMjE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CiAg
ICAgICAgIAogICAgICAgICBjbGFzcyBGaW5hbGl6ZXJPd25lciA6IHB1YmxpYyBXZWFrSGFuZGxl
T3duZXIgewotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3du
Piwgdm9pZCogY29udGV4dCk7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFu
ZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBPVkVSUklERTsKICAgICAgICAgfTsKIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCmluZGV4
IDYzMzNiMjZiODE2NTk4NWRmZmExZTMzNWYzYzE0NmRmYmExZmFkYzcuLjk5NWM1M2FlNDgzOTM4
YjM5NWNjM2E5MjU1OTA4NGZkNWQyYWM5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEluY3Jl
bWVudGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gY3JlYXRlKEhlYXAqKTsKICAgICB2b2lkIHN0
YXJ0U3dlZXBpbmcoVmVjdG9yPE1hcmtlZEJsb2NrKj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9X
b3JrKCk7CisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIE9WRVJSSURFOwogICAgIHZvaWQgc3dl
ZXBOZXh0QmxvY2soKTsKICAgICB2b2lkIHdpbGxGaW5pc2hTd2VlcGluZygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaAppbmRleCBiNjU5NTEwZjg4NzA1ZjFmMjYz
NjFkYzBhNTYzMDFkZmQ1OGQzNzc2Li43OTE4YjNiYzc4MGRjMGQ1MDY1ZTFjMWNjZjk1ODJmYmQ4
MjUzZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgKQEAgLTQw
LDkgKzQwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN1cGVyUmVnaW9uKCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQqIGFsbG9jYXRlTmV3U3BhY2Uoc2l6ZV90Jik7Ci0gICAg
dmlydHVhbCB2b2lkIG5vdGlmeU5lZWRQYWdlKHZvaWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5UGFnZUlzRnJlZSh2b2lkKik7CisgICAgdmlydHVhbCB2b2lkKiBhbGxvY2F0ZU5ld1NwYWNl
KHNpemVfdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOZWVkUGFnZSh2b2lk
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VJc0ZyZWUodm9pZCopIE9W
RVJSSURFOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzX2ZpeGVkSGVh
cE1lbW9yeVBvb2xTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1
cmVDYWxsU3R1YlJvdXRpbmUuaAppbmRleCBkOTUxMDc1ZTIzNzAxOTRiZjQxMmI2YjA4NmQwYWUw
NDc0N2FlZjEyLi5iYmNmMDYyMjQxMTlmYzE2OGFiZDc1NTdjMzdlZmY4MDI4ODIzZWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
aApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZU9yaWdpbjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3Im
KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAppbmRleCA3ODIzY2QyZDIyZjVlMGZiNDc5
ZjE5MDkzNWU2YzJjMThhYTMwOWUxLi4xNDRkNDE1YzUyNjA0NmEyYjUwMzYwNTMzZGUzZmMxZDI2
NzcwMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCkBAIC03NiwxMyArNzYsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcigpOwogICAg
IAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCogYWxsb2NhdGVOZXdTcGFjZShzaXplX3Qm
KQorICAgIHZpcnR1YWwgdm9pZCogYWxsb2NhdGVOZXdTcGFjZShzaXplX3QmKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgLy8gV2UncmUgb3BlcmF0aW5nIGluIGEgZml4ZWQgcG9vbCwgc28gbmV3
IGFsbG9jYXRpb24gaXMgYWx3YXlzIHByb2hpYml0ZWQuCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmVlZFBhZ2Uodm9pZCogcGFnZSkKKyAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmVlZFBhZ2Uodm9pZCogcGFnZSkgT1ZFUlJJREUKICAgICB7
CiAjaWYgVVNFKE1BRFZfRlJFRV9GT1JfSklUX01FTU9SWSkKICAgICAgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOwpAQCAtOTEsNyArOTEsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICB9CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VJc0ZyZWUodm9pZCogcGFnZSkKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UGFnZUlzRnJlZSh2b2lkKiBwYWdlKSBPVkVSUklERQogICAgIHsKICNp
ZiBVU0UoTUFEVl9GUkVFX0ZPUl9KSVRfTUVNT1JZKQogICAgICAgICBmb3IgKDs7KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRl
eCBmMGIyODJjZjEzMWNjYmI4NDBhNDNlZmQ4MDE2MTU5NDA3ZDA1ZjY4Li5kMGFiOThiM2FkMmNi
NmI5OTRiM2Y2Yzk1ZGU1NWI4MTE4N2U0N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zdXJlQ2Fs
bDsgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlWmVyb1JlZkNv
dW50KCk7CisgICAgdmlydHVhbCB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBPVkVSUklERTsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RW
aXNpdG9yJik7CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1hcmtp
bmdHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoT25lT2JqZWN0KCk7CiAgICAgCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRv
ciYpOworICAgIHZpcnR1YWwgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZp
c2l0b3ImKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBt
X29iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggMjZlYWVhODk0YWZh
NjY2ZTViNGJmMjJiNDJkZmM4ZTRiZjY3MTdjZS4uMTg5ODYzYzUxZmM3NWJhYTk1NmJhOWRlNjZk
OGZmZTRjODNjMDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTE5NSwx
NiArMTk1LDE2IEBAIGNsYXNzIERpcmVjdEpJVENvZGUgOiBwdWJsaWMgSklUQ29kZSB7CiBwdWJs
aWM6CiAgICAgRGlyZWN0SklUQ29kZShKSVRUeXBlKTsKICAgICBEaXJlY3RKSVRDb2RlKGNvbnN0
IENvZGVSZWYsIEpJVFR5cGUpOwotICAgIH5EaXJlY3RKSVRDb2RlKCk7CisgICAgdmlydHVhbCB+
RGlyZWN0SklUQ29kZSgpOwogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWYoQ29kZVJl
ZiByZWYpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbCgpOwotICAgIHZvaWQqIGV4ZWN1
dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCk7Ci0gICAgdm9pZCogZGF0YUFkZHJl
c3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBw
b2ludGVySW50b0NvZGUpOwotICAgIHNpemVfdCBzaXplKCk7Ci0gICAgYm9vbCBjb250YWlucyh2
b2lkKik7CisgICAgdmlydHVhbCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkKiBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qg
b2Zmc2V0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIG9mZnNldE9mKHZvaWQqIHBv
aW50ZXJJbnRvQ29kZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBzaXplX3Qgc2l6ZSgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyh2b2lkKikgT1ZFUlJJREU7CiAKIHByaXZh
dGU6CiAgICAgQ29kZVJlZiBtX3JlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKaW5kZXggOWY5NTg1MTAwMGJiYzk4ZmNjYTM3OGUwMjMyZDMzODNhNWExYzRjMC4uM2YzMjk3
Y2ZjOWJlODBiY2MyZjE4MTcyYjJmYWJlZGZjY2E3N2NmMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKQEAgLTM3NSw3ICszNzUsOCBAQCBwdWJsaWM6CiAgICAgICAgIDog
bV9mYWN0b3J5KGZhY3RvcnkpCiAgICAgewogICAgIH0KLSAgICBKU1ZhbHVlIG9wZXJhdG9yKCko
RXhlY1N0YXRlKiBleGVjKQorCisgICAgdmlydHVhbCBKU1ZhbHVlIG9wZXJhdG9yKCkoRXhlY1N0
YXRlKiBleGVjKSBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZmFjdG9yeShleGVj
KTsKICAgICB9CkBAIC0zOTIsNyArMzkzLDggQEAgcHVibGljOgogICAgICAgICA6IG1fZmFjdG9y
eShmYWN0b3J5KSwgbV9jYWxsZWUoY2FsbGVlKQogICAgIHsKICAgICB9Ci0gICAgSlNWYWx1ZSBv
cGVyYXRvcigpKEV4ZWNTdGF0ZSogZXhlYykKKworICAgIHZpcnR1YWwgSlNWYWx1ZSBvcGVyYXRv
cigpKEV4ZWNTdGF0ZSogZXhlYykgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Zh
Y3RvcnkoZXhlYywgbV9jYWxsZWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
aAppbmRleCAwMDQxMjQ1Y2QwMGNiNWEyMDBjMDJiNWIxNWJhYzNlZDIzOTk3ODk5Li44MGY3NDEx
NDk0N2IyY2RiODQ5NWEyMTM2MWU0NGQxNzdjOTM4NmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjcmVhdGUoKTsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcGlsYXRpb25EaWRCZWNvbWVSZWFkeUFzeW5jaHJvbm91c2x5
KENvZGVCbG9jayopOwotICAgIHZpcnR1YWwgdm9pZCBjb21waWxhdGlvbkRpZENvbXBsZXRlKENv
ZGVCbG9jayosIENvbXBpbGF0aW9uUmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGlsYXRp
b25EaWRCZWNvbWVSZWFkeUFzeW5jaHJvbm91c2x5KENvZGVCbG9jayopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvbXBpbGF0
aW9uUmVzdWx0KSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaApp
bmRleCA0NTdjYmIyODY2ZGRmYzM2OGMzMTRhYzM4NTJmNWUwM2EwNDE4OTkwLi4yODY3YzEzZDE0
MDQ0ZjQzODU0Y2FiNzA5MTI1Zjk3ZDg5ZjZkZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3JyZWN0TGFiZWxzKExpbmtCdWZmZXImKTsKIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgZmlyZUludGVybmFsKCk7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJ
bnRlcm5hbCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIHVpbnRwdHJfdCBtX3NvdXJjZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA1ZDQ0MTZiY2Y0Yzk3NDljNmY5
OWFlMDQwNzlhMTA4ZGRkYjlmZjhkLi45ZmUyMjYxZmQyNDA3MDUxZjNjYWE3MmQ4MWYwYzczMGU3
YWQzMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xOTcsMTIgKzE5
NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb25zdGFudE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgQ29uc3RhbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQ
dXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCAg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0ID0gMDsKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdl
dCwgRmFsbFRocm91Z2hNb2RlKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRo
cm91Z2hNb2RlKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgTnVsbE5vZGUgOiBwdWJs
aWMgQ29uc3RhbnROb2RlIHsKQEAgLTIxMCw4ICsyMTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTnVsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICB2aXJ0dWFsIEpTVmFsdWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsg
cmV0dXJuIGpzTnVsbCgpOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4ganNOdWxsKCk7IH0K
ICAgICB9OwogCiAgICAgY2xhc3MgQm9vbGVhbk5vZGUgOiBwdWJsaWMgQ29uc3RhbnROb2RlIHsK
QEAgLTIyMCw4ICsyMjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCB2YWx1ZSgp
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBpc0Jvb2xlYW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgSlNW
YWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4ganNCb29sZWFu
KG1fdmFsdWUpOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4ganNCb29sZWFuKG1fdmFs
dWUpOyB9CiAKICAgICAgICAgYm9vbCBtX3ZhbHVlOwogICAgIH07CkBAIC0yMzMsOCArMjMzLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKSB7
IG1fdmFsdWUgPSB2YWx1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29s
IGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0dXJuIGpzTnVtYmVyKG1f
dmFsdWUpOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBqc051bWJlcihtX3ZhbHVlKTsg
fQogCiAgICAgICAgIGRvdWJsZSBtX3ZhbHVlOwogICAgIH07CkBAIC0yNDUsOCArMjQ1LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlzU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwg
SlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9OwpAQCAtNDA4LDcgKzQwOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdFeHBOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdz
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fcGF0dGVybjsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9mbGFnczsKQEAgLTQxOSw3ICs0MTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewpAQCAtNDI5LDExICs0MjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBPVkVSUklERTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVj
b2RlR2VuZXJhdG9yJikgY29uc3QgOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5v
ZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUo
Qnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBib29s
IGlzTG9jYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEpTVGV4dFBv
c2l0aW9uIG1fc3RhcnQ7CkBAIC00NjQsOSArNDY0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgRWxlbWVudE5vZGUqIGVsZW1lbnRzKCkgY29uc3QgeyBBU1NFUlQoaXNTaW1wbGVBcnJh
eSgpKTsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3QgOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1w
bGVBcnJheSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgICAgIEVsZW1lbnROb2RlKiBtX2VsZW1l
bnQ7CiAgICAgICAgIGludCBtX2VsaXNpb247CkBAIC00OTUsNyArNDk1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
UHJvcGVydHlOb2RlKik7CiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCi0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgUHJvcGVydHlOb2RlKiBtX25vZGU7CkBAIC01MDgsNyArNTA4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIFByb3Bl
cnR5TGlzdE5vZGUqIG1fbGlzdDsKICAgICB9OwpAQCAtNTIzLDEwICs1MjMsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMoKSBjb25zdCB7
IHJldHVybiBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICAgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nv
ck5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpA
QCAtNTQxLDEwICs1NDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklE
RTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNz
b3JOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBA
IC01NTksNyArNTU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2V4cHI7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgQXJndW1lbnRzTm9k
ZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKQEAgLTU3Niw3ICs1NzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7
CkBAIC01ODcsNyArNTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV2YWxGdW5jdGlv
bkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAg
QXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAgIH07CkBAIC01OTcsNyArNTk3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNjA4LDcg
KzYwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9k
ZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsK
IAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNO
b2RlKiBtX2FyZ3M7CkBAIC02MTksNyArNjE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X3N1YnNjcmlwdDsKQEAgLTYzMSw3ICs2MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKQEAgLTY1Miw3ICs2NTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC02NjAs
NyArNjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtNjcwLDcgKzY3MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlw
dDsKQEAgLTY4MSw3ICs2ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRlRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtNjkyLDcgKzY5Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBEZWxldGVWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4
cHI7CiAgICAgfTsKQEAgLTcwMiw3ICs3MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Vm9pZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9W
RVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTcx
NCw3ICs3MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKQEAgLTcyNCw3ICs3MjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC03MzQsNyArNzM0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdFJl
c29sdmUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0RG90KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc0OCwxMCArNzQ4LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0QnJhY2tldChCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwog
ICAgIH07CiAKICAgICBjbGFzcyBVbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CkBAIC03NjMsNyArNzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IEV4cHJl
c3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsK
IAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlSUQ7
IH0KIApAQCAtNzc2LDcgKzc3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBVbmFyeVBs
dXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBzdHJpcFVuYXJ5UGx1cygp
IHsgcmV0dXJuIGV4cHIoKTsgfQorICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBzdHJp
cFVuYXJ5UGx1cygpIE9WRVJSSURFIHsgcmV0dXJuIGV4cHIoKTsgfQogICAgIH07CiAKICAgICBj
bGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKQEAgLTc5Myw3ICs3OTMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBj
b25zdCB7IHJldHVybiBtX2V4cHI7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTgwMiw3ICs4MDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIExvZ2ljYWxOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0
Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1
ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJh
dG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hN
b2RlKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgQmluYXJ5T3BOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKQEAgLTgxMSwxNCArODExLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlwZSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRTdHJj
YXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24s
IFJlZ2lzdGVySUQqIGxocyA9IDAsIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4cHJlc3Np
b25JbmZvRm9yTWUgPSAwKTsKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNv
bnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNl
VGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJn
ZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBPVkVSUklERTsKIAogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbGhzKCkgeyByZXR1cm4gbV9leHByMTsgfTsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIHJocygpIHsgcmV0dXJuIG1fZXhwcjI7IH07CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2b2lkIHRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYsIFRyaVN0
YXRlJiBicmFuY2hDb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiYgYnJhbmNoRXhwcmVzc2lvbik7
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3Bjb2RlSUQ7IH0KQEAgLTg1MSwxNCArODUxLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgQWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU3ViTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJ0cmFj
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzU3VidHJh
Y3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNz
IExlZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKQEAgLTkwMiw3ICs5MDIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwog
ICAgIH07CiAgICAgCiAgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxl
QmluYXJ5T3BOb2RlIHsKQEAgLTkxMCw3ICs5MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSW5zdGFuY2VPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgSW5Ob2RlIDogcHVibGljIFRocm93
YWJsZUJpbmFyeU9wTm9kZSB7CkBAIC05MjMsNyArOTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIE9WRVJSSURFOwogICAgIH07CiAKICAgICBjbGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMg
QmluYXJ5T3BOb2RlIHsKQEAgLTkzNiw3ICs5MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgU3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAgICAgfTsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewpAQCAtOTY1LDggKzk2NSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBMb2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwotICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVl
VGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSk7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZUlu
Q29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkgT1ZFUlJJREU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIy
OwpAQCAtOTc5LDcgKzk3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb25kaXRpb25h
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURF
OwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2xvZ2ljYWw7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHIxOwpAQCAtOTkxLDcgKzk5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBPVkVSUklERTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKQEAgLTEwMDQsNyArMTAwNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURF
OwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTAxNSw3ICsxMDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTEwNDQsNyArMTA0NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9iYXNlOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtMTA1Nyw3
ICsxMDU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJ
REU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogICAgIH07CiAgICAg
CiAgICAgdHlwZWRlZiBWZWN0b3I8RXhwcmVzc2lvbk5vZGUqLCA4PiBFeHByZXNzaW9uVmVjdG9y
OwpAQCAtMTA4NSw4ICsxMDg1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYXBw
ZW5kKEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IEFTU0VSVChleHByKTsgbV9leHByZXNzaW9ucy5h
cHBlbmQoZXhwcik7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bW1hTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBFeHBy
ZXNzaW9uVmVjdG9yIG1fZXhwcmVzc2lvbnM7CiAgICAgfTsKQEAgLTEwOTksNyArMTA5OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgpIHsgcmV0
dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRDb2RlU2luZ2xlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKQEAgLTExMTYsNyArMTExNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQ29uc3RE
ZWNsTm9kZSogbmV4dCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgQ29uc3REZWNsTm9kZSogbV9uZXh0OwogICAgIH07
CkBAIC0xMTQ0LDkgKzExNDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50
Tm9kZSogbGFzdFN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0Js
b2NrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9j
aygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBTb3VyY2VFbGVt
ZW50cyogbV9zdGF0ZW1lbnRzOwogICAgIH07CkBAIC0xMTU2LDkgKzExNTYsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJS
SURFOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRlbWVudCgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogICAgIAogICAgIGNsYXNzIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTExNjYsNyAr
MTE2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhw
clN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC0xMTc2LDkgKzExNzYs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBjb25z
dCB7IHJldHVybiBtX2V4cHI7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTExODcsNyArMTE4Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByOwogICAgIH07CkBAIC0xMTk3LDcgKzExOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNl
QmxvY2spOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9W
RVJSSURFOwogICAgICAgICBib29sIHRyeUZvbGRCcmVha0FuZENvbnRpbnVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywKICAgICAgICAgICAgIExhYmVsKiYgdHJ1
ZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlJik7CiAKQEAgLTEyMTEsNyArMTIxMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBEb1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBT
dGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBTdGF0ZW1lbnROb2Rl
KiBtX3N0YXRlbWVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTEyMjIs
NyArMTIyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaGlsZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0
ZW1lbnQ7CkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRm9y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2V4cHIyOwpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEZvckluTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlY29uc3RydWN0aW9u
UGF0dGVybk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9Owog
ICAgIAogICAgIGNsYXNzIEZvck9mTm9kZSA6IHB1YmxpYyBFbnVtZXJhdGlvbk5vZGUgewpAQCAt
MTI2OSw3ICsxMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZvck9mTm9kZShWTSos
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqLCBFeHBy
ZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogICAgIH07CiAKICAgICBjbGFz
cyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKQEAgLTEyNzksOCArMTI3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBMYWJlbCogdHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYpOwogICAgICAgICAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRpbnVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBA
IC0xMjkyLDggKzEyOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTGFiZWwqIHRyaXZp
YWxUYXJnZXQoQnl0ZWNvZGVHZW5lcmF0b3ImKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBib29sIGlzQnJlYWsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTMwNSw5ICsxMzA1LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1f
dmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3Zh
bHVlOwogICAgIH07CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0
ZW1lbnROb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCB1aW50MzJfdCBleHByZXNz
aW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBPVkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBT
dGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTEzMzAsNyArMTMzMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBMYWJlbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1fbmFtZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CkBAIC0x
MzQxLDcgKzEzNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFRyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9k
ZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnRO
b2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAg
IFN0YXRlbWVudE5vZGUqIG1fdHJ5QmxvY2s7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1f
ZXhjZXB0aW9uSWRlbnQ7CkBAIC0xNDU4LDcgKzE0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVy
U2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIHVu
c2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgfTsKQEAgLTE0NzUsNyArMTQ3NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEV2YWxOb2RlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVu
Y3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFJlZkNvdW50ZWQ8RnVuY3Rpb25QYXJhbWV0ZXJzPiB7
CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgp
OyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy0+c2l6ZSgpOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJS
SURFOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgUGFy
YW1ldGVyTm9kZSosIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dn
bGUpOwogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFt
ZXRlcnM+LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKTsK
QEAgLTE1NDMsOSArMTU0Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9IAor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogbV9ib2R5OwogICAgIH07
CkBAIC0xNTc4LDEwICsxNTc4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZShWTSopOwotICAgICAgICB2b2lkIGNvbGxlY3RCb3Vu
ZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0OwotICAgICAgICB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdDsKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIHZvaWQgdG9TdHJpbmcoU3Ry
aW5nQnVpbGRlciYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRl
bnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikg
Y29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJp
bmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2Rl
KikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVy
JikgY29uc3QgT1ZFUlJJREU7CiAKICAgICAgICAgVmVjdG9yPFJlZlB0cjxEZWNvbnN0cnVjdGlv
blBhdHRlcm5Ob2RlPj4gbV90YXJnZXRQYXR0ZXJuczsKICAgICB9OwpAQCAtMTU5Niw5ICsxNTk2
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIE9i
amVjdFBhdHRlcm5Ob2RlKFZNKik7Ci0gICAgICAgIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmll
cnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Q7Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0OwotICAgICAgICB2b2lkIHRv
U3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IE9WRVJSSURFOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmco
U3RyaW5nQnVpbGRlciYpIGNvbnN0IE9WRVJSSURFOwogICAgICAgICBzdHJ1Y3QgRW50cnkgewog
ICAgICAgICAgICAgRW50cnkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sIHdh
c1N0cmluZywgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogcGF0dGVybikKICAgICAgICAgICAg
ICAgICA6IHByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpCkBAIC0xNjIxLDExICsxNjIxLDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEJpbmRpbmdOb2RlKFZNKiwg
Y29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmQpOwogCi0gICAgICAgIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50
aWZpZXI+JikgY29uc3Q7Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0OwotICAgICAgICB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1
aWxkZXImKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZp
ZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0
IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYp
IGNvbnN0IE9WRVJSSURFOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBib29sIGlzQmluZGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jp
bmRpbmdOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAKICAg
ICAgICAgSWRlbnRpZmllciBtX2JvdW5kUHJvcGVydHk7CiAgICAgfTsKQEAgLTE2MzgsOSArMTYz
OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0YWJs
ZTo6b3BlcmF0b3IgbmV3OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlz
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0RlY29uc3RydWN0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzRGVjb25zdHJ1Y3Rp
b25Ob2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGU+IG1fYmluZGluZ3M7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2luaXRpYWxpemVyOwpA
QCAtMTY1Myw3ICsxNjUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQm9k
eU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKiBtX2JvZHk7CiAgICAgfTsKQEAgLTE3MDMsNyArMTcwMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgQ2FzZUJsb2NrTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7
CiAgICAgICAgIENhc2VCbG9ja05vZGUqIG1fYmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0YVZpZXcuaAppbmRleCA0OGVhMDA2YjIxMTliNmVlMzcxMDBhYTMyZGUwZDkzZDE5
ZmRkZTZhLi44Y2U2MzMyYWI0YzdjOGM3MjJmZDU4Yzg3ZGQxNjFlZmYwYWZkMjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTM5LDE3ICszOSwxNyBAQCBw
cm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8RGF0YVZpZXc+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdAorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0
IE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV9ieXRlTGVuZ3RoOwogICAgIH0KICAg
ICAKLSAgICB2aXJ0dWFsIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHZpcnR1
YWwgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAg
ICByZXR1cm4gVHlwZURhdGFWaWV3OwogICAgIH0KIAotICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZl
clZpZXcqIHdyYXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2aXJ0dWFsIEpT
QXJyYXlCdWZmZXJWaWV3KiB3cmFwKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgT1ZFUlJJ
REU7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdldCh1bnNpZ25lZCBv
ZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSAwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAppbmRleCA1ZGYw
OWUwYWMwMmViZGIzNzljZGY5OTlkNTU4MzM5YTE1MTdkZDZhLi5iMDQzZmNhMmJjNGNkNzRlNmM4
NDZjN2E2MWI4ZGUxMWY3NzE1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtODAsMTEgKzgwLDExIEBAIHB1YmxpYzoK
IAogICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZEFsbG9jYXRlKHNpemVfdCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0
ZShzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgZG9Xb3JrKCk7CisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIE9WRVJSSURFOwog
CiAjaWYgVVNFKENGKQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA0MTRhYjhkZjMyZmY5ZDk5
NmJmYzA2MzlkYzJhOTRiNjUzMzIwNjJiLi4yYmJlMDEyOTE0M2VlZjU0MTgxYmM3NmM3ZDNjZTA5
NWUyMDA4MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2xlbmd0aDsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRl
TGVuZ3RoKCkgY29uc3QKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBP
VkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIGxlbmd0aCgpICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIH0KQEAgLTEwMSwxMiArMTAxLDEyIEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIFR5cGVkQXJyYXlUeXBl
IGdldFR5cGUoKSBjb25zdAorICAgIHZpcnR1YWwgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNv
bnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9sZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2Fj
aGUuaAppbmRleCA0Zjg1NGQxYmFjNTNhMzY4MTBiZDY4YTQzN2M3YWE3ZWU2NzJkMjkyLi5mZDZi
N2IxNTAyNTMwNTM3YTBhZDkwOTczMmMxZDdhNWM1M2U4NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToK
IAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4U3Ryb25nQ2FjaGVhYmxlRW50cmllcyA9IDMyOwog
Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4
dCk7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29u
dGV4dCkgT1ZFUlJJREU7CiAKICAgICBSZWdFeHAqIGxvb2t1cE9yQ3JlYXRlKGNvbnN0IFdURjo6
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyk7CiAgICAgdm9pZCBhZGRUb1N0cm9u
Z0NhY2hlKFJlZ0V4cCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggMzRhNmE3ZjZhNTUwMWZm
NDRiMDY4YzJiNjIzMGJlNTRjODhhOTcxZi4uNzRjNWU2MDRmZTQ5MzE4YTk4MDg1MjlkMjg1ZDUx
YzdhZThiMjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2lt
cGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlcigpOwogICAgIHZpcnR1YWwgflNpbXBs
ZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7CiAgICAgCi0gICAgdmlydHVhbCBKU0FycmF5QnVmZmVy
KiB0b0pTKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgQXJyYXlCdWZmZXIqKTsKKyAgICB2
aXJ0dWFsIEpTQXJyYXlCdWZmZXIqIHRvSlMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBB
cnJheUJ1ZmZlciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAppbmRleCA3MjllYmIxZjU0YTM2
NDc0NDYyYTA3OGM2MDVmMTJiMDUxNzVjYjRiLi5iMGY1MjdjYTZmZGY1Nzg1MmQ5MjBmYzUzZGQw
NjAyNjc3ZTY1MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBE
YXRhLmgKQEAgLTc2LDggKzc2LDggQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xv
dFZpc2l0b3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
JikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgpIE9WRVJSSURFOwogICAgICAgICBpbnQgbV9saXZlS2V5Q291bnQ7CiAgICAgICAgIFdlYWtN
YXBEYXRhKiBtX3RhcmdldDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29t
cGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKaW5kZXggNGQ4YWYxZmIwZDQ2ZWVi
ZTgzMDJjNDJlMDIxMWY5MjNiNTU0OGEzMy4uOTcxZGQ0MjMwMTJhOWE1YjY1MjAyYzQwMzVjNGY1
NmMwY2NhNTgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBAIC01OCw3ICs1OCw3IEBACiAvKiBEaXNhYmxlIGZp
bmFsIG9uIHZlcnNpb25zIG9mIEFwcGxlIGNsYW5nIGVhcmxpZXIgdGhhbiA0LjIgdG8gYXZvaWQg
YnVncyBsaWtlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTE5MTY1ICovCiAjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmIChfX2NsYW5nX21ham9yX18gPCA0IHx8IChfX2NsYW5nX21ham9yX18gPT0gNCAm
JiBfX2NsYW5nX21pbm9yX18gPCAyKSkKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1FVSVJLX0ZJTkFM
X0lTX0JVR0dZIDEKLSNlcnJvciAiUGxlYXNlIHVzZSBhIG5ld2VyIHZlcnNpb24gb2YgWGNvZGUs
IHRoaXMgdmVyc2lvbiBoYXMgY29kZSBnZW5lcmF0aW9uIGJ1Z3Mgd2hlbiB1c2luZyAnZmluYWwn
IGluIEMrKyBjb2RlIgorLy8gI2Vycm9yICJQbGVhc2UgdXNlIGEgbmV3ZXIgdmVyc2lvbiBvZiBY
Y29kZSwgdGhpcyB2ZXJzaW9uIGhhcyBjb2RlIGdlbmVyYXRpb24gYnVncyB3aGVuIHVzaW5nICdm
aW5hbCcgaW4gQysrIGNvZGUiCiAjZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVh
bS5oCmluZGV4IDA2OTI1ODgyMjYzNTVkNTI0MzM1OGQ2NGVhNzFmODhhMzI0OTQyZjUuLjA1Yjhl
NzU1N2VmNGMyYzczNDQ1YjUyZDFkZDcyZGQ4Y2U3ZDNlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICBGSUxFKiBmaWxlKCkg
eyByZXR1cm4gbV9maWxlOyB9CiAgICAgCi0gICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZv
cm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7Ci0gICAgdm9pZCBmbHVz
aCgpOworICAgIHZpcnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlz
dCkgT1ZFUlJJREUgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CisgICAgdmlydHVhbCB2b2lk
IGZsdXNoKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgRklMRSogbV9maWxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmgKaW5kZXggYWM0N2QwMTAzYTVlOWJlMjhiYWQ5MDdjZmE1MDI5
M2RjNDNkNzhiYS4uNzI1YTkyMjU0OTNmOWVmZDk1NTYzMmIwNjMwMDU4NTI2NGU0NGM5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBX
VEYgewogY2xhc3MgU3RyaW5nUHJpbnRTdHJlYW0gOiBwdWJsaWMgUHJpbnRTdHJlYW0gewogcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdQcmludFN0cmVhbSgpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB+U3RyaW5nUHJpbnRTdHJlYW0oKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB+U3RyaW5nUHJpbnRTdHJlYW0oKTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJ
TlRGKDIsIDApOworICAgIHZpcnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwg
dmFfbGlzdCkgT1ZFUlJJREUgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CiAgICAgCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdG9DU3RyaW5nKCk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyB0b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggNDE4ODQ5NTI0OTQ4NWFiYzU0MjUwZGYw
NmY5MmZmZDk0ZmJlNWJkNy4uYmVlNzkxMDQyMTdkZWMxNDc2MDQ3ZDI3YTljYWQ5ZDZkOTc1YTUy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBN
ZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleXM+LCBwdWJsaWMgQ0RNQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleXM+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIH5NZWRpYUtleXMoKTsK
KyAgICB2aXJ0dWFsIH5NZWRpYUtleXMoKTsKIAogICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAppbmRleCA0MDZi
ZTg2MTZlNWI2OTFiOTg4YzRlYmQxNzBjNDc0ZGM0Mjg2MzNiLi5hZmM0ODUwZmI4ZjYzYzE3NGVh
MmRmM2JiOGIxYmE5ZDBlYTRhZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkFuYWx5c2VyTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwogCiAgICAgLy8g
SmF2YXNjcmlwdCBiaW5kaW5ncwogICAgIHVuc2lnbmVkIGZmdFNpemUoKSBjb25zdCB7IHJldHVy
biBtX2FuYWx5c2VyLmZmdFNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmluZGV4IGY4YjE5Zjc5
ZmNlNWExNzNiNWJkMjhmMmJjOGRhZTYzMTg2OTNlNGYuLmQzZWNhYjNhZDdlZTJiYmJlNGQ4N2Rh
ZTAzOWU0ZWE1ZjAxYTliNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM3LDEwICszNywxMCBA
QCBwdWJsaWM6CiAgICAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0KiwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KTsKIAogICAgIC8vIEF1
ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpOwotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEF1ZGlvTm9kZSosIHVuc2lnbmVkIG91dHB1
dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2Rl
SW5wdXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChBdWRpb05vZGUqLCB1bnNp
Z25lZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1dEluZGV4
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrTnVtYmVy
T2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0KikgT1ZFUlJJREU7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVQdWxsU3RhdHVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKaW5kZXggMTk3
MzAyM2E1NTE0MjU0MGYwYmUwYmNmN2Q1MzEyMTlkM2NkYTQxNC4uOWM4MzFlY2U1ZDU3NTdmYjE5
ZTZlNDUxOTExN2M1YTI2YTE3NzMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApAQCAtNDIsMTQgKzQy
LDE0IEBAIHB1YmxpYzoKICAgICBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQq
LCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCBwdWxs
SW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgp
OwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVuaW5p
dGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHVuaW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGluIHRoZSBtYWluIHRo
cmVhZCB3aGVuIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoZSBpbnB1dCBtYXkgaGF2ZSBj
aGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChB
dWRpb05vZGVJbnB1dCopOworICAgIHZpcnR1YWwgdm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNG
b3JJbnB1dChBdWRpb05vZGVJbnB1dCopIE9WRVJSSURFOwogCiAgICAgLy8gUmV0dXJucyB0aGUg
bnVtYmVyIG9mIGNoYW5uZWxzIGZvciBib3RoIHRoZSBpbnB1dCBhbmQgdGhlIG91dHB1dC4KICAg
ICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBkNmI1YjMx
NzBmMjhjMWMzNGMxMjE2NDEzYTQ3NDE3ZWZiNzk3Mzg2Li4xYmVkYjUwZmMzOGI0MDZiMTg0YjRm
NTQwYWE2YTg4MGIxNjFlYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTUwLDggKzUwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCiAgICAgLy8gQXVk
aW9Ob2RlCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkg
T1ZFUlJJREU7CiAKICAgICAvLyBzZXRCdWZmZXIoKSBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhy
ZWFkLiAgVGhpcyBpcyB0aGUgYnVmZmVyIHdlIHVzZSBmb3IgcGxheWJhY2suCiAgICAgLy8gcmV0
dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyUGFubmVyTm9kZSgpOwogCiAgICAgLy8gSWYgd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5n
LCBwcm9wb2dhdGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3RyZWFtIG5vZGVzLgotICAgIHZpcnR1
YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwcm9w
YWdhdGVzU2lsZW5jZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggZTJmNmI2MTJh
NDcwYWJhMjQxZThmMTNjOGIxMGQ4YThkMzFkNjNiMC4uYzhlYzA5OGUyMGUxNjYwOTE4M2JkMmFl
MTZjNjBlNmQyZGJlMzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBIUlRGRGF0YWJh
c2VMb2FkZXIqIGhydGZEYXRhYmFzZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faHJ0ZkRhdGFi
YXNlTG9hZGVyLmdldCgpOyB9CiAKICAgICAvLyBEb2N1bWVudCBub3RpZmljYXRpb24KLSAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNTRVJUcyBpZiBkb2N1bWVudCBu
byBsb25nZXIgZXhpc3RzLgogICAgIGJvb2wgaGFzRG9jdW1lbnQoKTsKQEAgLTM1MCw4ICszNTAs
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRhdGFi
YXNlTG9hZGVyOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IGRlcmVmKCk7IH0KIAogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYjE2ZmE2NDBjZWRjNjU0MGNmOWU3ZDBkNDUxMDU0ZTY4
NTgyN2U5OC4uMjYyYTc1NWY0ZDcyZTg4ZDBhNThhMTE2NzcwMjU3ZWI2ZDZkMTBlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaApAQCAtNDIsMTIgKzQyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BdWRpb0Rl
c3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZSAgIAotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzKHNpemVfdCkgeyB9OyAvLyB3ZSdyZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28g
dGhpcyBpcyBuZXZlciBjYWxsZWQKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSB7IG1fY3VycmVu
dFNhbXBsZUZyYW1lID0gMDsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QpIE9W
RVJSSURFIHsgfTsgLy8gd2UncmUgcHVsbGVkIGJ5IGhhcmR3YXJlIHNvIHRoaXMgaXMgbmV2ZXIg
Y2FsbGVkCisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgT1ZFUlJJREUgeyBtX2N1cnJlbnRTYW1w
bGVGcmFtZSA9IDA7IH0KICAgICAKICAgICAvLyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVu
ZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRlciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGlu
YXRpb25CdXMuCiAgICAgLy8gSXQgd2lsbCBvcHRpb25hbGx5IGdpdmUgdXMgbG9jYWwvbGl2ZSBh
dWRpbyBpbnB1dCBpbiBzb3VyY2VCdXMgKGlmIGl0J3Mgbm90IDApLgotICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXIoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMpOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoQXVkaW9CdXMq
IHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpIE9WRVJSSURFOwogCiAgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFNhbXBsZUZyYW1lOyB9CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gY3VycmVudFNhbXBsZUZyYW1lKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+
KHNhbXBsZVJhdGUoKSk7IH0KQEAgLTc4LDcgKzc4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9
CiAKICAgICAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4KLSAgICAgICAgdmlydHVhbCB2b2lk
IHByb3ZpZGVJbnB1dChBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykKKyAgICAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyogZGVzdGlu
YXRpb25CdXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykgT1ZFUlJJREUKICAgICAgICAgewogICAg
ICAgICAgICAgYm9vbCBpc0dvb2QgPSBkZXN0aW5hdGlvbkJ1cyAmJiBkZXN0aW5hdGlvbkJ1cy0+
bGVuZ3RoKCkgPT0gbnVtYmVyT2ZGcmFtZXMgJiYgbV9zb3VyY2VCdXMtPmxlbmd0aCgpID09IG51
bWJlck9mRnJhbWVzOwogICAgICAgICAgICAgQVNTRVJUKGlzR29vZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgKaW5k
ZXggMmQ2YzFhZjBlNWRmYmMwMWQ4ZWNlZmQxMThiNDM1MmEzYjZlY2M3YS4uMTJkYTk1MWVlNGIz
MzA1MWFlNTQ2OGNlMmYyMmE2MDJhOThjZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgQXVkaW9CdWZmZXIqIGlucHV0QnVmZmVyKCkgeyByZXR1cm4gbV9p
bnB1dEJ1ZmZlci5nZXQoKTsgfQogICAgIEF1ZGlvQnVmZmVyKiBvdXRwdXRCdWZmZXIoKSB7IHJl
dHVybiBtX291dHB1dEJ1ZmZlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZl
bnRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBBdWRpb1Byb2Nl
c3NpbmdFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWREU1BLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlx
dWFkRFNQS2VybmVsLmgKaW5kZXggZWJkNThkZGUyNjYwZjcyMzg3YzBjMjYwZmRjNWFlNTZlZTFj
MGQ0Mi4uOTcxYzc0ZTIyOGZjNDU2M2IxZmRhYWZhMDVhYWVkYTAzYTM2NzE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZERTUEtlcm5lbC5oCkBAIC00
Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgLy8gQXVkaW9EU1BLZXJuZWwK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgeyBt
X2JpcXVhZC5yZXNldCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQq
IHNvdXJjZSwgZmxvYXQqIGRlc3QsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFIHsgbV9iaXF1YWQucmVzZXQoKTsgfQog
CiAgICAgLy8gR2V0IHRoZSBtYWduaXR1ZGUgYW5kIHBoYXNlIHJlc3BvbnNlIG9mIHRoZSBmaWx0
ZXIgYXQgdGhlIGdpdmVuCiAgICAgLy8gc2V0IG9mIGZyZXF1ZW5jaWVzIChpbiBIeikuIFRoZSBw
aGFzZSByZXNwb25zZSBpcyBpbiByYWRpYW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKaW5kZXggMDE3OWUyZTAxZjJhOTA3MGU4ZjAw
ZjcwOTRlN2ZhM2E0MjlhMjkzOC4uOTBkMWM3OTlhZmRjY2Y1MGFiOWViZjVmM2E2OTBhM2E2Njgx
OTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQ
cm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJpcXVh
ZFByb2Nlc3NvcigpOwogICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5l
bD4gY3JlYXRlS2VybmVsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVs
PiBjcmVhdGVLZXJuZWwoKSBPVkVSUklERTsKICAgICAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRp
b0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIE9WRVJSSURFOwogCiAgICAgLy8gR2V0IHRoZSBtYWduaXR1ZGUgYW5kIHBoYXNlIHJlc3Bv
bnNlIG9mIHRoZSBmaWx0ZXIgYXQgdGhlIGdpdmVuCiAgICAgLy8gc2V0IG9mIGZyZXF1ZW5jaWVz
IChpbiBIeikuIFRoZSBwaGFzZSByZXNwb25zZSBpcyBpbiByYWRpYW5zLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCmluZGV4IDE5
MGMwOGYxMGM3ZjNjYmRlMzM5MDEwNDk1MTFjOTdiNWYwMDAwYjcuLjAwOWNhNGM3ZjhmZGIzZGQw
NTk1ZmQ3N2I5MDUyOTQ0MjJmYTNiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTQxLDExICs0MSwxMSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CiAK
ICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzZXQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBpbiB0aGUgYXVkaW8gdGhyZWFk
IChwcmUtcmVuZGVyaW5nIHRhc2spIHdoZW4gdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgYW4g
aW5wdXQgbWF5IGhhdmUgY2hhbmdlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNo
YW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tO
dW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKSBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2Rlc2lyZWROdW1iZXJPZk91dHB1dENoYW5uZWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuaAppbmRleCAxZDcxOTA3ZDYwYWFmMDJhOTI1ZTQ2YWFjOWUxNjk3NmJlNDE1Y2QyLi44OWY3
NzE0YTRmMDI2NWQ5ZmE3Yjg5NTQyNDc5OTNkNzIxMmRiMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaApAQCAtMzcs
OCArMzcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVy
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cyk7CiAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXgg
NmQ1ODkxODY4ODRjOTM1YjJiMjBlNzcwZWI4NDVjMGQ3NTQxNjRjNS4uNzA4NGM5MTIyMGNjMWZm
ZjkzZDk0M2I4ZmIxYTEzMjZkMGZjYTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q29udm9sdmVyTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZQotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1
YWwgdm9pZCByZXNldCgpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gSW1wdWxzZSByZXNw
b25zZXMKICAgICB2b2lkIHNldEJ1ZmZlcihBdWRpb0J1ZmZlciopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oCmluZGV4IDAwOWRlOWQxYjdl
ODA3MWUxNjNmMzYyNTE2NjNiMTZhNmUwNmMzODMuLmNkNDc5MjM2N2RlMjk0ZTNlN2M2NDdhNTFm
YjFhNDQ2NzQwZTU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlEU1BLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5RFNQS2VybmVsLmgKQEAgLTM4LDggKzM4LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IERlbGF5RFNQS2VybmVsKERlbGF5UHJvY2Vzc29yKik7CiAgICAgRGVsYXlEU1BLZXJuZWwoZG91
YmxlIG1heERlbGF5VGltZSwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpIE9WRVJSSURFOwogICAgIAogICAgIGRvdWJsZSBtYXhEZWxheVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX21heERlbGF5VGltZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDhiMjkzNTM1Mjg4MDM1OTA4ZmExNjEw
MjMzMmY1OTY5ZmRlYjcyNjQuLmFlZmU0ZDhiOGRkN2NjMGQzNzhjZmVmZGY1YzU4M2UzYjQ4ZmMy
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlv
Q29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRv
dWJsZSBtYXhEZWxheVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAg
Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIE9W
RVJSSURFOwogICAgICAgICAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2RlbGF5VGltZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmluZGV4IDMzOGRmZjNi
MDUwNzYzM2I5MjJhMDBhOTQxNzI1ZWVjZTg5Zjk1MjkuLjFiOGYyM2ExYWY1MTJlYjViZjc1ZWYz
OGZjZDIwNTZmNDg0ZmMzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCkBAIC00MywxMCArNDMsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoKTsKIAogICAgIC8v
IEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZXNldCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAg
Ly8gU3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCiAgICAgQXVkaW9QYXJhbSog
dGhyZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCA3MWNmZWNmYmEwMGJlM2I3MDNiZDk5
MmQ0NTBmN2UwNWY3MzZhMTI0Li43NGIzZDgxNTcxOGExMTAwN2IzNjgwYWMxZTAwNGRiMzlhOTU2
NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oCkBAIC00
NSwxMSArNDUsMTEgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwg
dm9pZCByZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwogCiAg
ICAgLy8gQ2FsbGVkIGluIHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBudW1iZXIgb2YgY2hhbm5l
bHMgZm9yIHRoZSBpbnB1dCBtYXkgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBjaGVj
a051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopOworICAgIHZpcnR1YWwg
dm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopIE9WRVJS
SURFOwogCiAgICAgLy8gSmF2YVNjcmlwdCBpbnRlcmZhY2UKICAgICBBdWRpb1BhcmFtKiBnYWlu
KCkgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaAppbmRl
eCAyZjU0OTA5NGM0NWFkYjUyYTcwYzBiZjliNjZlMjY3YzQ1ZmUxMWUxLi45NWI2NWI2Njg2MmI4
YjRkYjAyZGI3ZTg4NDE4ZDJmMDE1MzFkOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgK
QEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFs
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKICAgICAKICAg
ICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvcm1h
dChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdmlydHVh
bCB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkgT1ZFUlJJREU7CiAgICAgCiAgICAgdm9pZCBsb2NrKCk7CiAgICAgdm9pZCB1bmxvY2soKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudC5oCmluZGV4IDE3ZDIyNTdlMDA4MzI3OGY4Nzg4MDM0MDFi
ZmZlNjljMTdjOTg1ZDMuLmJmNjFjY2Q1YWI2OWRmMDk1NWRlMjEzZjMxOGQ1M2FlZjZiNjdmZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAK
ICAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIoKSB7IHJldHVybiBtX3JlbmRlcmVkQnVm
ZmVyLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZjE2NmIzYzQyMGVjNjI1ZjQzMmUw
NjI5Yjk5Y2RlY2Q2NzcwNTBlMy4uZjk0Yzk0YjE5ZDAyNDdjOWRkZmM2MzY4NjRjNDgzNzliYzAz
MTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSAgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUYXJnZXQt
PnNhbXBsZVJhdGUoKTsgfQorICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0
ZToKICAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiwgQXVkaW9C
dWZmZXIqIHJlbmRlclRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggZGY1OGY5NTYwN2JkNjQ3N2QzMWEzOGI3OWQ1ODVk
MjQ5MGRhNTdiOC4uMWJiZjQ3YzE5MDk5ZDlkNjZlNjNkODI3NzQ2YjMwNjNhMTFkOWE3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApA
QCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+T3NjaWxsYXRvck5vZGUoKTsK
ICAgICAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKIAogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKaW5kZXggYzM1
MmZkMThlZTEzOWIwZjllNTkzYmFhMzI2NTdkZWUzM2ZjYzhmMi4uMTZlMjVmMTkyZjg4ZGNjZTVk
ZjgyMThhZTRhNjI2OGJlZDljZDk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmgKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UGFubmVyTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHB1bGxJbnB1
dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFs
aXplKCk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
bml0aWFsaXplKCkgT1ZFUlJJREU7CiAKICAgICAvLyBMaXN0ZW5lcgogICAgIEF1ZGlvTGlzdGVu
ZXIqIGxpc3RlbmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IGYzOGRlZDkxMTcwZGNiOTNmYWZkMTQ2NmNl
ZmJjN2Q3ODFiYjQ0NTMuLjg4NTNjZWY1ODYzODg3Nzc1YmVjZDVkNTMyMTRjYjI2ZDkwYjVkMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNj
cmlwdFByb2Nlc3Nvck5vZGUoKTsKIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVu
aW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlclNpemU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaAppbmRleCA2MzVhYzc1ZDk0YjIzZDMx
ZjhhOWQ2OWNhOTc1NDdkYjFhOTMyYzExLi5jY2U2M2E1NzYxOGI1ZWVhNTVjMWI0ZTcyZjFiZDYw
YTVkOTA0MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJQcm9jZXNzb3IuaApAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5XYXZlU2hhcGVyUHJvY2Vzc29yKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxB
dWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24s
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNvbnN0
IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykgT1ZFUlJJREU7CiAKICAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwog
ICAgIEZsb2F0MzJBcnJheSogY3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
aAppbmRleCAyMjkxMGUwYTM2MDFmNWQ0MTBjZmJlNjNhY2JiM2QwNTA2OGU4NmJkLi41NGI1ZTZm
ZTMxZDY0M2QzNGVmYjdmNzUxOWU2MjY0ZDdiNTljNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKQEAgLTQ1LDE1ICs0
NSwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUFSSUFH
cmlkPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFS
SUFHcmlkKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBcmlhVGFibGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9ICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKICAgICAKIHByaXZh
dGU6CiAgICAgLy8gQVJJQSB0cmVlZ3JpZHMgYW5kIGdyaWRzIHN1cHBvcnQgc2VsZWN0ZWQgcm93
cy4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSB7IHJldHVybiB0cnVl
OyB9ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1NlbGVjdGVkUm93cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2b2lkIGFkZFJvd0Rl
c2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiAgICAgYm9vbCBhZGRU
YWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRD
ZWxsLmgKaW5kZXggZDVhZTRhYzU5NjU1YWM0MGVmMWIzMDQzOTZjYTFlMWVhMmE1MTU4YS4uY2Y5
NzhiNGZhZjE5NDNhOWI4OWU1OWM5MDk2MzhhZGFjYzYwYzEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgK
QEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbCgpOwogICAgIAogICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBh
bmQgcm93IHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCByb3dJbmRl
eFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpIE9WRVJSSURFOwogICAg
IC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2VsbAot
ICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiYgY29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpIE9WRVJSSURFOwogICAgIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkgY29uc3Qg
T1ZFUlJJREU7CiB9OyAKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
aAppbmRleCAwNTRmY2Y2ZmY4Yjk1MGYzNzhkYjNhYWQwMWE5MzMzMGU4ZWRmZGZiLi4zNGMyMTc3
YTFjYzY5ZDBhYmY2OTlhYWFiMWQ2NzIwNjJhY2RhNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKQEAgLTQ0
LDExICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGRpc2Nsb3NlZEJ5
Um93KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFk
ZXJPYmplY3QoKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVj
dCgpIE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVHJl
ZUdyaWRSb3coKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dFRhYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJs
ZSgpIGNvbnN0IE9WRVJSSURFOwogfTsgCiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuaAppbmRleCBhZjE3ZWVkNzU2YmRjZjkwMDdlZDc4ZTZiMzAwZTk0NWU5NDVj
YTE1Li4zYjFmN2VhN2IyYThiODY4OTM4OWYxNTMyZGYyNGNhN2U5MDdlYmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbmsuaApAQCAtNDksMjQgKzQ5LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhUTUxNYXBF
bGVtZW50KEhUTUxNYXBFbGVtZW50KiBlbGVtZW50KSB7IG1fbWFwRWxlbWVudCA9IGVsZW1lbnQ7
IH0gICAgCiAgICAgSFRNTE1hcEVsZW1lbnQqIG1hcEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X21hcEVsZW1lbnQuZ2V0KCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25z
dCB7IHJldHVybiBtX2FyZWFFbGVtZW50LmdldCgpOyB9CisgICAgdmlydHVhbCBOb2RlKiBub2Rl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9hcmVhRWxlbWVudC5nZXQoKTsgfQogICAgICAg
ICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgVVJMIHVy
bCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9IAotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFbGVtZW50KiBhbmNo
b3JFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25F
bGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNB
QSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBlbGVtZW50UmVjdCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOiAgICAKICAgICBSZWZQ
dHI8SFRNTEFyZWFFbGVtZW50PiBtX2FyZWFFbGVtZW50OwpAQCAtNzQsMTEgKzc0LDExIEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXRo
IGVsZW1lbnRQYXRoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgUmVuZGVyRWxlbWVudCogaW1hZ2VN
YXBMaW5rUmVuZGVyZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVRl
eHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlTWFwTGluaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlTWFwTGluaygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuaAppbmRleCBjNTkxNmFlNmU3NTE1ZTY1
NTIyMWJiYTBiOTZmNTFjMTM5YTcwZDIwLi41MDlkOTE1M2ZkZTRiZDI2MjdkODM3MDc0Y2QwZDJj
MGY5MTg2ZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdC5oCkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlMaXN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmly
dHVhbCB+QWNjZXNzaWJpbGl0eUxpc3QoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc1Vub3JkZXJlZExpc3QoKSBj
b25zdDsKICAgICBib29sIGlzT3JkZXJlZExpc3QoKSBjb25zdDsKICAgICBib29sIGlzRGVzY3Jp
cHRpb25MaXN0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIExpc3RSb2xlOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBMaXN0Um9sZTsgfQog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCBPVkVSUklERTsKIH07CiAgICAgCiBpbmxpbmUgQWNjZXNzaWJpbGl0eUxpc3QqIHRv
QWNjZXNzaWJpbGl0eUxpc3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCmluZGV4
IGRkYTM3ZThkNTdhMDYwZDBlNzJlMWYxODQxOTU0Zjc3Mjg4MDI3NGEuLmJhYmZlYmIwMmQ5NzVi
N2Y1MmI1YTQ1MzRkM2Y4MmI1MTQwYjNlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKQEAgLTQxLDIwICs0MSwyMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUxpc3RCb3g+IGNyZWF0
ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5TGlzdEJveCgpOwog
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzTGlzdEJveCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0
cmlidXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdm9pZCBzZXRTZWxlY3RlZENoaWxkcmVuKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gTGlzdEJveFJvbGU7IH0KKyAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExp
c3RCb3hSb2xlOyB9CiAgICAgICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZENoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpYmxl
Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgdmlydHVhbCB2b2lk
IHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKIAogcHJpdmF0ZTogICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QoSFRNTEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiB9OwogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCmluZGV4IDExNDQ0NWMzMTViMmMzZDU0ZjE4YjQ3
YmZlNDM2NmM4NDBjNjEzNzAuLjcxMDgyMGNhYmI1NmYwM2RkM2E0MzBmNjdjOTgyNzk4NzMxZDQ1
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKQEAgLTUwLDI5ICs1MCwyOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBzZXRIVE1MRWxlbWVudChIVE1MRWxlbWVudCogZWxlbWVudCkgeyBtX29wdGlv
bkVsZW1lbnQgPSBlbGVtZW50OyB9CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBMaXN0Qm94T3B0aW9uUm9sZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGUqIG5vZGUo
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbkVsZW1lbnQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0ZWQoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBMaXN0Qm94T3B0aW9uUm9sZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1NlbGVjdGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX29wdGlvbkVsZW1lbnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkg
Y29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgCiBwcml2YXRlOgogICAgIEhUTUxFbGVtZW50KiBtX29wdGlvbkVsZW1lbnQ7CiAg
ICAgCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGxpc3RCb3hPcHRpb25Q
YXJlbnROb2RlKCkgY29uc3Q7CiAgICAgaW50IGxpc3RCb3hPcHRpb25JbmRleCgpIGNvbnN0Owog
ICAgIEludFJlY3QgbGlzdEJveE9wdGlvblJlY3QoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IE9WRVJSSURFOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmgKaW5kZXggNzk4YWZlNjY3YzUwMTE4ZGNhOWZlMzhiYjgyNjgxNDNkMTk2NzI4OS4u
ZmNkODY0NGMwNTdjOGY0M2Q4MzcxNTIxNzhlMjkzNDJhOTkxZWRhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJv
bHMuaApAQCAtNDMsMTcgKzQzLDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbCgpIHsgfQogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBTdHJpbmcgdGl0bGUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwg
U3RyaW5nIHRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcg
aGVscFRleHQoKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2woUmVuZGVyT2JqZWN0Kik7CiAgICAgTWVkaWFDb250cm9s
RWxlbWVudFR5cGUgY29udHJvbFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgY29udHJvbFR5cGVO
YW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBPVkVSUklERTsKQEAgLTY2
LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxp
dHlNZWRpYVRpbWVsaW5lKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5l
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGltZWxp
bmUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBoZWxwVGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBjb25zdCBPVkVSUklERTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGUpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtODMsMTYgKzgzLDE2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVy
T2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWlu
ZXIoKSB7IH0KIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gVG9vbGJhclJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFRvb2xiYXJSb2xlOyB9CiAKLSAg
ICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBU
ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIoUmVuZGVyT2JqZWN0Kik7CiAgICAgYm9v
bCBjb250cm9sbGluZ1ZpZGVvRWxlbWVudCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyBlbGVt
ZW50VHlwZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIApAQCAtMTAyLDE1ICsxMDIsMTUg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNy
ZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
RGlzcGxheSgpIHsgfQogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBBcHBsaWNhdGlvblRpbWVyUm9sZTsgfQorICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQXBwbGlj
YXRpb25UaW1lclJvbGU7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7
CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBPVkVSUklERTsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheShS
ZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJl
bCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
LmgKaW5kZXggOTVmNzk3MmIzMDNiMjBlMmFhNTViM2Q1ZTlkMWQ4ODEyYjE5ZDIyNy4uZmUwMjdh
MDg3ZDY1NmI0OWUwZWVlNzljOWU2Zjg3YTEwOTg2ZTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCkBAIC0zOSwyMCAr
MzksMjAgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0IDogcHVibGljIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlNZW51TGlzdD4gY3JlYXRlKFJlbmRlck1lbnVMaXN0KiByZW5kZXJlcik7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcHJlc3Mo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZvaWQgZGlk
VXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0KFJlbmRlck1lbnVMaXN0Kik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFBvcFVwQnV0dG9u
Um9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gUG9wVXBCdXR0b25Sb2xlOyB9CisgICAgdmlydHVhbCBib29sIGNhblNl
dEZvY3VzQXR0cmlidXRlKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGRyZW4oKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZCgpIE9WRVJSSURFOwogfTsKIAogaW5saW5lIEFjY2Vzc2liaWxpdHlNZW51TGlz
dCogdG9BY2Nlc3NpYmlsaXR5TWVudUxpc3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmgKaW5kZXggYzM0MGI3ZTRmZjhkYzE1Mzc5Y2RjMWNjNjNhYWEwZTVm
MzYwZTgwMy4uZjQyMzEzODBkNTUzYTA1NTUyN2NlOTE2OTA4MjM2OTVhMjkwZDcwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbi5oCkBAIC00MiwyMiArNDIsMjIgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc01l
bnVMaXN0T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0T3B0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBNZW51
TGlzdE9wdGlvblJvbGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIE1lbnVMaXN0T3B0aW9uUm9sZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
c2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIG5h
bWVGb3JNU0FBKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpOwot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5n
IHN0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIG5h
bWVGb3JNU0FBKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVk
KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fZWxlbWVudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmgKaW5kZXggNTJiMzBkY2VmMGYzN2YyMzc1NTAwOTU5ZTQ4ZGFm
YTVjZGVkOThiOS4uN2ZlM2VhYTg3ZGNkMThmZTA3MTYzMWE5ZWU5NmQ0OWQ0OTgzNzYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cCk7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNP
ZmZTY3JlZW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpOwogCkBAIC00
OCwxNiArNDgsMTYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1l
bnRSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBNZW51TGlzdFBvcHVwUm9s
ZTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTWVudUxpc3RQb3B1cFJvbGU7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cHJlc3MoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIEFjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbiogbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhU
TUxFbGVtZW50KikgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCmluZGV4IGQzYzE0MmE1MWY2MzAyNWZj
Yzg0NWRkYjE5OTFkNGRhMDQ5YTE5NzIuLjBlNzI4NDJlYTI1YTViZDY0MWU4NjQ3ZmU4OGViODkx
MDJkYjViMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgKQEAgLTM3LDIwICszNywyMCBAQCBwcm90ZWN0ZWQ6CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1vY2tPYmplY3QoKTsKICAgICAKLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyZW50OyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRP
YmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50KSB7IG1fcGFyZW50ID0g
cGFyZW50OyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1fcGFy
ZW50OwogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgcGFyZW50IG9iamVjdCBjbGVh
cnMgaXRzIGNoaWxkcmVuLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyBt
X3BhcmVudCA9IDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIE9WRVJS
SURFIHsgbV9wYXJlbnQgPSAwOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzTW9j
a09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2Nr
T2JqZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgT1ZFUlJJREU7CiB9OyAK
ICAgICAKIGlubGluZSBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCogdG9BY2Nlc3NpYmlsaXR5TW9j
a09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKaW5kZXggMmJl
MjdlNjQ0NjBkNjZkZDk4ZmJiN2YxNmE0NmVmOTg3ZjhjMmI3Zi4uYzBhZTJlMjk3ZmJmNjcyYmE1
YWI0MTEyNTExNGI1NWU4M2NiZjM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaApAQCAtNjIsOTUgKzYyLDk1IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdD4g
Y3JlYXRlKE5vZGUqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGluaXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIE9WRVJS
SURFOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxi
YWNrQ29udGVudCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c0ZpZWxkc2V0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzSG92
ZXJlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1
dEltYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QmFyKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0
ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFj
a0NvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0FuY2hvcigp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBpc0dyb3VwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzSGVhZGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlQnV0dG9uKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmsoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlz
TmF0aXZlQ2hlY2tib3hPclJhZGlvKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZl
SW1hZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c1NlYXJjaEZpZWxkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3Q7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGlzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzc2VkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlz
U2xpZGVyKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzc2VkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZXF1aXJlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVp
cmVkQXR0cmlidXRlKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZvaWQgc2V0Tm9kZShO
b2RlKik7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9
Ci0gICAgdmlydHVhbCBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGhlYWRp
bmdMZXZlbCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQg
bWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9y
UmFuZ2UoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRSYWRpb0J1dHRvbigpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRUYWJJdGVtKCk7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2ti
b3hPclJhZGlvVmFsdWUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgaGllcmFyY2hp
Y2FsTGV2ZWwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFj
Y2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJF
bGVtZW50TW9kZSgpKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3Q7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0OwotCi0gICAg
dmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBOb2Rl
KiBub2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ub2RlOyB9CisgICAgdmlydHVhbCBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGhl
YWRpbmdMZXZlbCgpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVE
ZXNjcmlwdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JS
YW5nZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBj
b25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRSYWRpb0J1dHRvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogc2VsZWN0ZWRUYWJJdGVtKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKworICAg
IHZpcnR1YWwgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJF
bGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ1ZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUo
aW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJp
bmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVh
bCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgRWxlbWVudCog
bW91c2VCdXR0b25MaXN0ZW5lcigpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9y
RWxlbWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1lbnVGb3JNZW51QnV0dG9u
KCkgY29uc3Q7CiAgICAKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlVmFsdWVCeVBlcmNlbnQoZmxv
YXQgcGVyY2VudENoYW5nZSk7CiAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBm
aXJzdENoaWxkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYXN0
Q2hpbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3Vz
U2libGluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNp
YmxpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2Jq
ZWN0SWZFeGlzdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZp
cnN0Q2hpbGQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGxhc3RDaGlsZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygp
IGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNz
aWJpbGl0eVJvbGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IGluY3JlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaW5jcmVtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAK
IHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX2FyaWFSb2xlOwpAQCAtMTYwLDE5
ICsxNjAsMTkgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pbml0aWFsaXplZDsKICNlbmRpZgog
Ci0gICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9ub2RlOyB9
CisgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAh
bV9ub2RlOyB9CiAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vz
c2liaWxpdHlSb2xlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7Ci0gICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIHVuc2lnbmVkIGluZGV4KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgdW5zaWduZWQgaW5kZXgpIE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwotICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBPVkVSUklERTsKICAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChBY2Nlc3NpYmlsaXR5Um9s
ZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCBPVkVS
UklERTsKICAgICB2b2lkIGFsdGVyU2xpZGVyVmFsdWUoYm9vbCBpbmNyZWFzZSk7CiAgICAgdm9p
ZCBjaGFuZ2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKTsKICAgICAvLyBUaGlzIHJldHVybnMg
dHJ1ZSBpZiBpdCdzIGZvY3VzYWJsZSBidXQgaXQncyBub3QgY29udGVudCBlZGl0YWJsZSBhbmQg
aXQncyBub3QgYSBjb250cm9sIG9yIEFSSUEgY29udHJvbC4KQEAgLTE4Miw4ICsxODIsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQq
PiYgZWxlbWVudHMpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25G
b3JFbGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7CiAgICAgdm9pZCBl
bGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hS
ZWN0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBP
VkVSUklERTsKICAgICAKICAgICBFbGVtZW50KiBtZW51RWxlbWVudEZvck1lbnVCdXR0b24oKSBj
b25zdDsKICAgICBFbGVtZW50KiBtZW51SXRlbUVsZW1lbnRGb3JNZW51KCkgY29uc3Q7CkBAIC0x
OTksNyArMTk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhlbHBUZXh0KFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VGV4dD4mKSBjb25zdDsKICAgICBTdHJpbmcgYWx0ZXJuYXRpdmVUZXh0Rm9yV2ViQXJl
YSgpIGNvbnN0OwogICAgIHZvaWQgYXJpYUxhYmVsZWRCeVRleHQoVmVjdG9yPEFjY2Vzc2liaWxp
dHlUZXh0PiYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogaW5saW5lIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0KiB0b0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVByb2dyZXNzSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCmluZGV4IDMxNDRjOGIwZDZiMmM3OTAwZTJl
ZDQyMzI0NTM3YWQyNDI1MmM5YjMuLjdkYTNmMjRiNGMzYzZmZDVjZDg0MzE2OGI5OGE4MzYxNmU2
MjM0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVByb2dyZXNzSW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaApAQCAtNDYsMTMgKzQ2LDEzIEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOyB9CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBQcm9ncmVzc0luZGljYXRvclJvbGU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dy
ZXNzSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBmbG9h
dCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZv
clJhbmdlKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QgT1ZFUlJJ
REU7CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICAgICBleHBsaWNpdCBBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IoUmVuZGVyUHJvZ3Jlc3MqKTsKQEAgLTYzLDcgKzYzLDcg
QEAgcHJpdmF0ZToKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBjb25zdDsK
ICNlbmRpZgogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDBmZTAz
Mjc1MDc4OWE4NTdkYmI2NTEwZjU4ZWY3ZTRlNmQ2YTQwNGEuLmU4NmUwM2NiYzJmMjMyNTRjYjNj
ZWY4ZWNhMDFjZGZjMWExMGViOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC02MywxNjcgKzYzLDE2
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpOworICAgIHZpcnR1YWwgdm9pZCBpbml0KCkgT1ZF
UlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdHRhY2htZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRmls
ZVVwbG9hZEJ1dHRvbigpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGlzU2Vs
ZWN0ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzT2ZmU2Ny
ZWVuKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3Q7ICAgICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzSXRhbGljRm9udCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
U2VsZWN0ZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNVbnZpc2l0ZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
U2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
ICAgICAKICAgICAvLyBQcm92aWRlcyBjb21tb24gbG9naWMgdXNlZCBieSBhbGwgZWxlbWVudHMg
d2hlbiBkZXRlcm1pbmluZyBpc0lnbm9yZWQuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNv
bnN0IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBPVkVSUklERTsKICAgICAK
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0OwotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0Owot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5n
Q29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNTaWJsaW5n
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0
U2libGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0
bGVVSUVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQU93bnMo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhh
c1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICAvLyBT
aG91bGQgYmUgY2FsbGVkIG9uIHRoZSByb290IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGtpY2sg
b2ZmIGEgaGl0IHRlc3QuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Q7CisgICAgdmly
dHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UG9pbnQgY2xp
Y2tQb2ludCgpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKSBPVkVSUklERTsKICAg
ICAKICAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCopOwotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X3JlbmRlcmVyOyB9CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1vZGVsT2Jq
ZWN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBOb2RlKiBub2RlKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICBSZW5kZXJWaWV3KiB0b3BSZW5kZXJlcigpIGNvbnN0OwogICAgIFJl
bmRlclRleHRDb250cm9sKiB0ZXh0Q29udHJvbCgpIGNvbnN0OwotICAgIEZyYW1lVmlldyogdG9w
RG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsgIAorICAgIHZpcnR1YWwgRnJhbWVWaWV3KiB0b3BE
b2N1bWVudEZyYW1lVmlldygpIGNvbnN0IE9WRVJSSURFOwogICAgIERvY3VtZW50KiB0b3BEb2N1
bWVudCgpIGNvbnN0OwogICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRWxlbWVudENvbnRhaW5l
cigpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRV
bmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNv
bnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB0
ZXh0TGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGxhaW5U
ZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBoZWxwVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRl
ckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0
eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3Ry
aW5nIHRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2lk
Z2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0OworICAgIHZpcnR1YWwgV2lkZ2V0
KiB3aWRnZXQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9j
dW1lbnRMaW5rcyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICB2aXJ0dWFsIEZy
YW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZyYW1lVmll
dyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgT1ZFUlJJREU7CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rl
ZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Rm9jdXNlZChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRU
ZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IE9W
RVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dENoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNl
bGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dENoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGFi
Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIGJvb2wgc2hvdWxkTm90aWZ5QWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSBPVkVSUklERTsKICAgICAKLSAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUodW5zaWduZWQpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJ
QUZsb3dUbygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFyaWFI
YXNQb3B1cCgpIGNvbnN0OworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdl
KGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklB
Rmxvd1RvKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgYXJpYUhhc1BvcHVwKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBUklBR3JhYmJl
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0
cmluZz4mKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBR3JhYmJlZCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0cmluZz4mKSBP
VkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHVuc2lnbmVkIGluZGV4VmFsdWUsIGJvb2wg
bGFzdEluZGV4T0spIGNvbnN0OyAgICAKLSAgICB2aXJ0dWFsIGludCBpbmRleChjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHVuc2lnbmVkIGlu
ZGV4VmFsdWUsIGJvb2wgbGFzdEluZGV4T0spIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
aW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25z
dDsKLSAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0
OwotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVu
c2lnbmVkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhS
YW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFs
IFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJh
bmdlJikgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGRv
QVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IE9WRVJSSURFOwog
ICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBT
dHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlv
bkZvck1TQUEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1
ZUZvck1TQUEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZUZvck1TQUEo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdSb2xlRm9yTVNBQSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25Gb3JNU0FBKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JNU0FB
KCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxkVmFs
dWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25z
dCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsK
ICAgICAKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7
IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkRpcnR5OyB9Ci0gICAgU2Nyb2xsYWJsZUFyZWEq
IGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzY3JvbGxU
byhjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdl
dFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
IW1fcmVuZGVyZXI7IH0KIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5l
QWNjZXNzaWJpbGl0eVJvbGUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CkBAIC0yMzQsOCArMjM0LDggQEAgcHJpdmF0ZToKICAgICBQbGFpblRleHRSYW5n
ZSBhcmlhU2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdDsKICAgICBFbGVtZW50KiByb290RWRpdGFi
bGVFbGVtZW50Rm9yUG9zaXRpb24oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICBib29sIG5v
ZGVJc1RleHRDb250cm9sKGNvbnN0IE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9Ci0gICAg
dmlydHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzVG9VcGRhdGVDaGlsZHJlbigpIE9WRVJSSURFIHsgbV9jaGlsZHJlbkRpcnR5ID0gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0aCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAog
ICAgIGJvb2wgaXNUYWJJdGVtU2VsZWN0ZWQoKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGNoZWNr
Ym94T3JSYWRpb1JlY3QoKSBjb25zdDsKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVh
RWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50KikgY29uc3Q7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IE9WRVJSSURFOwogCiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2Jq
ZWN0KikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25z
dDsKQEAgLTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTVkdSb290
KiByZW1vdGVTVkdSb290RWxlbWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgdm9p
ZCBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQoTGF5b3V0UmVjdCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIGFkZEhpZGRlbkNo
aWxkcmVuKCk7CiAgICAgdm9pZCBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwpAQCAtMjcxLDYzICsy
NzEsNjMgQEAgcHJpdmF0ZToKICAgICBib29sIGVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdm9pZCBzZXRFbGVtZW50QXR0cmlidXRlVmFsdWUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wpOwogICAgIAotICAgIHZpcnR1YWwgRVNwZWFrIHNw
ZWFrUHJvcGVydHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEVTcGVhayBzcGVha1Byb3BlcnR5KCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGFy
aWFMaXZlUmVnaW9uU3RhdHVzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGFyaWFMaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXJp
YUxpdmVSZWdpb25BdG9taWMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXJpYUxpdmVSZWdp
b25CdXN5KCkgY29uc3Q7ICAgIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlh
TGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBhcmlhTGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGFyaWFMaXZlUmVnaW9uQXRvbWljKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGFyaWFMaXZlUmVnaW9uQnVzeSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
Ym9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1B
VEhNTCkKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBmb3IgaXNNYXRoRWxl
bWVudCgpLgotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWF0
aEZlbmNlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNj
cmlwdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlz
TWF0aFJvb3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzTWF0aE51bWJlcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRv
cigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNNYXRoVGFibGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
TWF0aEVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJh
Y3Rpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2Ny
aXB0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFJvdygpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGlzTWF0aFRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNYXRoTnVtYmVyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE9w
ZXJhdG9yKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlT3Bl
cmF0b3IoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9y
T3BlcmF0b3IoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoSWRlbnRp
ZmllcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCBPVkVSUklERTsK
ICAgICAKICAgICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aEJhc2VPYmplY3QoKSBPVkVSUklERTsKICAgICAKICAgICAvLyBSb290IGNvbXBv
bmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmpl
Y3QoKTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSb290SW5kZXhPYmpl
Y3QoKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSYWRpY2FuZE9iamVj
dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJ
bmRleE9iamVjdCgpIE9WRVJSSURFOwogICAgIAogICAgIC8vIEZyYWN0aW9uIGNvbXBvbmVudHMu
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCk7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3Qo
KTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3Qo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5vbWlu
YXRvck9iamVjdCgpIE9WRVJSSURFOwogCiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCk7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpOworICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIE9WRVJSSURFOwog
ICAgIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpOwotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCk7CisgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3Qo
KSBPVkVSUklERTsKICAgICAKICAgICAvLyBGZW5jZWQgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFs
IFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5n
IG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IG1hdGhMaW5l
VGhpY2tuZXNzKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJp
bmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VT
dHJpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVz
cygpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCi0g
ICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3Jp
cHRQYWlycyYpOwotICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0
eU1hdGhNdWx0aXNjcmlwdFBhaXJzJik7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRz
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJz
JikgT1ZFUlJJREU7CiAgICAgCiAgICAgYm9vbCBpc0lnbm9yZWRFbGVtZW50V2l0aGluTWF0aFRy
ZWUoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCmluZGV4IDUxOTIyOWRiMzgwZDlkMzBkZDczYTc4NGM2
N2YwODJjOWIxMjU4OWMuLjA1NmM5MGJmZWZkZDVjOGFmZWZkZGY4ZWIyM2NjM2Q1Yzg2OTg0OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
VkdSb290LmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2li
aWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiB9OwogCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHRvQWNjZXNzaWJpbGl0
eVNWR1Jvb3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IDBj
ZTI1OWZhMWNiOWIxMTAzNzhkNTM5YTc2YmRmYmZiMTNiNTkwMDEuLmJlMDdkYjkyZjVhMzVjNzNj
M2E1YTgzNjJiYzEzNjE4ZGFjNDc3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKQEAgLTM3LDE1ICszNywxNSBA
QCBjbGFzcyBTY3JvbGxWaWV3OwogY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcgOiBwdWJs
aWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+IGNyZWF0ZShTY3JvbGxWaWV3Kik7ICAgIAotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xs
QXJlYVJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xlOyB9CiAgICAgU2Nyb2xsVmlldyog
c2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsVmlldzsgfQogCiAgICAgdmlydHVh
bCB+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7
CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJs
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldyhTY3JvbGxWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCmluZGV4IDZjYWVhZWE5
MjIxNjFmMGFmNmFkMjVjMjcwZTFhOTZjZTg0ZWE3YjIuLmY2M2IzZmJiNTZiYWUxNzk5MWZjZGI4
NGYyZDQwYTI5MTNhMWIxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCkBAIC00NCwyMCArNDQsMjAgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKFNjcm9sbGJh
ciopOwogCi0gICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXROdW1lcmljVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBTY3JvbGxCYXJSb2xlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIFNjcm9sbEJhclJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIC8vIEFzc3VtZXMgZmxvYXQgWzAuLjFdCi0g
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IHZhbHVl
Rm9yUmFuZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxvYXQpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAppbmRleCAyYzRkYmJm
MmRiZmJlODhlNGZmMWFjMGJlMDNlNTY5OGQ3MmNiYTNkLi4wOGYyODIyM2ViYTQ3ODliNDE5ZTRk
YTljMTk0ZGFkZmU0MTUyNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaApAQCAtNDcsMjMgKzQ3LDIzIEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBTbGlkZXJSb2xlOyB9ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU2xpZGVyUm9sZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1NsaWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZHJlbigpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRW
YWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBmbG9h
dCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsgICAgCisgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JS
YW5nZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2xp
ZGVyVGh1bWIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgewpAQCAtNzIsMTQgKzcy
LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5U2xpZGVy
VGh1bWI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYigp
IHsgfQogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBTbGlkZXJUaHVtYlJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFNsaWRlclRodW1iUm9sZTsgfQog
Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAg
ICAgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5oCmluZGV4IGQzZDZlNmFkNzQ5MGUxNjVlNDJiNWQ3Mzc1OGUzZDZmZjNiYWI2ZjIuLmEwZjhi
NzQ4MTliMWI2ZGVmOTA5YjFjN2JlMDA4ODY4YTRiMzZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTQ3
LDExICs0NywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uKCk7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIFNwaW5CdXR0b25Sb2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGlu
QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZHJlbigpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gU3BpbkJ1dHRvblJvbGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2
ZVNwaW5CdXR0b24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgU3BpbkJ1dHRvbkVsZW1lbnQq
IG1fc3BpbkJ1dHRvbkVsZW1lbnQ7CiB9OyAKQEAgLTY4LDEwICs2OCwxMCBAQCBwcml2YXRlOgog
ICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydCgpOwogICAgIGJvb2wgbV9pc0luY3JlbWVu
dG9yIDogMTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEJ1dHRvblJv
bGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEJ1dHRvblJv
bGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdCBPVkVSUklERTsKIH07CiAgICAgCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24q
IHRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgK
aW5kZXggZTNjZTNiMGJmMmM2YzliMDc3OGI2OTE2MTZhZjhhYzIwNjI2ZjMyNC4uNzU1YTlhODhk
NWNjMTUzMTc2NzU1ZDQ4NmI1ZTEwN2U4MzM3NWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCkBAIC00NSwxMyArNDUsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUYWJsZT4gY3JlYXRl
KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZSgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGluaXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNs
ZWFyQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpIE9WRVJSSURFOwogICAgIAogICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29sdW1ucygpOwogICAgIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgcm93cygpOwpAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB1
bnNpZ25lZCBjb2x1bW5Db3VudCgpOwogICAgIHVuc2lnbmVkIHJvd0NvdW50KCk7Ci0gICAgdmly
dHVhbCBpbnQgdGFibGVMZXZlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwo
KSBjb25zdCBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAg
Ly8gYWxsIHRoZSBjZWxscyBpbiB0aGUgdGFibGUKICAgICB2b2lkIGNlbGxzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAppbmRleCA3OGYwYjkwNmJjODFiYjYzNDhmYjA4
N2M5MGNiYmQwM2I5NDY0NGNlLi5iZTg2NjdhZjk4MTY1YWVmYzNiODE4OTRkNmUzODg4ZTE0NTc3
NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwog
ICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoKTsKICAgICAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNlbGwo
KSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRp
b24gYW5kIHJvdyBzcGFuIG9mIGNlbGwKICAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKTsKQEAgLTUxLDEzICs1MSwxMyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnRUYWJsZSgpIGNvbnN0OwogICAgIGludCBtX3Jvd0luZGV4OwotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgT1ZFUlJJREU7CiAK
IHByaXZhdGU6CiAgICAgLy8gSWYgYSB0YWJsZSBjZWxsIGlzIG5vdCBleHBvc2VkIGFzIGEgdGFi
bGUgY2VsbCwgYSBUSCBlbGVtZW50IGNhbiBzZXJ2ZSBhcyBpdHMgdGl0bGUgVUkgZWxlbWVudC4K
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVu
dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07IAogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCmluZGV4IDZlNzM3YzEyMWQxMDQ2
OWQxYWQ2Njg5YzYxMzVkMGE5MTQyNWU5NGYuLjRmYjM0NDM5M2NjODc4Mjc3MjcwNTk1ZTdjZWVj
OWFmZTQxNDg5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApAQCAtNDcsMjMgKzQ3LDIzIEBAIHB1YmxpYzoK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKICAgICAgICAg
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBDb2x1bW5Sb2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDb2x1bW5Sb2xlOyB9CisgICAgdmlydHVhbCBib29s
IGlzVGFibGVDb2x1bW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAg
ICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29sdW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9
IGNvbHVtbkluZGV4OyB9CiAgICAgaW50IGNvbHVtbkluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9j
b2x1bW5JbmRleDsgfSAgICAKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFs
IExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
ZWxlbWVudFJlY3QoKSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6ICAgIAogICAgIHVu
c2lnbmVkIG1fY29sdW1uSW5kZXg7CiAgICAgTGF5b3V0UmVjdCBtX2NvbHVtblJlY3Q7CiAgICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5kZXJU
YWJsZVNlY3Rpb24qLCBib29sIHRoVGFnUmVxdWlyZWQpOwotICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCmluZGV4
IDZhOWIyYzk1YjMwNjM0Nzg1MDVjMjUyMGJlOGZjNWRmMTEzNmUzOWYuLjE2MzQ2NDI3OTk3ZmEz
OTdjOWFjN2QxNmRmNTZiZmYwY2JkOTAxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWlu
ZXIuaApAQCAtNDMsMTYgKzQzLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwg
fkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcigpOwogICAgIAotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gVGFibGVIZWFkZXJD
b250YWluZXJSb2xlOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU7IH0KICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGRyZW4oKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVu
dFJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25z
dCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6CiAgICAgTGF5b3V0UmVjdCBtX2hlYWRlclJlY3Q7
CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QgT1ZFUlJJREU7CiB9OyAKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cu
aAppbmRleCBkMjQyZWU0NDljZDZjYWUxYmIyYjcxNDFhNWEwOGRkYWY1MGRiZGUxLi4wZWUwY2U4
ZmFlMjhhNzFlMWI3YWRmMTZmNzA2ODk2NjlhYTQ3Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUYWJsZVJv
dz4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJs
ZVJvdygpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIHJldHJp
ZXZlcyB0aGUgInJvdyIgaGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikK
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwpAQCAtNTUs
MTMgKzU1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIGludCBtX3Jvd0luZGV4OwogICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsgCiAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDA2MzljOTZhNGMxNzNlMjk1ZjVjNTUwYjc0ZmI0NzEx
MTVlNTc0NWEuLmI1ZDliMWExMDMzMDY4NGRmMWU0OTI5YWE0OTY0MWYzOTI5NDhiZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Nyw3ICs0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlz
dGVuZXIoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBvdGhlcik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIG90aGVyKSBPVkVSUklERTsKIAogICAgICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBldmVudCBsaXN0ZW5lciB3YXMgY3JlYXRlZCBmb3IgYW4gZXZlbnQgaGFuZGxlciBh
dHRyaWJ1dGUsIGxpa2UgIm9ubG9hZCIgb3IgIm9uY2xpY2siLgogICAgICAgICBib29sIGlzQXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dHJpYnV0ZTsgfQpAQCAtNjAsMTIgKzYwLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
SlNDOjpKU09iamVjdCogaW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6U2xv
dFZpc2l0b3ImKTsKLSAgICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6U2xvdFZpc2l0
b3ImKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wg
aXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBPVkVS
UklERTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNP
YmplY3Q+IG1fanNGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggYzVkNzAwZGQzMWRiYTlh
ZTZhMGM2MTBiNzc4ZDQyNTk1ZjZiYTk5NS4uOTRkMWM1Y2UyYjMwOTRlZDNjNjVjMTlkZWQzN2Q1
MzczNjdmMGFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKQEAgLTM3LDE1ICszNywxNSBAQCBwdWJsaWM6
CiAgICAgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7CiAgICAgdmlydHVhbCB+V2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7CiAgICAgCi0gICAgdmlydHVhbCBKU0M6OkpTQXJyYXlC
dWZmZXIqIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpB
cnJheUJ1ZmZlciopOworICAgIHZpcnR1YWwgSlNDOjpKU0FycmF5QnVmZmVyKiB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKSBPVkVS
UklERTsKICAgICAKICAgICBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKCkgeyBy
ZXR1cm4gJm1fb3duZXI7IH0KIAogcHJpdmF0ZToKICAgICBjbGFzcyBKU0FycmF5QnVmZmVyT3du
ZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRl
eHQpOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYp
IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgT1ZFUlJJREU7CiAgICAgfTsKIAogICAgIEpTQXJy
YXlCdWZmZXJPd25lciBtX293bmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19jbGFzcy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCmluZGV4IDM0
Y2FkNWZiMjRiY2U4MzEzOTk1ZWUyYjNjNDAyZGUwMzQ3NzdmN2MuLmE2N2RlNmU4YmZkNzUzMTRi
NjU2YTRmOWNjMjlhOWNiZWVjZDkwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfY2xhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgKQEAg
LTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDQ2xhc3MqIGNsYXNzRm9ySXNBKE5Q
Q2xhc3MqKTsKICAgICB2aXJ0dWFsIH5DQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwgTWV0aG9kKiBt
ZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBG
aWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmly
dHVhbCBNZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5z
dGFuY2UqKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBOUENsYXNzKiBtX2lzYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAppbmRleCBlZTdkOGYyMmMwNWE1ODY5ZjMx
MjE4MzAwZGQ5YmZkYjRmZTdiOGVhLi5kZDNjZjIyZjczNjczOTA0OTkxOWU4NzI3MzJjMGIwZDk1
ZDE0MTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCkBAIC01MSwyMiArNTEs
MjIgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihTdHJpbmcp
OwogICAgIHN0YXRpYyB2b2lkIG1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3Rh
dGUqKTsKIAotICAgIH5DSW5zdGFuY2UgKCk7CisgICAgdmlydHVhbCB+Q0luc3RhbmNlKCk7CiAK
LSAgICB2aXJ0dWFsIENsYXNzICpnZXRDbGFzcygpIGNvbnN0OworICAgIHZpcnR1YWwgQ2xhc3Mg
KmdldENsYXNzKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVP
ZihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OworICAgIHZpcnR1YWwgSlNW
YWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29u
c3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3Rh
dGUqLCBSdW50aW1lTWV0aG9kKiBtZXRob2QpOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0lu
dm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVm
YXVsdE1ldGhvZChFeGVjU3RhdGUqKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBKU1ZhbHVlIGlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0ZSopIE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RydWN0KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBKU1ZhbHVlIGludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
Jik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RydWN0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBB
cmdMaXN0JikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JikgT1ZFUlJJREU7CiAKICAg
ICBKU1ZhbHVlIHN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEpTVmFsdWUgbnVt
YmVyVmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgQ0luc3RhbmNlKE5QT2JqZWN0KiwgUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7
CiAKLSAgICB2aXJ0dWFsIFJ1bnRpbWVPYmplY3QqIG5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRl
Kik7CisgICAgdmlydHVhbCBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSopIE9WRVJSSURFOwogICAgIGJvb2wgdG9KU1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKiwgSlNWYWx1ZSYpIGNvbnN0OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgK
aW5kZXggNDdiN2NlZTQ4YzdiYWI3NTUxYWEyOTYzNzNmNTQ4NWVlOTE2MTNlZi4uZTcwZGE0NTlj
OGJkN2NkZWE5NWQ1MTBmNjg2YjUwZGFhZDc3YTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19y
dW50aW1lLmgKQEAgLTM4LDggKzM4LDggQEAgY2xhc3MgQ0ZpZWxkIDogcHVibGljIEZpZWxkIHsK
IHB1YmxpYzoKICAgICBDRmllbGQoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9maWVsZElkZW50aWZp
ZXIoaWRlbnQpIHsgfQogCi0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0
OworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25z
dCBJbnN0YW5jZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRv
SW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCBPVkVS
UklERTsKIAogICAgIE5QSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gX2Zp
ZWxkSWRlbnRpZmllcjsgfQogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDTWV0aG9k
KE5QSWRlbnRpZmllciBpZGVudCkgOiBfbWV0aG9kSWRlbnRpZmllcihpZGVudCkgeyB9CiAKICAg
ICBOUElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIF9tZXRob2RJZGVudGlm
aWVyOyB9Ci0gICAgdmlydHVhbCBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gMDsgfQogCiBwcml2YXRlOgogICAgIE5QSWRlbnRpZmllciBfbWV0aG9kSWRlbnRpZmllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAppbmRleCBjYzY5NjFlZjhhYjgyOGMwZGUz
MjQ2OWUyYzY2NjYyYzIxODczMWZkLi5mNWU1ZDRkYTUwMWQ2MDljOTY1ZjQwYjJkNjY2NTNkOGM2
YjdhZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCkBAIC01NSw3ICs1NSw3
IEBAIGNsYXNzIFJvb3RPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxSb290T2JqZWN0PiwgcHJp
dmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CiAgICAgZnJpZW5kIGNsYXNzIEphdmFKU09iamVj
dDsKIAogcHVibGljOgotICAgIH5Sb290T2JqZWN0KCk7CisgICAgdmlydHVhbCB+Um9vdE9iamVj
dCgpOwogICAgIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IGNyZWF0ZShjb25z
dCB2b2lkKiBuYXRpdmVIYW5kbGUsIEpTR2xvYmFsT2JqZWN0Kik7CiAKQEAgLTgzLDcgKzgzLDcg
QEAgcHJpdmF0ZToKICAgICBSb290T2JqZWN0KGNvbnN0IHZvaWQqIG5hdGl2ZUhhbmRsZSwgSlNH
bG9iYWxPYmplY3QqKTsKIAogICAgIC8vIFdlYWtIYW5kbGVPd25lcgotICAgIHZpcnR1YWwgdm9p
ZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCkgT1ZFUlJJREU7CiAKICAgICBib29sIG1faXNWYWxpZDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggMDA2YTBjNTM4YzhjNWZlNTAyNTE2YWYzMjM3Mzc3
ZTFmYzQ1MzMwNS4uNzM2OWIxYWUwMzIzNTNjMjc5NDg3OTRkODNjYWI1OTQ2OTQ1YmUzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTgyLDkgKzgyLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UmFkaXVzWChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXNY
KSB7IG1fcmFkaXVzWCA9IHJhZGl1c1g7IH0KICAgICB2b2lkIHNldFJhZGl1c1koUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CiAK
LSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVSZWN0
YW5nbGVUeXBlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0OworICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVJlY3Rh
bmdsZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgT1ZF
UlJJREU7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBz
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKQEAgLTEyMCw5ICsxMjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
YWRpdXNYKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1c1gpIHsgbV9yYWRpdXNY
ID0gcmFkaXVzWDsgfQogICAgIHZvaWQgc2V0UmFkaXVzWShQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiByYWRpdXNZKSB7IG1fcmFkaXVzWSA9IHJhZGl1c1k7IH0KIAotICAgIHZpcnR1YWwg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlw
ZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVJbnNldFJlY3Rhbmds
ZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgT1ZFUlJJ
REU7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4mKSBjb25zdDsKQEAgLTE1Miw5ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDZW50
ZXJZKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclkpIHsgbV9jZW50ZXJZID0g
Y2VudGVyWTsgfQogICAgIHZvaWQgc2V0UmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHJhZGl1cykgeyBtX3JhZGl1cyA9IHJhZGl1czsgfQogCi0gICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBDU1NCYXNpY1NoYXBlQ2lyY2xlVHlwZTsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0
IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVDaXJjbGVUeXBlOyB9CisgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMo
Y29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CkBAIC0xODMsOSAr
MTgzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFkaXVzWChQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByYWRpdXNYKSB7IG1fcmFkaXVzWCA9IHJhZGl1c1g7IH0KICAgICB2b2lkIHNl
dFJhZGl1c1koUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1
c1kgPSByYWRpdXNZOyB9CiAKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IENTU0Jhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENT
U0Jhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hh
cGUmKSBjb25zdCBPVkVSUklERTsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMjE4LDkgKzIxOCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRSdWxlIHcpIHsgbV93aW5kUnVsZSA9IHc7IH0KICAg
ICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KIAotICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVBvbHlnb25U
eXBlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0OworICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVBvbHlnb25UeXBl
OyB9CisgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IE9WRVJSSURFOwog
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IGI0OWIxMTk3ZTA3Y2U1OTJlZjMzYzMxNTkzODczYjUzZDAzMzhlMmQuLjM2NmFlNGI2MjgwOTU2
MzhkNmE4MTMyYzUyNDcwMzE3OTkzNjJmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTEwOSwyMSArMTA5LDIxIEBAIHByaXZh
dGU6CiAgICAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJv
b2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gQ1NTT00gZnVu
Y3Rpb25zLiBEb24ndCBtYWtlIHRoZXNlIHB1YmxpYy4KLSAgICB2aXJ0dWFsIENTU1J1bGUqIHBh
cmVudFJ1bGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlQ
cmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Z2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwotICAgIHZp
cnR1YWwgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBn
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCk7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIENTU1J1bGUqIHBh
cmVudFJ1bGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJv
cGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlQcmlvcml0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0
UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlv
cml0eSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92
ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NT
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0
aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMzE5NWFlYmFmZTFhNDll
MmE3MDY1MTZlZjAyY2Q1NjZlN2I3NTY3NS4uMTE5NTI0YmI4ZGU1OTNjYTdmYmJiOTEyYjk1YTRl
MGVjZmQwMzc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC0xMTksOCArMTE5
LDggQEAgcHJpdmF0ZToKICAgICBDU1NTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENv
bnRlbnRzPiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFBh
c3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiwgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5s
aW5lU3R5bGVzaGVldCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBBU0NJSUxpdGVyYWwoInRleHQvY3NzIik7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDU1NT
dHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
U3RyaW5nIHR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQv
Y3NzIik7IH0KIAogICAgIGJvb2wgY2FuQWNjZXNzUnVsZXMoKSBjb25zdDsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5oCmluZGV4IDA2NWU5ZjI3ODQ5YWI4OWQ2ODMzMDk2NDQwZDU1OWMwMTJkZTFkMDYuLjA1ODRh
NWVhZjZmYjk4NWM3OWFhZjQ4NzE5ODg4ZGQyZmQ0NzczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNzcs
MTQgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbmFtZS5uYW1lc3BhY2VVUkko
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX25hbWUucHJlZml4KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdmFsdWUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9u
ZU5vZGUoYm9vbCBkZWVwKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVlKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBdHRyaWJ1dGVOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
dHRyaWJ1dGVOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklE
RTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaAppbmRl
eCAxZDUzODI4Njg2MjgyNjYyZGQwMDI3NzRkN2JjN2QxZWM1ODhiM2NmLi5iNTY2MWJmMTMzM2Jj
NzgyNGJmZGVjNzM3MjAzNWM2ZTFmZDgyMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQodGV4dCkpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBTdHJpbmcm
IHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3Qg
U3RyaW5nJiBzKSB7IG1fdGV4dCA9IHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DREFUQVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAppbmRl
eCAzZmFjMTZmYWJlZGM5ODEyZTM3OWE0MDNjZmUwZjc3NDQ2MDkwOWM4Li4yMTNiOTFkZmI3MTgw
Mjg5ZjIzYmFmZTAxOTFhNTY4ODc4OTg3MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ0RBVEFTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5o
CkBAIC0zNCwxMSArMzQsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDREFUQVNlY3Rpb24o
RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1l
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKLSAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBT
dHJpbmcgbm9kZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5vZGVUeXBlIG5v
ZGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNs
b25lTm9kZShib29sIGRlZXApIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVB
bGxvd2VkKE5vZGVUeXBlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIH07CiAKIGlubGlu
ZSBib29sIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
Tm9kZUxpc3QuaAppbmRleCBkZmRlNTczNDJlYjVhZjFjY2IzN2Y3ODk3MWZhOTQ4NTgwNTAxNDc0
Li40NTZlNTJjMmE0MmQwOGU3N2JhNWE3MWE5NmNjZjdkMWZjY2ExMzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZE5vZGVMaXN0LmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgQ2hpbGROb2RlTGlzdChQYXNzUmVmUHRy
PE5vZGU+IHJvb3ROb2RlKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxl
bWVudCopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCop
IGNvbnN0IE9WRVJSSURFOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5oCmluZGV4IDcxM2ZlYjg5N2M0ZThiOWY4
ZDBmYWI1MDk2MmQ0ZDFhZmNkNDE0MTMuLmQxMzBhMmEwOTBlY2M3ZWU4OGY0ZTcxNDI2NjVmZGRl
ZjQyY2ZkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5n
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaApAQCAt
NDAsMTYgKzQwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRh
c2V0RE9NU3RyaW5nTWFwKGVsZW1lbnQpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVm
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZigpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIGdldE5hbWVzKFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdmlydHVhbCBTdHJpbmcgaXRl
bShjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBT
dHJpbmcmIG5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZp
cnR1YWwgdm9pZCBnZXROYW1lcyhWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgU3RyaW5nIGl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0SXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4
Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSXRlbShjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
RWxlbWVudCogZWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZpcnR1YWwgRWxl
bWVudCogZWxlbWVudCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IERhdGFzZXRET01TdHJpbmdNYXAoRWxlbWVudCogZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggNWY4YzY2NWE4MjM1YmViZjk0ZDc1NmM0ZWU1MmE2ZjhlZjBk
YjI1Yy4uZjM2YjAyNDY5YzQyNzQyNmNmZjU5NDc5NDExNTc5ZDk0MzIyMWFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTI1Myw3ICsyNTMsNyBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBn
ZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlBY2Nlc3NLZXko
Y29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgaW52YWxpZGF0ZUFjY2Vzc0tleU1hcCgpOwpA
QCAtNDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZG9jdW1lbnRVUkkoKSBjb25z
dCB7IHJldHVybiBtX2RvY3VtZW50VVJJOyB9CiAgICAgdm9pZCBzZXREb2N1bWVudFVSSShjb25z
dCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFVSTCBiYXNlVVJJKCkgY29uc3QgT1ZFUlJJREU7CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkKICAgICBTdHJpbmcgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CkBAIC02MDMs
OSArNjAzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIE9WRVJSSURFOwogCiAg
ICAgYm9vbCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUpOwogICAgIEZyYW1lKiBmaW5k
VW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpOwpAQCAtOTM0LDcgKzkzNCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRE5TUHJlZmV0Y2hFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ROU1ByZWZldGNoRW5hYmxlZDsgfQogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENv
bnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2so
UGFzc093blB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJl
YWQgYXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8
VGFzaz4pIE9WRVJSSURFOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFk
IGFzeW5jaHJvbm91c2x5LgogCiAgICAgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCByZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXJDYWxsYmFja3MoKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEFubm90YXRlZFJlZ2lvbnMoY29uc3QgVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYp
OwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBPVkVSUklERTsKIAog
I2lmIEVOQUJMRShTVkcpCiAgICAgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBzdmdFeHRl
bnNpb25zKCk7CkBAIC0xMDE3LDggKzEwMTcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9jZXNz
aW5nTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CiAg
ICAgYm9vbCBsb2FkRXZlbnRGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZEV2ZW50Rmlu
aXNoZWQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgY29udGFpbnNWYWxpZGl0eVN0eWxlUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zVmFsaWRpdHlTdHlsZVJ1bGVzOyB9CiAgICAg
dm9pZCBzZXRDb250YWluc1ZhbGlkaXR5U3R5bGVSdWxlcygpIHsgbV9jb250YWluc1ZhbGlkaXR5
U3R5bGVSdWxlcyA9IHRydWU7IH0KQEAgLTEwMjgsNyArMTAyOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICAg
dm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBT
dHJpbmcmIG5ld1VSTCk7CiAgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwotICAgIERvY3VtZW50RXZlbnRR
dWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQorICAgIHZp
cnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9ldmVudFF1ZXVlOyB9CiAKICAgICB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
cihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAgICB2b2lkIHJlbW92ZU1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKQEAgLTEwOTUsOCArMTA5NSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y0FuaW1hdGlvblN0YXJ0VGltZSk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXQq
IGVycm9yRXZlbnRUYXJnZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25z
b2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPik7CisgICAgdmlydHVhbCBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklERTsK
IAogICAgIHZvaWQgaW5pdEROU1ByZWZldGNoKCk7CiAKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2woRWxlbWVudCopOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlm
aWVyID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyID0gMCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFNlY3VyaXR5T3Jp
Z2luKiB0b3BPcmlnaW4oKSBjb25zdCBPVkVSUklERTsKIApAQCAtMTIxNSwxOSArMTIxNSwxOSBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBub2Rl
TmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlw
ZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4sIEpTQzo6RXhlY1N0YXRlKiA9IDAsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIg
PSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+LCBKU0M6OkV4ZWNTdGF0ZSogPSAwLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyID0gMCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGlt
ZXJJbnRlcnZhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSB0aW1lckFsaWdubWVu
dEludGVydmFsKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgdGltZXJBbGlnbm1lbnRJbnRl
cnZhbCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCB1cGRhdGVUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lckZp
cmVkKFRpbWVyPERvY3VtZW50PiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5oCmluZGV4IGI4OGYxZTFlMTFkNDYwNDE5NTZhMjRhNTY1MTZhODI0YTVlMTI0ZmQuLjY2MWJl
MWQ2MGE2ZTIyODU2NzlhMDhhYzFmNjcwZDQ4ODZmMGIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRFdmVudFF1ZXVlLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNz
IERvY3VtZW50RXZlbnRRdWV1ZSBGSU5BTCA6IHB1YmxpYyBFdmVudFF1ZXVlIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQmKTsKLSAgICB+RG9jdW1l
bnRFdmVudFF1ZXVlKCk7CisgICAgdmlydHVhbCB+RG9jdW1lbnRFdmVudFF1ZXVlKCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQmKSBPVkVSUklERTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IGZkMDFlZDE3MTk3NGU4ZmNhMTcyY2MyODZk
YTRiN2RjZjRjZTAzZjIuLjc5NmY4YzA0NTgyMGEwZmY4ZDJmMzU0NDBiODE4YmI5MDczZmNkZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzYsMTcgKzM2LDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBhcnNlSFRNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7
CiAgICAgYm9vbCBwYXJzZVhNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZW1wbGF0ZUNv
bnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1l
bnRGcmFnbWVudChEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIp
OwotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJp
bmcgbm9kZU5hbWUoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIE5v
ZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNs
b25lTm9kZShib29sIGRlZXApOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5v
ZGVUeXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXAp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBj
b25zdCBPVkVSUklERTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IGZkODkxMWUyNWRmMjJjYjcwODEwMzlmMmIzNGJmNjhlNjgwZDAyMmYuLjQxZjVmYmI3YmRjNDcz
OWIwNDBkYjliZGM1NjUwMTBjOWEyZWVhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjU0LDcg
KzI1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdCBPVkVS
UklERSBGSU5BTDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCk7CiAgICAgUGFzc1JlZlB0cjxF
bGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKQEAgLTQyMyw3ICs0MjMsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgaXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIGlzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
UGFyc2luZ0NoaWxkcmVuKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2lu
Z0NoaWxkcmVuKCkgT1ZFUlJJREUgRklOQUw7CiAKICAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQ
c2V1ZG9FbGVtZW50KCkgY29uc3Q7CkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5k
UG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkNvbnRh
aW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ly8gVXNlZCBmb3IgZGlzYWJsZWQgZm9ybSBlbGVtZW50czsgaWYgdHJ1ZSwgcHJldmVudHMgbW91
c2UgZXZlbnRzIGZyb20gYmVpbmcgZGlzcGF0Y2hlZAogICAgIC8vIHRvIGV2ZW50IGxpc3RlbmVy
cywgYW5kIHByZXZlbnRzIERPTUFjdGl2YXRlIGV2ZW50cyBmcm9tIGJlaW5nIHNlbnQgYXQgYWxs
LgpAQCAtNDgyLDcgKzQ4Miw3IEBAIHB1YmxpYzoKIAogCiAjaWYgRU5BQkxFKFNWRykKLSAgICB2
aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSop
IGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgaGFzUGVuZGluZ1Jlc291cmNlcygpIGNvbnN0Owog
ICAgIHZvaWQgc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwogICAgIHZvaWQgY2xlYXJIYXNQZW5k
aW5nUmVzb3VyY2VzKCk7CkBAIC02MzYsMTIgKzYzNiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKTsKIAog
I2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciog
YnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRG
b3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgT1ZFUlJJREU7
CiAjZW5kaWYKIAogICAgIHZvaWQgY2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB2aXJ0dWFsQ29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8pIHsgcmV0dXJuIGNvbXB1dGVkU3R5bGUocHNl
dWRvRWxlbWVudFNwZWNpZmllcik7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB2aXJ0dWFs
Q29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8p
IE9WRVJSSURFIHsgcmV0dXJuIGNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7
IH0KICAgICAKICAgICAvLyBjbG9uZU5vZGUgaXMgcHJpdmF0ZSBzbyB0aGF0IG5vbi12aXJ0dWFs
IGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbiBhbmQgY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVu
CiAgICAgLy8gYXJlIHVzZWQgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FcnJvckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oCmluZGV4IDcy
MTc3YzgwYTdiYzI4MWFhN2Y4ZThkNjAxNTA0YjZhODFjMzM0MDAuLmQwMGU3ZjQ1ODhlZTdhYjlh
OWY1ZGVhMTc3NzU3MDZjNzUwMTdhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
cnJvckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuaApAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGluZW5vKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CiAgICAgdW5zaWduZWQgY29sbm8oKSBjb25zdCB7IHJldHVybiBtX2Nv
bHVtbk51bWJlcjsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFj
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBFcnJvckV2ZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaAppbmRleCAzNDczMTFkODQ3MDJjODFiMmZlZGE4MTdkZjg2ZWU1MDMw
NGViZWUxLi4wMDRiMzZlMmY3NTMyMTYyMjc3N2ZiZDZiMzg1MTI1ZjA1YTM0YjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTk4LDEyICs5OCwxMiBAQCBwdWJsaWM6CiAgICAg
CiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXlFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5RXZlbnQuZ2V0KCk7IH0KIAotICAgIGludCBrZXlDb2RlKCkgY29uc3Q7IC8vIGtl
eSBjb2RlIGZvciBrZXlkb3duIGFuZCBrZXl1cCwgY2hhcmFjdGVyIGZvciBrZXlwcmVzcwotICAg
IGludCBjaGFyQ29kZSgpIGNvbnN0OyAvLyBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJlc3MsIDAg
Zm9yIGtleWRvd24gYW5kIGtleXVwCisgICAgdmlydHVhbCBpbnQga2V5Q29kZSgpIGNvbnN0IE9W
RVJSSURFOyAvLyBrZXkgY29kZSBmb3Iga2V5ZG93biBhbmQga2V5dXAsIGNoYXJhY3RlciBmb3Ig
a2V5cHJlc3MKKyAgICB2aXJ0dWFsIGludCBjaGFyQ29kZSgpIGNvbnN0IE9WRVJSSURFOyAvLyBj
aGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJlc3MsIDAgZm9yIGtleWRvd24gYW5kIGtleXVwCiAKLSAg
ICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHdoaWNo
KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB3aGljaCgpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIC8vIFdlIG9ubHkgaGF2ZSB0aGlzIG5lZWQgdG8gc3RvcmUga2V5
cHJlc3MgY29tbWFuZCBpbmZvIG9uIHRoZSBNYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzNDU1ZDQyYTEz
MDExYmRhNTBjZGNiMzY0ZWRjZTc4ZjZmN2IwZDYzLi5lMDBmNmNjMGJmOGU5OGE5Y2Q5NDcyMjI4
ZjVjOWZlZTJjMDcyMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUyMCwxNCArNTIwLDE0IEBAIHB1Ymxp
YzoKIAogICAgIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUqKTsK
IAotICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCk7CisgICAgdmlydHVhbCBOb2RlKiB0b05vZGUo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEhUTUxJbnB1dEVsZW1lbnQqIHRvSW5wdXRFbGVtZW50
KCk7CiAKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7IC8vIEltcGxl
bWVudGVkIGluIERvY3VtZW50LmgKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
LCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VD
YXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0
dXJlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVy
ZSkgT1ZFUlJJREU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKICAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PikgT1ZFUlJJREU7
CkBAIC02NzUsOCArNjc1LDggQEAgcHJpdmF0ZToKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJs
ZShFZGl0YWJsZUxldmVsLCBVc2VyU2VsZWN0QWxsVHJlYXRtZW50ID0gVXNlclNlbGVjdEFsbElz
QWx3YXlzTm9uRWRpdGFibGUpIGNvbnN0OwogICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJp
bGl0eShFZGl0YWJsZUxldmVsKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpOwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCk7CisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIG5vblJl
bmRlcmVyU3R5bGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBSZW5kZXJTdHls
ZSogdmlydHVhbENvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaAppbmRleCBkNGM3NGZjYWEzMjdmMmQ4NDUxMDYx
M2EyYTA0ZDViZmVhMjhmNjZjLi45YTFhNWIxZTAyMDg3YmM3NDE2ZjkxMzg1ZTY1YjdmMzYyM2I5
Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UGFnZVRyYW5zaXRpb25FdmVudCgpOwog
Ci0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsK
IAogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKaW5kZXggMDViZjkwNjBhNjdjMTU0YjJkZjIyMjQ4
OTI4Y2Q4NDIzNTAwODE5Zi4uMGY5ZTgyN2Q3ZGQzNDU1Nzc2OGNjZTAwN2E4N2NiOGU2YzE3YTlh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fk
ZWQ7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwoKSBjb25zdCB7IHJldHVybiBtX3Rv
dGFsOyB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29u
c3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgUHJvZ3Jlc3NFdmVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmgKaW5kZXggM2RlOTNjNjNlZTcwNmQ4ZTkwZmZlMjRlMDVhNzk2Yzc4OTRm
ZWM4Yy4uYzM2YWU3MTgwMTgyZTc5ZGNiNjNjZDgyZjRkYTc2MWI4NzE1NmExMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHNldWRvRWxlbWVudChob3N0LCBwc2V1ZG9JZCkp
OwogICAgIH0KLSAgICB+UHNldWRvRWxlbWVudCgpOworICAgIHZpcnR1YWwgflBzZXVkb0VsZW1l
bnQoKTsKIAogICAgIEVsZW1lbnQqIGhvc3RFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0
RWxlbWVudDsgfQogICAgIHZvaWQgY2xlYXJIb3N0RWxlbWVudCgpIHsgbV9ob3N0RWxlbWVudCA9
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4
IDFjM2VjY2NjNDkwMjE3Nzc1ZWY3ODM4YzUzNTJlNWY0ODZkZTI3NGUuLjg3NDg2ODgyYjllYzcy
M2RjZWUwYzBhMWVhZjhhOTQ4YmI2MGMyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBZGRDb25zb2xlTWVzc2FnZVRh
c2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICB9Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAg
ICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggODUx
NTIyMTUyOWY5ZGRiNzkwMmJlYzhjZjI3MGU2M2NkMzZlZGExNC4uMTYyNTljMTA2NzUxYzE1ODYx
YTg5MDAxYTE5MDFmMTQ3MGRkZTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC03Niw3
ICs3Niw3IEBAIHB1YmxpYzoKICAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkg
eyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlv
bigpIHsgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3RFbGVtZW50KCkp
OyB9CiAKLSAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAg
U2hhZG93Um9vdChEb2N1bWVudCYsIFNoYWRvd1Jvb3RUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5oCmluZGV4IGM5NGEwYzUxYjVjNjgwOTkxYWE3NDRhMDk1Njc3NGM4YzY3ZGY0Y2Iu
LmVmNDFiY2RmNmEzNGJiNjc1OGY5NDE2YTRkNTY0NzY3ZjVjYjBmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBh
ZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVy
dHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpOwogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIHN0eWxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1N0eWxlU3RyaW5nLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGFnTm9kZUxpc3QuaAppbmRleCA5ZmI4NzExNWZiZmZlYjY4Yzc2Njc3YWRkOTU0MzI0MGJhMDk0
OGJjLi41NWI4YWE5M2E5MWRmNGI1NzE0NGE2N2U1Y2EzYzVhMjljNWQyZmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGFnTm9kZUxpc3QuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgVGFnTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiByb290Tm9kZSwgQ29sbGVjdGlvblR5cGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7
CiAKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2VVUkk7CiAgICAgQXRvbWljU3RyaW5nIG1f
bG9jYWxOYW1lOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxU
YWdOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhFbGVtZW50KikgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICBBdG9taWNTdHJpbmcgbV9sb3dlcmVkTG9jYWxOYW1lOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
CmluZGV4IGY0ZWJhNGJjNjY5ZDRhNGEyODkwMTUyZjI1YjQ3YjVjMTRjYWE0OGQuLmZhYTY3OTE4
NDQ4OTM5YTAyNWZkNGQ5NWVkMzU3ZjhmMmM4NjIzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtNjYsNyAr
NjYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0PiB2aXJ0dWFsQ3Jl
YXRlKGNvbnN0IFN0cmluZyYpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgdm9pZCBm
b3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdCBPVkVSUklERTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CmluZGV4IGM5ZjU2NzAwZThjYzFhYzJiZGU4MThjMzU1OGQ4ZTEzYTFjN2VkMTQuLjdlYjljNjcz
MWE2NTQwNDNiN2Y0YjhkMzM4ZmJiMmVhNTRhMTJlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgICAgICBTdHJp
bmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAgICAgIHZpcnR1YWwgRXZl
bnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgICAgIGJv
b2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2lucHV0VHlwZSA9PSBUZXh0RXZlbnRJ
bnB1dExpbmVCcmVhazsgfQogICAgICAgICBib29sIGlzQ29tcG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lucHV0VHlwZSA9PSBUZXh0RXZlbnRJbnB1dENvbXBvc2l0aW9uOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJhbnNpdGlvbkV2ZW50LmgKaW5kZXggNDNkYTZjNjZhYzkwNmMxZTgyNTQxYTIxMDg0
Zjk3YTIzYzRlNTViNS4uMDgyMWViMDIxOTdmMDAzMDM4MmY0ZjhmYjFhOTk2NjU3MzQ5ZDNiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBw
c2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50
SW50ZXJmYWNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVy
ZmFjZSgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIFRyYW5zaXRpb25FdmVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmgKaW5kZXggZTVkYzUzZWE3MjAxMWY5MmU4NTViODQ4OWU2OGVlODlj
ZmM2MGRjNy4uMjkxZDQxZTkzZjQ5N2NkYzRjOTcyOTE1MzcwY2Y3NDRmZTQ0Nzc5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudC5oCkBAIC02MSw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBBYnN0cmFjdFZpZXcq
IHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0KICAgICBpbnQgZGV0YWlsKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KIAotICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2Ug
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNVSUV2ZW50KCkgY29u
c3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1VJRXZlbnQoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgaW50IGtleUNvZGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBjaGFyQ29k
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlv
bkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAppbmRl
eCA5MzAzZTNlMDM0ZDU1MTQ3YzBmOGMzYTA5NDRkOGUzMjc5NTg5YWRmLi4yZjg1Mzg2ZGZhOTQz
NzRlZTFmMmQ2MTY1NjZlOWEzNWFkYTY4ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lKCkgY29uc3Q7CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7
CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9WRVJS
SURFOwogCiBwcml2YXRlOgogICAgIFdlYktpdEFuaW1hdGlvbkV2ZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgKaW5kZXggMWExY2E2NjQ4NjdhMWM1OWY4
ODAzMGFmMDI5YWViYWQwMjI1MjNhYy4uZWFmZjFlYWRiNzMyZWNhMTllMjg0Y2Y1OWQyMjlmY2Fk
YjAwOWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25F
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29uc3Q7
CiAgICAgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIFdlYktpdFRyYW5zaXRpb25FdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmgKaW5kZXggNDUyZGMyYTYzYjQxY2RiNDQ3OTYy
YWUwYmEzZDJhOGEwMTg4NDZkMi4uYTI1ZTM1MWE0MmJhZDk2YWU3NDA3NjQxM2ZkNjY2ZjQ2Nzk1
M2Q2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVu
dENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZC5oCkBAIC00Niw3ICs0Niw3IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lIHRhZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOworICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgY29uc3QgUG9zaXRpb24mIGVuZE9mU2VsZWN0aW9u
LCBSZWZQdHI8RWxlbWVudD4mKSA9IDA7CiAgICAgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlT2ZF
bmNsb3NpbmdUZXh0Tm9kZShjb25zdCBQb3NpdGlvbiYpOwogICAgIHZvaWQgcmFuZ2VGb3JQYXJh
Z3JhcGhTcGxpdHRpbmdUZXh0Tm9kZXNJZk5lZWRlZChjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBQ
b3NpdGlvbiYsIFBvc2l0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmgKaW5kZXggNGVmZjFlODUzYjc1YjljNTYyNjkwNTkzYjI0NGFjOGJjZTQ2YzQ4Ny4u
NjY2MzdjOGRmMDVhYTVjOGY4OTkxZTYxMmYwYmYyODIxZTg1Mjc0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaApAQCAtNzEsOCArNzEsOCBAQCBwcml2YXRl
OgogICAgIEFwcGx5U3R5bGVDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4sIGJvb2wgcmVtb3Zl
T25seSwgRWRpdEFjdGlvbik7CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmLCBjb25z
dCBFZGl0aW5nU3R5bGUqLCBib29sICgqaXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVs
ZW1lbnQqKSwgRWRpdEFjdGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwotICAg
IHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGRvQXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gc3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAg
ICAgYm9vbCBpc1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCmluZGV4
IGY2Y2UxYjgzZDMyNmVjYzMzZTI2NGVhNzhlZWRmMDQ3NjRkNjk3OTQuLjFkNWMxMjM0MTFmYTY2
ZDlhMjM3ZjUwMjFiYzhkOGYxYTgyYTVmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kKERvY3VtZW50Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgp
IE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IGQ0MTRmMjJjZjJkMTk3NDMz
YWYwZWU4YjgzODZkMDU5ZmMwYzkxNzQuLjA5MmVjMzhiZjU0Mjg0ODhmZWU1NjFmMGI4MjI1YTVh
MjJhYjRkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVuYXBw
bHkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOwotICAg
IEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZWRp
dEFjdGlvbjsgfQorICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9lZGl0QWN0aW9uOyB9CiAgICAgdm9pZCBhcHBlbmQoU2ltcGxl
RWRpdENvbW1hbmQqKTsKICAgICBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9lZGl0QWN0aW9uID09IEVkaXRBY3Rpb25DcmVhdGVMaW5rOyB9CiAKQEAgLTE3MCw3
ICsxNzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPFJlZlB0cjxFZGl0Q29tbWFuZD4gPiBt
X2NvbW1hbmRzOwogCiBwcml2YXRlOgotICAgIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29tbWFuZCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDb21w
b3NpdGVFZGl0Q29tbWFuZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IFJlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBtX2NvbXBvc2l0aW9uOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgKaW5k
ZXggNjEzNjM2NjNkZGRiYTU0M2YyZWQ2YTcyOWJhMDY0ZTU2YzU4YmYyZi4uNjAwZTFjMjBmZmU4
YzAxNzM1NTRhODc2MDk5YjRhYmUxOTA0MjhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgKQEAgLTM5LDggKzM5LDggQEAgcHVi
bGljOgogICAgIH0KIHByaXZhdGU6CiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZChQYXNz
UmVmUHRyPFJhbmdlPiByYW5nZVRvQmVDb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlv
bik7Ci0gICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
UmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9BcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXRhaW5BdXRvY29y
cmVjdGlvbkluZGljYXRvcigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgUmVmUHRyPFJhbmdlPiBt
X3JhbmdlVG9CZUNvcnJlY3RlZDsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fc2VsZWN0aW9uVG9C
ZUNvcnJlY3RlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggMjZjZjhjMzAyNmE3NjY2MzQzYjk1
MmViYWI3NjhiMjJhNmZjNzA4Mi4uOTUzMDQ1ZGRlMzEwZjcxNzkzOWM2MzY4ODY2N2NmNTg0NzFi
ODY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgbmFtZSwgcG9saWN5KSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBpc0ZpbGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBT
dHJpbmcmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KICAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVRocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVRocmVhZFRhc2suaAppbmRleCBiYWNiYTExN2QyZWRkYThiOWI4NzFkMzg4Mjg3NzNjODY4NzVj
MTM2Li42ZWIyYjc0MDBkZmZkN2IxNjRlNDljMWViNDFiZTFlNDQxYzBiOTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKSBPVkVSUklERQogICAgIHsKICAgICAgICAgKCpzdGF0
aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKSgpOwogICAgIH0KQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soKQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICAoKnN0YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKG1fcGFyYW1l
dGVyMSk7CiAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soKSBPVkVSUklERQogICAgIHsKICAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5z
dGFuY2UoKSkuKm1fbWV0aG9kKShtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMik7CiAgICAgfQpA
QCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0
aG9kKShtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAppbmRleCA3MmQ4ZWY1YzFmYWE4
MjJjMTM1NTJmN2YzN2E0NWIwY2RjNmQyNmNjLi4yOTJmNTMyNzM0MGJkNzA1YTIxY2RjYmM1YWJk
NzNlMTc0MTJlZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgK
QEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAKICAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4g
bV9wYWdlOyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0
b3J5SXRlbT4pOworICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+KSBPVkVSUklERTsKICAgICB2b2lkIGdvQmFjaygpOwogICAgIHZvaWQgZ29Gb3J3YXJkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKik7CisgICAgdmlydHVhbCB2
b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgT1ZFUlJJREU7CiAgICAgICAgIAogICAgIEhpc3Rv
cnlJdGVtKiBiYWNrSXRlbSgpOwogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwogICAg
IEhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0
ZW1BdEluZGV4KGludCk7CisgICAgdmlydHVhbCBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50
KSBPVkVSUklERTsKIAogICAgIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRl
bVZlY3RvciYpOwogICAgIHZvaWQgZm9yd2FyZExpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRl
bVZlY3RvciYpOwpAQCAtNjMsMTEgKzYzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhcGFj
aXR5KGludCk7CiAgICAgYm9vbCBlbmFibGVkKCk7CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wp
OwotICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQoKTsKLSAgICB2aXJ0dWFsIGludCBmb3J3
YXJkTGlzdENvdW50KCk7CisgICAgdmlydHVhbCBpbnQgYmFja0xpc3RDb3VudCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgaW50IGZvcndhcmRMaXN0Q291bnQoKSBPVkVSUklERTsKICAgICBib29s
IGNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSopOwogCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7
CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgT1ZFUlJJREU7CiAgICAgYm9vbCBjbG9zZWQoKTsK
IAogICAgIHZvaWQgcmVtb3ZlSXRlbShIaXN0b3J5SXRlbSopOwpAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJhY2tGb3J3YXJkTGlzdChQYWdlKik7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSB7IHJldHVybiBlbmFibGVkKCkgJiYgY2FwYWNp
dHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGVu
YWJsZWQoKSAmJiBjYXBhY2l0eSgpOyB9CiAKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgSGlzdG9y
eUl0ZW1WZWN0b3IgbV9lbnRyaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuaAppbmRleCAxYWZjODc2Y2UzMjMxMzRkMWQ0ZTA4NDUxY2RiNDExNDhmYjU4
Y2Q3Li5hMTllYjAyMjA1MmYwYWQyZjdiNmQ1MDU2YmI2MDA1ZGI1YmM5YjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlIDogcHVi
bGljIElucHV0VHlwZSB7CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQmFzZUNoZWNrYWJsZUlu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVS
UklERTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1D
b250cm9sU3RhdGUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuaAppbmRleCBmNmI3OTkxN2JmMGNjMjIzZDczNTk5NjFiMzQzYzU0YjQwNDZhZjVl
Li44OGU0OTA2ZDNhNTMxYzFhOTA4YTY2MzE0OWIwN2EyZDlmZGExYzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC0xMTEsMTQgKzExMSwxNCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUgPSB0cnVlLCBib29sIHBhdXNlID0gZmFs
c2UpIE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9v
bCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9v
bCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCBi
b29sIGRyYWdnYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHZvaWQgc2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25V
UkwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAppbmRleCAxODBmNjEzMDY0
Yjg0Mjg4MTQyYTdlOTJhMjZlZTQ4MTQ4NzE4NWUyLi5mMTBhMTVmZTI3NGIwYjAxNTUzMDAwYWU2
NTVhOGRlNTIxODI0NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKQEAg
LTUyLDExICs1MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtl
eWJvYXJkRXZlbnQqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZv
Y3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgp
IGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2Uo
Ym9vbCAvKnJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiovKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgLypyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24qLykgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOwogCiAgICAg
ZW51bSBTaGFwZSB7IERlZmF1bHQsIFBvbHksIFJlY3QsIENpcmNsZSwgVW5rbm93biB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDk0N2FkMzdjZjIzYWE0OGNi
NDA1YjA4ZWEyZmIyYTg4NmM5ZTg5ZDkuLmFlZTUyYWE0NjM3MDA4OGVmNzA2ZWFiZWVmZjhmNzFj
YzM5NWM2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTE0
NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIEhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVu
ZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBhcmVBdXRob3JT
aGFkb3dzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmgKaW5kZXggZGVjOGUyZTQzY2ZiYjM1YTgzZDNhZjM0OTFiMzk3YjU4ZGE4YTVkNC4u
N2YyMWY4MmVhNGQ0OGNkOTJmMmNhMDEyZGZhNzA1Y2ZjZGY3YTIwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkKLSAgICB2aXJ0dWFsIE5vZGUq
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIHZpcnR1YWwg
Tm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgT1ZFUlJJREU7
CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8v
IE5vbi1ET00gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggNmNlYTRkODZiZDBj
MTI2MzMzYWQyOTM2MWFiZDJkMGQ2YjNhN2MxNy4uMjA3OTZlN2M5ZGM0M2M2MWZhNThmM2VmMzJk
MDlkZmFlNTljYWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtNzcsMTIgKzc3
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xpY2soKTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogCiAgICAgYm9v
bCBpZUZvcmJpZHNJbnNlcnRIVE1MKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOwotICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVu
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJl
bmRlclN0eWxlJikgT1ZFUlJJREU7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25z
dCB7IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmgKaW5kZXggZTNlNDg5MTZkZjY1Y2M2MGE4NTE4YzQ5NTU2YjcxMDM3MDRm
MjNhMy4uNGYzYTA3NTRhOTY5NzcxMzcxYWFhOWFmOTE1OThmOGRjYWIyNTU1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKQEAgLTQ3LDExICs0NywxMSBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEhUTUxGaWVsZFNldEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxl
Jik7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGFyZUF1dGhvclNoYWRvd3NBbGxvd2VkKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCA1NjA4ZTAwNTdkYThkNTI3MzdkMTZmMzFjNWU0
NWRlOTJmNGVkOTZjLi44NDlkMTVjMGQ5NWExNzcwYzA1ZDM2YWJmZTdkM2ZlMWYxMzUzZWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtNjgs
NyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29u
c3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3Q7
CiAKQEAgLTgwLDEzICs4MCwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlkZSBpbiBkZXJp
dmVkIGNsYXNzZXMgdG8gZ2V0IHRoZSBlbmNvZGVkIG5hbWU9dmFsdWUgcGFpciBmb3Igc3VibWl0
dGluZy4KICAgICAvLyBSZXR1cm4gdHJ1ZSBmb3IgYSBzdWNjZXNzZnVsIGNvbnRyb2wgKHNlZSBI
VE1MNC0xNy4xMy4yKS4KLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFM
aXN0JiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9y
bURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2YXRlZFN1Ym1pdChib29s
KSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVW
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICB2b2lkIGhpZGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKICAgICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ+ID4qIHVuaGFuZGxlZEludmFsaWRDb250cm9scyA9IDApOwpAQCAtMTMx
LDE3ICsxMzEsMTcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgdmFsaWRhdGlvbk1lc3NhZ2VTaGFk
b3dUcmVlQ29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgdm9pZCByZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgeyBkZXJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpIE9WRVJSSURFIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBPVkVSUklERSB7
IGRlcmVmKCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtQ29udHJvbEVsZW1l
bnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGFs
d2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZFUlJJREUgRklO
QUw7CiAKLSAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAgdmlydHVhbCBIVE1M
Rm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpIE9WRVJSSURFOwogICAgIHZvaWQgdXBk
YXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVt
ZW50KiBhc0hUTUxFbGVtZW50KCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gdGhpczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUuaAppbmRleCBmZTAxY2IzZGY4YmQ3MWFkYjdjNGUzYTY4MDg1ZDRjZGFiNjhlMGM4Li5hNjdk
ZTQ0YzQ0Nzk3NjczYWM0MzY0MDVjYjlmYTc5ZjhmMWMxMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaApAQCAtMzQs
NyArMzQsNyBAQCBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlIDogcHVibGlj
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWlu
UmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9s
U3RhdGUoKSBjb25zdDsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRv
Y29tcGxldGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCk7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAppbmRleCA5MzJhMWE2OWY2ODY4NjMwNGRmNmU4NGJhMDljMGM1ZTViMDJjMDk0Li5j
ZGNlYjBiZTg4Y2ZhNzBiMjY1ODM4MjIyZmJiMjU3ZmU1M2ZhZWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBtZXRob2QoKSBjb25zdDsKICAgICB2b2lkIHNldE1ldGhvZChjb25zdCBTdHJpbmcmKTsKIAot
ICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHRh
cmdldCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgYm9vbCB3YXNVc2VyU3VibWl0dGVkKCkgY29u
c3Q7CiAKQEAgLTExMSwxNyArMTExLDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEZv
cm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KikgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkb2N1bWVudERpZFJlc3VtZUZyb21QYWdlQ2FjaGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklE
RTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGVl
ZDQ4NzlmYjllMmVmNmRjNzk5MjYxM2U5Y2Y2ZDI4MDhmMzc4YzguLmQ5Mjk4MzdlYTFlNzhkMTk5
ODcyNDI0ODhjY2QzNjRmNjY2YTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIFVSTCBsb2NhdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJik7CiAKLSAgICB2
aXJ0dWFsIFNjcm9sbGJhck1vZGUgc2Nyb2xsaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsaW5nOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9sbGluZzsgfQogICAgIAogICAgIGludCBtYXJnaW5X
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFyZ2luV2lkdGg7IH0KICAgICBpbnQgbWFyZ2luSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5IZWlnaHQ7IH0KQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIGludCB3aWR0aCgpOwogICAgIGludCBoZWlnaHQoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIEhUTUxGcmFtZUVsZW1lbnRC
YXNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNjEsNyArNjEsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ29udGVudEF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzRnJhbWVFbGVtZW50QmFzZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBhcmVBdXRob3JTaGFkb3dzQWxsb3dlZCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKaW5kZXggMTQzODQ5MGQ2MTBjMGFiODYzODQ2MGExY2FjYWVmMDMzODkyODVkZi4uMGJiMjE0
ZmVlNjI2YmM5MDdjNjJhNjc5NzBlY2I5MTdlOWMxN2RhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlTG9hZGVyLmhhc1BlbmRp
bmdBY3Rpdml0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWlu
UmFuZ2VFbmRQb2ludCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklE
RTsKIApAQCAtOTgsMTUgKzk4LDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5
bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFy
dFNlbGVjdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGRyYWdnYWJs
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25zdCBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCmluZGV4IGQzYjYwNjg3
MWY0NmRkNThiYTljMTI2ODQ1NjZlNmQ3N2Y4MTAxYTIuLjQwNjg4YjcxZDM2YjVkNjI5MWZmM2Zk
MDQ4ODBiZTVmYzFhZTBlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaApA
QCAtMzIsMTAgKzMyLDEwIEBAIHB1YmxpYzoKICAgICBIVE1MSW1hZ2VMb2FkZXIoRWxlbWVudCop
OwogICAgIHZpcnR1YWwgfkhUTUxJbWFnZUxvYWRlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoTG9hZEV2ZW50KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopIE9WRVJSSURFOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAppbmRleCBjZGVjOTI0NDgyZWY4OTkwYjljOTg4ZmQwNzQ3ZDQxYmM1M2JlOWI1Li5k
Y2YzNjZlZmU2OWZlZjc3NjJkYjU5Y2VlOWMxODg3Y2QwMDUxNWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoKIAogICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0c3BlZWNoY2hhbmdlKTsKIAot
ICAgIHZpcnR1YWwgSFRNTElucHV0RWxlbWVudCogdG9JbnB1dEVsZW1lbnQoKSB7IHJldHVybiB0
aGlzOyB9CisgICAgdmlydHVhbCBIVE1MSW5wdXRFbGVtZW50KiB0b0lucHV0RWxlbWVudCgpIE9W
RVJSSURFIHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29t
cGxldGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29u
c3QgT1ZFUlJJREU7CiAKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQogICAgIHZpcnR1YWwgYm9v
bCBoYXNCYWRJbnB1dCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJu
TWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZs
b3coKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92ZXJmbG93KCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCB0b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHR5cGVN
aXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CisgICAgdmlydHVh
bCBIVE1MRWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIEhU
TUxFbGVtZW50KiBpbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0OwogICAgIEhUTUxFbGVtZW50KiBp
bm5lclNwaW5CdXR0b25FbGVtZW50KCkgY29uc3Q7CiAgICAgSFRNTEVsZW1lbnQqIHJlc3VsdHNC
dXR0b25FbGVtZW50KCkgY29uc3Q7CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgSFRNTEVsZW1lbnQqIHNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0OwogICAgIEhUTUxF
bGVtZW50KiBzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEhUTUxFbGVt
ZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEhUTUxFbGVtZW50
KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIGJvb2wgY2hlY2tl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDaGVja2VkOyB9CiAgICAgdm9pZCBzZXRDaGVja2VkKGJv
b2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaE5vRXZlbnQpOwpAQCAtMTY2LDcg
KzE2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmKTsKIAot
ICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCk7CiAgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yID0gRGlzcGF0
Y2hOb0V2ZW50KTsKICAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihjb25zdCBTdHJpbmcmKTsKQEAg
LTE5OSw4ICsxOTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhhdmVTZWxlY3Rpb24oKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0
eWxlJik7Ci0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSYsIFJlbmRlclN0eWxlJik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7CkBAIC0yMDgsOCArMjA4LDggQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBGb3IgaXNBY3RpdmF0ZWRTdWJtaXQgYW5kIHNldEFjdGl2YXRlZFN1
Ym1pdCwgd2Ugc2hvdWxkIHVzZSB0aGUgTlZJLWlkaW9tIGhlcmUgYnkgbWFraW5nCiAgICAgLy8g
aXQgcHJpdmF0ZSB2aXJ0dWFsIGluIGFsbCBjbGFzc2VzIGFuZCBleHBvc2UgYSBwdWJsaWMgbWV0
aG9kIGluIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgdG8gY2FsbAogICAgIC8vIHRoZSBwcml2YXRl
IHZpcnR1YWwgbWV0aG9kLgotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCBmbGFnKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmF0ZWRTdWJtaXQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wgZmxhZykgT1ZFUlJJREU7CiAKICAg
ICBTdHJpbmcgYWx0VGV4dCgpIGNvbnN0OwogCkBAIC0yMzEsNyArMjMxLDcgQEAgcHVibGljOgog
CiAgICAgVVJMIHNyYygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29u
c3Q7CisgICAgdmlydHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdm9p
ZCBzZXRNYXhMZW5ndGgoaW50LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIG11bHRpcGxl
KCkgY29uc3Q7CkBAIC0zMTksNyArMzE5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEhU
TUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1F
bGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRl
U2V0dGluZyB7IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKQEAgLTMzOSw0OCArMzM5LDQ4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rp
b24pOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3Jl
UHJldmlvdXNTZWxlY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJ
bnB1dE1ldGhvZCgpIE9WRVJSSURFIEZJTkFMOwogCi0gICAgdmlydHVhbCBib29sIGlzVGV4dEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzVGV4dEZp
ZWxkKCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5U
cmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNUZXh0
RmllbGQoKTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTYXZlQW5k
UmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEZv
cm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xT
dGF0ZSYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZl
bnRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZl
bnRzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRp
ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGNvcHlOb25B
dHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpOwor
ICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBPVkVS
UklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgY29uc3QgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJblJhbmdlKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzT3V0T2ZSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc0luUmFuZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNP
dXRPZlJhbmdlKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRE
aWRSZXN1bWVGcm9tUGFnZUNhY2hlKCk7CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkUmVz
dW1lRnJvbVBhZ2VDYWNoZSgpIE9WRVJSSURFOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCkgT1ZF
UlJJREU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgYm9vbCBuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpOwogICAgIHZvaWQgcmVnaXN0ZXJG
b3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwpAQCAtMzkwLDIxICszOTAsMjEgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzVGV4dFR5cGUoKSBjb25zdDsKICAgICBib29sIHRvb0xvbmcoY29u
c3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVBsYWNlaG9sZGVyVGV4dCgpOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVy
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4
dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBpbm5lclRleHRWYWx1ZSgpLmlzRW1wdHkoKTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5U3VnZ2VzdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdWdnZXN0ZWRWYWx1
ZSgpLmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3VnZ2VzdGVkVmFsdWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdWdnZXN0ZWRWYWx1ZSgpLmlzRW1wdHkoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KE5vZGUqIG9sZEZvY3VzZWROb2RlLCBG
b2N1c0RpcmVjdGlvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVu
dCgpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNS
ZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1D
b250cm9sKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgdXBkYXRl
VHlwZSgpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpIE9WRVJSSURFOwogCiAjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCiAgICAgdm9pZCByZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaAppbmRleCA3MTRlYzY0
MjQzZmRiOTQ0NDJiYzEzN2Y1M2MyMTg0ZDBhYjVlMmJiLi5jMTM1ODAzZDFiMDI5NTI4YmNkMzU2
ZDUyY2M1NmYzNWNlNzNmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
YWJlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQu
aApAQCAtNDMsMTQgKzQzLDE0IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1
c2FibGUoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rp
b24oYm9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rp
b24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogCiAgICAgLy8gT3ZlcnJpZGRlbiB0
byB1cGRhdGUgdGhlIGhvdmVyL2FjdGl2ZSBzdGF0ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBjb250
cm9sLgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCA9IHRydWUsIGJvb2wgcGF1c2Ug
PSBmYWxzZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRy
dWUpIE9WRVJSSURFOwogCiAgICAgLy8gT3ZlcnJpZGRlbiB0byBlaXRoZXIgY2xpY2soKSBvciBm
b2N1cygpIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRyb2wuCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKGJvb2wgcmVz
dG9yZVByZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oCmluZGV4IGUzYjU3ZTMxZTUwNTlmYTVj
ZjdiMGNlNDY2N2E0NjgzMTRkZGI5N2UuLmUzN2VkMmQ2ZGE5Y2Q5MzFjZGM2ZjkxOGZhMzI2ZDMw
MzY4MjA1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBDb250cm9sIGluIHRoZSBsZWdlbmQncyBmaWVs
ZHNldCB0aGF0IGdldHMgZm9jdXMgYW5kIGFjY2VzcyBrZXkuCiAgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudCogYXNzb2NpYXRlZENvbnRyb2woKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24pIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgpIGNvbnN0
IE9WRVJSSURFOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
ZTBlOWE4ZjhjNjZlNmFjZjNiZGZkMWY5ZWQ3MzljYjIwZmY3NmJlNC4uZjU1ZjA3MDY4YTgzMjJm
ODdhNGZiNWU2Zjg3OTY4NDZhMDUzM2UyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTEwNiwxNyArMTA2LDE3IEBAIHB1YmxpYzoKICAgICBNZWRpYVBsYXllciog
cGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzVmlkZW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNB
dWRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3QgT1ZF
UlJJREU7CiAKICAgICB2b2lkIHJld2luZChkb3VibGUgdGltZURlbHRhKTsKLSAgICB2b2lkIHJl
dHVyblRvUmVhbHRpbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpIE9W
RVJSSURFOwogCiAgICAgLy8gRXZlbnR1YWxseSBvdmVybG9hZGVkIGluIEhUTUxWaWRlb0VsZW1l
bnQKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2F2
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCBPVkVSUklERTsKICAgICAK
ICAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCkBAIC0xNDksMzcgKzE0OSwzNyBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHByZWxvYWQoKSBjb25zdDsgICAgCiAgICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZvaWQgbG9hZCgpOwogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwm
ID0gVVJMKCkpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQotICAgIFJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKIC8vIHBsYXliYWNrIHN0YXRl
Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDdXJyZW50VGlt
ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGlt
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3Vi
bGUsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKICAgICBkb3VibGUgaW5pdGlhbFRpbWUoKSBj
b25zdDsKICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7Ci0gICAgZG91YmxlIGR1cmF0aW9u
KCkgY29uc3Q7Ci0gICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKLSAgICBkb3VibGUgZGVmYXVsdFBs
YXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3Vi
bGUpOwotICAgIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFBsYXli
YWNrUmF0ZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3VibGUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKSBPVkVSUklERTsKICAgICB2b2lkIHVwZGF0
ZVBsYXliYWNrUmF0ZSgpOwogICAgIGJvb2wgd2Via2l0UHJlc2VydmVzUGl0Y2goKSBjb25zdDsK
ICAgICB2b2lkIHNldFdlYmtpdFByZXNlcnZlc1BpdGNoKGJvb2wpOwotICAgIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gcGxheWVkKCk7Ci0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJs
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBj
b25zdCBPVkVSUklERTsKICAgICBib29sIGVuZGVkKCkgY29uc3Q7CiAgICAgYm9vbCBhdXRvcGxh
eSgpIGNvbnN0OyAgICAKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wgYik7CiAgICAgYm9vbCBs
b29wKCkgY29uc3Q7ICAgIAogICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwotICAgIHZvaWQgcGxh
eSgpOwotICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIE9WRVJSSURFOwogCiAvLyBjYXB0aW9ucwogICAg
IGJvb2wgd2Via2l0SGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdDsKQEAgLTIyMCwxNiArMjIwLDE2
IEBAIHB1YmxpYzoKIC8vIGNvbnRyb2xzCiAgICAgYm9vbCBjb250cm9scygpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q29udHJvbHMoYm9vbCk7Ci0gICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJvb2wgbXV0ZWQo
KSBjb25zdDsKLSAgICB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIHZpcnR1YWwgZG91YmxlIHZv
bHVtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZG91Ymxl
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpIE9WRVJSSURFOwog
CiAgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKCk7
Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJp
bmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgT1ZFUlJJREU7
CiAgICAgCi0gICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblBs
YXkoKSBjb25zdCBPVkVSUklERTsKIAogICAgIGRvdWJsZSBwZXJjZW50TG9hZGVkKCkgY29uc3Q7
CiAKQEAgLTMwMCwxOSArMzAwLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFj
a0Rpc3BsYXkoKTsKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQg
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSBPVkVSUklERTsKIAogICAgIC8v
IFRleHRUcmFja0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hh
bmdlZChUZXh0VHJhY2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNv
bnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3Zl
Q3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7Ci0gICAgdmlydHVhbCB2
b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4p
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1Jl
ZlB0cjxUZXh0VHJhY2tDdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5n
ZWQoVGV4dFRyYWNrKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVD
aGFuZ2VkKFRleHRUcmFjayopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0
VHJhY2tDdWVMaXN0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1
ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+KSBPVkVSUklERTsKIAogICAgIC8vIFZpZGVvVHJhY2tDbGllbnQKLSAgICB2aXJ0
dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKik7CisgICAgdmly
dHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopIE9WRVJSSURF
OwogCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlv
biopOwpAQCAtMzM3LDIxICszMzcsMjEgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+aGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsgfQogICAgIAotICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZvaWQgdG9nZ2xlRnVsbHNjcmVlblN0YXRlKCk7Ci0gICAgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgT1ZFUlJJREU7CiAgICAg
dm9pZCBleGl0RnVsbHNjcmVlbigpOwogCi0gICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNv
bnN0OwotICAgIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3Nl
ZENhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENhcHRp
b25zVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUoYm9vbCkgT1ZFUlJJREU7CiAKICAgICBNZWRpYUNvbnRyb2xzKiBtZWRp
YUNvbnRyb2xzKCkgY29uc3Q7CiAKICAgICB2b2lkIHNvdXJjZVdhc1JlbW92ZWQoSFRNTFNvdXJj
ZUVsZW1lbnQqKTsKICAgICB2b2lkIHNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50Kik7
CiAKLSAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisgICAgdmlydHVh
bCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkgT1ZFUlJJREU7CiAKICAgICAv
LyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRp
YUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CkBAIC0zNjEsNyArMzYxLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CiAKICNpZiBFTkFCTEUoV0VCX0FV
RElPKQogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSogYXVkaW9Tb3VyY2VOb2RlKCkg
eyByZXR1cm4gbV9hdWRpb1NvdXJjZU5vZGU7IH0KQEAgLTM5MCw3ICszOTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKQEAgLTQwMSw3ICs0
MDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlNb2RlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERpc3BsYXlNb2Rl
KERpc3BsYXlNb2RlIG1vZGUpIHsgbV9kaXNwbGF5TW9kZSA9IG1vZGU7IH0KICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNNZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTWVkaWFFbGVtZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4K
ICAgICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7CkBAIC00MzgsMTcgKzQzOCwxNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7Ci0g
ICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJl
bmRlclN0eWxlJik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50
byhDb250YWluZXJOb2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5
bGUoU3R5bGU6OkNoYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxl
OjpDaGFuZ2UpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBPVkVSUklE
RTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCBib29s
IGNhblN1c3BlbmQoKSBjb25zdCBPVkVSUklERTsKQEAgLTQ1NiwzNCArNDU2LDM0IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhVm9sdW1lRGlk
Q2hhbmdlKCk7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVN0YXRlKCkgeyB9CiAgICAgCiAg
ICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKTsKICAgICB2b2lk
IHNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAotICAgIHZpcnR1
YWwgRG9jdW1lbnQqIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKik7Ci0gICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopOwotICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZChNZWRpYVBsYXllciopOwotICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciopOwot
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKik7Ci0g
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5
ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhN
ZWRpYVBsYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlc291cmNlTm90U3Vw
cG9ydGVkKE1lZGlhUGxheWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVwYWlu
dChNZWRpYVBsYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2Vk
KE1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCBEb2N1bWVudCogbWVkaWFQbGF5ZXJPd25pbmdE
b2N1bWVudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtT
dGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck11dGVDaGFuZ2VkKE1lZGlh
UGxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25D
aGFuZ2VkKE1lZGlhUGxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKE1lZGlhUGxh
eWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VOb3RT
dXBwb3J0ZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyUmVuZGVy
aW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXllciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikgT1ZFUlJJREU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKE1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopIE9WRVJSSURFOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShNZWRpYVBsYXll
ciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChN
ZWRpYVBsYXllciopOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckZpcnN0VmlkZW9GcmFt
ZUF2YWlsYWJsZShNZWRpYVBsYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopIE9WRVJSSURFOwogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJL
ZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CkBAIC00OTMsNyArNDkzLDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICB2aXJ0dWFsIGJvb2wg
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5Kik7CisgICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSop
IE9WRVJSSURFOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVy
cmVyKCkgY29uc3QgT1ZFUlJJREU7CkBAIC01OTYsNyArNTk2LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZG91YmxlKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYUNhblN0YXJ0KCk7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKSBPVkVS
UklERTsKIAogICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCk7CiAgICAgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwpAQCAtNjE2LDggKzYxNiw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICAgICBib29sIGlzQmxvY2tlZCgpIGNv
bnN0OwogICAgIGJvb2wgaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKLSAgICBi
b29sIGhhc0N1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiAhbV9jdXJyZW50U3JjLmlzRW1wdHko
KTsgfQotICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbW92aWVMb2FkVHlw
ZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9CisgICAgdmlydHVhbCBib29sIGhhc0N1
cnJlbnRTcmMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhbV9jdXJyZW50U3JjLmlzRW1wdHko
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07IH0KICAgICBi
b29sIGlzQXV0b3BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2F1dG9wbGF5aW5nOyB9CiAKICNp
ZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCmluZGV4
IGYwZjQ4ZGEyMmEwMTVhM2I1NmZmYjFiZjIyM2IyZmRjNGYxZDFjNTQuLjYxYzQ1OWFiZGU1YTc2
NjgwNDE3NjJhY2ZjNmM0ZDBjNmRhZDk4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdmFsdWVSYXRp
bygpIGNvbnN0OwogICAgIEdhdWdlUmVnaW9uIGdhdWdlUmVnaW9uKCkgY29uc3Q7CiAKLSAgICBi
b29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIEhUTUxNZXRlckVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAppbmRleCA5ZDc3MmRkOGZmM2ExODJlYjc4MzY1
NmI0ZmFiZDZkMTI2NTcxNTFmLi44NTlkNjE0MjFjOGY2NDdlNTEyNzUzOTk3NTI3NThlNTNlMjI3
OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaApAQCAtNDUs
MTMgKzQ1LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVu
ZGVyZXJzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMo
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24o
Ym9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24o
Ym9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogCiAgICAgLy8gPG9wdGdyb3VwPiBuZXZl
ciBoYXMgYSByZW5kZXJlciBzbyB3ZSBtYW51YWxseSBtYW5hZ2UgYSBjYWNoZWQgc3R5bGUuCiAg
ICAgdm9pZCB1cGRhdGVOb25SZW5kZXJTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5oCmluZGV4IGI5MjkwMGRjMjljZDcyNzY0ZDJjODI5Yjg1MWQ5ZjE1YjE2MTBl
Y2QuLjRiMDRkNzBiZWNhZjgwYjUzMWMyMDA1YzQyOTNmZWMwMTJjZWU0MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTcwLDE0ICs3MCwxNCBAQCBwcml2YXRl
OgogICAgIEhUTUxPcHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
QXR0YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hS
ZW5kZXJlcnMoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZF
UlJJREU7CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlclN0
eWxlKiBub25SZW5kZXJlclN0eWxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAK
LSAgICB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBPVkVSUklERTsKIAogICAg
IFN0cmluZyBjb2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCAzMmNkMDg3YTA0M2Y3Y2Q2ODM4ZWNjOTk0N2Nj
MjQ1MzFjY2E4ZWI2Li4yMzAyMzM3ZTgwNWQyMjQwMTRmODUzNzlhMGU4NTBmN2M1NjhmMmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQ2FwdHVyaW5nTW91c2VFdmVudHMoKSBjb25zdCB7IHJldHVy
biBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7IH0KICAgICB2b2lkIHNldElzQ2FwdHVyaW5nTW91
c2VFdmVudHMoYm9vbCBjYXB0dXJpbmcpIHsgbV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzID0gY2Fw
dHVyaW5nOyB9CiAKLSAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBjYW5Qcm9jZXNz
RHJhZygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oCmluZGV4IDcxYmEwNTk2ZGE2NmQwOWYzM2RlZWFlOGEwMDk3NTM5YmZhYjAyOTQuLjJm
ZjI2ZDlkNjBjYjNmODcxZmE5ZjgzZDBhY2RkNTQ0ZmRmNWQzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2Fs
Y1N0eWxlKFN0eWxlOjpDaGFuZ2UpIE9WRVJSSURFOwogCi0gICAgdm9pZCBkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
QWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKaW5kZXggYThmNDM4Y2EyNzliOWQwNTlmMWUz
YWYyYzY4MWUzN2Y1MmI3ZmY5NC4uMmU5YWJkYmExOWQ2YmY3NWQ2NmU3ZWUzMDRjZjcwNjI5MGVm
OTY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgZG91YmxlIHBvc2l0aW9uKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgSFRNTFByb2dyZXNz
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTU0LDcgKzU0LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CisgICAgdmlydHVhbCBS
ZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwogICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9n
cmVzcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5k
ZXggMjVkMWMxZWMxY2I5ZDdiYzhjMjVkZWRjMmE0MGIyZmJiMGFlZWViNS4uZTJiMTZiODk2YTRj
M2JhZDc3NzlkOTYxYjExMjI1YmMyNTYyMDAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBPVkVSUklERTsKICAgICB2b2lk
IGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50KTsKIAogICAgIHZvaWQgc2V0TXVsdGlwbGUo
Ym9vbCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxTZWxlY3RFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRG
b2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0xMjAsOSArMTIwLDkgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8
RWxlbWVudD4gb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKSBPVkVSUklERSBGSU5B
TDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxFbGVtZW50
PiBuZXdGb2N1c2VkRWxlbWVudCkgT1ZFUlJJREUgRklOQUw7CiAgICAgCi0gICAgdmlydHVhbCBi
b29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xTdGF0
ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTMyLDEyICsxMzIs
MTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBS
ZW5kZXJTdHlsZSYpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBw
ZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKIAogICAgIHZvaWQgZGlz
cGF0Y2hDaGFuZ2VFdmVudEZvck1lbnVMaXN0KCk7CiAKQEAgLTE1MSw4ICsxNTEsOCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVk
SW50byhDb250YWluZXJOb2RlJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPcHRp
b25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgp
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1
aXJlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIGhhc1BsYWNlaG9s
ZGVyTGFiZWxPcHRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaAppbmRleCBlY2U1MTVkNDcwNDU1YjgwNTk0YjRlZDA4MTZlYzVkMTlkYjA3ZGVjLi4yMjRj
YzMzNGNhYmZkOGU5NzhjZGVmZGFhOTBhMDMyZmZmZDljYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIC8vIFVz
ZWQgdG8gb2J0YWluIGVpdGhlciBhIHNvbGlkIG9yIG91dHNldCBib3JkZXIgZGVjbCBhbmQgdG8g
ZGVhbCB3aXRoIHRoZSBmcmFtZSBhbmQgcnVsZXMgYXR0cmlidXRlcy4KICAgICB2aXJ0dWFsIGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICBlbnVtIFRhYmxlUnVsZXMgeyBVbnNldFJ1bGVzLCBOb25lUnVsZXMsIEdyb3Vwc1J1bGVz
LCBSb3dzUnVsZXMsIENvbHNSdWxlcywgQWxsUnVsZXMgfTsKICAgICBlbnVtIENlbGxCb3JkZXJz
IHsgTm9Cb3JkZXJzLCBTb2xpZEJvcmRlcnMsIEluc2V0Qm9yZGVycywgU29saWRCb3JkZXJzQ29s
c09ubHksIFNvbGlkQm9yZGVyc1Jvd3NPbmx5IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCmluZGV4IDNlNzk5YjdlNDhiNTgyMWFhNGE3MjIyN2ZlMGJhMTE3ZGVl
MTM5MjkuLjBjZmVlYjJmNDQ3NWIzZjFkZTViNTY2ZDMzMDhjNDcwYzc2NjNiNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC00MCwxMiArNDAsMTIgQEAg
cHVibGljOgogCiAgICAgYm9vbCBzaG91bGRXcmFwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fd3Jh
cCAhPSBOb1dyYXA7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2b2lkIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdDsKICAgICB2
b2lkIHNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBpbnQgdGV4dExlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkubGVuZ3RoKCk7IH0KLSAgICB2aXJ0dWFsIGludCBtYXhM
ZW5ndGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBtYXhMZW5ndGgoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2b2lkIHNldE1heExlbmd0aChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAvLyBG
b3IgVmFsaWRpdHlTdGF0ZQogICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkg
Y29uc3QgT1ZFUlJJREU7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgdG9vTG9uZygpIGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGlubmVyVGV4
dEVsZW1lbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVt
ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVk
KCk7CiAKQEAgLTc0LDQxICs3NCw0MSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Tm9uRGlydHlW
YWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXJFbGVtZW50
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpOwotICAg
IHZpcnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmlzRW1w
dHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIHBsYWNlaG9s
ZGVyRWxlbWVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFj
ZWhvbGRlclRleHQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJl
ZEZvcm1Db250cm9sKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9s
KCkgY29uc3QgeyByZXR1cm4gaXNSZXF1aXJlZCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzT3B0
aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFpc1JlcXVpcmVkRm9y
bUNvbnRyb2woKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBpc1JlcXVpcmVkKCk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc3Vi
dHJlZUhhc0NoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKSBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250
cm9sU3RhdGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNv
bnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSYsIFJlbmRlclN0eWxlJik7Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZv
cm1EYXRhTGlzdCYsIGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOworICAgIHZpcnR1
YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHls
ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVh
cmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cyk7CisgICAgdmly
dHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3MoKSBjb25zdCBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aAppbmRleCAyNzQ5NmI4YTJmZWI4NWYwZWU4Y2JjOWIyN2FlYTNlNTNiOTU2YmQ2Li5lM2M4ZTQ1
ZTFjNDFiOWU1MzBjNDgyZjBmOThkNWI5MjQyMDg2MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgcmVzdG9yZUNhY2hlZFNlbGVjdGlvbigpOwogICAgIGJvb2wg
aGFzQ2FjaGVkU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTZWxlY3Rpb25TdGFy
dCA+PSAwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCkgPSAwOwogCiAgICAgdm9pZCBz
ZXRMYXN0Q2hhbmdlV2FzTm90VXNlckVkaXQoKSB7IG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0ID0g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggYmEwZjVi
NGNiOWJkOGRmMjQzODBiYjg3NjQ2MjA2YjAzMjdkOGU0My4uNDE0MGMxYzVkMDE1Njc1YWUwZWFl
OGI2OWM0YjQzYTA2N2UzODc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKQEAgLTc0LDI0ICs3NCwyNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxWaWRlb0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiAj
aWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUmVuZGVyRWxl
bWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOworICAgIHZp
cnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJT
dHlsZSYpIE9WRVJSSURFOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRl
cmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVv
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNv
bnN0IHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRlbygpOyB9Ci0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c1ZpZGVvKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBoYXNWaWRlbygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigp
LT5oYXNWaWRlbygpOyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3Bs
YXlTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERv
Y3VtZW50KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzcGxheU1vZGUoRGlzcGxh
eU1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBzZXREaXNwbGF5TW9kZShEaXNwbGF5TW9kZSkgT1ZF
UlJJREU7CiAKICAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCBkNzcwYTAyY2ZiZGFjNDc5OTdkNDljZGRiYjI5M2JjYmRjMWQ0OWM4
Li43MGM4MjllNmU2NjY5MDNhYmYxZDNlMDJhOTgwZTQ3YjI1NGU5MWVlIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBzdHJva2VTdHlsZShHcmFwaGljc0NvbnRleHQqIGMpCisgICAgdmlydHVhbCB2b2lk
IHN0cm9rZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogYykgT1ZFUlJJREUKICAgICB7CiAgICAgICAg
IGMtPnNldFN0cm9rZVRoaWNrbmVzcyhtX2NhbnZhc0NvbnRleHQtPmxpbmVXaWR0aCgpKTsKICAg
ICAgICAgYy0+c2V0TGluZUNhcChtX2NhbnZhc0NvbnRleHQtPmdldExpbmVDYXAoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBl
cy5oCmluZGV4IDhkODQwZTVlMDFiYTA5NDkwOTI3Mzc5YmMyZjEwYWU4N2M0YWU3ZDcuLjdjNzg2
Zjg2MDA3NjhjMzA2ZjBiNTk0MTdmMDhiNzhkMDIwMWYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCkBAIC0xNjks
NyArMTY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24o
KSBjb25zdCA9IDA7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRBY3RpdmUoYm9vbCAvKmZsYWcq
LyA9IHRydWUsIGJvb2wgLypwYXVzZSovID0gZmFsc2UpIE9WRVJSSURFIEZJTkFMOworICAgIHZp
cnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCAvKmZsYWcqLyA9IHRydWUsIGJvb2wgLypwYXVzZSov
ID0gZmFsc2UpIE9WRVJSSURFIEZJTkFMOwogCiAgICAgdm9pZCBzdGFydFRpbWVyKCk7CiAgICAg
dm9pZCBzdG9wVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDIxMzQxNDI3MjI4YzQwNWNjNjFhODlmMjlmNWE5YTVm
MTY1MzhkOWMuLjNlYzA5NjNlNGRkYTU5MmY0ZWM3MGMzOTE2YzE2YmE4NDIzYTdiOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaApA
QCAtNDU1LDcgKzQ1NSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxl
Jik7CisgICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSYsIFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1h
Z2U+IGNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NwaW5CdXR0b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0
dG9uRWxlbWVudC5oCmluZGV4IDk2YTY2N2RhNzg4ZmY0ZTk3MmIxODZkMzkzYTYxOGE1YmZlZDky
NjIuLjRlMGFlOTNiZGNkYmYyZGFkNmI5ZmY1ZDljYzQ1MjdhZTQ4MTk2ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaApAQCAtNjksMTMgKzY5
LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQm
LCBTcGluQnV0dG9uT3duZXImKTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0
YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1
dHRvbkVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHNo
YWRvd0hvc3QoKSAmJiBzaGFkb3dIb3N0KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOyB9CiAg
ICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkT25seVBzZXVkb0NsYXNzKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpIE9WRVJSSURFOwogICAgIHZvaWQgZG9T
dGVwQWN0aW9uKGludCk7CiAgICAgdm9pZCBzdGFydFJlcGVhdGluZ1RpbWVyKCk7CkBAIC04Myw3
ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXBlYXRpbmdUaW1lckZpcmVkKFRpbWVyPFNw
aW5CdXR0b25FbGVtZW50PiopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkKGJvb2wgPSB0
cnVlKSBPVkVSUklERTsKICAgICBib29sIHNob3VsZFJlc3BvbmRUb01vdXNlRXZlbnRzKCk7Ci0g
ICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIFNwaW5CdXR0b25Pd25lciogbV9zcGluQnV0dG9uT3duZXI7
CiAgICAgYm9vbCBtX2NhcHR1cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggZjIzZDA5MzE2MTc0ZGRjMDYy
OTY1M2MwZTE3NDk0NTdjZWZiYmI5ZS4uZjJkMWJlZjc4MWMyNDAzOTQzMmZlZWQ4NjE3ZmRkMmUz
ODA0YTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRleHRDb250cm9sSW5uZXJDb250YWluZXI+IGNyZWF0ZShEb2N1bWVudCYp
OwogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJDb250YWluZXIoRG9jdW1lbnQmKTsK
LSAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwg
UmVuZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKIH07CiAKIGNsYXNzIFRleHRD
b250cm9sSW5uZXJFbGVtZW50IEZJTkFMIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTU5
LDExICs1OSwxMSBAQCBjbGFzcyBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQgRklOQUwgOiBw
dWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJF
bGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CisgICAg
dmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRl
clN0eWxlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBj
dXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzTW91
c2VGb2N1c2FibGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogfTsKQEAgLTcy
LDEyICs3MiwxMiBAQCBjbGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IEZJTkFM
IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKIAogcHJpdmF0
ZToKICAgICBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KERvY3VtZW50Jik7Ci0gICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogfTsKIApAQCAtODUsMTMgKzg1LDEzIEBAIGNsYXNzIFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uRWxlbWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bkVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6
CiAgICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50Jik7Ci0gICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaAppbmRl
eCAxY2MzNDI0NDhkZGNiOTUzNjRmZDEyZGQwMDQxYzA3YjdkNWVkYjJlLi40NTQ4MjYyMjg2NDZj
MzE3OGFhN2RlMmVhYTk0OTdjYzBmMDI0NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsK
ICAgICB9Ci0gICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisgICAgdmlydHVhbCB+QXVkaW9UcmFja0xp
c3QoKTsKIAogICAgIEF1ZGlvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAppbmRl
eCBiOTA5ZjBhY2IyNGFhYmFjNmY0YjFiNGM0M2I5NzUzYzI4MWMzNmY5Li40ODJlZTNlN2U0YmRm
MTljNDE3MzJhMGQxMDhmN2Y4Y2ZjNjQxNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0xpc3QoZWxlbWVudCwgY29udGV4dCkpOwog
ICAgIH0KLSAgICB+VGV4dFRyYWNrTGlzdCgpOworICAgIHZpcnR1YWwgflRleHRUcmFja0xpc3Qo
KTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
aW50IGdldFRyYWNrSW5kZXgoVGV4dFRyYWNrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5oCmluZGV4IDdkZGU2MjBhNWNjZjIwYWY4ZTJjNGUwNDkyYTNhNGUyOTZk
ZjUxMTQuLjkyYWE1Njg3ZjQ3ZmViYzU5ZDk3ZmM4ZGU5ZTZjNTAwY2U0YTc4MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNs
YXNzIFRyYWNrQmFzZTsKIAogY2xhc3MgVHJhY2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRyYWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJs
aWM6Ci0gICAgflRyYWNrTGlzdEJhc2UoKTsKKyAgICB2aXJ0dWFsIH5UcmFja0xpc3RCYXNlKCk7
CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBjb250YWlucyhUcmFja0Jhc2UqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaAppbmRleCBjZmU1ZDM3YmZiNjVkMmE4OWY5NGRiMjYxNTkwYzY1MGQy
ZmZhNTM3Li43OWZhYzYzNjUzMWMyZGUzOWZlNTkyNDY0MGY0MWU1MGIwODI2OGNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC05NywxNCArOTcsMTQg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNy
ZWF0ZShpbnQpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNy
ZWF0ZShkb3VibGUpOwogCi0gICAgdmlydHVhbCBib29sIGFzQm9vbGVhbihib29sKiBvdXRwdXQp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGxvbmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGFzTnVtYmVyKGludCogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIodW5zaWduZWQgaW50KiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBh
c0Jvb2xlYW4oYm9vbCogb3V0cHV0KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBhc051bWJlcihpbnQqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdCBP
VkVSUklERTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGJv
b2wgdmFsdWUpIDogSW5zcGVjdG9yVmFsdWUoVHlwZUJvb2xlYW4pLCBtX2Jvb2xWYWx1ZSh2YWx1
ZSkgeyB9CkBAIC0xMjIsOSArMTIyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7ICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURF
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEluc3BlY3RvclN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKSA6IEluc3BlY3RvclZhbHVlKFR5cGVTdHJpbmcpLCBtX3N0cmluZ1ZhbHVlKHZhbHVl
KSB7IH0KQEAgLTE0MSwxMyArMTQxLDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERpY3Rpb25h
cnk6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgIHR5cGVkZWYgRGljdGlvbmFyeTo6Y29uc3RfaXRl
cmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBhc09iamVjdCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGFzT2JqZWN0KCkgT1ZFUlJJREU7CiAgICAgSW5zcGVjdG9yT2JqZWN0KiBvcGVuQWNjZXNz
b3JzKCk7CiAKIHByb3RlY3RlZDoKLSAgICB+SW5zcGVjdG9yT2JqZWN0QmFzZSgpOworICAgIHZp
cnR1YWwgfkluc3BlY3Rvck9iamVjdEJhc2UoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhc09iamVj
dChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNP
YmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCkgT1ZFUlJJREU7CiAKICAgICB2
b2lkIHNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKTsKICAgICB2b2lkIHNldE51
bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSk7CkBAIC0xNzMsNyArMTczLDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgdm9pZCByZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZp
cnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAg
ICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CkBAIC0yMjUsMTQgKzIy
NSwxNCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVl
PiA+OjppdGVyYXRvciBpdGVyYXRvcjsKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+ID46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhc0FycmF5KCk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhc0FycmF5KCkgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgpOyB9CiAKIHByb3RlY3RlZDoK
LSAgICB+SW5zcGVjdG9yQXJyYXlCYXNlKCk7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQXJyYXlC
YXNlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBvdXRwdXQpOworICAgIHZpcnR1YWwgYm9vbCBhc0FycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4qIG91dHB1dCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHB1c2hCb29sZWFuKGJvb2wpOwogICAg
IHZvaWQgcHVzaEludChpbnQpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByb3RlY3RlZDoKIAogICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGdldChzaXplX3QgaW5kZXgpOwogCi0gICAgdmly
dHVhbCB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdCBPVkVSUklE
RTsKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KICAg
ICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAppbmRleCA5MjAzNzQxYTFiOWRkYzM5ZDU5MzIwNzdjNjdhYTRkMjYy
NTllZjc5Li5mZjc5YzU4YzYyYTZmMTM5NjYxY2Y1NmQ3NmIyNTg0MDhmNDNkNjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC02NCw3MCArNjQsNzAgQEAgY2xhc3MgRW1w
dHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbXB0eUNocm9tZUNsaWVudCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY2hyb21lRGVzdHJveWVkKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0UmVjdCB3aW5kb3dSZWN0KCkgT1ZFUlJJREUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KIAot
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0K
KyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBwYWdlUmVjdCgpIE9WRVJSSURFIHsgcmV0dXJuIEZsb2F0
UmVjdCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdW5mb2N1cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCB0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQqKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoRWxlbWVudCopIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKikgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
KSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3coKSB7IH0KKyAgICB2aXJ0dWFs
IFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBPVkVSUklERSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3coKSBPVkVSUklERSB7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHJ1bk1vZGFsKCkgeyB9CisgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHRvb2xiYXJzVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkgeyB9Ci0gICAgdmly
dHVhbCBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgbWVudWJhclZpc2libGUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgbWVudWJhclZpc2libGUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHNldFJlc2l6YWJsZShib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVz
aXphYmxlKGJvb2wpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRN
ZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERSB7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29u
c3QgU3RyaW5nJiwgRnJhbWUqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNh
blJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJp
bmcmLCBGcmFtZSopIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVdpbmRvd1Nvb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29u
KCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZy
YW1lKiwgY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRD
b25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBydW5K
YXZhU2NyaXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3Ry
aW5nJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SW50ZXJydXB0SmF2YVNjcmlwdCgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01l
bnVXcml0aW5nRGlyZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVX
cml0aW5nRGlyZWN0aW9uKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJp
bmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcm
KSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgS2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1v
ZGUoKSB7IHJldHVybiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7IH0KKyAgICB2aXJ0dWFsIEtleWJv
YXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCkgT1ZFUlJJREUgeyByZXR1cm4gS2V5Ym9hcmRBY2Nl
c3NEZWZhdWx0OyB9CiAKLSAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBj
b25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVz
aXplclJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRSZWN0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgSW50UmVjdCYsIGJvb2wpIE9WRVJS
SURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhj
b25zdCBJbnRSZWN0JiwgYm9vbCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYsIGJvb2wpIE9WRVJSSURF
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJ
bnRTaXplJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERSB7IH0KICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Ny
b2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JikgeyB9CiAjZW5kaWYKQEAgLTEzNywyMiArMTM3
LDIyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhj
b25zdCBJbnRQb2ludCYgcCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gcDsgfQogICAgIHZpcnR1
YWwgSW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHI7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bVBhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRl
bnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3QgeyB9CisgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZy
YW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0
IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBwcmludChGcmFtZSopIE9WRVJSSURFIHsgfQogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3Qg
U3RyaW5nJiwgRGF0YWJhc2VEZXRhaWxzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgRGF0YWJhc2VEZXRhaWxzKSBPVkVS
UklERSB7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdp
biosIGludDY0X3QpIE9WRVJSSURFIHsgfQogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQp
CiAgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hvb3Nlciop
IHsgfQpAQCAtMTY3LDM5ICsxNjcsMzkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgRmlsZUljb25Mb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgTm9kZSopIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkQmx1cihjb25zdCBOb2RlKikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGVsZW1lbnREaWRGb2N1cyhjb25zdCBOb2RlKikgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGVsZW1lbnREaWRCbHVyKGNvbnN0IE5vZGUqKSBPVkVSUklERSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgT1ZFUlJJREUg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJlY3Qm
KSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdCBPVkVSUklERSB7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBH
cmFwaGljc0xheWVyKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdp
bmdTeW5jaHJvbml6YXRpb24oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyRmx1c2goKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNz
TGF5ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKSBPVkVSUklERSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBPVkVSUklE
RSB7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIEFYU3Rh
cnRGcmFtZUxvYWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgQVhGaW5pc2hGcmFtZUxvYWQoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBBWFN0YXJ0RnJhbWVMb2FkKCkgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIEFYRmluaXNoRnJhbWVMb2FkKCkgT1ZFUlJJREUgeyB9CiAj
ZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91
Y2hFdmVudHMoYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29s
KSBPVkVSUklERSB7IH0KICNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2
ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSBPVkVSUklERSB7IH0KICAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMo
Y29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JikgeyB9Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50
Pj4mKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hh
bmdlcygpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiAvLyBGSVhNRSAoYnVnIDEx
NjIzMyk6IEdldCByaWQgb2YgRW1wdHlGcmFtZUxvYWRlckNsaWVudC4gSXQgaXMgYSB0cmF2ZXN0
eS4KQEAgLTIwOSwxNjIgKzIwOSwxNjEgQEAgY2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6
IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgfkVtcHR5RnJhbWVMb2FkZXJDbGllbnQoKSB7ICB9
Ci0gICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBh
c3NlcnRpb25zCisgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9ucwogCi0gICAgdmlydHVhbCB2
b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBmb3JjZUxheW91dCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5v
bkhUTUwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50
TG9hZGVyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCkgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIE9WRVJS
SURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hlZEZyb21QYXJlbnQzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVu
dDIoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50Mygp
IE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2Fu
Y2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFIHsgfQogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdmlydHVhbCBib29sIGNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUHJvdGVjdGlvblNwYWNlJikgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVu
dExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGludCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91
YmxlLCBkb3VibGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0
ZVdpdGhpblBhZ2UoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3Rh
dGVXaXRoaW5QYWdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVX
aXRoaW5QYWdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9j
dW1lbnRMb2FkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVz
KSB7IH0KLQotICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNo
b3coKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KSBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRv
dWJsZSwgZG91YmxlKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURF
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBPVkVSUklE
RSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKEljb25UeXBlKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgT1ZFUlJJ
REUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aERvY3VtZW50TG9hZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaExvYWQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
YXlvdXQoTGF5b3V0TWlsZXN0b25lcykgT1ZFUlJJREUgeyB9CisKKyAgICB2aXJ0dWFsIEZyYW1l
KiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgT1ZFUlJJREUgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lG
dW5jdGlvbikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYsIEZyYW1l
UG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5j
dGlvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgT1ZFUlJJREUgeyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zp
c2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dy
ZXNzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRp
b24oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90
aWZpY2F0aW9uKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90
aWZpY2F0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NTdGFy
dGVkTm90aWZpY2F0aW9uKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9n
cmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpIE9WRVJSSURFIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgT1ZFUlJJREUg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgeyBVTlVTRURfUEFS
QU0oc3VnZ2VzdGVkTmFtZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmco
KSkgT1ZFUlJJREUgeyBVTlVTRURfUEFSQU0oc3VnZ2VzdGVkTmFtZSk7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgT1ZFUlJJREUgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNo
YXIqLCBpbnQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IFJl
c291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9u
KHRydWUpOyByZXR1cm4gZXJyb3I7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIs
IDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
ICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xp
Y3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBSZXNvdXJjZUVy
cm9yKCIiLCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFIHsgUmVzb3VyY2VFcnJvciBl
cnJvcigiIiwgMCwgIiIsICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVy
biBlcnJvcjsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwg
IiIsICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigi
IiwgMCwgIiIsICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KIAotICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
eyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotICAgIHZpcnR1YWwgUmVz
b3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJl
c291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQorICAgIHZpcnR1
YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsg
fQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
ICIiLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxv
YWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3Vy
Y2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQogCi0gICAgdmlydHVhbCBib29sIHNob3VsZEZhbGxC
YWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGVBc0hUTUwoY29uc3QgU3RyaW5nJikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlz
dHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJp
bmcmKSBjb25zdCB7IHJldHVybiAiIjsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlN
RVR5cGVBc0hUTUwoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29u
c3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiAiIjsgfQogCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZENv
bXBsZXRlZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSB7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgVVJMJikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lk
IHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgT1ZFUlJJREUgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFVSTCYpIHsgcmV0dXJuICIiOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFVSTCYpIE9WRVJSSURFIHsgcmV0dXJuICIiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSB7
IH0gICAgCisgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFNhdmVUb1BhZ2VDYWNoZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0
b3JlRnJvbVBhZ2VDYWNoZSgpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5UmVkaXJlY3RMaW5rcygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlz
dG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9y
eUl0ZW1Gb3JQYWdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0o
SGlzdG9yeUl0ZW0qKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFVSTCYsIGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5KCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlS
ZWRpcmVjdExpbmtzKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9I
aXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9y
eUl0ZW0qKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IElu
dFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3Jl
YXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxlbWVu
dCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZU1lZGlh
UGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dNZWRp
YVBsYXllclByb3h5UGx1Z2luKFdpZGdldCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoaWRlTWVk
aWFQbGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgT1ZFUlJJREUgeyB9CiAjZW5k
aWYKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUo
KTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURFIHsgcmV0dXJu
IE9iamVjdENvbnRlbnRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlh
VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0IHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVu
dEF2YWlsYWJsZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmly
c3ROYXZpZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCkgT1ZFUlJJREUgeyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgdmlydHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3Rl
T2JqZWN0KCkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSog
d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3QgeyByZXR1cm4gcmVzcG9uc2U7IH0KKyAgICB2
aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBPVkVS
UklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxs
Q2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIE5TQ2FjaGVkVVJM
UmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdCBPVkVSUklERSB7IHJldHVybiByZXNwb25zZTsgfQog
I2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIEZJWE1F
OiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5n
Q29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBPVkVSUklERTsKQEAgLTM3NCwxOCAr
MzczLDE4IEBAIHB1YmxpYzoKIAogY2xhc3MgRW1wdHlUZXh0Q2hlY2tlckNsaWVudCA6IHB1Ymxp
YyBUZXh0Q2hlY2tlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEVy
YXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVu
dChjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0
cmluZyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQsIGludCosIGludCopIHsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9D
b3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0
IFVDaGFyKiwgaW50LCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4
dENoZWNraW5nVHlwZSkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpIE9WRVJSSURF
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhcios
IGludCwgaW50KiwgaW50KikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZT
dHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCosIGlu
dCopIE9WRVJSSURFIHsgfQogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRD
aGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRD
aGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIE9WRVJSSURFIHsg
fTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4dENoZWNraW5nUmVxdWVzdD4pIE9WRVJSSURFOwogfTsK
IApAQCAtMzk0LDEwNyArMzkzLDEwMyBAQCBjbGFzcyBFbXB0eUVkaXRvckNsaWVudCA6IHB1Ymxp
YyBFZGl0b3JDbGllbnQgewogcHVibGljOgogICAgIEVtcHR5RWRpdG9yQ2xpZW50KCkgeyB9CiAg
ICAgdmlydHVhbCB+RW1wdHlFZGl0b3JDbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURlc3Ryb3llZCgpIHsgfQotCi0gICAgdmlydHVhbCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJh
bmdlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKSB7IH0KLSAgICB2
aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIHsgcmV0dXJuIC0xOyB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSos
IEVkaXRvckluc2VydEFjdGlvbikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlv
bikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRSYW5nZShSYW5nZSosIFJhbmdlKiwgRUFmZmluaXR5LCBib29sKSB7IHJldHVybiBmYWxzZTsg
fQotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0eVNldCos
IFJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJh
bmdlQWZ0ZXJEZWxldGUoUmFuZ2UqLCBSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKEZyYW1lKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmco
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJh
bmdlKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+Jikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBPVkVSUklERSB7IH0KKworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIE9W
RVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hl
Y2tpbmcoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9n
Z2xlR3JhbW1hckNoZWNraW5nKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBpbnQgc3BlbGxD
aGVja2VyRG9jdW1lbnRUYWcoKSBPVkVSUklERSB7IHJldHVybiAtMTsgfQorCisKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKikgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopIE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoTm9k
ZSosIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIFJhbmdl
KiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJhbmdlKiwgUmFuZ2UqLCBFQWZm
aW5pdHksIGJvb2wpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgUmFuZ2UqKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShSYW5nZSosIFJhbmdlKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5n
ZSosIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIE9WRVJS
SURFIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxV
bmRvU3RlcD4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRv
UmVkb09wZXJhdGlvbnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJh
dGlvbnMoKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1l
KiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCB7
IHJldHVybiBkZWZhdWx0VmFsdWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBk
ZWZhdWx0VmFsdWUpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5k
bygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNh
blJlZG8oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHVuZG8oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVkbygpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB1bmRvKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChLZXli
b2FyZEV2ZW50KikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUlucHV0TWV0
aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50KikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHRleHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50KikgeyB9Ci0gICAgdmlydHVhbCBib29s
IGRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiwgS2V5Ym9hcmRFdmVudCopIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0
RmllbGQoRWxlbWVudCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0
QXJlYShFbGVtZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRp
dGluZyhFbGVtZW50KikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERp
ZEVuZEVkaXRpbmcoRWxlbWVudCopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0
RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZlbnQq
KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJl
RGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopIE9WRVJSSURFIHsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIHZpcnR1YWwgdm9pZCBtYXJrZWRUZXh0QWJhbmRvbmVkKEZyYW1l
KikgeyB9Ci0KLSAgICB2aXJ0dWFsIE5TU3RyaW5nKiB1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCop
IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIERvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJh
Z21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBWZWN0b3I8UmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYpIHsgcmV0dXJuIDA7IH07Ci0gICAgdmlydHVhbCB2b2lk
IHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgeyB9OwotICAgIHZpcnR1YWwg
TlNVUkwqIGNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFs
IE5TVVJMKiBjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNTdHJpbmcqKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBOU1N0cmluZyogdXNlclZpc2libGVTdHJpbmcoTlNVUkwqKSBPVkVSUklERSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdt
ZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVjdG9yPFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+PiYpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH07CisgICAgdmlydHVh
bCB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9
OworICAgIHZpcnR1YWwgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIE9WRVJSSURFIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5TVVJMICpjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNT
dHJpbmcqKSBPVkVSUklERSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQp
Ci0gICAgdmlydHVhbCB2b2lkIHVwcGVyY2FzZVdvcmQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
bG93ZXJjYXNlV29yZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjYXBpdGFsaXplV29yZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB1cHBlcmNhc2VXb3JkKCkgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGxvd2VyY2FzZVdvcmQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y2FwaXRhbGl6ZVdvcmQoKSBPVkVSUklERSB7IH0KICNlbmRpZgogCiAjaWYgVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQotICAgIHZpcnR1YWwgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1Bh
bmVsKGJvb2wpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dp
bmcoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVTbWFydEluc2Vy
dERlbGV0ZSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21h
dGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCkgeyB9Ci0gICAgdmlydHVhbCBib29s
IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNl
bWVudCgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0
aXR1dGlvbnNQYW5lbChib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3Vic3Rp
dHV0aW9uc1BhbmVsSXNTaG93aW5nKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbigpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbigpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKSBPVkVSUklE
RSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xl
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgT1ZFUlJJREUgeyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShERUxFVElPTl9VSSkKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0RlbGV0ZUlu
dGVyZmFjZShIVE1MRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKSBPVkVSUklERSB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCBib29s
IHNob3VsZFNob3dVbmljb2RlTWVudSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIHNob3VsZFNob3dVbmljb2RlTWVudSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKLSAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiAmbV90
ZXh0Q2hlY2tlckNsaWVudDsgfQorICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRD
aGVja2VyKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJDbGllbnQ7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3BlbGxp
bmdVSUlzU2hvd2luZygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFy
RGV0YWlsJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBzcGVsbGluZ1VJSXNTaG93aW5nKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2V0SW5wdXRNZXRob2RTdGF0ZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wpIE9WRVJSSURFIHsgfQogCiBwcml2YXRlOgogICAgIEVtcHR5
VGV4dENoZWNrZXJDbGllbnQgbV90ZXh0Q2hlY2tlckNsaWVudDsKQEAgLTUwNiwyOSArNTAxLDI4
IEBAIGNsYXNzIEVtcHR5Q29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGll
bnQgewogcHVibGljOgogICAgIEVtcHR5Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KICAgICB2aXJ0
dWFsIH5FbXB0eUNvbnRleHRNZW51Q2xpZW50KCkgeyAgfQotICAgIHZpcnR1YWwgdm9pZCBjb250
ZXh0TWVudURlc3Ryb3llZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ry
b3llZCgpIE9WRVJSSURFIHsgfQogCiAjaWYgVVNFKENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVO
VVMpCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBh
c3NPd25QdHI8Q29udGV4dE1lbnU+KSBPVkVSUklERTsKICNlbHNlCi0gICAgdmlydHVhbCBQbGF0
Zm9ybU1lbnVEZXNjcmlwdGlvbiBnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0
TWVudSopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVudURlc2NyaXB0aW9u
IGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKENvbnRleHRNZW51KikgT1ZFUlJJREUgeyBy
ZXR1cm4gMDsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENv
bnRleHRNZW51KikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgVVJMJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlJbWFnZVRvQ2xpcGJvYXJkKGNv
bnN0IEhpdFRlc3RSZXN1bHQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2ds
ZShjb25zdCBGcmFtZSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnko
RnJhbWUqKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgVVJMJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29n
bGUoY29uc3QgRnJhbWUqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5E
aWN0aW9uYXJ5KEZyYW1lKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIGlzU3BlYWtp
bmcoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzcGVhayhj
b25zdCBTdHJpbmcmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5n
KCkgT1ZFUlJJREUgeyB9CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCB2b2lkIHNl
YXJjaFdpdGhTcG90bGlnaHQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3Rs
aWdodCgpIE9WRVJSSURFIHsgfQogI2VuZGlmCiAKICNpZiBVU0UoQUNDRVNTSUJJTElUWV9DT05U
RVhUX01FTlVTKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgT1ZFUlJJREUgeyB9CiAjZW5kaWYKIH07CiAj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC01MzksMTIgKzUzMywxMiBAQCBjbGFz
cyBFbXB0eURyYWdDbGllbnQgOiBwdWJsaWMgRHJhZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgRW1w
dHlEcmFnQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB+RW1wdHlEcmFnQ2xpZW50KCkge30KLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBDbGlw
Ym9hcmQqKSB7IH0KLSAgICB2aXJ0dWFsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNr
Rm9yRHJhZyhEcmFnRGF0YSopIHsgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0K
LSAgICB2aXJ0dWFsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2lu
dChjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Ob25lOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdE
YXRhKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCopIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tG
b3JEcmFnKERyYWdEYXRhKikgT1ZFUlJJREUgeyByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Tm9uZTsgfQorICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFz
a0ZvclBvaW50KGNvbnN0IEludFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gRHJhZ1NvdXJjZUFj
dGlvbk5vbmU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZVJlZiwgY29u
c3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCkg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkg
T1ZFUlJJREUgeyB9CiB9OwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKQEAgLTU1
NCwxNCArNTQ4LDE0IEBAIHB1YmxpYzoKICAgICBFbXB0eUluc3BlY3RvckNsaWVudCgpIHsgfQog
ICAgIHZpcnR1YWwgfkVtcHR5SW5zcGVjdG9yQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRl
c3Ryb3llZCgpIE9WRVJSSURFIHsgfQogICAgIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIHsgfQorICAgIHZpcnR1
YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBi
cmluZ0Zyb250ZW5kVG9Gcm9udCgpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGhp
Z2hsaWdodCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBo
aWRlSGlnaGxpZ2h0KCkgT1ZFUlJJREUgeyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZUNsaWVu
dCA6IHB1YmxpYyBEZXZpY2VDbGllbnQgewpAQCAtNTcyLDE2ICs1NjYsMTYgQEAgcHVibGljOgog
CiBjbGFzcyBFbXB0eURldmljZU1vdGlvbkNsaWVudCA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGll
bnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlv
bkNvbnRyb2xsZXIqKSB7IH0KLSAgICB2aXJ0dWFsIERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rp
b24oKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZU1vdGlvbkNv
bnRyb2xsZXJEZXN0cm95ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihE
ZXZpY2VNb3Rpb25Db250cm9sbGVyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBEZXZpY2VN
b3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgT1ZFUlJJREUg
eyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU9yaWVudGF0aW9uQ2xpZW50IDogcHVibGljIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSB7IH0KLSAgICB2aXJ0dWFsIERl
dmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIERldmljZU9yaWVudGF0aW9uRGF0
YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBPVkVSUklE
RSB7IH0KIH07CiAKIHZvaWQgZmlsbFdpdGhFbXB0eUNsaWVudHMoUGFnZTo6UGFnZUNsaWVudHMm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggYTUxM2I5YTNmZmJlODA3ZGQ4
NThmM2Q3NjY2NGIyZjNkZDkzY2IxYy4uMjcxZTk4Mjc1M2M4NzFjMWU1MjJkYmEyMjFlOTAzODhj
OTQ3MGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCk7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZl
bnQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGMzMWYy
N2VkZjk3NDdlNGRmMTVhNWE5Yzg1MTc5NzY2ZjFkMDBhYmEuLmQwZGZjNjAyYjE4NTkxNTkwYzM0
MzQ3NWNhOGUwODcwNGI0ZjU2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFN0b3BCdWZmZXJpbmdEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkgeyB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoZGF0YSwgbGVu
Z3RoKTsgfSAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCdWZmZXJpbmdEYXRhKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkgIE9WRVJSSURFIHsgd2lsbFN0
b3BCdWZmZXJpbmdEYXRhKGRhdGEsIGxlbmd0aCk7IH0gCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgT1ZFUlJJREUgeyByZXR1cm4g
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBPVkVSUklERSB7IGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOyB9IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5j
ZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIE9WRVJSSURFIHsgZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsgfSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKaW5kZXggMmI5ZjVkNGVmNjdjY2E5MmE0NDY3Y2EzMmQwNjg4NjhiZTY0
YzVkOS4uOGU1YTg4NjZkOTNkZGQ4NDE5YWUyMzk0MThlNDk0ZTBmMTdlN2Q1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflN1YnJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIGNhbmNl
bElmTm90RmluaXNoaW5nKCk7Ci0gICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIo
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIE9WRVJSSURFOwogICAg
IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCA1OWIzYmRiYzdhNmE2NTllMWE1NGY5MTM0N2M3MjBjZmVhNmJkM2FlLi43MzU3
YjQ1ZmE2YWE3ZDBjZDExMzcwYzQ1ZmE2MzdkYjNlZjgwNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTA5OCw3ICsxMDk4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIHZvaWQgZmlyZWQoKQorICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpIE9WRVJSSURFCiAgICAg
ewogICAgICAgICBtX2NhY2hlR3JvdXAtPmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXplKCk7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzOwpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENhbGxDYWNoZUxpc3RlbmVyVGFzayhsb2FkZXIsIGV2ZW50SUQs
IHByb2dyZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSBPVkVS
UklERQogICAgIHsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCAzMjcwODQ5ZDhlZTAxOTE1NGEy
ZDViOWYwZWRjYWRhNTdlMGFkM2Q3Li5hNTAxNjczYTFlZWFhMjczM2I1MzEzYWQwZDU0YTMxMDg3
ZmMzNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCA6IFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBcHBsaWNhdGlvbkNhY2hlR3JvdXApOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwg
Ym9vbCBpc0NvcHkgPSBmYWxzZSk7ICAgIAotICAgIH5BcHBsaWNhdGlvbkNhY2hlR3JvdXAoKTsK
KyAgICB2aXJ0dWFsIH5BcHBsaWNhdGlvbkNhY2hlR3JvdXAoKTsKICAgICAKICAgICBlbnVtIFVw
ZGF0ZVN0YXR1cyB7IElkbGUsIENoZWNraW5nLCBEb3dubG9hZGluZyB9OwogCkBAIC0xMDcsMTIg
KzEwNywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gRm9yIG5vcm1hbCByZXNvdXJjZSBsb2FkaW5n
LCBXZWJLaXQgY2xpZW50IGlzIGFza2VkIGFib3V0IGVhY2ggcmVzb3VyY2UgaW5kaXZpZHVhbGx5
LiBTaW5jZSBhcHBsaWNhdGlvbiBjYWNoZSBkb2VzIG5vdCBiZWxvbmcgdG8gYW55IHBhcnRpY3Vs
YXIgZG9jdW1lbnQsCiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVudCBjYWxsYmFjayBjYW5ub3Qg
YmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0IGVuYWJsZXMgYXBwbGljYXRp
b24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlhbCBzdG9yYWdlLgotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoUmVzb3VyY2VIYW5kbGUqKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91Ymxl
IGZpbmlzaFRpbWUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciosIGludCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNo
VGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVN
YW5pZmVzdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVNYW5pZmVzdERhdGEoY29uc3QgY2hhciosIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCBjODZkMmM4
MGU3NzdkMzgzOTNjZWY5NGMzYjUxMGQyMDZmMWU1ZGQ3Li5kNjYxMTgwZTVlYzYxNDA1NzI3Mjk4
MDBlZTA2ZjRjNjI4ZDAwM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgVVJM
OwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZSBGSU5BTCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01BcHBsaWNhdGlvbkNhY2hlPiBjcmVhdGUoRnJhbWUq
IGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NQXBwbGljYXRpb25DYWNoZShmcmFtZSkp
OyB9Ci0gICAgfkRPTUFwcGxpY2F0aW9uQ2FjaGUoKSB7IEFTU0VSVCghbV9mcmFtZSk7IH0KKyAg
ICB2aXJ0dWFsIH5ET01BcHBsaWNhdGlvbkNhY2hlKCkgeyBBU1NFUlQoIW1fZnJhbWUpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yUGFnZUNhY2hlKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSopIE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oCmluZGV4IGRiYWU5ZGMxYmI5NzE1NjA0YjEwZTk3ODBhY2RhYThjNGY3MDQ0
NmUuLjNmZjViOTJhODVlMzI1ODNlMTIzYzc1NDVhM2E4YzAyMDA0MjE3MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmFuZ2UqKTsKIAotICAgIHZpcnR1YWwgVHlwZSB0
eXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJhd0RhdGFSZXByZXNlbnRhdGlvbigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRl
eCA3M2JmNzg3M2RmMmMxZDIxYzhhZmZhNDE1OGU0M2RjZDg1OTVhMjQ0Li5iMTZkY2U2ODY4OTM3
MWM5ZTNhOTgwN2Q5OWQxYjViODZkOGYzMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
T1ZFUlJJREU7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja05v
dGlmeSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKSBPVkVSUklERTsKIAog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBT
dHJpbmcgbV9kZWNvZGVkU2hlZXRUZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKaW5kZXggZmFlMDAzOTM0YTYwMDBlZjMyYzNkZGFlZTkzOGEzNmQ4MGVkMzM5MS4u
NTQ4MTc5ZmRhZGJiMDczNTM2NmZhOWYzM2NkMzE3ZGNlNDU5ZTE2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DYWNoZWRGb250KCk7CiAKICAgICB2b2lkIGJlZ2luTG9hZElmTmVlZGVkKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBkbCk7Ci0gICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0
IHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3RpbGxOZWVk
c0xvYWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAg
ICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKCk7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGlj
LCBGb250T3JpZW50YXRpb24gPSBIb3Jpem9udGFsLCBGb250V2lkdGhWYXJpYW50ID0gUmVndWxh
cldpZHRoLCBGb250UmVuZGVyaW5nTW9kZSA9IE5vcm1hbFJlbmRlcmluZ01vZGUpOwpAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tOb3RpZnkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKaW5kZXggMGFlNjQxOGNhMmZlNGZmNGY1YzYy
YjdhMTIwZmU0ODI3YjM4NGQ1Yi4uZDhmNDFiNjk5ODk3MTdmNGVkMDQyNDc5ZmQzOGI4NDk2MjJh
NDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVu
dC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENhY2hlZEZvbnRDbGllbnQgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZEZvbnRDbGll
bnQoKSB7IH0KICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlw
ZSgpIHsgcmV0dXJuIEZvbnRUeXBlOyB9Ci0gICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVu
dFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7
IH0KKyAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5
cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQqKSB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggNzY1Y2Q2M2ZiZGRh
OTJmMzc5ODVmNjhmNjMwN2VjNTUxYmNmOGY0ZS4uNWJiY2IyYTI5OWQzZGZhNzE3ZDhhMmQ5Yzhh
YzQ2ZjM2YTMxMWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlQ2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2VDbGllbnQg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNh
Y2hlZEltYWdlQ2xpZW50KCkgeyB9CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlw
ZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBJbWFnZVR5cGU7IH0KLSAgICB2aXJ0dWFsIENhY2hl
ZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBl
eHBlY3RlZFR5cGUoKTsgfQorICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJl
c291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgp
OyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbmV2ZXIgYSBmcmFtZSBvZiBhbiBpbWFnZSBjaGFuZ2Vz
LCBlaXRoZXIgYmVjYXVzZSB3ZSBnb3QgbW9yZSBkYXRhIGZyb20gdGhlIG5ldHdvcmsgb3IKICAg
ICAvLyBiZWNhdXNlIHdlIGFyZSBhbmltYXRpbmcuIElmIG5vdCBudWxsLCB0aGUgSW50UmVjdCBp
cyB0aGUgY2hhbmdlZCByZWN0IG9mIHRoZSBpbWFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudENsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgKaW5kZXggYjBlYjVhOWYz
MTk5NGQ3MDllMDA0YWU1YjEyNzRlN2FkMzRhODBlMC4uOTA0OTM3ZTc2ZDE4MzhhYTVjMTgyMDZj
ZTEyYTg3OTM0NzgxMzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgQ2Fj
aGVkU1ZHRG9jdW1lbnRDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50KCkgeyB9CiAgICAgc3Rh
dGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBTVkdE
b2N1bWVudFR5cGU7IH0KLSAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNv
dXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQorICAgIHZp
cnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0
eWxlU2hlZXRDbGllbnQuaAppbmRleCAwMGNjNTQ2OTYwOWUzYjEyZjJlMGIwYTUxOWM2ZjliZWQ5
YzcyOGI3Li4yZjU0OTk0N2E3NjY5MmUyOTUwNTJmNmNlNzQ0OGE4OTUyZjc4YTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVudCA6IHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU3R5
bGVTaGVldENsaWVudCgpIHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUg
ZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gU3R5bGVTaGVldFR5cGU7IH0KLSAgICB2aXJ0dWFsIENh
Y2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJldHVy
biBleHBlY3RlZFR5cGUoKTsgfQorICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBl
IHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGV4cGVjdGVkVHlw
ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAv
KiBocmVmICovLCBjb25zdCBVUkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0IFN0cmluZyYgLyogY2hh
cnNldCAqLywgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgVVJMJiAv
KiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIHNoZWV0ICovKSB7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCAy
NjRkNjYzOGI1Mzg2YmMzZmViNzQwZTBkMTgxNjA3MzIyYzY1MTU5Li45YjhhYTBlZDkzZmYwYjJm
ZjcxNDZhMWZlMWVkZWFlYzY3MTI3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29uc3QgeyByZXR1cm4g
bV9zaGVldDsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tO
b3RpZnkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCkgT1ZFUlJJREU7CiAK
ICAgICAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCA1NWJkZmQ2NWQ3OTU2ZTU3ZmY1
NDY0YWJhZGYzY2NkNWY0YmI5MzYxLi40NjQ0MDBmZjliM2UwMTM2Yzg3YzNiNTFhZTRkYmQ3ZDA2
MmY3ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IFdpbmRv
d0ZlYXR1cmVzOwogY2xhc3MgQ2hyb21lIDogcHVibGljIEhvc3RXaW5kb3cgewogcHVibGljOgog
ICAgIENocm9tZShQYWdlJiwgQ2hyb21lQ2xpZW50Jik7Ci0gICAgfkNocm9tZSgpOworICAgIHZp
cnR1YWwgfkNocm9tZSgpOwogCiAgICAgQ2hyb21lQ2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA4ODNlYmUyNzNiYzRmZTg5
MDk0MzI0NmI3ODI4MWQ0N2RlNjdkNmZiLi5lMGQxMzEyMzNiZjc3Y2Q4ZWI1MGMxZWM4NDYxYjFj
M2U5NGMwMjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBET01XaW5kb3dF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQogCi0gICAgICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOworICAgICAgICB2
aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKSBPVkVSUklERTsKIAogICAgICAgICB2b2lk
IHJlZ2lzdGVyUHJvcGVydHkoRE9NV2luZG93UHJvcGVydHkqKTsKICAgICAgICAgdm9pZCB1bnJl
Z2lzdGVyUHJvcGVydHkoRE9NV2luZG93UHJvcGVydHkqKTsKQEAgLTI3NSw5ICsyNzUsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gRXZlbnRzCiAgICAgICAgIC8vIEV2ZW50
VGFyZ2V0IEFQSQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKTsKLSAgICAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1
cmUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAg
ICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgT1ZF
UlJJREU7CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBP
VkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkg
T1ZFUlJJREU7CiAKICAgICAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAg
ICAgICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gcHJwVGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmlu
ZGV4IGI3YmYwYTBkNzJkYmIxMmI0ZDYyZDk2NTU3YzZiMGQ0ZmQ0MzlmZTUuLjVhZWVjODBmMjNj
ZDc5NWM1NzM4MmNjNjQ1YWIwOWZhODY5MzVhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApA
QCAtNTA5LDcgKzUwOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGFibGVB
cmVhU2V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdp
bGxQYWludCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlVGhhdENvbnRlbnRB
cmVhV2lsbFBhaW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIHNob3VsZFVzZUxvYWRU
aW1lRGVmZXJyZWRSZXBhaW50RGVsYXkoKSBjb25zdDsKICAgICB2b2lkIGRlZmVycmVkUmVwYWlu
dFRpbWVyRmlyZWQoVGltZXI8RnJhbWVWaWV3PiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKaW5kZXggYmY0NzFjZTcwNjQwMjBhOGU4
YzYwNWFiYTY4OWYzNDBmMzUxMWZiOS4uZjMxNDljMDY3ZGJhMzY5YTFiNmM4ZGFmODFkOTk3MjVm
MjBkYzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGlj
aXRBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNp
dEFuaW1hdGlvbi5oCkBAIC00OSwxOSArNDksMTkgQEAgcHVibGljOgogICAgIENTU1Byb3BlcnR5
SUQgdHJhbnNpdGlvblByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2l0aW9uUHJvcGVy
dHk7IH0KICAgICBDU1NQcm9wZXJ0eUlEIGFuaW1hdGluZ1Byb3BlcnR5KCkgY29uc3QgeyByZXR1
cm4gbV9hbmltYXRpbmdQcm9wZXJ0eTsgfQogCi0gICAgdmlydHVhbCB2b2lkIG9uQW5pbWF0aW9u
RW5kKGRvdWJsZSBlbGFwc2VkVGltZSk7Ci0gICAgdmlydHVhbCBib29sIHN0YXJ0QW5pbWF0aW9u
KGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oZG91
YmxlIC8qdGltZU9mZnNldCovKTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kQW5pbWF0aW9uKCk7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQW5pbWF0aW9uRW5kKGRvdWJsZSBlbGFwc2VkVGltZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZz
ZXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRBbmltYXRpb24oKSBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFy
Z2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRBbmltYXRlZFN0eWxlKFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5
bGUpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRl
ckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSog
dGFyZ2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBnZXRBbmltYXRlZFN0eWxlKFJlZlB0cjxSZW5kZXJTdHlsZT4m
IGFuaW1hdGVkU3R5bGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXNldChSZW5kZXJT
dHlsZSogdG8pOwogCiAgICAgdm9pZCBzZXRPdmVycmlkZGVuKGJvb2wpOwotICAgIHZpcnR1YWwg
Ym9vbCBvdmVycmlkZGVuKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZGVuOyB9CisgICAgdmly
dHVhbCBib29sIG92ZXJyaWRkZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX292ZXJyaWRk
ZW47IH0KIAotICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGFmZmVjdHNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBj
b25zdCBPVkVSUklERTsKIAogICAgIGJvb2wgaGFzU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2Zy
b21TdHlsZSAmJiBtX3RvU3R5bGU7IH0KIApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGJsZW5kUHJvcGVydHlWYWx1ZUluU3R5bGUoQ1NTUHJvcGVydHlJRCwgUmVuZGVyU3R5
bGUqKTsKIAotICAgIHZpcnR1YWwgZG91YmxlIHRpbWVUb05leHRTZXJ2aWNlKCk7CisgICAgdmly
dHVhbCBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UoKSBPVkVSUklERTsKICAgICAKICAgICBib29s
IGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CiAgICAgdm9pZCBzZXRBY3RpdmUo
Ym9vbCBiKSB7IG1fYWN0aXZlID0gYjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRl
cnZhbFRyZWUuaAppbmRleCA5NjIzM2M1NTgyYjUzY2ZkYTI1ZjRhNzI5ZTNmMzIwYThlN2MzM2Rj
Li41OTUxMTAzOTNmNjAzMzZjNjhjOTlmOWIxOTMyYjBmOTNiZGMxN2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIEludGVydmFsVHlwZShsb3csIGhpZ2gsIGRhdGEpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgYm9vbCBjaGVja0ludmFyaWFudHMoKSBjb25zdAorICAgIHZpcnR1YWwg
Ym9vbCBjaGVja0ludmFyaWFudHMoKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KCFQT0RSZWRCbGFja1RyZWU8SW50ZXJ2YWxUeXBlPjo6Y2hlY2tJbnZhcmlhbnRzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODEsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHNlYXJjaEZvck92ZXJsYXBzRnJvbTxBZGFwdGVyVHlwZT4obm9kZS0+cmlnaHQoKSwg
YWRhcHRlcik7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHVwZGF0ZU5vZGUoSW50ZXJ2YWxO
b2RlKiBub2RlKQorICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVOb2RlKEludGVydmFsTm9kZSogbm9k
ZSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIC8vIFdvdWxkIHVzZSBjb25zdCBUJiwgYnV0IG5l
ZWQgdG8gcmVhc3NpZ24gdGhpcyByZWZlcmVuY2UgaW4gdGhpcwogICAgICAgICAvLyBmdW5jdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKaW5kZXggNjg5ZmYw
MmM2YjdlMTRlNDQ1YjliMzA3MzNhNDg3NTgxMDRhMGIzNS4uOTBkYzJmYTg1ZGY5NjMyMTc3MWYw
MzJjYjk4ZWUyZWE1OTRmMGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UE9EUmVkQmxhY2tUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxh
Y2tUcmVlLmgKQEAgLTczNCw3ICs3MzQsNyBAQCBwcml2YXRlOgogICAgICAgICBDb3VudGVyKCkK
ICAgICAgICAgICAgIDogbV9jb3VudCgwKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoY29uc3QgVCYpIHsgKyttX2NvdW50OyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdChj
b25zdCBUJikgT1ZFUlJJREUgeyArK21fY291bnQ7IH0KICAgICAgICAgaW50IGNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb3VudDsgfQogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAppbmRleCAzY2I0YjAzMTEyZWU3YTY4YjVlMmFkMGEyYjY3MDM3OGJmYTlm
NTkxLi5mNGM1MTNiMTY5MTljZjlkZjI5MTgwNTM2MDAyMmEyMWRiNWEyMzA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFNjcm9sbGJh
cjsKIAogY2xhc3MgU2Nyb2xsVmlldyA6IHB1YmxpYyBXaWRnZXQsIHB1YmxpYyBTY3JvbGxhYmxl
QXJlYSB7CiBwdWJsaWM6Ci0gICAgflNjcm9sbFZpZXcoKTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxW
aWV3KCk7CiAKICAgICAvLyBTY3JvbGxhYmxlQXJlYSBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCBp
bnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7CkBAIC0y
NDAsMTMgKzI0MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGp1c3RTY3JvbGxiYXJzQXZvaWRp
bmdSZXNpemVyQ291bnQoaW50IG92ZXJsYXBEZWx0YSk7CiAgICAgdm9pZCB3aW5kb3dSZXNpemVy
UmVjdENoYW5nZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyop
OyAvLyBPdmVycmlkZGVuIHRvIHVwZGF0ZSB0aGUgb3ZlcmxhcHBpbmcgc2Nyb2xsYmFyIGNvdW50
LgorICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIE9WRVJSSURFOyAvLyBP
dmVycmlkZGVuIHRvIHVwZGF0ZSB0aGUgb3ZlcmxhcHBpbmcgc2Nyb2xsYmFyIGNvdW50LgogCiAg
ICAgLy8gQ2FsbGVkIHdoZW4gb3VyIGZyYW1lIHJlY3QgY2hhbmdlcyAob3IgdGhlIHJlY3Qvc2Ny
b2xsIHBvc2l0aW9uIG9mIGFuIGFuY2VzdG9yIGNoYW5nZXMpLgotICAgIHZpcnR1YWwgdm9pZCBm
cmFtZVJlY3RzQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgp
IE9WRVJSSURFOwogICAgIAogICAgIC8vIFdpZGdldCBvdmVycmlkZSB0byB1cGRhdGUgb3VyIHNj
cm9sbGJhcnMgYW5kIG5vdGlmeSBvdXIgY29udGVudHMgb2YgdGhlIHJlc2l6ZS4KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIC8vIFdpZGdldCBv
dmVycmlkZSB0byBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIGEgY2xpcHJlY3QgY2hhbmdlLgogICAg
IHZpcnR1YWwgdm9pZCBjbGlwUmVjdENoYW5nZWQoKSBPVkVSUklERTsKQEAgLTI3MywxMyArMjcz
LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUuIEhhbmRsZXMg
cGFpbnRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSB2aWV3IGFzIHdlbGwgYXMgdGhlIHNjcm9s
bGJhcnMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJzKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmKTsKIAogICAgIC8vIFdpZGdldCBvdmVycmlkZXMgdG8gZW5z
dXJlIHRoYXQgb3VyIGNoaWxkcmVuJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaXMga2VwdCB1cCB0byBk
YXRlIHdoZW4gd2UgZ2V0IHNob3duIGFuZCBoaWRkZW4uCi0gICAgdmlydHVhbCB2b2lkIHNob3co
KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnRW
aXNpYmxlKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGhpZGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50Vmlz
aWJsZShib29sKSBPVkVSUklERTsKICAgICAKICAgICAvLyBQYW4gc2Nyb2xsaW5nLgogICAgIHN0
YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKQEAgLTI4OSw3ICsyODksNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludEluU2Nyb2xsYmFyQ29ybmVyKGNv
bnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCBib29sIHNjcm9sbGJhckNvcm5lclByZXNlbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmIGNvcm5lclJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggMWM3ZDViOTM3Yjc2YjVmNTZhZTRmYjBlNzFlMDQy
NTE1YmY3ZmU1YS4uNmI3OGQ3ZjQ0MGM3OWE5MWM4ODY0NjA0NGZjODYwOTMzNWNkNGQ4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTU1LDQ4ICs1NSw0OCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyKCk7CiAKICAgICAvLyBTY3JvbGxiYXJUaGVtZUNsaWVu
dCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIGludCB4KCkgY29uc3QgeyByZXR1cm4gV2lk
Z2V0Ojp4KCk7IH0KLSAgICB2aXJ0dWFsIGludCB5KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp5
KCk7IH0KLSAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6d2lk
dGgoKTsgfQotICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6
aGVpZ2h0KCk7IH0KLSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFdp
ZGdldDo6c2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBXaWRnZXQ6OngoKTsgfQorICAgIHZpcnR1YWwgaW50IHkoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBXaWRnZXQ6OnkoKTsgfQorICAgIHZpcnR1YWwgaW50IHdpZHRo
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2lkZ2V0Ojp3aWR0aCgpOyB9CisgICAgdmlydHVh
bCBpbnQgaGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2lkZ2V0OjpoZWlnaHQoKTsg
fQorICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2lk
Z2V0OjpzaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gV2lkZ2V0Ojpsb2NhdGlvbigpOyB9CiAKLSAgICB2aXJ0dWFsIFNjcm9s
bFZpZXcqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6cGFyZW50KCk7IH0KLSAgICB2
aXJ0dWFsIFNjcm9sbFZpZXcqIHJvb3QoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnJvb3QoKTsg
fQorICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcGFyZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gV2lkZ2V0OjpwYXJlbnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIFdpZGdldDo6cm9vdCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZnJh
bWVSZWN0KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0OjpmcmFtZVJlY3QoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBXaWRnZXQ6OmZy
YW1lUmVjdCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgV2lkZ2V0Ojpp
bnZhbGlkYXRlKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgT1ZFUlJJREUgeyBXaWRnZXQ6
OmludmFsaWRhdGUoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJ
bnRSZWN0JikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBz
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxh
YmxlQXJlYUFjdGl2ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXdTY3Jv
bGxiYXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3Jv
bGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Nj
cm9sbFZpZXdTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgSW50UG9p
bnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2lu
dCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93UG9p
bnQpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
Y29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBPVkVSUklERSB7IHJldHVybiBXaWRnZXQ6OmNv
bnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyh3aW5kb3dQb2ludCk7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0N1c3RvbVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3JpZW50
YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CiAKLSAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3VuZGYobV9j
dXJyZW50UG9zKTsgfQotICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudFBvczsgfQotICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQotICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9Ci0gICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfQotICAgIHZpcnR1YWwg
U2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRy
b2xTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBscm91bmRmKG1fY3VycmVudFBvcyk7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3Mo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KKyAgICB2aXJ0dWFsIGlu
dCB2aXNpYmxlU2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0K
KyAgICB2aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Rv
dGFsU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX3RvdGFsU2l6ZSAtIG1fdmlzaWJsZVNpemU7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJh
ckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb250
cm9sU2l6ZTsgfQogCi0gICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X2xpbmVTdGVwOyB9Ci0gICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2xpbmVTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3BhZ2VTdGVwOyB9CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBh
cnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9Ci0gICAgdmly
dHVhbCBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9ob3ZlcmVk
UGFydDsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fcHJlc3NlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBh
cnQgaG92ZXJlZFBhcnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVDaGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHN0eWxlQ2hhbmdlZCgpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxl
ZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpIE9WRVJS
SURFOwogCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBTY3JvbGxhYmxlQXJlYSB3aGVuIHRoZSBzY3Jv
bGwgb2Zmc2V0IGNoYW5nZXMuCiAgICAgdm9pZCBvZmZzZXREaWRDaGFuZ2UoKTsKQEAgLTExOSw5
ICsxMTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9wb3J0aW9uKGludCB2aXNpYmxlU2l6
ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9zKGludCBwKSB7IG1fcHJl
c3NlZFBvcyA9IHA7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgT1ZFUlJJREU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgc2hvdWxk
UGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKTsKIAogICAgIGJvb2wgaXNXaW5kb3dBY3RpdmUoKSBj
b25zdDsKQEAgLTE0NCwyMSArMTQ0LDIxIEBAIHB1YmxpYzoKIAogICAgIFNjcm9sbGJhclRoZW1l
KiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQYXJlbnQoU2Nyb2xsVmlldyopOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xs
VmlldyopIE9WRVJSSURFOwogCiAgICAgYm9vbCBzdXBwcmVzc0ludmFsaWRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247IH0KICAgICB2b2lkIHNldFN1cHByZXNz
SW52YWxpZGF0aW9uKGJvb2wgcykgeyBtX3N1cHByZXNzSW52YWxpZGF0aW9uID0gczsgfQogCi0g
ICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3Qm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhj
b25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRh
aW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3QgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNv
bnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBJbnRQb2lu
dCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBtb3ZlVGh1bWIoaW50IHBvcywg
Ym9vbCBkcmFnZ2luZ0RvY3VtZW50ID0gZmFsc2UpOwogCi0gICAgdmlydHVhbCBib29sIGlzQWxw
aGFMb2NrZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxwaGFMb2NrZWQ7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNBbHBoYUxvY2tlZChib29sIGZsYWcpIHsgbV9pc0FscGhhTG9ja2VkID0gZmxh
ZzsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FscGhhTG9ja2VkKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9pc0FscGhhTG9ja2VkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldElzQWxwaGFMb2Nr
ZWQoYm9vbCBmbGFnKSBPVkVSUklERSB7IG1faXNBbHBoYUxvY2tlZCA9IGZsYWc7IH0KIAogcHJv
dGVjdGVkOgogICAgIFNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0
aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSwgU2Nyb2xsYmFyVGhlbWUqID0gMCk7CkBAIC0yMDQs
NyArMjA0LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0FscGhhTG9ja2VkOwogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGlt
ZXIuaAppbmRleCAyZDIzYmFhNDBhYzMwNzdmMzg0ZTE0YmI1NWQ0MGYxYTlhZWI1ODU0Li5hOTA3
MTdiZDhkYjZhZThkNmU1NDljOTA0NDNkZTM0ZmVjZTEzMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9vYmplY3Qobyks
IG1fZnVuY3Rpb24oZikgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGZpcmVkKCkg
eyAobV9vYmplY3QtPiptX2Z1bmN0aW9uKSh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBmaXJl
ZCgpIE9WRVJSSURFIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikodGhpcyk7IH0KIAogICAgIFRp
bWVyRmlyZWRDbGFzcyogbV9vYmplY3Q7CiAgICAgVGltZXJGaXJlZEZ1bmN0aW9uIG1fZnVuY3Rp
b247CkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFRpbWVyQmFzZTo6aXNB
Y3RpdmU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGZpcmVkKCkKKyAgICB2aXJ0dWFs
IHZvaWQgZmlyZWQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fc2hvdWxkUmVzdGFy
dFdoZW5UaW1lckZpcmVzKSB7CiAgICAgICAgICAgICBtX3Nob3VsZFJlc3RhcnRXaGVuVGltZXJG
aXJlcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0
aW9uL1RpbWluZ0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24v
VGltaW5nRnVuY3Rpb24uaAppbmRleCA2YmUxOTEwMjQxYTdhNzY4ZTdkZjZiMjJlNTNiNzIzZTNi
MWVhNzg5Li42NzdlMjIyNjQyNTdkYTE5ZmUxZDdjYzUzY2IyMWE2MTNiMzRkOGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaApA
QCAtNjIsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGlu
ZWFyVGltaW5nRnVuY3Rpb24pOwogICAgIH0KICAgICAKLSAgICB+TGluZWFyVGltaW5nRnVuY3Rp
b24oKSB7IH0KKyAgICB2aXJ0dWFsIH5MaW5lYXJUaW1pbmdGdW5jdGlvbigpIHsgfQogICAgIAot
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikK
KyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIp
IE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gb3RoZXIuaXNMaW5lYXJUaW1pbmdGdW5j
dGlvbigpOwogICAgIH0KQEAgLTExMyw5ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICB+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpIHsgfQorICAgIHZpcnR1YWwg
fkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpCisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBPVkVSUklERQogICAgIHsK
ICAgICAgICAgaWYgKG90aGVyLmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7CiAgICAg
ICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsKQEAgLTE2NSw5ICsx
NjUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RlcHNUaW1pbmdG
dW5jdGlvbihzdGVwcywgc3RlcEF0U3RhcnQpKTsKICAgICB9CiAgICAgCi0gICAgflN0ZXBzVGlt
aW5nRnVuY3Rpb24oKSB7IH0KKyAgICB2aXJ0dWFsIH5TdGVwc1RpbWluZ0Z1bmN0aW9uKCkgeyB9
CiAgICAgCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24m
IG90aGVyKQorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9u
JiBvdGhlcikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmIChvdGhlci5pc1N0ZXBzVGltaW5n
RnVuY3Rpb24oKSkgewogICAgICAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3Rm
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9j
ZXNzb3IuaAppbmRleCBlMDQ0OTI2ZTg0ZDA0NmI4NjMzNzUyNmY0NGJmYWRjZmFjZWFhMTNlLi4x
NWRmOTg2MmVhYzE0NmJmZTVlZTI0YzA0MWY4YWRmYWM0OGUyMTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgK
QEAgLTU3LDEyICs1NywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlv
RFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSA9IDA7CiAKICAgICAvLyBBdWRpb1Byb2Nlc3NvciBt
ZXRob2RzCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5pbml0aWFsaXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMq
IHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TnVtYmVyT2ZD
aGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9mQ2hhbm5lbHM7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB1bmluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25z
dCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX251bWJlck9mQ2hhbm5lbHM7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIHRhaWxU
aW1lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBj
b25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aAppbmRleCAwNThjYWFhYmU5Njc3NGMwNTI1N2UzOWVhNmUzNzY3MzlhMWMxMjliLi4wYmYwOWY1
YzE4ODA5NzFhNjliMjA2NjYxMjBjMjNhMWM4ZDNmY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCkBAIC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5IUlRGUGFubmVyKCk7CiAKICAgICAvLyBQYW5uZXIKLSAgICB2aXJ0dWFsIHZvaWQg
cGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRpb0J1cyogaW5w
dXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAg
IHZpcnR1YWwgdm9pZCByZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11
dGgsIGRvdWJsZSBlbGV2YXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMq
IG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlc2V0KCkgT1ZFUlJJREU7CiAKICAgICBzaXplX3QgZmZ0U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIGZmdFNpemVGb3JTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7IH0KICAgICBzdGF0aWMg
c2l6ZV90IGZmdFNpemVGb3JTYW1wbGVSYXRlKGZsb2F0IHNhbXBsZVJhdGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFj
LmgKaW5kZXggOTI4YWFjMDNkMjcwMjkwZmQyNjk5MjNiYWJiMmE2MWY0MjUwNTZiMC4uNDg1ZTJm
ZTA3NmI2Y2YzZGI3NDA4YWFmNzU1MzliNjdjOTg2ZmQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCkBAIC00
NiwxMSArNDYsMTEgQEAgcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9JT0Nh
bGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlv
bk1hYygpOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3AoKTsKLSAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkgT1ZFUlJJREUgeyByZXR1cm4g
bV9pc1BsYXlpbmc7IH0KIAotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBt
X3NhbXBsZVJhdGU7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbmZp
Z3VyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2lt
cGxlRm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZv
bnREYXRhLmgKaW5kZXggNTQ4ODU4ODMwZDEwODYyOGFhYTAwNWYxNjBjODY1ZDYyODI0NWM2NS4u
ZWRiODY3MGQzNDc4MDRlN2FjYzM2ZTRkYzM2OGZlNWYxYmE5YWRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCkBAIC0xNTgsOCAr
MTU4LDggQEAgcHVibGljOgogICAgIEdseXBoIHplcm9HbHlwaCgpIGNvbnN0IHsgcmV0dXJuIG1f
emVyb0dseXBoOyB9CiAgICAgdm9pZCBzZXRaZXJvR2x5cGgoR2x5cGggemVyb0dseXBoKSB7IG1f
emVyb0dseXBoID0gemVyb0dseXBoOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IFNpbXBsZUZvbnRE
YXRhKiBmb250RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgY29udGFpbnNDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGFGb3JDaGFyYWN0ZXIoVUNo
YXIzMikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbnRhaW5zQ2hhcmFjdGVy
cyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgR2x5cGgg
Z2x5cGhGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAKQEAgLTE2OSwxNSArMTY5LDE1IEBA
IHB1YmxpYzoKICAgICBBZGRpdGlvbmFsRm9udERhdGEqIGZvbnREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9mb250RGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaXNTVkdGb250KCkgY29uc3QgeyByZXR1
cm4gbV9mb250RGF0YTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzQ3VzdG9tRm9udCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDdXN0b21Gb250OyB9Ci0gICAgdmlydHVhbCBib29sIGlzTG9hZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2VnbWVu
dGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzQ3VzdG9tRm9udCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1faXNDdXN0b21Gb250OyB9CisgICAgdmlydHVhbCBib29sIGlzTG9hZGlu
ZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CisgICAgdmlydHVhbCBi
b29sIGlzU2VnbWVudGVkKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBjb25zdCBHbHlwaERhdGEm
IG1pc3NpbmdHbHlwaERhdGEoKSBjb25zdCB7IHJldHVybiBtX21pc3NpbmdHbHlwaERhdGE7IH0K
ICAgICB2b2lkIHNldE1pc3NpbmdHbHlwaERhdGEoY29uc3QgR2x5cGhEYXRhJiBnbHlwaERhdGEp
IHsgbV9taXNzaW5nR2x5cGhEYXRhID0gZ2x5cGhEYXRhOyB9CiAKICNpZm5kZWYgTkRFQlVHCi0g
ICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBkZXNjcmlwdGlvbigpIGNvbnN0IE9WRVJSSURFOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRl
eCA4MzhiYzI2ZWExNWNkYzQ0Zjg3MWJlZTJmZmM0MmZhMTdmODdjNmNjLi40Y2RhODRjNmRhZjM3
ZDg1N2Y0YTAyMGRjYTg3ZjIwMGNjODYyZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTQzLDggKzQzLDcgQEAgcHVibGljOgogCiBjbGFz
cyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZh
dGUgewogcHVibGljOgotCi0gICAgfkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYoKTsKKyAgICB2
aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TW9kZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlKSBPVkVSUklERTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCmluZGV4
IDhhOWFiNjg0NDliN2JiOTNkNzgzOGRlYTViZGI0MzkxMTExN2Y0YjIuLjdmNTAzY2MyYzA2OTNl
MDE5NTEyODVmNTk4OTM4N2IwN2Y1NWI0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTEyOCw0NSArMTI4LDQ1IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24oKTsK
IAogICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZVByaXZhdGVJbnRlcmZhY2Ugb3ZlcnJpZGVzLgot
ICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCkgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEhU
TUxNZWRpYVNvdXJjZT4pIHsgfTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2Fk
KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1BsYXkoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvUGxheSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXkoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBJ
bnRTaXplIG5hdHVyYWxTaXplKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhhc1ZpZGVvKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRIYXNWaWRlbzsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNB
dWRpbygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSGFzQXVkaW87IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7
CisgICAgdmlydHVhbCBJbnRTaXplIG5hdHVyYWxTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGhhc1ZpZGVvKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jYWNoZWRI
YXNWaWRlbzsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fY2FjaGVkSGFzQXVkaW87IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShi
b29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2VlayhmbG9hdCk7Ci0gICAgdmlydHVhbCBib29sIHNlZWtpbmcoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCk7Ci0gICAgdmlydHVhbCBib29sIHBhdXNl
ZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZWVrKGZsb2F0KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRSYXRlKGZsb2F0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSGFz
Q2FwdGlvbnM7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX2NhY2hlZEhhc0NhcHRpb25zOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29y
a1N0YXRlOyB9Ci0gICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbWF4
VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUgbWluVGltZVNl
ZWthYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFs
IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9uZXR3b3JrU3RhdGU7IH0KKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3JlYWR5U3RhdGU7
IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9h
ZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgT1ZFUlJJREU7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJp
bmdTdGF0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdT
dGF0ZUNoYW5nZWQoKSBPVkVSUklERTsKICNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRN
YWludGFpbkFzcGVjdFJhdGlvKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zaG91bGRNYWlu
dGFpbkFzcGVjdFJhdGlvOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZE1haW50YWluQXNw
ZWN0UmF0aW8oYm9vbCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNjZmM2Qy
YzE4MWFhNjMyZmM2M2QwODUxMGI2YjkxYThiNTMxMTQ2YS4uMDgyN2FkZWI4NjBiM2QzNGU1NThm
MmVmMzMzYzMzM2VlYjkxMzQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjQsMTIgKzY0
LDEyIEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIAogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24gewogcHVibGljOgotICAgIH5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKCk7CisgICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygp
OwogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhcik7CiAKICAgICB2b2lkIHNldEFzc2V0KGlkKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tz
Q2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0cmFja3NDaGFuZ2VkKCkgT1ZFUlJJREU7CiAK
ICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCiAgICAgUmV0YWlu
UHRyPEFWUGxheWVySXRlbT4gcGxheWVySXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fYXZQbGF5ZXJJ
dGVtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBjMGFkZGQ0MmI2M2ZiZGYwOGE5NmU4NGRi
MmZmMjU5Zjk3NzNkYzI3Li4xMTI2NWQwMTU5ZDA0ZGExYWQ4OWI1MDQ2YTNiMTA0NTIyMjNjMWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTEyNiwxMyArMTI2LDEyIEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG8pIGNvbnN0CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJu
IGlzU2FtZVR5cGUobyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihP
cGVyYXRpb25UeXBlIHR5cGUpCiAgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCkBAIC0x
NDgsOCArMTQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLQotICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IE9WRVJS
SURFCiAgICAgewogICAgICAgICByZXR1cm4gaXNTYW1lVHlwZShvKTsKICAgICB9CkBAIC0xNjYs
MTAgKzE2NCwxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbih1cmwsIGZyYWdtZW50LCB0eXBlKSk7CiAgICAgfQot
ICAgIH5SZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oKTsKKyAgICB2aXJ0dWFsIH5SZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24oKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVs
cygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGNvbnN0IFN0cmluZyYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQpAQCAtMTg1LDcgKzE4Myw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBPcGVyYXRpb25UeXBlKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IE9W
RVJSSURFCiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMTIsMTAgKzIxMCwxMCBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUg
YW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBm
YWxzZSkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAg
ICAgIGlmICghaXNTYW1lVHlwZShvKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0
NCwxMiArMjQyLDEyIEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBhbW91bnQoKSBjb25zdCB7IHJl
dHVybiBtX2Ftb3VudDsgfQogCi0gICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IE9QQUNJVFk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0
c09wYWNpdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJs
ZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJs
ZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CisgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCBP
VkVSUklERQogICAgIHsKICAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjc5LDEwICsyNzcsMTAgQEAgcHVibGljOgogICAgIGRvdWJsZSBl
eHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25lbnQ7IH0KICAgICBkb3VibGUgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91Ymxl
IHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkg
T1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlm
ICghaXNTYW1lVHlwZShvKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMiwxMyAr
MzEwLDEzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExlbmd0aCYgc3RkRGV2aWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb247IH0KIAotICAgIHZpcnR1YWwgYm9vbCBhZmZlY3Rz
T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQ
aXhlbHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGFmZmVjdHNP
cGFjaXR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBtb3Zlc1BpeGVscygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFz
c3Rocm91Z2ggPSBmYWxzZSkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTM0OCwxNCArMzQ2LDEzIEBAIHB1YmxpYzoKICAgICBpbnQgc3RkRGV2aWF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb247IH0KICAgICBDb2xvciBjb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBtb3Zl
c1BpeGVscygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91
Z2ggPSBmYWxzZSkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCBPVkVSUklERQogICAg
IHsKICAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CmluZGV4IDgzNzI3ODBhMjc0MzQzODI5OGRhNWJkMGVmN2YwNzI4M2Y3MmIyMTYuLjAyOTQ1ZTFi
MjgxNDc3YTI2ZDQ3ZGE1N2QwYTM5MDczNWIzOGY4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTExMSw5ICsxMTEsOSBAQCBw
dWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkg
fHwgVVNFKFNPVVApCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgdmlydHVhbCB2
b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNv
bnN0IENyZWRlbnRpYWwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRSZXF1
ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTI1NSw4ICsyNTUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgc3RhcnQo
KTsKICAgICBzdGF0aWMgdm9pZCBwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFs
cywgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEp
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgeyByZWYoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgeyBkZXJlZigp
OyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgT1ZFUlJJREUg
eyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkg
T1ZFUlJJREUgeyBkZXJlZigpOyB9CiAKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRX
T1JLKQogICAgIHZvaWQgY3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sIHNob3VsZENvbnRlbnRTbmlmZik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKaW5kZXggMWI2MTY1MTAxNGVl
NzYxZDMzNWY0MmJkMTM2MWMwMTgyMjllZDQzNS4uNzIxOTgxODEwNDVjNDMyNzg3MzQwNTcyYjBh
Y2Q4ZjBmOTNhM2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9U
YWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlv
dXQuaApAQCAtMzQsMTEgKzM0LDExIEBAIGNsYXNzIFJlbmRlclRhYmxlQ2VsbDsKIGNsYXNzIEF1
dG9UYWJsZUxheW91dCA6IHB1YmxpYyBUYWJsZUxheW91dCB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgQXV0b1RhYmxlTGF5b3V0KFJlbmRlclRhYmxlKik7Ci0gICAgfkF1dG9UYWJsZUxheW91dCgp
OworICAgIHZpcnR1YWwgfkF1dG9UYWJsZUxheW91dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbldpZHRoLCBMYXlvdXRV
bml0JiBtYXhXaWR0aCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5UHJlZmVycmVk
TG9naWNhbFdpZHRoUXVpcmtzKExheW91dFVuaXQmIG1pbldpZHRoLCBMYXlvdXRVbml0JiBtYXhX
aWR0aCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZ1bGxS
ZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9w
ZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgK
aW5kZXggNTdiYzk4MGU5NjBlZmU5ZmY5ZGRjZTk5YWFlMzdmMzVhOTczNTZiMC4uZDBkNDIxMWNj
MDdkNDA3ZmVjYTg5MzI0MDJlOTNiNzU5ZjczZTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cmluZyYgZnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50OyB9CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVy
YXRpb24mIG8pIGNvbnN0CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBh
dGhPcGVyYXRpb24mIG8pIGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIWlzU2Ft
ZVR5cGUobykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTIsNyArMTEyLDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgT1ZFUlJJREUKICAgICB7CiAg
ICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4IGM1YzAzYTg1YTkwOGI4
Y2JhNjIwMjAxZjMwNzg4YjZkODRiODllYmMuLjYzOTg5YTllYThlNDVlNDY5NTdlNjlhYzgzMWI0
NzU0N2VmZGQ2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApA
QCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgfklu
bGluZUZsb3dCb3goKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0xpbmVUcmVlQW5kTWFy
ayhjb25zdCBJbmxpbmVCb3gqID0gMCwgY29uc3QgY2hhciogPSAwLCBjb25zdCBJbmxpbmVCb3gq
ID0gMCwgY29uc3QgY2hhciogPSAwLCBjb25zdCBSZW5kZXJPYmplY3QqID0gMCwgaW50ID0gMCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBib3hOYW1lKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5lQm94KiA9IDAsIGNvbnN0
IGNoYXIqID0gMCwgY29uc3QgSW5saW5lQm94KiA9IDAsIGNvbnN0IGNoYXIqID0gMCwgY29uc3Qg
UmVuZGVyT2JqZWN0KiA9IDAsIGludCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0IE9WRVJSSURFOwogI2VuZGlmCiAKICAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiB0b1JlbmRlckJveE1v
ZGVsT2JqZWN0KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KQEAgLTEwMiw3ICsxMDIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEmKSBPVkVSUklE
RSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgZXh0cmFjdExpbmUoKSBPVkVSUklERSBGSU5BTDsK
ICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGluZSgpIE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpOworICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCB2b2lkIGV4dHJhY3RMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpOwogICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2hMaW5lQm94VG9SZW5kZXJPYmplY3QoKTsKQEAgLTExNyw3ICsxMTcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50RmlsbExheWVy
KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3Qg
TGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAg
ICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBjb25zdCBSZW5kZXJTdHls
ZSYsIFNoYWRvd1N0eWxlLCBjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5l
Qm90dG9tKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBPVkVSUklERTsKIAogICAg
IGJvb2wgYm94U2hhZG93Q2FuQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IEZpbGxMYXllciYp
IGNvbnN0OwpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlbW92
ZUNoaWxkKElubGluZUJveCogY2hpbGQpOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCk7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6
OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50
IGVsbGlwc2lzV2lkdGgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgZmxvYXQg
cGxhY2VFbGxpcHNpc0JveChib29sIGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxv
Y2tSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0aCwg
Ym9vbCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRl
eCBkMmUwZTU2ZWIwNjEwZWU4ZWY2Yjc1OTM2ZThhMTE1ZDIzMmQ0ZTAwLi4yNzhkZmU2YmM0NTRh
NDk3NGIxOGIyOGFkOTcxOGY1OGUxMzg4Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaApAQCAtMTIwLDggKzEyMCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRl
TGluZUJveFRyZWUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3Qq
IG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApOwogCkBAIC0yMzQsNyArMjM0
LDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgc3RhcnRBbGlnbmVkT2Zmc2V0Rm9yTGluZShM
YXlvdXRVbml0IHBvc2l0aW9uLCBib29sIHNob3VsZEluZGVudFRleHQpOwogICAgIExheW91dFVu
aXQgdGV4dEluZGVudE9mZnNldCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklE
RTsKICAgICAKICAgICAvLyBCbG9jayBmbG93cyBzdWJjbGFzcyBhdmFpbGFibGVXaWR0aCB0byBo
YW5kbGUgbXVsdGkgY29sdW1uIGxheW91dCAoc2hyaW5raW5nIHRoZSB3aWR0aCBhdmFpbGFibGUg
dG8gY2hpbGRyZW4gd2hlbiBsYXlpbmcgb3V0LikKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYXZh
aWxhYmxlTG9naWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CkBAIC00NTAsMTUgKzQ1
MCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHdp
bGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgbGF5b3V0UG9z
aXRpb25lZE9iamVjdHMoYm9vbCByZWxheW91dENoaWxkcmVuLCBib29sIGZpeGVkUG9zaXRpb25P
YmplY3RzT25seSA9IGZhbHNlKTsKICAgICB2b2lkIG1hcmtGaXhlZFBvc2l0aW9uT2JqZWN0Rm9y
TGF5b3V0SWZOZWVkZWQoUmVuZGVyT2JqZWN0KiBjaGlsZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZv
clNlbGYsIGNvbnN0IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQ
cmludFJlY3QpOwogICAgIGJvb2wgcGFpbnRDaGlsZChSZW5kZXJCb3gqLCBQYWludEluZm8mIGZv
clNlbGYsIGNvbnN0IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQ
cmludFJlY3QpOwogICAgCkBAIC00ODgsNyArNDg4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwogICAgIHZv
aWQgYWRqdXN0SW50cmluc2ljTG9naWNhbFdpZHRoc0ZvckNvbHVtbnMoTGF5b3V0VW5pdCYgbWlu
TG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGlu
dCBmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50
IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IE9WRVJSSURFOwog
ICAgIGludCBsYXN0TGluZUJveEJhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdDsKIApA
QCAtNTAyLDggKzUwMiw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlmRW1wdHkoKSBjb25z
dDsKICAgICAKQEAgLTU1OSw3ICs1NTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbW92ZUFsbENo
aWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8oUmVuZGVyQmxvY2sqIHRvQmxvY2ssIGJvb2wgZnVsbFJl
bW92ZUluc2VydCk7CiAKICAgICB2b2lkIGFkZENoaWxkVG9Db250aW51YXRpb24oUmVuZGVyT2Jq
ZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7Ci0gICAgdm9pZCBhZGRD
aGlsZElnbm9yaW5nQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9i
amVjdCogYmVmb3JlQ2hpbGQpOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZElnbm9yaW5nQ29u
dGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQpIE9WRVJSSURFOwogICAgIHZvaWQgYWRkQ2hpbGRUb0Fub255bW91c0NvbHVtbkJsb2NrcyhS
ZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKIAogICAg
IHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0Fub255bW91c0NvbHVtbkJsb2NrcyhSZW5kZXJPYmplY3Qq
IG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CkBAIC02NTgsNyArNjU4
LDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgZ2V0Q2xlYXJEZWx0YShSZW5kZXJCb3gq
IGNoaWxkLCBMYXlvdXRVbml0IHlQb3MpOwogCi0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0
cygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIGJvb2wgaGFzT3ZlcmhhbmdpbmdGbG9hdHMoKSB7IHJldHVybiBwYXJlbnQoKSAm
JiAhaGFzQ29sdW1ucygpICYmIGNvbnRhaW5zRmxvYXRzKCkgJiYgbG93ZXN0RmxvYXRMb2dpY2Fs
Qm90dG9tKCkgPiBsb2dpY2FsSGVpZ2h0KCk7IH0KICAgICBib29sIGhhc092ZXJoYW5naW5nRmxv
YXQoUmVuZGVyQm94Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYmFj
YjMwOTVkNTk1N2U1MGUzOGM3MjZhNTUwYTY5MTBkNzY0YmJmYS4uOTYzZGQyNTk2YzdjMzJiMzk3
ZGYyM2QwMDcyNWM4NDZjYTU3NzgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aApAQCAtMjA4LDggKzIwOCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIElFIGV4dGVuc2lvbnMuIFVz
ZWQgdG8gY2FsY3VsYXRlIG9mZnNldFdpZHRoL0hlaWdodC4gIE92ZXJyaWRkZW4gYnkgaW5saW5l
cyAoUmVuZGVyRmxvdykKICAgICAvLyB0byByZXR1cm4gdGhlIHJlbWFpbmluZyB3aWR0aCBvbiBh
IGdpdmVuIGxpbmUgKGFuZCB0aGUgaGVpZ2h0IG9mIGEgc2luZ2xlIGxpbmUpLgotICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHdpZHRoKCk7IH0KLSAg
ICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaGVpZ2h0
KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB3aWR0aCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdo
dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGhlaWdodCgpOyB9CiAKICAgICB2aXJ0dWFsIGlu
dCBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZp
cnR1YWwgaW50IHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
OwpAQCAtMjg4LDE5ICsyODgsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBj
b2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKTsgfQog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0
dXJuIG1hcmdpbkFmdGVyKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICBMYXlvdXRS
ZWN0IHJlZmxlY3Rpb25Cb3goKSBjb25zdDsKICAgICBpbnQgcmVmbGVjdGlvbk9mZnNldCgpIGNv
bnN0OwogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFj
ZSwgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyByZWN0IGluIHRoZSByZWZsZWN0aW9uLgogICAg
IExheW91dFJlY3QgcmVmbGVjdGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWF4UHJlZmVy
cmVkTG9naWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHJlbmFtZSB0aGVzZSBiYWNrIHRvIG92ZXJyaWRlTG9naWNhbEhlaWdodC9XaWR0aCBhbmQg
aGF2ZSB0aGVtIHN0b3JlCiAgICAgLy8gdGhlIGJvcmRlci1ib3ggaGVpZ2h0L3dpZHRoIGxpa2Ug
dGhlIHJlZ3VsYXIgaGVpZ2h0L3dpZHRoIGFjY2Vzc29ycyBvbiBSZW5kZXJCb3guCkBAIC0zMjUs
NyArMzI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDb250YWluaW5nQmxvY2tPdmVycmlk
ZVNpemUoKTsKICAgICB2b2lkIGNsZWFyT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9n
aWNhbEhlaWdodCgpOwogCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWlu
ZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRz
T25Qb2ludCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29u
dGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVw
ZW5kc09uUG9pbnQgPSAwKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICBMYXlvdXRVbml0IGFk
anVzdEJvcmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0IHdpZHRoKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IGFkanVzdEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hT
aXppbmcoTGF5b3V0VW5pdCBoZWlnaHQpIGNvbnN0OwpAQCAtMzg4LDcgKzM4OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKGNvbnN0IExheW91dFJlY3Qm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVwYWludE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRB
bGxEZXNjZW5kYW50cyk7CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2Nr
TG9naWNhbFdpZHRoRm9yQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBj
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChBdmFp
bGFibGVMb2dpY2FsSGVpZ2h0VHlwZSkgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnRJblJlZ2lvbihSZW5kZXJSZWdpb24qKSBjb25z
dDsKQEAgLTQ3MCw3ICs0NzAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNVbnNwbGl0dGFibGVT
Y3JvbGxpbmdPdmVyZmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNVbnNwbGl0dGFibGVGb3JQYWdp
bmF0aW9uKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3Qo
SW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUgPSAwKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5l
Qm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUg
PSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdmVyZmxvd0NsaXBSZWN0
KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyUmVnaW9uKiwgT3ZlcmxheVNjcm9s
bGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgUGFpbnRQaGFz
ZSA9IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQpOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBv
dmVyZmxvd0NsaXBSZWN0Rm9yQ2hpbGRMYXllcnMoY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9u
LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVs
ZXZhbmN5KSB7IHJldHVybiBvdmVyZmxvd0NsaXBSZWN0KGxvY2F0aW9uLCByZWdpb24sIHJlbGV2
YW5jeSk7IH0KQEAgLTQ4Myw3ICs0ODMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIE9WRVJS
SURFOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBwb3NpdGlvbmVkIG9iamVjdCBtb3ZlcyBidXQg
ZG9lc24ndCBuZWNlc3NhcmlseSBjaGFuZ2Ugc2l6ZS4gIEEgc2ltcGxpZmllZCBsYXlvdXQgaXMg
YXR0ZW1wdGVkCiAgICAgLy8gdGhhdCBqdXN0IHVwZGF0ZXMgdGhlIG9iamVjdCdzIHBvc2l0aW9u
LiBJZiB0aGUgc2l6ZSBkb2VzIGNoYW5nZSwgdGhlIG9iamVjdCByZW1haW5zIGRpcnR5LgpAQCAt
NTAwLDcgKzUwMCw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFJlY3QgbWFza0NsaXBSZWN0KCk7
CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50Jik7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCiAgICAgUmVuZGVyQmxvY2sqIG91dGVy
bW9zdEJsb2NrQ29udGFpbmluZ0Zsb2F0aW5nT2JqZWN0KCk7CiAKQEAgLTUyMSw3ICs1MjEsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlcHJlY2F0ZWRGbGV4SXRlbSgpIGNvbnN0IHsgcmV0dXJu
ICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFy
ZW50KCkgJiYgcGFyZW50KCktPmlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCk7IH0KICAgICBib29s
IGlzRmxleEl0ZW1JbmNsdWRpbmdEZXByZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5l
KCkgJiYgIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBw
YXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogICAgIAotICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3QgT1ZFUlJJREU7CkBAIC02MDEs
MTAgKzYwMSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIE9WRVJSSURF
OwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBpdCBjb3VsZCBub3QgY2hlYXBseSBjb21wdXRl
IHRoZSBleHRlbnQgKGUuZy4gZml4ZWQgYmFja2dyb3VuZCksIGluIHdoaWNoIGNhc2UgdGhlIHJl
dHVybmVkIHJlY3QgbWF5IGJlIGluY29ycmVjdC4KQEAgLTYzNCw3ICs2MzQsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENv
b3JkaW5hdGVzRmxhZ3MgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCosIFJlbmRlckdlb21l
dHJ5TWFwJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9M
b2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxh
Z3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIHBhaW50Um9v
dEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggOTI1ZWVhYTM2N2FlYzU4OTYw
ZmZhYjMwNmRmMWM0ZTc2MzQwNzA3Yy4uMTkzZDdjYzYzZDY2NjYyMjQyYjg4NzZkNDFiYjY0ZTM2
YWQxNWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhpZ2hRdWFs
aXR5UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+Kik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcyk7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBPVkVSUklERTsK
IAogICAgIGJvb2wgY2FuSGF2ZUJveEluZm9JblJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuICFpc0Zs
b2F0aW5nKCkgJiYgIWlzUmVwbGFjZWQoKSAmJiAhaXNJbmxpbmUoKSAmJiAhaGFzQ29sdW1ucygp
ICYmICFpc1RhYmxlQ2VsbCgpICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNSZW5kZXJTVkdCbG9j
aygpOyB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKICAgICBjbGFzcyBCYWNrZ3JvdW5kSW1hZ2VH
ZW9tZXRyeSB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oCmluZGV4IGVlZmE4ZTU5YzczNDU1NzEwMzI3YzAzMmZlYzJiNGZmZWY0MjQ0MGYuLmUzNWUy
YTUyYjA3M2E5NmE2ZGNjYzI1ODFlOGIyNzY2Y2IxMTBhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0
ICpiZWZvcmVDaGlsZCA9IDApOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJP
YmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhS
ZW5kZXJCbG9jayopIHsgfQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBl
cigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVu
ZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0ICpiZWZvcmVDaGlsZCA9IDApIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJC
bG9jayopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3Jh
cHBlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgc2V0dXBJ
bm5lclN0eWxlKFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVt
ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGhhc0NvbnRyb2xDbGlwKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjb250cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0
UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNvbnRyb2xD
bGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBz
ZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CkBAIC02Mywx
MiArNjMsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVyQnV0dG9uIjsgfQogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlckJ1dHRvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogbmV3U3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CisgICAgdmlydHVh
bCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBuZXdTdHlsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJl
Y2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
dm9pZCB0aW1lckZpcmVkKFRpbWVyPFJlbmRlckJ1dHRvbj4qKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAppbmRleCA5ZjI0ZmNhYTE2ZDQ0N2ViYzc1MzdhZjE3
MzNhOTI2N2Q5NWRkNDM4Li40MzlkYTdiODQxYjc0ZDEwM2FhZGYwM2Q0NTI0NGNjNWYwNDNmMTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaApAQCAtNDMsMTYg
KzQzLDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgV1RG
X0RFTEVURURfRlVOQ1RJT047CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCB7IHJldHVybiAiUmVuZGVyRmllbGRTZXQiOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
RmllbGRzZXQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlckZpZWxkU2V0Ijsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRl
ZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsK
LSAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hE
ZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBP
VkVSUklERTsKIH07CiAKIGlubGluZSBSZW5kZXJGaWVsZHNldCogdG9SZW5kZXJGaWVsZHNldChS
ZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sLmgKaW5kZXggNTE3MDI1NjM2M2Q0YzhhM2M0MDdlOWY4ZDk3
YmFmM2U0M2NhYjAxNC4uZjZiMjc0NGM3MzEwMDA1MWQ2ZmY3Nzg3YjZiYmJkOTdiMjg2MmI0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmgKQEAgLTQ2LDE5ICs0NiwxOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlz
RmlsZVVwbG9hZENvbnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlckZpbGVVcGxvYWRDb250cm9sIjsgfQog
CiAgICAgdmlydHVhbCBib29sIGNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4oKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9w
YWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWly
ZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgaW50IG1heEZpbGVuYW1lV2lkdGgoKSBjb25zdDsKICAgICAKLSAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYpIE9WRVJSSURFOwogCiAgICAgSFRNTElucHV0RWxlbWVudCogdXBsb2FkQnV0
dG9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmgKaW5kZXggNWVhOWMwYmEwYzAyNTIzMjYyNDE2MTVhMjhlNzcxYjExMzBkMWY1Yi4uMjVk
YmM1MWViNGY5ZmRlN2NlODNjYzA2NmJjNjFmMmJlZDBkNDBhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgZW51bSBGbGV4U2lnbiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCAwOTMyZWE4MmNjOTQ1
Y2Q4NjYyODlhMzVkNDRmM2I3Mzk1NGQ4OTczLi45NDBkNGQxNDYxOTkyZTg5ZTRhMTEzMDUwYWJj
ZjAxNWIxNzgzYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmgKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUpOwogCi0gICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSk7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIAog
ICAgIHZvaWQgcmVwYWludFJlY3RhbmdsZUluUmVnaW9ucyhjb25zdCBMYXlvdXRSZWN0JiwgYm9v
bCBpbW1lZGlhdGUpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGdWxsU2NyZWVuLmgKaW5kZXggZmJlMWQ2OWQ1YWE4ODAwMzdkNGMwMTg5NDhiZjQzNzEyZjlj
ODU1Ny4uNGExOGEwYjQ4YjZkZjY3ZGFmZTJiMTJkYzc0YzdiNTEwZWVjMWViMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCkBAIC0zNiw4ICszNiw4IEBA
IGNsYXNzIFJlbmRlckZ1bGxTY3JlZW4gRklOQUwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3gg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZW5kZXJGdWxsU2NyZWVuKiBjcmVhdGVBbm9ueW1vdXMo
RG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW4oKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4iOyB9CisgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyRnVsbFNjcmVlbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAi
UmVuZGVyRnVsbFNjcmVlbiI7IH0KIAogICAgIHZvaWQgc2V0UGxhY2Vob2xkZXIoUmVuZGVyQmxv
Y2sqKTsKICAgICBSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIoKSB7IHJldHVybiBtX3BsYWNlaG9s
ZGVyOyB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZW5kZXJG
dWxsU2NyZWVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOworICAgIHZp
cnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAg
IFJlbmRlckJsb2NrKiBtX3BsYWNlaG9sZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaAppbmRleCA0MTNhZTQxMjE0YmUwM2RkNDFlNjMxODI0OTg3MDdjZGEzNzcwNWI3Li5l
YTNlYWMwODI1ZjI2ZGQ0MTUxOWUxZjdhODRhMDNkNDNlM2U3MGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtNjksMjUgKzY5LDI1IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlKikgT1ZFUlJJREUgRklOQUw7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFu
Z2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKKyAgICB2aXJ0dWFsIHZv
aWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKSBPVkVS
UklERTsKIAogICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXlvdXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBp
bnRyaW5zaWNTaXplQ2hhbmdlZCgpCisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFu
Z2VkKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UpCiAgICAg
ICAgICAgICBpbWFnZUNoYW5nZWQobV9pbWFnZVJlc291cmNlLT5pbWFnZVB0cigpKTsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIlJlbmRlckltYWdlIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0ltYWdlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc1JlbmRlckltYWdlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGNvbXB1
dGVCYWNrZ3JvdW5kSXNLbm93blRvQmVPYnNjdXJlZCgpIE9WRVJSSURFIEZJTkFMOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDI5ZWI1Yzk1OWEyNDA1MjY0NmU5
ODZkYjMxYzRiYjA2ZjdkOGM3NDAuLmE3NDBiM2FmNzZkZWQxZjk3NWI3MTI4NTI5MDU1NjUzOWRl
ODc5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0zMTMsNyAr
MzEzLDcgQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSZXBsaWNhOwogCiAgICAg
ZXhwbGljaXQgUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYpOwotICAgIH5SZW5k
ZXJMYXllcigpOworICAgIHZpcnR1YWwgflJlbmRlckxheWVyKCk7CiAKICAgICBTdHJpbmcgbmFt
ZSgpIGNvbnN0OwogCkBAIC00MTEsOSArNDExLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzVmVy
dGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiB2ZXJ0aWNhbFNjcm9sbGJhcigpOyB9CiAK
ICAgICAvLyBTY3JvbGxhYmxlQXJlYSBvdmVycmlkZXMKLSAgICB2aXJ0dWFsIFNjcm9sbGJhciog
aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1faEJhci5nZXQoKTsgfQotICAg
IHZpcnR1YWwgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1f
dkJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9s
bGFibGVBcmVhKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3Jv
bGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2hCYXIuZ2V0KCk7IH0KKyAgICB2aXJ0
dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX3ZCYXIuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdT
Y3JvbGxhYmxlQXJlYSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgaW50IHZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGgoT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Ny
b2xsYmFyU2l6ZSkgY29uc3Q7CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoT3Zl
cmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSkg
Y29uc3Q7CkBAIC03NjEsMTAgKzc2MSwxMCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTGF5ZXJCYWNr
aW5nKiBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nLmdldCgpOyB9CiAgICAgUmVu
ZGVyTGF5ZXJCYWNraW5nKiBlbnN1cmVCYWNraW5nKCk7CiAgICAgdm9pZCBjbGVhckJhY2tpbmco
Ym9vbCBsYXllckJlaW5nRGVzdHJveWVkID0gZmFsc2UpOwotICAgIHZpcnR1YWwgR3JhcGhpY3NM
YXllciogbGF5ZXJGb3JTY3JvbGxpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5
ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0OwotICAgIHZpcnR1YWwgR3Jh
cGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0OwotICAgIHZpcnR1
YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsaW5nKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGlj
YWxTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIq
IGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgYm9vbCBuZWVk
c0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdDsKICAgICBib29sIG5lZWRzQ29tcG9zaXRpbmdM
YXllcnNSZWJ1aWx0Rm9yQ2xpcChjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiBuZXdTdHlsZSkgY29uc3Q7CkBAIC0xMDAzLDMxICsxMDAzLDMxIEBAIHByaXZh
dGU6CiAKICAgICBib29sIHNob3VsZEJlU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdDsKIAotICAg
IGludCBzY3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBz
Y3JvbGxQb3NpdGlvbihTY3JvbGxiYXIqKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICAvLyBT
Y3JvbGxhYmxlQXJlYSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9s
bGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBi
b29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlz
aWJsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5n
Vmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVh
bCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBjb252
ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0OwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmKTsK
LSAgICB2aXJ0dWFsIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIElu
dFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVj
dCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJz
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRTaXplIGNvbnRl
bnRzU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3Jv
bGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNBY3RpdmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxDb3Ju
ZXJWaXNpYmxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENv
cm5lclJlY3QoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZy
b21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFy
VG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmll
d1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmllbnRhdGlvbikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBJ
bnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24o
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVD
b250ZW50UmVjdChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJ
bnRTaXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQ
b2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3goKSBjb25zdCBPVkVS
UklERTsKIAogICAgIC8vIFJlY3RhbmdsZSBlbmNvbXBhc3NpbmcgdGhlIHNjcm9sbCBjb3JuZXIg
YW5kIHJlc2l6ZXIgcmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuaAppbmRleCA1YjdmOWJhYjEzMWE2ZTViZDhmNjEzM2M0ODA4NjYzZjRiYTdiNzdkLi45YjU4
OTI3ZDVlZWZiMDg2MDgxZjgyMzVjZjNmMWJhNGU3ZTFlODNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SZW5kZXJMaW5lQnJlYWsoKTsKIAogICAgIC8vIEZJWE1FOiBUaGUgbGllcyBo
ZXJlIGtlZXAgcmVuZGVyIHRyZWUgZHVtcCBiYXNlZCB0ZXN0IHJlc3VsdHMgdW5jaGFuZ2VkLgot
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNX
QlIgPyAiUmVuZGVyV29yZEJyZWFrIiA6ICJSZW5kZXJCUiI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzV0JSID8gIlJl
bmRlcldvcmRCcmVhayIgOiAiUmVuZGVyQlIiOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNXQlIo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzV0JSOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGQxMDBjZmIwYTg3MjE3NTU2ZTViOGQ1MGFkNDMz
ZjQwYTg3NjQxM2YuLmM1YmFmMGNmYWJlNDdmMjkxMGQ5YWRiM2UyNTJlNzBiZTYzNDAxYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtNjIsNDQgKzYyLDQ0
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgV1RGX0RFTEVU
RURfRlVOQ1RJT047CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyTGlzdEJveCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVyTGlzdEJveCI7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTGlzdEJveCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVJl
cGxhY2VkV2l0aElubGluZVJ1bkluKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IGhhc0NvbnRyb2xDbGlwKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBjb250cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNvbnRyb2xD
bGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBib29sIGlzUG9pbnRJbk92ZXJmbG93Q29udHJvbChIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5
b3V0UG9pbnQmIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCk7CisgICAgdmlydHVhbCBib29sIGlzUG9pbnRJbk92ZXJmbG93Q29udHJvbChI
aXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uSW5Db250YWluZXIsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0
IG11bHRpcGxpZXIgPSAxLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQgPSAwKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgbG9naWNhbFNjcm9sbChTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBTY3Jv
bGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIEVsZW1lbnQqKiBzdG9wRWxlbWVu
dCA9IDApIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcGFpbnRDb250YWluZXIgPSAwKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBj
YW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCB2
b2lkIHN0b3BBdXRvc2Nyb2xsKCk7CisgICAgdmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNh
bGx5U2Nyb2xsZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RvcEF1dG9zY3JvbGwoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRQYW5TY3JvbGwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBh
blNjcm9sbChjb25zdCBJbnRQb2ludCYpOwotCi0gICAgdmlydHVhbCBpbnQgdmVydGljYWxTY3Jv
bGxiYXJXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHNjcm9sbExlZnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGludCBzY3JvbGxUb3AoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3Jv
bGxXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHNjcm9sbEhlaWdodCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMZWZ0KGludCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFNjcm9sbFRvcChpbnQpOworICAgIHZpcnR1YWwgdm9pZCBwYW5TY3JvbGwoY29uc3QgSW50UG9p
bnQmKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgaW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBzY3JvbGxMZWZ0KCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsVG9wKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBpbnQgc2Nyb2xsV2lkdGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGlu
dCBzY3JvbGxIZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
b2xsTGVmdChpbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxUb3AoaW50
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmgKaW5kZXggNTA4OTRhODhkMTg0Nzc1YjJmZTZlNTMxZTEzOTRkYTgwZmJkYzg5My4uYjFm
ZjI5ZDI2NTQyNmEyNDk3NWQzMjU3MjdlODU5OGVjNTUxNWVjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKQEAgLTU1LDI3ICs1NSwyNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHVuc2lnbmVkIGl0ZW1Db3VudEZvck9yZGVyZWRMaXN0KGNvbnN0IEhUTUxPTGlz
dEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTGlzdEl0ZW0iOyB9CisgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlckxpc3RJ
dGVtIjsgfQogCi0gICAgdmlydHVhbCBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxCZVJlbW92ZWRGcm9tVHJlZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGlzRW1w
dHkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgcG9zaXRpb25MaXN0TWFya2VyKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxl
UmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsKIAogICAgIHZvaWQgaW5z
ZXJ0T3JNb3ZlTWFya2VyUmVuZGVyZXJJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggMGY5NzQ4MGI4NWIzZTU4ZjRhMzMxZDkzYWQz
NDVhNzAyNDUyZWY5OC4uY2IxMmU3MzJlYTBjOWFmYjYzMzdmYTgxZGJjZWU1N2VlYjVlNGY4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC01MSwz
NSArNTEsMzUgQEAgcHJpdmF0ZToKIAogICAgIGV4cGxpY2l0IFJlbmRlckxpc3RNYXJrZXIoUmVu
ZGVyTGlzdEl0ZW0mKTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJMaXN0TWFya2VyIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5kZXJMaXN0TWFya2Vy
IjsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGlzTGlzdE1hcmtlcigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0TWFya2VyKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3Qq
ID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNv
bnN0IEludFJlY3QqID0gMCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIElubGluZUJveCogY3Jl
YXRlSW5saW5lQm94KCk7CisgICAgdmlydHVhbCBJbmxpbmVCb3gqIGNyZWF0ZUlubGluZUJveCgp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNv
bnRhaW5pbmdMaW5lKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdDsKKyAgICB2aXJ0dWFsIExh
eW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExp
bmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgYm9vbCBpc0ltYWdlKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCBPVkVSUklERTsKICAgICBib29s
IGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuICFpc0ltYWdlKCk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIExh
eW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgdXBkYXRlTWFyZ2lucygp
OwogICAgIHZvaWQgdXBkYXRlQ29udGVudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlV2ls
bENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogCiAgICAgSW50UmVjdCBnZXRSZWxhdGl2ZU1h
cmtlclJlY3QoKTsKICAgICBMYXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCBjMGM2YzY3Y2I5NmI2ZmRk
ZjEyZTY2YTA3YTg3MjQ3NGJhMjZmMDNmLi45ODQ5MWFjMjE3MzU1MmE2YzRiNTgyZGJjYWM2YjIw
MGVhY2EwZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApA
QCAtNjEsMjcgKzYxLDI3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkg
Y29uc3QgV1RGX0RFTEVURURfRlVOQ1RJT047CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlz
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0g
MCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopOwotICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY3Jl
YXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBj
b250cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cm9sQ2xpcCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVu
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2Fu
QmVSZXBsYWNlZFdpdGhJbmxpbmVSdW5JbigpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1lbnVMaXN0
IjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuICJSZW5kZXJNZW51TGlzdCI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJv
cGFnYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBQb3B1
cE1lbnVDbGllbnQgbWV0aG9kcwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQodW5zaWdu
ZWQgbGlzdEluZGV4LCBib29sIGZpcmVPbkNoYW5nZSA9IHRydWUpIE9WRVJSSURFOwpAQCAtMTE0
LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9s
bGJhckNvbnRyb2xTaXplKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlm
RW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBGbGV4Ym94
IGRlZmluZXMgYmFzZWxpbmVzIGRpZmZlcmVudGx5IHRoYW4gcmVndWxhciBibG9ja3MuCiAgICAg
Ly8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBtZW51bGlzdHMgbmVlZCB0byBkbyB0aGUg
cmVndWxhciBibG9jayBiZWhhdmlvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZXRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVy
LmgKaW5kZXggYTY5OTlkZjFlM2E0ZjE5NDgzNzJmY2RhNzcyNjZmZTA1NmUwOGZhMy4uZjZkYWE4
ZTcwMWI1ZTdiNThiM2QxMzg4Mzk2MmJlOTlhYmE2MTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1ldGVyLmgKQEAgLTM2LDE1ICszNiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UmVuZGVyTWV0ZXIoKTsKIAogICAgIEhUTUxNZXRlckVsZW1lbnQqIG1ldGVyRWxlbWVudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRV
bml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1
cm4gIlJlbmRlck1ldGVyIjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxj
UHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlck1ldGVyIjsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRp
b24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBpbmxpbmUgUmVuZGVy
TWV0ZXIqIHRvUmVuZGVyTWV0ZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNjliMDQ0ZjZhOTVkZGRiMTY0MWE3OGMwMDZm
MzkyNTkzZDRmODA0YS4uM2E1ZGQzOTZmMWRiMGZkYjY3ZDcwMzcwY2NiYWNlYjQ1YzhkZmJhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtODc0LDkgKzg3NCw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVs
ZXRpb24oaW50IGN1cnJlbnQpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IG5leHRPZmZzZXQoaW50
IGN1cnJlbnQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJ
bWFnZSosIGNvbnN0IEludFJlY3QqID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdl
ZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3QqID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkg
eyB9Ci0gICAgdmlydHVhbCBib29sIHdpbGxSZW5kZXJJbWFnZShDYWNoZWRJbWFnZSopOworICAg
IHZpcnR1YWwgYm9vbCB3aWxsUmVuZGVySW1hZ2UoQ2FjaGVkSW1hZ2UqKSBPVkVSUklERTsKIAog
ICAgIHZvaWQgc2VsZWN0aW9uU3RhcnRFbmQoaW50JiBzcG9zLCBpbnQmIGVwb3MpIGNvbnN0Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCBhN2M2
NTE2YzM5YzI5OTg4ZDQ5MGZlYzQyMjljZGI3NTllZjAzYzYzLi5mNDU3OTcwODY5Y2E3OWNjZjY0
Njg4NzkwZWQ1YTJlYjk3MTAwYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVy
UmVwbGFjZWQoKTsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29u
dGVudFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkgY29uc3Q7CiAKQEAgLTQx
LDIyICs0MSwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNSZXBsYWNlZExvZ2ljYWxIZWlnaHQo
KSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBPVkVSUklE
RSBGSU5BTCB7IHJldHVybiBtX2ludHJpbnNpY1NpemU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBk
b3VibGUmIGludHJpbnNpY1JhdGlvLCBib29sJiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24o
RmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvLCBib29sJiBp
c1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2Fs
V2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QgT1ZFUlJJREUgRklOQUw7
CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gTGF5b3V0VW5pdCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9u
U3RhdGUoU2VsZWN0aW9uU3RhdGUpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0
ZShTZWxlY3Rpb25TdGF0ZSkgT1ZFUlJJREU7CiAKICAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklE
RTsKIAogICAgIHZvaWQgc2V0SW50cmluc2ljU2l6ZShjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5z
aWNTaXplKSB7IG1faW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmKSBPVkVSUklERSBGSU5BTDsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQmVT
ZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBj
YW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCA9IHRydWUpIE9WRVJSSURFIEZJTkFMOwogICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlv
SW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiwgRmxvYXRTaXplJiBjb25zdHJhaW5l
ZFNpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8sIGJvb2wmIGlzUGVyY2VudGFnZUludHJpbnNp
Y1NpemUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCmluZGV4
IDQ4NTIzYTc2NzE0ZjVhMWI3M2FhNjJlZWNkYWM3YjVkYTkyNWZhZWIuLjAyYjVkNWJjZmVlODAw
NWFjZDVlZThjZjZhMWUxMGY4NGYxMjVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2xpZGVyLmgKQEAgLTM5LDE1ICszOSwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbkRyYWdN
b2RlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNsaWRlciI7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNTbGlkZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlclNsaWRlciI7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBib29sIGNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4oKSBjb25z
dCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUg
PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVS
ZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQ
cm9wYWdhdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CiB9OwogCiBpbmxpbmUgUmVuZGVyU2xpZGVyKiB0b1Jl
bmRlclNsaWRlcihSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmgKaW5kZXggYTk3NmZiNDkwMmE5OTAyYjQ0NDcyY2E1NTU2Yzg3ZjJjZWZkZDZi
ZS4uMTE0MmRjOTE3YmIyNGY1MmVmMDk1NjgwMTk0MzhkYTk2ZjNlYzFjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTUyLDMzICs1MiwzMyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgYm9vbCBjb2xsYXBzZUJvcmRlcnMoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5i
b3JkZXJDb2xsYXBzZSgpOyB9CiAKLSAgICBpbnQgYm9yZGVyU3RhcnQoKSBjb25zdCB7IHJldHVy
biBtX2JvcmRlclN0YXJ0OyB9Ci0gICAgaW50IGJvcmRlckVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym9yZGVyRW5kOyB9Ci0gICAgaW50IGJvcmRlckJlZm9yZSgpIGNvbnN0OwotICAgIGludCBib3Jk
ZXJBZnRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGJvcmRlclN0YXJ0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9ib3JkZXJTdGFydDsgfQorICAgIHZpcnR1YWwgaW50IGJvcmRlckVu
ZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm9yZGVyRW5kOyB9CisgICAgdmlydHVhbCBp
bnQgYm9yZGVyQmVmb3JlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgYm9yZGVy
QWZ0ZXIoKSBjb25zdCBPVkVSUklERTsKIAotICAgIGludCBib3JkZXJMZWZ0KCkgY29uc3QKKyAg
ICB2aXJ0dWFsIGludCBib3JkZXJMZWZ0KCkgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAg
IGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgcmV0
dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlclN0YXJ0KCkgOiBi
b3JkZXJFbmQoKTsKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRp
bmdNb2RlKCkgPyBib3JkZXJBZnRlcigpIDogYm9yZGVyQmVmb3JlKCk7CiAgICAgfQogCi0gICAg
aW50IGJvcmRlclJpZ2h0KCkgY29uc3QKKyAgICB2aXJ0dWFsIGludCBib3JkZXJSaWdodCgpIGNv
bnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBib3JkZXJFbmQoKSA6IGJvcmRlclN0YXJ0KCk7CiAgICAgICAgIHJldHVybiBz
dHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVyQmVmb3JlKCkgOiBi
b3JkZXJBZnRlcigpOwogICAgIH0KIAotICAgIGludCBib3JkZXJUb3AoKSBjb25zdAorICAgIHZp
cnR1YWwgaW50IGJvcmRlclRvcCgpIGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAo
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBz
dHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVyQWZ0ZXIoKSA6IGJv
cmRlckJlZm9yZSgpOwogICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gYm9yZGVyU3RhcnQoKSA6IGJvcmRlckVuZCgpOwogICAgIH0KIAotICAgIGludCBi
b3JkZXJCb3R0b20oKSBjb25zdAorICAgIHZpcnR1YWwgaW50IGJvcmRlckJvdHRvbSgpIGNvbnN0
IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0
aW5nTW9kZSgpID8gYm9yZGVyQmVmb3JlKCkgOiBib3JkZXJBZnRlcigpOwpAQCAtMzAwLDcgKzMw
MCw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0
VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmIHN0eWxlTG9naWNhbEhlaWdodCk7CiAKICAg
ICB2aXJ0dWFsIExheW91dFJlY3Qgb3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYg
bG9jYXRpb24sIFJlbmRlclJlZ2lvbiosIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0g
SWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIFBhaW50UGhhc2UgPSBQYWludFBoYXNlQmxvY2tC
YWNrZ3JvdW5kKSBPVkVSUklERSBGSU5BTDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3ZlcmZs
b3dDbGlwUmVjdEZvckNoaWxkTGF5ZXJzKGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVu
ZGVyUmVnaW9uKiByZWdpb24sIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5j
eSkgeyByZXR1cm4gUmVuZGVyQm94OjpvdmVyZmxvd0NsaXBSZWN0KGxvY2F0aW9uLCByZWdpb24s
IHJlbGV2YW5jeSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3ZlcmZsb3dDbGlwUmVjdEZv
ckNoaWxkTGF5ZXJzKGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyUmVnaW9uKiBy
ZWdpb24sIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkgT1ZFUlJJREUg
eyByZXR1cm4gUmVuZGVyQm94OjpvdmVyZmxvd0NsaXBSZWN0KGxvY2F0aW9uLCByZWdpb24sIHJl
bGV2YW5jeSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigp
IE9WRVJSSURFIEZJTkFMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmgKaW5kZXggY2MyM2E4NDJhN2MwNzA3NTY2MDRkOWIyMjNlN2E0YjA0NjIxOTFmMi4uYmY4
M2MzYTBhMGVhYTFjMGEwZmI1MzhiOWZlNjM0ODVmOTI2ODI2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTA5LDIxICsxMDksMjEgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRDZWxsTG9naWNhbFdpZHRoKGludCBjb25zdHJhaW5lZExvZ2ljYWxX
aWR0aCk7CiAKLSAgICB2aXJ0dWFsIGludCBib3JkZXJMZWZ0KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBpbnQgYm9yZGVyUmlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBib3JkZXJUb3AoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGludCBib3JkZXJCb3R0b20oKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGludCBib3JkZXJTdGFydCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGJvcmRlckVuZCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgaW50IGJvcmRlckJlZm9yZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
aW50IGJvcmRlckFmdGVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgYm9yZGVyTGVmdCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGJvcmRlclJpZ2h0KCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBpbnQgYm9yZGVyVG9wKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBpbnQgYm9yZGVyQm90dG9tKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQg
Ym9yZGVyU3RhcnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBib3JkZXJFbmQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBib3JkZXJCZWZvcmUoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBib3JkZXJBZnRlcigpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgdm9pZCBjb2xsZWN0Qm9yZGVyVmFsdWVzKFJlbmRlclRhYmxlOjpDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZXMmKSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBzb3J0Qm9yZGVyVmFsdWVzKFJlbmRl
clRhYmxlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZXMmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKIAog
ICAgIGJvb2wgYWxpZ25MZWZ0UmlnaHRCb3JkZXJQYWludFJlY3QoaW50JiBsZWZ0WE9mZnNldCwg
aW50JiByaWdodFhPZmZzZXQpOwogICAgIGJvb2wgYWxpZ25Ub3BCb3R0b21Cb3JkZXJQYWludFJl
Y3QoaW50JiB0b3BZT2Zmc2V0LCBpbnQmIGJvdHRvbVlPZmZzZXQpOwpAQCAtMTU2LDcgKzE1Niw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodEZy
b21Sb3dIZWlnaHQoTGF5b3V0VW5pdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyc0No
YW5nZWQoYm9vbCBob3Jpem9udGFsU2Nyb2xsYmFyQ2hhbmdlZCwgYm9vbCB2ZXJ0aWNhbFNjcm9s
bGJhckNoYW5nZWQpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzQ2hhbmdlZChib29sIGhv
cml6b250YWxTY3JvbGxiYXJDaGFuZ2VkLCBib29sIHZlcnRpY2FsU2Nyb2xsYmFyQ2hhbmdlZCkg
T1ZFUlJJREU7CiAKICAgICBib29sIGNlbGxXaWR0aENoYW5nZWQoKSBjb25zdCB7IHJldHVybiBt
X2NlbGxXaWR0aENoYW5nZWQ7IH0KICAgICB2b2lkIHNldENlbGxXaWR0aENoYW5nZWQoYm9vbCBi
ID0gdHJ1ZSkgeyBtX2NlbGxXaWR0aENoYW5nZWQgPSBiOyB9CkBAIC0yMTksMjQgKzIxOSwyNCBA
QCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIChpc0Fub255bW91cygpIHx8
IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZUNlbGwgKGFub255bW91cykiIDogIlJl
bmRlclRhYmxlQ2VsbCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQo
KSkgPyAiUmVuZGVyVGFibGVDZWxsIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZUNlbGwiOyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0
KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9i
amVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAw
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lcikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVw
YWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlv
dXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggNDk3NDc4ZjgwNzk0YWNjYjc0NjU1NWUzOGM2
YmQzOWE1ZWIwMGQzMy4uMmZmMDQ4NWM3YjE1MzgzOWVhZjQzZDkzMWIxNDM5MWNjYmVhN2Y4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0xMDYsMTAgKzEwNiwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtVGV4dCgpOwogCi0gICAgdmly
dHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25T
dGF0ZSBzKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZz
ZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApOworICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExh
eW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIE9WRVJSSURFOwogCiAgICAgTGF5
b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgMCk7IH0KICAgICBMYXlvdXRVbml0IG1hcmdpblJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpblJp
Z2h0KCksIDApOyB9CkBAIC0xMTksOCArMTE5LDggQEAgcHVibGljOgogICAgIElubGluZVRleHRC
b3gqIGZpcnN0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RUZXh0Qm94OyB9CiAgICAg
SW5saW5lVGV4dEJveCogbGFzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2xhc3RUZXh0Qm94
OyB9CiAKLSAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNldCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgY2FyZXRNaW5P
ZmZzZXQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBjYXJldE1heE9mZnNldCgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHVuc2lnbmVkIHJlbmRlcmVkVGV4dExlbmd0aCgpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBpbnQgcHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuaAppbmRleCBiZDJlNTBjMjdhNDc2NDdjNzg0ODZiMGY0Mzg2YTY0MDc1MDE4ZjM2Li4zYTBh
MjAxNjdhN2IwNWEyYjVjYmJkNTllN2VjZWRmMGY4ODI1MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtNjAsOSArNjAsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChM
YXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91dFVuaXQgbm9uQ29udGVudEhlaWdodCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHRleHRCYXNlU3R5bGUoKSBjb25zdCA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJl
bGF5b3V0Q2hpbGRyZW4pOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFs
RXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIE9WRVJSSURFOwogCiBwcml2YXRl
OgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwpAQCAtNzEs
MTYgKzcxLDE2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2woKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwg
TGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91c0Jsb2NrKFJlbmRlckJsb2Nr
KikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUdlbmVyYXRl
ZENoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY2FuQmVSZXBsYWNlZFdpdGhJbmxpbmVSdW5JbigpIGNvbnN0IE9WRVJSSURFOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcGFpbnRDb250YWluZXIgPSAwKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9v
bCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2Vk
U3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogaW5saW5lIFJlbmRlclRleHRDb250cm9sKiB0
b1JlbmRlclRleHRDb250cm9sKFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCmluZGV4
IDM4YTQ3MDRmYmMyNGRkYzMzY2NkNmJiYTJhOGJjYTZlNDc3YjIwN2YuLjg4NDI0MDYwZDEwYzRm
NmM1Y2YwNWU4ZDIwNzNjNjM5NzBhN2Q3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAgLTM1LDcgKzM1LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1M
SW5wdXRFbGVtZW50Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KCk7CiAgICAgLy8gRklYTUU6IE1vdmUgY3JlYXRlKlN0eWxlKCkgdG8gdGhlaXIgY2xhc3Nlcy4K
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdGFydFN0eWxlKSBjb25zdCBPVkVSUklERTsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBjcmVhdGVJbm5lckJsb2NrU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNv
bnN0OwogCiAgICAgdm9pZCBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKQEAgLTExNCw3
ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKEVsZW1l
bnQqIGVsZW1lbnQpIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQpIHsgfQogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlmRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dEZyYWdtZW50LmgKaW5kZXggM2ZjN2MwMGZkZTg0NjQwZTgzMjhmZGFhZDIyOWYyNzBjOGVmYjIy
MS4uN2M3NTAzYjAwMDlmMjE2MzY2N2UyNjlhNWIyYjc4ZGNjNWYwNzk3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaApAQCAtNjMsNyArNjMsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBVQ2hhciBwcmV2
aW91c0NoYXJhY3RlcigpIGNvbnN0OworICAgIHZpcnR1YWwgVUNoYXIgcHJldmlvdXNDaGFyYWN0
ZXIoKSBjb25zdCBPVkVSUklERTsKICAgICBSZW5kZXJCbG9jayogYmxvY2tGb3JBY2NvbXBhbnlp
bmdGaXJzdExldHRlcigpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV9zdGFydDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDU5N2U1YTYzMzFmOTZmN2FlNWI2YWRiNmQ2
MGM3OTBhZDQ4MDdlNzAuLjYwZmZiZjBjMTk3MjU0MmI3NjIzNzA5ZjAwYzQ0Mzg5YjlmZjhiZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtODEsNyArODEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVy
cyhjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAgICAgdm9pZCBy
ZXBhaW50Vmlld0FuZENvbXBvc2l0ZWRMYXllcnMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
T1ZFUlJJREU7CiAKICAgICBlbnVtIFNlbGVjdGlvblJlcGFpbnRNb2RlIHsgUmVwYWludE5ld1hP
Uk9sZCwgUmVwYWludE5ld01pbnVzT2xkLCBSZXBhaW50Tm90aGluZyB9OwpAQCAtOTYsOCArOTYs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIHByaW50aW5nKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3QgT1ZFUlJJ
REU7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdm9pZCBzZXRNYXhp
bWFsT3V0bGluZVNpemUoaW50IG8pOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGxheW91dFN0YXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0U3RhdGVEaXNh
YmxlQ291bnQgPT0gMCAmJiBtX2xheW91dFN0YXRlOyB9CiAgICAgTGF5b3V0U3RhdGUqIGxheW91
dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRTdGF0ZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAKICAgICBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTG9naWNhbEhlaWdodDsgfQogICAgIHZv
aWQgc2V0UGFnZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpCkBAIC0yMDIsNyArMjAy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tUd29QYXNzTGF5b3V0Rm9yQXV0b0hlaWdodFJl
Z2lvbnMoKSBjb25zdDsKICAgICBGbG93VGhyZWFkQ29udHJvbGxlciYgZmxvd1RocmVhZENvbnRy
b2xsZXIoKTsKIAotICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7
CiAKICAgICBJbnRlcnZhbEFyZW5hKiBpbnRlcnZhbEFyZW5hKCk7CiAKQEAgLTIzMyw3ICsyMzMs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250
YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlwLCBi
b29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5h
dGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcEFi
c29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQ29sdW1ucyhpbnQgZGVz
aXJlZENvbHVtbkNvdW50KSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCBjYzIxZGIzNzAyNTljMmMwZDgw
NGQ5MTFjYmQ1NjI0ZWQ0ZmNhMzc4Li4xNWY4NmJjYWZmODRhNDFhY2E0NzNmNTkzMTlkZDhlNzEz
ZjU3YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTEy
Miw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0
VHlwZSk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9t
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSkgT1ZFUlJJREUgRklOQUw7CiAKICAgICB1c2luZyBJbmxpbmVC
b3g6Omhhc1NlbGVjdGVkQ2hpbGRyZW47CkBAIC0xOTksNyArMTk5LDcgQEAgcHVibGljOgogICAg
IE5vZGUqIGdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShJbmxpbmVCb3gqJikgY29uc3Q7CiAKICNp
Zm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBib3hOYW1lKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiBib3hOYW1lKCkgY29uc3QgT1ZFUlJJREU7CiAjZW5kaWYK
IHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBsaW5lU25hcEFkanVzdG1lbnQoTGF5b3V0VW5pdCBk
ZWx0YSA9IDApIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IDIzYjU2OGQzOWNmMTQ2ZGE1OTQ2OTg4N2IzODQx
YzY1MDdkODM3MGYuLmM1ODExMjhmM2IxMzQwMGQyYTU1YTM5NTczYTkwNWJiMmFjNGU1YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJs
b2NrLmgKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgUmVuZGVyTWF0aE1MQmxvY2sgOiBwdWJsaWMg
UmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1l
bnQqIGNvbnRhaW5lcik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVy
T2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFs
bG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxCbG9jaygpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxCbG9jaygpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TWF0aE1MUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRl
eCBkZjUzMDgxNjMxMmM5MDk2NzM1MGUxYzNmN2Y4MTkxNjU2NDQyMWJmLi43YmYzMWI3MzJlOGI5
ODIxMTRiZTc0NjU4NzNlMmViN2U4MjRhOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC0zNiwyMyArMzYs
MjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyTWF0aE1MRnJhY3Rpb24gOiBw
dWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgogICAgIFJlbmRlck1hdGhNTEZyYWN0
aW9uKEVsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBj
aGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmpl
Y3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmly
dHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7CisgICAg
dmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgT1ZF
UlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25z
dCBPVkVSUklERTsKICAgICBmbG9hdCBsaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lVGhpY2tuZXNzOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50JikgT1ZFUlJJREU7CisKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwogICAgIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxGcmFjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxGcmFjdGlvbigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGZpeENoaWxkU3R5bGUo
UmVuZGVyT2JqZWN0KiBjaGlsZCk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJNYXRoTUxGcmFjdGlvbiI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVyTWF0aE1MRnJhY3Rpb24iOyB9CiAgICAg
CiAgICAgTGF5b3V0VW5pdCBtX2xpbmVUaGlja25lc3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IDc0
N2YwNzBkOTE1ZmQyYTk2MzdlZGYzNDFhMjQ1ODY1MTMzMjBiZjYuLmYyMzc1OWQ3ZGU3Y2Y4YTI4
ZGE1YjAxYTUyZTRlZTQ3ZDNhY2FiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTM4LDkgKzM4LDkgQEAg
cHVibGljOgogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKEVsZW1lbnQqKTsKICAgICBSZW5kZXJN
YXRoTUxPcGVyYXRvcihFbGVtZW50KiwgVUNoYXIgb3BlcmF0b3JDaGFyKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChS
ZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0No
aWxkQWxsb3dlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIE9WRVJSSURFOwogICAgIAogICAg
IHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIE9W
RVJSSURFIHsgcmV0dXJuIHRoaXM7IH0KQEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAg
IFJlbmRlckJsb2NrKiBjcmVhdGVHbHlwaChVQ2hhciBnbHlwaCwgaW50IG1heEhlaWdodEZvclJl
bmRlcmVyLCBpbnQgY2hhclJlbGF0aXZlKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJS
ZW5kZXJNYXRoTUxPcGVyYXRvciAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0aE1MT3BlcmF0b3Ii
OyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxPcGVyYXRvciAoYW5vbnltb3Vz
KSIgOiAiUmVuZGVyTWF0aE1MT3BlcmF0b3IiOyB9CiAKICAgICBpbnQgZ2x5cGhIZWlnaHRGb3JD
aGFyYWN0ZXIoVUNoYXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCmluZGV4IDIxNTNjZjM3NTJlMTE0ZDhlN2Q1NjBkYmE1NWFmMzI1MWE4MmE1ZjQu
LmQ0ZWMzMmRjZTI5ODRiMWM4YTZiZjYyMjE0MzVlNjQ4OTZmYzQ5MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC05Myw3ICs5Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0JikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJh
c2ljU2hhcGUqLCBkb3VibGUpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBCYXNpY1NoYXBlUmVjdGFuZ2xlVHlwZTsgfQorICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQmFzaWNTaGFwZVJlY3Rhbmds
ZVR5cGU7IH0KIHByaXZhdGU6CiAgICAgQmFzaWNTaGFwZVJlY3RhbmdsZSgpIHsgfQogCkBAIC0x
MjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25z
dCBGbG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmFzaWNTaGFw
ZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSosIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CiAKLSAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEJhc2ljU2hhcGVDaXJjbGVUeXBl
OyB9CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBCYXNp
Y1NoYXBlQ2lyY2xlVHlwZTsgfQogcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlQ2lyY2xlKCkgeyB9
CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0
aCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxC
YXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlKiwgZG91YmxlKSBjb25zdCBPVkVSUklE
RTsKIAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQmFzaWNTaGFwZUVs
bGlwc2VUeXBlOyB9IAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gQmFzaWNTaGFwZUVsbGlwc2VUeXBlOyB9CiBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVF
bGxpcHNlKCkgeyB9CiAKQEAgLTE3MCw5ICsxNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlKiwgZG91YmxlKSBj
b25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCB7
IHJldHVybiBtX3dpbmRSdWxlOyB9CisgICAgdmlydHVhbCBXaW5kUnVsZSB3aW5kUnVsZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KIAotICAgIHZpcnR1YWwgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gQmFzaWNTaGFwZVBvbHlnb25UeXBlOyB9CisgICAgdmlydHVh
bCBUeXBlIHR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBCYXNpY1NoYXBlUG9seWdvblR5
cGU7IH0KIHByaXZhdGU6CiAgICAgQmFzaWNTaGFwZVBvbHlnb24oKQogICAgICAgICA6IG1fd2lu
ZFJ1bGUoUlVMRV9OT05aRVJPKQpAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqLCBkb3Vi
bGUpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGVUeXBlOyB9CisgICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGVUeXBl
OyB9CiBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZSgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgK
aW5kZXggOGY3ODZlOTgxMDEzNjlhNTM0NTJjNmQ5YzBmOTA0MDk2NTkwMjBlOS4uMzlkYzU5MTU2
MzQyNzVhMDc5YjA4MDgxZWQ5NGI2NjJhZjQ4NWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNTMsMTIgKzUzLDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFp
bnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3Qg
UmVuZGVyR2VvbWV0cnlNYXAqKSBjb25zdCBPVkVSUklERSBGSU5BTDsKIAogICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29s
KiB3YXNGaXhlZCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSBBcHBseUNvbnRhaW5lckZs
aXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVh
bCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBj
b25zdCBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBPVkVSUklERSBGSU5B
TDsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7
CiAKICAgICBzdGF0aWMgYm9vbCBjaGVja0ludGVyc2VjdGlvbihSZW5kZXJPYmplY3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKICAgICBzdGF0aWMgYm9vbCBjaGVja0VuY2xvc3VyZShSZW5kZXJPYmpl
Y3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJvdGVjdGVkOgogCiBw
cml2YXRlOgogICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBuZXZlciBiZSBjYWxsZWQsIFNWRyB1
c2VzIGEgZGlmZmVyZW50IG5vZGVBdFBvaW50IG1ldGhvZAotICAgIGJvb2wgbm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKSBPVkVSUklERSBGSU5BTDsK
ICAgICBib29sIG1faGFzU1ZHU2hhZG93OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCA4OTFjNDJhZGRhY2YxMzc3NjA5OWJkZDMyODA2
M2RlOWJmODNmMmZiLi4wMzY5ZmExYmMzZTM0ODZiOTU2ZTE1N2RmZjhhMjc0MzI0MDFlYzhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG9iamVjdCk7CiAgICAgfQogCi0g
ICAgdm9pZCBzdHJva2VTdHlsZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisgICAgdmlydHVh
bCB2b2lkIHN0cm9rZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgT1ZFUlJJREUKICAg
ICB7CiAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQo
Y29udGV4dCwgbV9zdHlsZSwgbV9vYmplY3QpOwogICAgIH0KQEAgLTkxLDcgKzkxLDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwog
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMo
Y29uc3QgRmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxD
b250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2luZFJ1bGUpIGNvbnN0OwogICAgIGZs
b2F0IHN0cm9rZVdpZHRoKCkgY29uc3Q7CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1NWR1NoYXBlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBPVkVS
UklERSBGSU5BTCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdTaGFwZSI7IH0KKyAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVy
U1ZHU2hhcGUiOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgRklOQUw7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
T1ZFUlJJREUgRklOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRCb29sZWFuLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKaW5k
ZXggZDZkNDhmYWI3MjhkODM5NDlhNmM5ZWE4MjAyZDY0NDc3YzZmYmEwNS4uNTdhMjQxZjAxMmU4
OTczNWQzMzQ5OWU5OWM5Y2NjOWY5MjJjZDMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEJvb2xlYW4uaApAQCAtNDIsMTYgKzQyLDE2IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRl
ZEJvb2xlYW5BbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAg
IHZpcnR1YWwgflNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yKCkgeyB9CiAgICAgCi0gICAgdmly
dHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFy
dEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jh
c2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRU
eXBlKik7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hh
bmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotCi0gICAgdmlydHVh
bCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBl
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1YWwg
ZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZh
bChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
T1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVE
aXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
IE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRTdHJpbmcuaAppbmRleCA4OWM4NmEwMjc2MzllZDg4OWM3YWQzOGIzODAyYTU4
NmY3Yzg2ZmUxLi44NjhiY2M1NmIxMDU0YTc5ZjBmZjAxMTQwNTJhYTM3ZWU4YjMxN2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaApAQCAtNDMsMTYgKzQzLDE2IEBAIHB1
YmxpYzoKICAgICBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
LCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcigp
IHsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiwgU1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdl
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
OwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSop
OwotICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZh
bEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0
QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBT
VkdBbmltYXRlZFR5cGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxD
aGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRU
eXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZH
QW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBm
bG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0
cmluZyYgdG9TdHJpbmcpIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCmluZGV4IGEy
YmI0NzNkYWIzODdiNjUwZGI2ZmYwZjI5Njk2MzZiZWFhMzY2ODguLjNjMjkwOTJkYTQ2YzM0ZjM1
ODMxNDZjZGY1NDZkZGM0ZDk0N2E2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmgKQEAgLTQyLDE2ICs0MiwxNiBAQCBwdWJsaWM6CiAgICAgU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0Vs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcigp
IHsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiwgU1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdl
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
OwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSop
OwotICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZh
bEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0
QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBT
VkdBbmltYXRlZFR5cGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxD
aGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRU
eXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNp
Z25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZH
QW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBm
bG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0
cmluZyYgdG9TdHJpbmcpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYg
bV90cmFuc2Zvcm1UeXBlU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRleCA2NTNm
YTNiNjExYzU3MTRmMzA3MTM4MGM3MjNkZGIwYTFhNzE4ZDEyLi4wYTY2MGMyMmMwNzI0OTI0ZmZj
MmRiODJjOGYwYzQ4ZGQ2ZWI0MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29u
c3QgVVJMJik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwogCiAgICAgRmxvYXRQb2ludCBtX3Ry
YW5zbGF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCBlODc1ZTc4NzczMmYzNjg3
NmI2ZTA2ZDA2Y2Q4NjBlY2NmMzg3MmJkLi40NjBmOTJhNTI4NmMzMjY4MTUxZWU5MjgyNDc5M2E0
NzZhMTVjOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTE0MiwxMCArMTQyLDEwIEBA
IHByb3RlY3RlZDoKICAgICBTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogICAgIHZpcnR1YWwgflNWR0VsZW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
OworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZpZWRE
aXJlY3RseSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwogCkBAIC0xNzEsOCArMTcxLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgYXJlQXV0aG9yU2hhZG93c0FsbG93ZWQoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVk
U3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7Ci0gICAgdmlydHVhbCBSZW5kZXJTdHlsZSogdmly
dHVhbENvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllciA9IE5PUFNF
VURPKSB7IHJldHVybiBjb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOyB9Ci0g
ICAgdmlydHVhbCBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKTsKKyAgICB2aXJ0
dWFsIFJlbmRlclN0eWxlKiB2aXJ0dWFsQ29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVt
ZW50U3BlY2lmaWVyID0gTk9QU0VVRE8pIE9WRVJSSURFIHsgcmV0dXJuIGNvbXB1dGVkU3R5bGUo
cHNldWRvRWxlbWVudFNwZWNpZmllcik7IH0KKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2FsY1N0
eWxlKFN0eWxlOjpDaGFuZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzU3VwcG9y
dGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKaW5kZXggYzczN2NkOTE0N2Q0YTE2
NTk5OTQ2OTkwZDA4ZDJiMzQ3ODhiNmU5NS4uNmIwYjJkMjg1ODFmMjUzOTdjN2ZlYWIwNjUzODE1
MTZlZTIxMjlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaApAQCAt
NDcsMTIgKzQ3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGFyZW50Tm9kZShTVkdFbGVt
ZW50SW5zdGFuY2UqIGluc3RhbmNlKSB7IG1fcGFyZW50SW5zdGFuY2UgPSBpbnN0YW5jZTsgfQog
Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwot
ICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgT1ZFUlJJREU7CiAKICAgICB1c2luZyBFdmVudFRhcmdl
dDo6ZGlzcGF0Y2hFdmVudDsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PikgT1ZFUlJJREU7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAgICAgYm9vbCBoYXNUcmVlU2hhcmVkUGFyZW50KCkgY29u
c3QgeyByZXR1cm4gISFtX3BhcmVudEluc3RhbmNlOyB9CiAKLSAgICB2aXJ0dWFsIE5vZGUqIHRv
Tm9kZSgpOworICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgT1ZFUlJJREU7CiAKICAgICB2b2lk
IGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBjaGlsZCk7CiAgICAg
dm9pZCBzZXRTaGFkb3dUcmVlRWxlbWVudChTVkdFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RWxlbWVudC5oCmluZGV4IGVkMmE1ODBkNGI4N2IzZGFjODQ4YzYwMmY0MzcxMmJiMzM4MjFm
Y2MuLjU0OWVmODYyNzRhY2Q4NDdmOTM2NjRhNzBlZjhjNmEyNTFiMzEwOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RWxlbWVudC5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgU1ZHRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIHsg
cmV0dXJuIGZhbHNlOyB9ICAKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGVu
c3VyZUdseXBoQ2FjaGUoKTsKICAgICB2b2lkIHJlZ2lzdGVyTGlnYXR1cmVzSW5HbHlwaENhY2hl
KFZlY3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCmluZGV4IGU5YTBkMjQz
MzI4OGFlMWE1NjI0MjUyNzk5OWViMDNiNGNkY2E2MjMuLmQ1ZDg5Mjk0MmU1NDUzMWEzMjE5MjE5
YTM4YTE0YzcyYzhlOTM5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBAIC0zNiwxNiAr
MzYsMTYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdHRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOworICAgIHZpcnR1YWwgUmVuZGVy
RWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0
czo6aXNWYWxpZCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzRm9jdXMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiAKICAgICBCRUdJTl9ERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR0VsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCmluZGV4IDNk
OTMxNDAzMzBhMDFkNWIxMjcyY2NjOGVjYmU3YzE5Mjg3ZTc4ODIuLjk3NTgzOWY5MWI1MGQzNDQz
NGNmZjBkNWQxMmMyOTRiNTJjOWM4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmgKQEAgLTM2LDI3ICszNiwyNyBAQCBjbGFzcyBTVkdHcmFwaGljc0VsZW1lbnQgOiBw
dWJsaWMgU1ZHRWxlbWVudCwgcHVibGljIFNWR1RyYW5zZm9ybWFibGUsIHB1YmxpYyBTVgogcHVi
bGljOgogICAgIHZpcnR1YWwgflNWR0dyYXBoaWNzRWxlbWVudCgpOwogCi0gICAgdmlydHVhbCBB
ZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgPSBBbGxvd1N0eWxlVXBk
YXRlKTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oU3R5bGVVcGRh
dGVTdHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpOwotICAgIHZpcnR1YWwgU1ZHRWxlbWVudCog
bmVhcmVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU1ZHRWxlbWVudCog
ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBnZXRDVE0oU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTShTdHlsZVVwZGF0
ZVN0cmF0ZWd5ID0gQWxsb3dTdHlsZVVwZGF0ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTVkdF
bGVtZW50KiBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0IE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFu
c2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSBtb2RlKSBjb25zdCB7IHJldHVybiBTVkdUcmFu
c2Zvcm1hYmxlOjpsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShtb2RlKTsgfQotICAgIHZp
cnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CisgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZH
TG9jYXRhYmxlOjpDVE1TY29wZSBtb2RlKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBTVkdUcmFu
c2Zvcm1hYmxlOjpsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShtb2RlKTsgfQorICAgIHZp
cnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3Jt
KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRCQm94KFN0eWxlVXBkYXRl
U3RyYXRlZ3kgPSBBbGxvd1N0eWxlVXBkYXRlKTsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBnZXRC
Qm94KFN0eWxlVXBkYXRlU3RyYXRlZ3kgPSBBbGxvd1N0eWxlVXBkYXRlKSBPVkVSUklERTsKIAog
ICAgIC8vICJiYXNlIGNsYXNzIiBtZXRob2RzIGZvciBhbGwgdGhlIGVsZW1lbnRzIHdoaWNoIHJl
bmRlciBhcyBwYXRocwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgmKTsKLSAgICB2
aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVy
U3R5bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAgIFNWR0dy
YXBoaWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBPVkVSUklERTsKIAogICAgIEJFR0lOX0RFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVElFUyhTVkdHcmFwaGljc0VsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVf
QU5JTUFURURfVFJBTlNGT1JNX0xJU1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCkBAIC02Niw5ICs2
Niw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gU1ZHVGVzdHMKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnModGhpcyk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSgpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkgT1ZFUlJJREUg
eyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgT1ZFUlJJREUgeyBTVkdU
ZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpIE9WRVJSSURFIHsgU1ZHVGVzdHM6OnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UodGhpcyk7IH0KIAogICAgIC8vIFVzZWQgYnkgPGFuaW1h
dGVNb3Rpb24+CiAgICAgT3duUHRyPEFmZmluZVRyYW5zZm9ybT4gbV9zdXBwbGVtZW50YWxUcmFu
c2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAppbmRleCAzYzRmN2JhMGMw
ZWIyNWVmZGMwMmE0MzlmODk4ZjA1ZDZhMDYzODM2Li4xMWFhMDdjZTJlZmNmYzFjNzI5ODQ4MWMx
YzU3ZDZlMWM0ZDM4ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtVmFs
dWUodW5zaWduZWQgdHlwZSwgY29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQsIFNW
R1RyYW5zZm9ybSYpOwogICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9ybVR5cGUg
cGFyc2VUcmFuc2Zvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1T
Y29wZSkgY29uc3QgeyByZXR1cm4gYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOyB9CisgICAgdmly
dHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9j
YXRhYmxlOjpDVE1TY29wZSkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gYW5pbWF0ZWRMb2NhbFRy
YW5zZm9ybSgpOyB9CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYW5pbWF0ZWRMb2NhbFRy
YW5zZm9ybSgpIGNvbnN0ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKaW5k
ZXggNjVlZTllNThkYzJiMWI5N2Y2MzZiMDJkODY5MDZlNWE1OTY3ZTNiNy4uOGQwMWM2MTk3Y2Yz
MzEzNTEzN2Y4MWQzNmY4ZjBlMzIyNGZiOTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
TGlzdFByb3BlcnR5Kj4obV9hbmltVmFsLmdldCgpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNBbmltYXRlZExpc3RUZWFyT2ZmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0FuaW1hdGVkTGlzdFRlYXJPZmYoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKICAgICBpbnQgZmluZEl0ZW0oU1ZHUHJvcGVydHkqIHByb3BlcnR5KSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmgKaW5k
ZXggNmY2NDNlODdjZTZkNGNkODBiNTcyZTlmM2Q1NjNhZTczMjQ2ZDljZC4uY2MwOGI5YWRhZjQx
OGRmZTIzNTJiOTExOWM3ODc5Y2M1Yzk4YjI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTI5LDE0ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZiA6IHB1
YmxpYyBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4gewog
cHVibGljOgotICAgIHZpcnR1YWwgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1M
aXN0PiogYmFzZVZhbCgpCisgICAgdmlydHVhbCBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1Ry
YW5zZm9ybUxpc3Q+KiBiYXNlVmFsKCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmICghbV9i
YXNlVmFsKQogICAgICAgICAgICAgbV9iYXNlVmFsID0gU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZjo6Y3JlYXRlKHRoaXMsIEJhc2VWYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1Ry
YW5zZm9ybUxpc3Q+Kj4obV9iYXNlVmFsLmdldCgpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4qIGFuaW1WYWwoKQorICAgIHZp
cnR1YWwgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0PiogYW5pbVZhbCgp
IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIW1fYW5pbVZhbCkKICAgICAgICAgICAgIG1f
YW5pbVZhbCA9IFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSh0aGlzLCBB
bmltVmFsUm9sZSwgbV92YWx1ZXMsIG1fd3JhcHBlcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IDNjNjU1
MjQ2Nzk0YzQzMDcyNzdkNWUxNjMyNjMxNDkzNWMzMWU3ODYuLjFjNjc3MTI3NTU3OGFlNTQ5ZTZl
M2E0MDRkYjgyZDE5OTE0NDY1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkg
Y29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IE9WRVJSSURFCiAgICAg
ewogICAgICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpCisgICAgdmlydHVh
bCB2b2lkIGNvbW1pdENoYW5nZSgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBBU1NFUlQobV92
YWx1ZXMpOwogICAgICAgICBBU1NFUlQobV93cmFwcGVycyk7CkBAIC0xNDksMTMgKzE0OSwxMyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y29tbWl0Q2hhbmdlKCk7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUo
Y29uc3QgTGlzdEl0ZW1UeXBlJiwgdW5zaWduZWQqKQorICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNz
SW5jb21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVtVHlwZSYsIHVuc2lnbmVkKikgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0
ZW1XcmFwcGVyKFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+JiBuZXdJdGVtLCB1bnNpZ25lZCogaW5k
ZXhUb01vZGlmeSkKKyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFw
cGVyKFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+JiBuZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01v
ZGlmeSkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1h
dGVkUHJvcGVydHlPZkl0ZW0gPSBuZXdJdGVtLT5hbmltYXRlZFByb3BlcnR5KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKaW5k
ZXggMDdkYmQxMGYwYjY0YTg1ZDBkOTM3OWIwYmQ3NDA0NTI1YjdkMTllMS4uYzY4M2ZiNGViYjhj
YzVlMWJiMThhMzcwMGZmNGJhMDk5NTI3MGJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmgKQEAgLTg5LDE0ICs4OSwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eSA9IDA7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgp
IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQcm9wZXJ0eSB8fCBtX3Zh
bHVlSXNDb3B5KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2FuaW1hdGVkUHJvcGVy
dHktPmNvbW1pdENoYW5nZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5
KCkgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IE9WRVJSSURFCiAg
ICAgewogICAgICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5k
ZXggMjlmMmRlZTIwZTc3MmNhNWJmNTM4ZmFmZTRjZTZiOTU1NTY5YzgwMS4uMjUzMmI5MjZkZDMz
ZjYxM2QxMTdiMjNjZTg0MWJhMWFjYzA0NWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOwogCiAgICAgICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGlu
Z3MoKSB7IHJldHVybiBtX2dyb3VwU2V0dGluZ3MuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgT1ZFUlJJREU7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBPVkVSUklERTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213585</attachid>
            <date>2013-10-07 08:15:59 -0700</date>
            <delta_ts>2013-10-07 09:18:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122439-20131007081559.patch</filename>
            <type>text/plain</type>
            <size>465261</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MGE1OWI4YTdkMDk1MmE0YzQ1ODQ1YWRjMDMxYjdkZDE1NGQ3Njk1Li5mMzliYTJlZGY3YjI5ZDg0
ODE2ZWRmOWM0MmUyNWU3M2EzMjMyNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxMy0xMC0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBPVkVSUklERSBhbmQgdmlydHVhbCB3aGVyZSBhcHByb3ByaWF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkv
SlNBUElXcmFwcGVyT2JqZWN0Lm1tOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjp+SlNDYWxsYmFja09iamVjdERh
dGEpOgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5tbToKKyAgICAgICAgKiBBUEkvSlNT
Y3JpcHRSZWYuY3BwOgorICAgICAgICAoT3BhcXVlSlNTY3JpcHQ6On5PcGFxdWVKU1NjcmlwdCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRv
clNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5o
OgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlLmg6CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFs
aXplci5oOgorICAgICAgICAqIGRmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oOgorICAgICAgICAqIGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOgorICAgICAgICAqIGhlYXAvU3VwZXJS
ZWdpb24uaDoKKyAgICAgICAgKiBqaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oOgorICAgICAg
ICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwOgorICAgICAgICAqIGpp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAg
ICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgICogaml0L0pJVFRvREZHRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgICogaml0L0p1bXBSZXBsYWNlbWVudFdhdGNo
cG9pbnQuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0Rh
dGFWaWV3Lmg6CisgICAgICAgICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAg
ICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwQ2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9s
bGVyLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5oOgorCiAyMDEzLTEwLTA2ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5pZmllZCB0ZXN0IGlu
ZnJhc3RydWN0dXJlIHZpYSB0aGUganNjIHNoZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4MWMzNWZlZjRiYTdkY2NlMTRk
N2Q5MTExYzBkM2NjZjAzZmJhZjguLjQzMmE0NjMxNzQ1NWFjZmVjMTljYzMzYjYxYWRmNWEyYzkz
NjgwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTAtMDYgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgT1ZFUlJJREUgYW5kIHZpcnR1YWwg
d2hlcmUgYXBwcm9wcmlhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL0NvbXBpbGVyLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVh
bS5oOgorICAgICAgICAqIHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oOgorCiAyMDEzLTEwLTA2ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSYW5nZSBjb25zdHJ1
Y3RvcnMgc2hvdWxkIHRha2UgYSBEb2N1bWVudCYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiMGNlNmEyMTA4
OTI5YjJlZjRkYTY0ZDdkMTNiY2YzYTUxZDViZC4uMjhkZmY0ZjM4Y2FlYjExYWRmYWNhM2RiMWE1
NzdiZDBkZDU4YjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOSBAQAorMjAxMy0xMC0wNiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBPVkVS
UklERSBhbmQgdmlydHVhbCB3aGVyZSBhcHByb3ByaWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Qcm9jZXNzaW5nRXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZERT
UEtlcm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vRGVsYXlEU1BLZXJuZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Lmg6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVudUxpc3RPcHRpb24uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TW9ja09iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVz
c0luZGljYXRvci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3Qu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUhlYWRlckNvbnRhaW5lci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlUm93Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmg6CisgICAg
ICAgICogYnJpZGdlL2MvY19jbGFzcy5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2Uu
aDoKKyAgICAgICAgKiBicmlkZ2UvYy9jX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9yb290Lmg6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6CisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNoZWV0Lmg6CisgICAgICAgICogZG9tL0F0dHIuaDoKKyAgICAgICAgKiBkb20vQmVmb3JlVGV4
dEluc2VydGVkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vQ0RBVEFTZWN0aW9uLmg6CisgICAgICAg
ICogZG9tL0NoaWxkTm9kZUxpc3QuaDoKKyAgICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01h
cC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2
ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5oOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0Vycm9yRXZlbnQuaDoKKyAgICAgICAgKiBk
b20vS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9t
L1BhZ2VUcmFuc2l0aW9uRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVudC5oOgor
ICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAqIGRv
bS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogZG9tL1RhZ05vZGVMaXN0Lmg6CisgICAgICAg
ICogZG9tL1RleHQuaDoKKyAgICAgICAgKiBkb20vVGV4dEV2ZW50Lmg6CisgICAgICAgICogZG9t
L1RyYW5zaXRpb25FdmVudC5oOgorICAgICAgICAqIGRvbS9VSUV2ZW50Lmg6CisgICAgICAgICog
ZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50Lmg6CisgICAgICAgICogZG9tL1dlYktpdFRyYW5zaXRp
b25FdmVudC5oOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmg6
CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGUuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVU
aHJlYWRUYXNrLmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaDoKKyAgICAg
ICAgKiBodG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxB
bmNob3JFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxJbWFnZUxvYWRlci5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTExhYmVsRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50VHlwZXMuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAg
ICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudENsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAq
IHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1BPREludGVydmFsVHJlZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxiYXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFy
VGltaW5nRnVuY3Rpb246On5MaW5lYXJUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjp+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjp+U3RlcHNUaW1pbmdGdW5j
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNZXRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkU3Ry
aW5nLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oOgorICAgICAg
ICAqIHN2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRl
YXJPZmYuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2Zm
Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUZWFyT2ZmLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorCiAyMDEzLTEwLTA2ICBBbmRyZWFz
IEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSYW5nZSBjb25zdHJ1Y3RvcnMg
c2hvdWxkIHRha2UgYSBEb2N1bWVudCYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0Lm1tCmluZGV4IGMwNmRlMzk3OGYxZWQ0MzM4Mzg1ODNhZDRhYzkw
ZDg5YWY5MGZmMjAuLjA5ZGFkZThiMjRlMWE0OTA1NmFkNDI5NTVkZTMyOGEzYWVlYmFhOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tCkBA
IC0zOCw4ICszOCw4IEBACiAKIGNsYXNzIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyIDog
cHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCopOwotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIE9WRVJSSURFOwogfTsK
IAogc3RhdGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmpl
Y3RIYW5kbGVPd25lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdC5oCmluZGV4IDlkMzY2ODU1NjBhMmE0YTQ3NTk0Yjc3MzlhYWYzMzVhZmZmMzUyMjAuLjUx
MDE2NGQ5ZGYxOWE2MTQxNTdjYzdiZjcxYWY0YTc5NTU2YTA4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVj
dCBKU0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIEpTQ2xh
c3NSZXRhaW4oanNDbGFzcyk7CiAgICAgfQogICAgIAotICAgIH5KU0NhbGxiYWNrT2JqZWN0RGF0
YSgpCisgICAgdmlydHVhbCB+SlNDYWxsYmFja09iamVjdERhdGEoKQogICAgIHsKICAgICAgICAg
SlNDbGFzc1JlbGVhc2UoanNDbGFzcyk7CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHN0cnVj
dCBKU0NhbGxiYWNrT2JqZWN0RGF0YSA6IFdlYWtIYW5kbGVPd25lciB7CiAgICAgICAgIFByaXZh
dGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOwogICAgIH07CiAgICAgT3duUHRyPEpTUHJpdmF0
ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOwotICAgIHZpcnR1YWwgdm9pZCBmaW5h
bGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUo
SGFuZGxlPFVua25vd24+LCB2b2lkKikgT1ZFUlJJREU7CiB9OwogCiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQppbmRleCA3NTgwODJmOWY5OTIwYTEz
YWZjMzJmNzI1MjM3YjFlMGY5NDQxZmJiLi45OGVhZmNhMGU3MWZkNzVmODMyMzgwMTFkMDFmZWQ4
ZjFiMDlmYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdl
ZFZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUu
bW0KQEAgLTQwLDggKzQwLDggQEAKIAogY2xhc3MgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciA6
IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9y
JikgT1ZFUlJJREU7CiB9OwogCiBzdGF0aWMgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciogbWFu
YWdlZFZhbHVlSGFuZGxlT3duZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0
UmVmLmNwcAppbmRleCA4YTVmM2NhZjMzYTE0ZDUwMDM4MTRmYTM2MmY5ZTljMTk0MDE2MGI4Li45
YmE4MmE2Zjc1ZTQwMGViZTI4YmZhZDg2MDYzNzNjOWI1YzUxMmVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBXVEY6OmFkb3B0UmVmKG5ldyBPcGFxdWVKU1NjcmlwdCh2bSwgdXJsLCBz
dGFydGluZ0xpbmVOdW1iZXIsIHNvdXJjZSkpOwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYg
c291cmNlKCkgY29uc3QgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc291cmNl
KCkgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZTsKICAgICB9
CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIH5PcGFxdWVK
U1NjcmlwdCgpIHsgfQorICAgIHZpcnR1YWwgfk9wYXF1ZUpTU2NyaXB0KCkgeyB9CiAKICAgICBW
TSogbV92bTsKICAgICBTdHJpbmcgbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYmRkYTU4OWEzNThlY2JkOTAyZmFmZjZhMDMxM2M3ZDhk
MmQ0ODg2Ni4uODZhYmM1NGI5ZWM4MzQ4YjY0MDUxNjkwMzZhM2E0MjlhYzg5MDY2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTAxLDggKzkwMSw4
IEBAIHB1YmxpYzoKICAgICBib29sIG1fZGlkRmFpbEZUTENvbXBpbGF0aW9uOwogICAgIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CisgICAgdmly
dHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBPVkVSUklERTsKIAogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpOwpAQCAt
MTEyNyw4ICsxMTI3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEpJVCkKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKLSAgICB2aXJ0dWFsIERGRzo6
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7CisgICAgdmlydHVhbCBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBERkc6OkNhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIE9WRVJSSURFOwogI2VuZGlmCiB9
OwogCkBAIC0xMTQ5LDggKzExNDksOCBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKLSAgICB2
aXJ0dWFsIERGRzo6Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCk7Cisg
ICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpIE9WRVJSSURF
OwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgpAQCAtMTE3MSw4ICsxMTcxLDggQEAgcHVibGljOgog
ICAgIAogI2lmIEVOQUJMRShKSVQpCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBDb2RlQmxvY2sq
IHJlcGxhY2VtZW50KCk7Ci0gICAgdmlydHVhbCBERkc6OkNhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWxJbnRlcm5hbCgpOworICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgREZHOjpDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxl
dmVsSW50ZXJuYWwoKSBPVkVSUklERTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmgKaW5kZXggOTBmNjZjZGRjMWMxYzcyNGI5OWE5ZDg4MGU2NzA4NGI5NGJlOWY2
NS4uMmZhNTYwZTgxMTYwMDBlYzkyNTg1ODEzNWM5OTFlN2RlMTM2ZmQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
T3duUHRyPFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+JiBoZWFkKTsKIAogcHJvdGVj
dGVkOgotICAgIHZvaWQgZmlyZUludGVybmFsKCk7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJbnRl
cm5hbCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVT
dHViSW5mbyYgbV9ob2xkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDc2NDdlZDQ0NWNkOGE2MDhl
NzkyYmFiOTVkNmU2Mzc1YjgxMTZlMjAuLjUxYzBjNmEwZWM4NGYzZTc5MmVmODYzZWM0Njk2MDAx
NGM5ZWIyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlp
ZnlTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0
aXZlSklUKiBqaXQpCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRp
dmVKSVQqIGppdCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGxpbmtGcm9tKGppdCk7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDg2NjE2MWFkZjFl
MDFmN2M5MTAwMDY4NDllYTRiMTNjZjVhOTA0ZGMuLjcyNTI4ZjE0ZGJmNWViOTcyZjlmODEzMGNl
NGNlOTc2MDAwYzUwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZ2Vu
ZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQorICAgIHZpcnR1YWwgdm9pZCBnZW5l
cmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJSSURFCiAgICAgewogICAgICAg
ICBsaW5rRnJvbShqaXQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFu
cy5zaXplKCk7ICsraSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVj
dGVkOgotICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQorICAg
IHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJS
SURFCiAgICAgewogICAgICAgICBsaW5rRnJvbShqaXQpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9wbGFucy5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmFpbGVkRmluYWxpemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5oCmluZGV4IGFkMzk4MmVjNmE3Njk1MmIxNGI1MjVm
YWU4ZmU5ZjRkMGY4OGE5YjQuLjVhMDk4NjJjODExMWJhODczMTMxM2VhNzM0ODNiNWIzOGY0OGEy
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmFpbGVkRmluYWxp
emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGYWlsZWRGaW5hbGl6ZXIu
aApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgRmFpbGVkRmluYWxpemVyKFBsYW4mKTsK
ICAgICB2aXJ0dWFsIH5GYWlsZWRGaW5hbGl6ZXIoKTsKICAgICAKLSAgICBib29sIGZpbmFsaXpl
KCk7Ci0gICAgYm9vbCBmaW5hbGl6ZUZ1bmN0aW9uKCk7CisgICAgdmlydHVhbCBib29sIGZpbmFs
aXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpbmFsaXplRnVuY3Rpb24oKSBPVkVS
UklERTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggODY0Y2NhODJiMWNiNWVlOTAyZjc5YzZmOGE3ZGM4NWU2
ODBjNGYxYS4uNTJkZGRjNWQyMTdkMTM3NmYzMDFkYzNiYjUxZDczM2YyMmVjMGQ1YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTQ4LDEwICs0OCwxMCBAQCBjbGFz
cyBKSVRDb21waWxlcjsKIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7CiBw
dWJsaWM6CiAgICAgSklUQ29kZSgpOwotICAgIH5KSVRDb2RlKCk7CisgICAgdmlydHVhbCB+SklU
Q29kZSgpOwogICAgIAotICAgIENvbW1vbkRhdGEqIGRmZ0NvbW1vbigpOwotICAgIEpJVENvZGUq
IGRmZygpOworICAgIHZpcnR1YWwgQ29tbW9uRGF0YSogZGZnQ29tbW9uKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBKSVRDb2RlKiBkZmcoKSBPVkVSUklERTsKICAgICAKICAgICBPU1JFbnRyeURh
dGEqIGFwcGVuZE9TUkVudHJ5RGF0YSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBt
YWNoaW5lQ29kZU9mZnNldCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVEZpbmFsaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRGaW5hbGl6ZXIuaAppbmRleCAyZGJhOGQzMDViZjFiY2UyY2JmMGU0ODUwMDJkZDIwZWY2ZmQ0
YWQ2Li41Yzg1YTljZDk5M2FiM2Y5YWY2Mjg1MGM4ZTFkZWExYjU5Zjc3MGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKQEAgLTQyLDggKzQyLDggQEAg
cHVibGljOgogICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0cjxKSVRDb2RlPiwgUGFz
c093blB0cjxMaW5rQnVmZmVyPiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGFyaXR5Q2hlY2sgPSBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwoKSk7CiAgICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7CiAg
ICAgCi0gICAgYm9vbCBmaW5hbGl6ZSgpOwotICAgIGJvb2wgZmluYWxpemVGdW5jdGlvbigpOwor
ICAgIHZpcnR1YWwgYm9vbCBmaW5hbGl6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBm
aW5hbGl6ZUZ1bmN0aW9uKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6
ZUNvbW1vbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5l
U3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDFmOGU4
N2EyMDZhZTI5YWRhOGQ3MzVmYTg0ZWRkMjA3Y2I5MjQ2ODEuLjc4ZGU4NmZiZWMwOWZmMTYxOTA1
OTdmMjM2MWJiZTM3NTliNjk1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByb3RlY3RlZDoKLSAg
ICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KSBPVkVSUklERQogICAg
IHsKICAgICAgICAgbGlua0Zyb20oaml0KTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggYTIxZWIzNmQxMmE3YWFk
NGQ3MDg3ZWI4ZDY1ZmUxZDVlZWRkNmE4Yy4uNjM5ZWYxOTFhOWI0NDA2YjNkNjMyMWY4NWE3Mzk2
OWRlMDVkZDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1Bh
dGhHZW5lcmF0b3IuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGpp
dC0+c2lsZW50U3BpbGxBbGxSZWdpc3RlcnNJbXBsKGZhbHNlLCBtX3BsYW5zLCBleHRyYWN0UmVz
dWx0KHJlc3VsdCkpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGwoKSBjb25zdAorICAgIHZpcnR1YWwgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCgp
IGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV9jYWxsOwogICAgIH0KQEAg
LTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHZv
aWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQorICAgIHZpcnR1YWwgdm9p
ZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwogICAgICAgICB0aGlzLT5yZWNvcmRDYWxsKGppdC0+
Y2FsbE9wZXJhdGlvbih0aGlzLT5tX2Z1bmN0aW9uLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVz
dWx0KSkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpCisgICAg
dmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIHRoaXMtPnNldFVwKGppdCk7CiAgICAgICAgIHRoaXMtPnJlY29y
ZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uKHRoaXMtPm1fZnVuY3Rpb24sIGV4dHJhY3RSZXN1bHQo
dGhpcy0+bV9yZXN1bHQpLCBtX2FyZ3VtZW50MSkpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNw
ZWN1bGF0aXZlSklUKiBqaXQpCisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3Bl
Y3VsYXRpdmVKSVQqIGppdCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHRoaXMtPnNldFVwKGpp
dCk7CiAgICAgICAgIHRoaXMtPnJlY29yZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uKHRoaXMtPm1f
ZnVuY3Rpb24sIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBtX2FyZ3VtZW50MSwgbV9h
cmd1bWVudDIpKTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0
ZWQ6ICAgIAotICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KQor
ICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIE9W
RVJSSURFCiAgICAgewogICAgICAgICB0aGlzLT5zZXRVcChqaXQpOwogICAgICAgICB0aGlzLT5y
ZWNvcmRDYWxsKApAQCAtNDQxLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0
KQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQp
IE9WRVJSSURFCiAgICAgewogICAgICAgICB0aGlzLT5saW5rRnJvbShqaXQpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBudW1iZXJPZkFzc2lnbm1lbnRzOyBpLS07KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNmJmMTZm
NDNhOWJiZGNlZGYxZjhlMDdhYTkzYTMyYWUyNjdlZDA1Ni4uOGI5NDZkNDA3NTI5ZWRkYWJmZDdj
ODEwOTg1YTU2YWVlMjBjNDFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MTIsNyArNTEyLDcgQEAgcHVibGljOgogICAg
IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChT
cGVjdWxhdGl2ZUpJVCogaml0KQorICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNw
ZWN1bGF0aXZlSklUKiBqaXQpIE9WRVJSSURFCiAgICAgewogICAgICAgICB0aGlzLT5zZXRVcChq
aXQpOwogICAgICAgICB0aGlzLT5yZWNvcmRDYWxsKGppdC0+Y2FsbE9wZXJhdGlvbih0aGlzLT5t
X2Z1bmN0aW9uLCB0aGlzLT5tX3Jlc3VsdCwgbV9hcmcxLCBtX2FyZzIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAppbmRleCAxOTk1NmJiMmZmZWExNTgyZTExYTM2OGRhNDM2OTQ4MTY5YTI0
MWFkLi42ZWIxMzY0ZDE4NTNmMzYyNDAxYTAwMzMyZDE1ZmI1NjQ0NGQ2M2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMTYsNyArMjE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CiAg
ICAgICAgIAogICAgICAgICBjbGFzcyBGaW5hbGl6ZXJPd25lciA6IHB1YmxpYyBXZWFrSGFuZGxl
T3duZXIgewotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3du
Piwgdm9pZCogY29udGV4dCk7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFu
ZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBPVkVSUklERTsKICAgICAgICAgfTsKIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCmluZGV4
IDYzMzNiMjZiODE2NTk4NWRmZmExZTMzNWYzYzE0NmRmYmExZmFkYzcuLjk5NWM1M2FlNDgzOTM4
YjM5NWNjM2E5MjU1OTA4NGZkNWQyYWM5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEluY3Jl
bWVudGFsU3dlZXBlciA6IHB1YmxpYyBIZWFwVGltZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gY3JlYXRlKEhlYXAqKTsKICAgICB2b2lkIHN0
YXJ0U3dlZXBpbmcoVmVjdG9yPE1hcmtlZEJsb2NrKj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9X
b3JrKCk7CisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIE9WRVJSSURFOwogICAgIHZvaWQgc3dl
ZXBOZXh0QmxvY2soKTsKICAgICB2b2lkIHdpbGxGaW5pc2hTd2VlcGluZygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaAppbmRleCBiNjU5NTEwZjg4NzA1ZjFmMjYz
NjFkYzBhNTYzMDFkZmQ1OGQzNzc2Li43OTE4YjNiYzc4MGRjMGQ1MDY1ZTFjMWNjZjk1ODJmYmQ4
MjUzZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgKQEAgLTQw
LDkgKzQwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN1cGVyUmVnaW9uKCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQqIGFsbG9jYXRlTmV3U3BhY2Uoc2l6ZV90Jik7Ci0gICAg
dmlydHVhbCB2b2lkIG5vdGlmeU5lZWRQYWdlKHZvaWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5UGFnZUlzRnJlZSh2b2lkKik7CisgICAgdmlydHVhbCB2b2lkKiBhbGxvY2F0ZU5ld1NwYWNl
KHNpemVfdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOZWVkUGFnZSh2b2lk
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VJc0ZyZWUodm9pZCopIE9W
RVJSSURFOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzX2ZpeGVkSGVh
cE1lbW9yeVBvb2xTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1
cmVDYWxsU3R1YlJvdXRpbmUuaAppbmRleCBkOTUxMDc1ZTIzNzAxOTRiZjQxMmI2YjA4NmQwYWUw
NDc0N2FlZjEyLi5iYmNmMDYyMjQxMTlmYzE2OGFiZDc1NTdjMzdlZmY4MDI4ODIzZWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUu
aApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZU9yaWdpbjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3Im
KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAppbmRleCA3ODIzY2QyZDIyZjVlMGZiNDc5
ZjE5MDkzNWU2YzJjMThhYTMwOWUxLi4xNDRkNDE1YzUyNjA0NmEyYjUwMzYwNTMzZGUzZmMxZDI2
NzcwMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCkBAIC03NiwxMyArNzYsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcigpOwogICAg
IAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCogYWxsb2NhdGVOZXdTcGFjZShzaXplX3Qm
KQorICAgIHZpcnR1YWwgdm9pZCogYWxsb2NhdGVOZXdTcGFjZShzaXplX3QmKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgLy8gV2UncmUgb3BlcmF0aW5nIGluIGEgZml4ZWQgcG9vbCwgc28gbmV3
IGFsbG9jYXRpb24gaXMgYWx3YXlzIHByb2hpYml0ZWQuCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmVlZFBhZ2Uodm9pZCogcGFnZSkKKyAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmVlZFBhZ2Uodm9pZCogcGFnZSkgT1ZFUlJJREUKICAgICB7
CiAjaWYgVVNFKE1BRFZfRlJFRV9GT1JfSklUX01FTU9SWSkKICAgICAgICAgVU5VU0VEX1BBUkFN
KHBhZ2UpOwpAQCAtOTEsNyArOTEsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICB9CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VJc0ZyZWUodm9pZCogcGFnZSkKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UGFnZUlzRnJlZSh2b2lkKiBwYWdlKSBPVkVSUklERQogICAgIHsKICNp
ZiBVU0UoTUFEVl9GUkVFX0ZPUl9KSVRfTUVNT1JZKQogICAgICAgICBmb3IgKDs7KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaAppbmRl
eCBmMGIyODJjZjEzMWNjYmI4NDBhNDNlZmQ4MDE2MTU5NDA3ZDA1ZjY4Li5kMGFiOThiM2FkMmNi
NmI5OTRiM2Y2Yzk1ZGU1NWI4MTE4N2U0N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zdXJlQ2Fs
bDsgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlWmVyb1JlZkNv
dW50KCk7CisgICAgdmlydHVhbCB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKSBPVkVSUklERTsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RW
aXNpdG9yJik7CiAKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1hcmtp
bmdHQ0F3YXJlSklUU3R1YlJvdXRpbmVXaXRoT25lT2JqZWN0KCk7CiAgICAgCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRv
ciYpOworICAgIHZpcnR1YWwgdm9pZCBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZp
c2l0b3ImKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBt
X29iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggMjZlYWVhODk0YWZh
NjY2ZTViNGJmMjJiNDJkZmM4ZTRiZjY3MTdjZS4uMTg5ODYzYzUxZmM3NWJhYTk1NmJhOWRlNjZk
OGZmZTRjODNjMDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTE5NSwx
NiArMTk1LDE2IEBAIGNsYXNzIERpcmVjdEpJVENvZGUgOiBwdWJsaWMgSklUQ29kZSB7CiBwdWJs
aWM6CiAgICAgRGlyZWN0SklUQ29kZShKSVRUeXBlKTsKICAgICBEaXJlY3RKSVRDb2RlKGNvbnN0
IENvZGVSZWYsIEpJVFR5cGUpOwotICAgIH5EaXJlY3RKSVRDb2RlKCk7CisgICAgdmlydHVhbCB+
RGlyZWN0SklUQ29kZSgpOwogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWYoQ29kZVJl
ZiByZWYpOwogCi0gICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbCgpOwotICAgIHZvaWQqIGV4ZWN1
dGFibGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCk7Ci0gICAgdm9pZCogZGF0YUFkZHJl
c3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBw
b2ludGVySW50b0NvZGUpOwotICAgIHNpemVfdCBzaXplKCk7Ci0gICAgYm9vbCBjb250YWlucyh2
b2lkKik7CisgICAgdmlydHVhbCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkKiBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCogZGF0YUFkZHJlc3NBdE9mZnNldChzaXplX3Qg
b2Zmc2V0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIG9mZnNldE9mKHZvaWQqIHBv
aW50ZXJJbnRvQ29kZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBzaXplX3Qgc2l6ZSgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyh2b2lkKikgT1ZFUlJJREU7CiAKIHByaXZh
dGU6CiAgICAgQ29kZVJlZiBtX3JlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKaW5kZXggOWY5NTg1MTAwMGJiYzk4ZmNjYTM3OGUwMjMyZDMzODNhNWExYzRjMC4uM2YzMjk3
Y2ZjOWJlODBiY2MyZjE4MTcyYjJmYWJlZGZjY2E3N2NmMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKQEAgLTM3NSw3ICszNzUsOCBAQCBwdWJsaWM6CiAgICAgICAgIDog
bV9mYWN0b3J5KGZhY3RvcnkpCiAgICAgewogICAgIH0KLSAgICBKU1ZhbHVlIG9wZXJhdG9yKCko
RXhlY1N0YXRlKiBleGVjKQorCisgICAgdmlydHVhbCBKU1ZhbHVlIG9wZXJhdG9yKCkoRXhlY1N0
YXRlKiBleGVjKSBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZmFjdG9yeShleGVj
KTsKICAgICB9CkBAIC0zOTIsNyArMzkzLDggQEAgcHVibGljOgogICAgICAgICA6IG1fZmFjdG9y
eShmYWN0b3J5KSwgbV9jYWxsZWUoY2FsbGVlKQogICAgIHsKICAgICB9Ci0gICAgSlNWYWx1ZSBv
cGVyYXRvcigpKEV4ZWNTdGF0ZSogZXhlYykKKworICAgIHZpcnR1YWwgSlNWYWx1ZSBvcGVyYXRv
cigpKEV4ZWNTdGF0ZSogZXhlYykgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Zh
Y3RvcnkoZXhlYywgbV9jYWxsZWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
aAppbmRleCAwMDQxMjQ1Y2QwMGNiNWEyMDBjMDJiNWIxNWJhYzNlZDIzOTk3ODk5Li44MGY3NDEx
NDk0N2IyY2RiODQ5NWEyMTM2MWU0NGQxNzdjOTM4NmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjcmVhdGUoKTsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcGlsYXRpb25EaWRCZWNvbWVSZWFkeUFzeW5jaHJvbm91c2x5
KENvZGVCbG9jayopOwotICAgIHZpcnR1YWwgdm9pZCBjb21waWxhdGlvbkRpZENvbXBsZXRlKENv
ZGVCbG9jayosIENvbXBpbGF0aW9uUmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGlsYXRp
b25EaWRCZWNvbWVSZWFkeUFzeW5jaHJvbm91c2x5KENvZGVCbG9jayopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvbXBpbGF0
aW9uUmVzdWx0KSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaApp
bmRleCA0NTdjYmIyODY2ZGRmYzM2OGMzMTRhYzM4NTJmNWUwM2EwNDE4OTkwLi4yODY3YzEzZDE0
MDQ0ZjQzODU0Y2FiNzA5MTI1Zjk3ZDg5ZjZkZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3JyZWN0TGFiZWxzKExpbmtCdWZmZXImKTsKIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgZmlyZUludGVybmFsKCk7CisgICAgdmlydHVhbCB2b2lkIGZpcmVJ
bnRlcm5hbCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIHVpbnRwdHJfdCBtX3NvdXJjZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA1ZDQ0MTZiY2Y0Yzk3NDljNmY5
OWFlMDQwNzlhMTA4ZGRkYjlmZjhkLi45ZmUyMjYxZmQyNDA3MDUxZjNjYWE3MmQ4MWYwYzczMGU3
YWQzMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xOTcsMTIgKzE5
NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb25zdGFudE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgQ29uc3RhbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQ
dXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCAg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0ID0gMDsKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdl
dCwgRmFsbFRocm91Z2hNb2RlKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRo
cm91Z2hNb2RlKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgTnVsbE5vZGUgOiBwdWJs
aWMgQ29uc3RhbnROb2RlIHsKQEAgLTIxMCw4ICsyMTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTnVsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICB2aXJ0dWFsIEpTVmFsdWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsg
cmV0dXJuIGpzTnVsbCgpOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4ganNOdWxsKCk7IH0K
ICAgICB9OwogCiAgICAgY2xhc3MgQm9vbGVhbk5vZGUgOiBwdWJsaWMgQ29uc3RhbnROb2RlIHsK
QEAgLTIyMCw4ICsyMjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCB2YWx1ZSgp
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBpc0Jvb2xlYW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgSlNW
YWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4ganNCb29sZWFu
KG1fdmFsdWUpOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4ganNCb29sZWFuKG1fdmFs
dWUpOyB9CiAKICAgICAgICAgYm9vbCBtX3ZhbHVlOwogICAgIH07CkBAIC0yMzMsOCArMjMzLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKSB7
IG1fdmFsdWUgPSB2YWx1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29s
IGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIEpTVmFs
dWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0dXJuIGpzTnVtYmVyKG1f
dmFsdWUpOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBqc051bWJlcihtX3ZhbHVlKTsg
fQogCiAgICAgICAgIGRvdWJsZSBtX3ZhbHVlOwogICAgIH07CkBAIC0yNDUsOCArMjQ1LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlzU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwg
SlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV92YWx1ZTsKICAgICB9OwpAQCAtNDA4LDcgKzQwOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdFeHBOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdz
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fcGF0dGVybjsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9mbGFnczsKQEAgLTQxOSw3ICs0MTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewpAQCAtNDI5LDExICs0MjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBPVkVSUklERTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVj
b2RlR2VuZXJhdG9yJikgY29uc3QgOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5v
ZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUo
Qnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBib29s
IGlzTG9jYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEpTVGV4dFBv
c2l0aW9uIG1fc3RhcnQ7CkBAIC00NjQsOSArNDY0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgRWxlbWVudE5vZGUqIGVsZW1lbnRzKCkgY29uc3QgeyBBU1NFUlQoaXNTaW1wbGVBcnJh
eSgpKTsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3QgOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1w
bGVBcnJheSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgICAgIEVsZW1lbnROb2RlKiBtX2VsZW1l
bnQ7CiAgICAgICAgIGludCBtX2VsaXNpb247CkBAIC00OTUsNyArNDk1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
UHJvcGVydHlOb2RlKik7CiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCi0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgUHJvcGVydHlOb2RlKiBtX25vZGU7CkBAIC01MDgsNyArNTA4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIFByb3Bl
cnR5TGlzdE5vZGUqIG1fbGlzdDsKICAgICB9OwpAQCAtNTIzLDEwICs1MjMsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMoKSBjb25zdCB7
IHJldHVybiBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICAgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nv
ck5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpA
QCAtNTQxLDEwICs1NDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklE
RTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNz
b3JOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBA
IC01NTksNyArNTU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2V4cHI7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgQXJndW1lbnRzTm9k
ZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKQEAgLTU3Niw3ICs1NzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7
CkBAIC01ODcsNyArNTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV2YWxGdW5jdGlv
bkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAg
QXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAgIH07CkBAIC01OTcsNyArNTk3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNjA4LDcg
KzYwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9k
ZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsK
IAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNO
b2RlKiBtX2FyZ3M7CkBAIC02MTksNyArNjE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X3N1YnNjcmlwdDsKQEAgLTYzMSw3ICs2MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CkBAIC02NDQsNyArNjQ0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKQEAgLTY1Miw3ICs2NTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC02NjAs
NyArNjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtNjcwLDcgKzY3MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlw
dDsKQEAgLTY4MSw3ICs2ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRlRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtNjkyLDcgKzY5Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBEZWxldGVWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4
cHI7CiAgICAgfTsKQEAgLTcwMiw3ICs3MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Vm9pZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9W
RVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTcx
NCw3ICs3MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKQEAgLTcyNCw3ICs3MjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC03MzQsNyArNzM0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdFJl
c29sdmUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0RG90KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc0OCwxMCArNzQ4LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0QnJhY2tldChCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwog
ICAgIH07CiAKICAgICBjbGFzcyBVbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CkBAIC03NjMsNyArNzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IEV4cHJl
c3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsK
IAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlSUQ7
IH0KIApAQCAtNzc2LDcgKzc3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBVbmFyeVBs
dXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBzdHJpcFVuYXJ5UGx1cygp
IHsgcmV0dXJuIGV4cHIoKTsgfQorICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBzdHJp
cFVuYXJ5UGx1cygpIE9WRVJSSURFIHsgcmV0dXJuIGV4cHIoKTsgfQogICAgIH07CiAKICAgICBj
bGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKQEAgLTc5Myw3ICs3OTMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBj
b25zdCB7IHJldHVybiBtX2V4cHI7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTgwMiw3ICs4MDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIExvZ2ljYWxOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0
Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1
ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJh
dG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hN
b2RlKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgQmluYXJ5T3BOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKQEAgLTgxMSwxNCArODExLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlwZSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRTdHJj
YXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24s
IFJlZ2lzdGVySUQqIGxocyA9IDAsIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4cHJlc3Np
b25JbmZvRm9yTWUgPSAwKTsKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNv
bnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNl
VGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJn
ZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBPVkVSUklERTsKIAogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbGhzKCkgeyByZXR1cm4gbV9leHByMTsgfTsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIHJocygpIHsgcmV0dXJuIG1fZXhwcjI7IH07CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2b2lkIHRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYsIFRyaVN0
YXRlJiBicmFuY2hDb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiYgYnJhbmNoRXhwcmVzc2lvbik7
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3Bjb2RlSUQ7IH0KQEAgLTg1MSwxNCArODUxLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgQWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU3ViTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJ0cmFj
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzU3VidHJh
Y3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNz
IExlZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKQEAgLTkwMiw3ICs5MDIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwog
ICAgIH07CiAgICAgCiAgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxl
QmluYXJ5T3BOb2RlIHsKQEAgLTkxMCw3ICs5MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSW5zdGFuY2VPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgSW5Ob2RlIDogcHVibGljIFRocm93
YWJsZUJpbmFyeU9wTm9kZSB7CkBAIC05MjMsNyArOTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIE9WRVJSSURFOwogICAgIH07CiAKICAgICBjbGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMg
QmluYXJ5T3BOb2RlIHsKQEAgLTkzNiw3ICs5MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgU3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAgICAgfTsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewpAQCAtOTY1LDggKzk2NSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBMb2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwotICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVl
VGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSk7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZUlu
Q29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkgT1ZFUlJJREU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIy
OwpAQCAtOTc5LDcgKzk3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb25kaXRpb25h
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURF
OwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2xvZ2ljYWw7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHIxOwpAQCAtOTkxLDcgKzk5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBPVkVSUklERTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKQEAgLTEwMDQsNyArMTAwNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURF
OwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTAxNSw3ICsxMDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTEwNDQsNyArMTA0NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9iYXNlOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtMTA1Nyw3
ICsxMDU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJ
REU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogICAgIH07CiAgICAg
CiAgICAgdHlwZWRlZiBWZWN0b3I8RXhwcmVzc2lvbk5vZGUqLCA4PiBFeHByZXNzaW9uVmVjdG9y
OwpAQCAtMTA4NSw4ICsxMDg1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYXBw
ZW5kKEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IEFTU0VSVChleHByKTsgbV9leHByZXNzaW9ucy5h
cHBlbmQoZXhwcik7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bW1hTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBFeHBy
ZXNzaW9uVmVjdG9yIG1fZXhwcmVzc2lvbnM7CiAgICAgfTsKQEAgLTEwOTksNyArMTA5OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgpIHsgcmV0
dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRDb2RlU2luZ2xlKEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKQEAgLTExMTYsNyArMTExNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQ29uc3RE
ZWNsTm9kZSogbmV4dCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgQ29uc3REZWNsTm9kZSogbV9uZXh0OwogICAgIH07
CkBAIC0xMTQ0LDkgKzExNDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50
Tm9kZSogbGFzdFN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0Js
b2NrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9j
aygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBTb3VyY2VFbGVt
ZW50cyogbV9zdGF0ZW1lbnRzOwogICAgIH07CkBAIC0xMTU2LDkgKzExNTYsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJS
SURFOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRlbWVudCgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogICAgIAogICAgIGNsYXNzIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTExNjYsNyAr
MTE2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhw
clN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC0xMTc2LDkgKzExNzYs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBjb25z
dCB7IHJldHVybiBtX2V4cHI7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTExODcsNyArMTE4Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByOwogICAgIH07CkBAIC0xMTk3LDcgKzExOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNl
QmxvY2spOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9W
RVJSSURFOwogICAgICAgICBib29sIHRyeUZvbGRCcmVha0FuZENvbnRpbnVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywKICAgICAgICAgICAgIExhYmVsKiYgdHJ1
ZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlJik7CiAKQEAgLTEyMTEsNyArMTIxMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBEb1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBT
dGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBTdGF0ZW1lbnROb2Rl
KiBtX3N0YXRlbWVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTEyMjIs
NyArMTIyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaGlsZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0
ZW1lbnQ7CkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRm9y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2V4cHIyOwpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEZvckluTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlY29uc3RydWN0aW9u
UGF0dGVybk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9Owog
ICAgIAogICAgIGNsYXNzIEZvck9mTm9kZSA6IHB1YmxpYyBFbnVtZXJhdGlvbk5vZGUgewpAQCAt
MTI2OSw3ICsxMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZvck9mTm9kZShWTSos
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqLCBFeHBy
ZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogICAgIH07CiAKICAgICBjbGFz
cyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKQEAgLTEyNzksOCArMTI3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBMYWJlbCogdHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYpOwogICAgICAgICAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRpbnVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBA
IC0xMjkyLDggKzEyOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTGFiZWwqIHRyaXZp
YWxUYXJnZXQoQnl0ZWNvZGVHZW5lcmF0b3ImKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBib29sIGlzQnJlYWsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTMwNSw5ICsxMzA1LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1f
dmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBP
VkVSUklERTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3Zh
bHVlOwogICAgIH07CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0
ZW1lbnROb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCB1aW50MzJfdCBleHByZXNz
aW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBPVkVSUklERTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBT
dGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTEzMzAsNyArMTMzMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBMYWJlbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1fbmFtZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CkBAIC0x
MzQxLDcgKzEzNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFRyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9k
ZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnRO
b2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAg
IFN0YXRlbWVudE5vZGUqIG1fdHJ5QmxvY2s7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1f
ZXhjZXB0aW9uSWRlbnQ7CkBAIC0xNDU4LDcgKzE0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVy
U2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIHVu
c2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgfTsKQEAgLTE0NzUsNyArMTQ3NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEV2YWxOb2RlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVu
Y3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFJlZkNvdW50ZWQ8RnVuY3Rpb25QYXJhbWV0ZXJzPiB7
CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgp
OyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy0+c2l6ZSgpOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIE9WRVJS
SURFOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgUGFy
YW1ldGVyTm9kZSosIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dn
bGUpOwogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFt
ZXRlcnM+LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKTsK
QEAgLTE1NDMsOSArMTU0Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9IAor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogbV9ib2R5OwogICAgIH07
CkBAIC0xNTc4LDEwICsxNTc4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZShWTSopOwotICAgICAgICB2b2lkIGNvbGxlY3RCb3Vu
ZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0OwotICAgICAgICB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdDsKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIHZvaWQgdG9TdHJpbmcoU3Ry
aW5nQnVpbGRlciYpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRl
bnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikg
Y29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJp
bmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2Rl
KikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVy
JikgY29uc3QgT1ZFUlJJREU7CiAKICAgICAgICAgVmVjdG9yPFJlZlB0cjxEZWNvbnN0cnVjdGlv
blBhdHRlcm5Ob2RlPj4gbV90YXJnZXRQYXR0ZXJuczsKICAgICB9OwpAQCAtMTU5Niw5ICsxNTk2
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIE9i
amVjdFBhdHRlcm5Ob2RlKFZNKik7Ci0gICAgICAgIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmll
cnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Q7Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0OwotICAgICAgICB2b2lkIHRv
U3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IE9WRVJSSURFOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmco
U3RyaW5nQnVpbGRlciYpIGNvbnN0IE9WRVJSSURFOwogICAgICAgICBzdHJ1Y3QgRW50cnkgewog
ICAgICAgICAgICAgRW50cnkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sIHdh
c1N0cmluZywgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogcGF0dGVybikKICAgICAgICAgICAg
ICAgICA6IHByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpCkBAIC0xNjIxLDExICsxNjIxLDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEJpbmRpbmdOb2RlKFZNKiwg
Y29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmQpOwogCi0gICAgICAgIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50
aWZpZXI+JikgY29uc3Q7Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0OwotICAgICAgICB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1
aWxkZXImKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZp
ZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0
IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYp
IGNvbnN0IE9WRVJSSURFOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBib29sIGlzQmluZGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jp
bmRpbmdOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAKICAg
ICAgICAgSWRlbnRpZmllciBtX2JvdW5kUHJvcGVydHk7CiAgICAgfTsKQEAgLTE2MzgsOSArMTYz
OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0YWJs
ZTo6b3BlcmF0b3IgbmV3OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlz
TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0RlY29uc3RydWN0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzRGVjb25zdHJ1Y3Rp
b25Ob2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgT1ZFUlJJREU7CiAKICAgICAgICAgUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGU+IG1fYmluZGluZ3M7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2luaXRpYWxpemVyOwpA
QCAtMTY1Myw3ICsxNjUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQm9k
eU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBPVkVSUklERTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKiBtX2JvZHk7CiAgICAgfTsKQEAgLTE3MDMsNyArMTcwMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgQ2FzZUJsb2NrTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIE9WRVJSSURFOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7
CiAgICAgICAgIENhc2VCbG9ja05vZGUqIG1fYmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0YVZpZXcuaAppbmRleCA0OGVhMDA2YjIxMTliNmVlMzcxMDBhYTMyZGUwZDkzZDE5
ZmRkZTZhLi44Y2U2MzMyYWI0YzdjOGM3MjJmZDU4Yzg3ZGQxNjFlZmYwYWZkMjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAgLTM5LDE3ICszOSwxNyBAQCBw
cm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8RGF0YVZpZXc+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5
dGVMZW5ndGgoKSBjb25zdAorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0
IE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gbV9ieXRlTGVuZ3RoOwogICAgIH0KICAg
ICAKLSAgICB2aXJ0dWFsIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdAorICAgIHZpcnR1
YWwgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAg
ICByZXR1cm4gVHlwZURhdGFWaWV3OwogICAgIH0KIAotICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZl
clZpZXcqIHdyYXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2aXJ0dWFsIEpT
QXJyYXlCdWZmZXJWaWV3KiB3cmFwKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgT1ZFUlJJ
REU7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGdldCh1bnNpZ25lZCBv
ZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSAwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAppbmRleCA1ZGYw
OWUwYWMwMmViZGIzNzljZGY5OTlkNTU4MzM5YTE1MTdkZDZhLi5iMDQzZmNhMmJjNGNkNzRlNmM4
NDZjN2E2MWI4ZGUxMWY3NzE1MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtODAsMTEgKzgwLDExIEBAIHB1YmxpYzoK
IAogICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwogCi0gICAgdmlydHVhbCB2
b2lkIGRpZEFsbG9jYXRlKHNpemVfdCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0
ZShzaXplX3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgZG9Xb3JrKCk7CisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIE9WRVJSSURFOwog
CiAjaWYgVVNFKENGKQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA0MTRhYjhkZjMyZmY5ZDk5
NmJmYzA2MzlkYzJhOTRiNjUzMzIwNjJiLi4yYmJlMDEyOTE0M2VlZjU0MTgxYmM3NmM3ZDNjZTA5
NWUyMDA4MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2xlbmd0aDsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRl
TGVuZ3RoKCkgY29uc3QKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBP
VkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIGxlbmd0aCgpICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIH0KQEAgLTEwMSwxMiArMTAxLDEyIEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50
IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIFR5cGVkQXJyYXlUeXBl
IGdldFR5cGUoKSBjb25zdAorICAgIHZpcnR1YWwgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNv
bnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9sZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2Fj
aGUuaAppbmRleCA0Zjg1NGQxYmFjNTNhMzY4MTBiZDY4YTQzN2M3YWE3ZWU2NzJkMjkyLi5mZDZi
N2IxNTAyNTMwNTM3YTBhZDkwOTczMmMxZDdhNWM1M2U4NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToK
IAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4U3Ryb25nQ2FjaGVhYmxlRW50cmllcyA9IDMyOwog
Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4
dCk7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29u
dGV4dCkgT1ZFUlJJREU7CiAKICAgICBSZWdFeHAqIGxvb2t1cE9yQ3JlYXRlKGNvbnN0IFdURjo6
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyk7CiAgICAgdm9pZCBhZGRUb1N0cm9u
Z0NhY2hlKFJlZ0V4cCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggMzRhNmE3ZjZhNTUwMWZm
NDRiMDY4YzJiNjIzMGJlNTRjODhhOTcxZi4uNzRjNWU2MDRmZTQ5MzE4YTk4MDg1MjlkMjg1ZDUx
YzdhZThiMjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2lt
cGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlcigpOwogICAgIHZpcnR1YWwgflNpbXBs
ZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7CiAgICAgCi0gICAgdmlydHVhbCBKU0FycmF5QnVmZmVy
KiB0b0pTKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgQXJyYXlCdWZmZXIqKTsKKyAgICB2
aXJ0dWFsIEpTQXJyYXlCdWZmZXIqIHRvSlMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBB
cnJheUJ1ZmZlciopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAppbmRleCA3MjllYmIxZjU0YTM2
NDc0NDYyYTA3OGM2MDVmMTJiMDUxNzVjYjRiLi5iMGY1MjdjYTZmZGY1Nzg1MmQ5MjBmYzUzZGQw
NjAyNjc3ZTY1MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBE
YXRhLmgKQEAgLTc2LDggKzc2LDggQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xv
dFZpc2l0b3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
JikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgpIE9WRVJSSURFOwogICAgICAgICBpbnQgbV9saXZlS2V5Q291bnQ7CiAgICAgICAgIFdlYWtN
YXBEYXRhKiBtX3RhcmdldDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29t
cGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKaW5kZXggNGQ4YWYxZmIwZDQ2ZWVi
ZTgzMDJjNDJlMDIxMWY5MjNiNTU0OGEzMy4uOTcxZGQ0MjMwMTJhOWE1YjY1MjAyYzQwMzVjNGY1
NmMwY2NhNTgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBAIC01OCw3ICs1OCw3IEBACiAvKiBEaXNhYmxlIGZp
bmFsIG9uIHZlcnNpb25zIG9mIEFwcGxlIGNsYW5nIGVhcmxpZXIgdGhhbiA0LjIgdG8gYXZvaWQg
YnVncyBsaWtlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTE5MTY1ICovCiAjaWYgZGVmaW5lZChfX0FQ
UExFX18pICYmIChfX2NsYW5nX21ham9yX18gPCA0IHx8IChfX2NsYW5nX21ham9yX18gPT0gNCAm
JiBfX2NsYW5nX21pbm9yX18gPCAyKSkKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1FVSVJLX0ZJTkFM
X0lTX0JVR0dZIDEKLSNlcnJvciAiUGxlYXNlIHVzZSBhIG5ld2VyIHZlcnNpb24gb2YgWGNvZGUs
IHRoaXMgdmVyc2lvbiBoYXMgY29kZSBnZW5lcmF0aW9uIGJ1Z3Mgd2hlbiB1c2luZyAnZmluYWwn
IGluIEMrKyBjb2RlIgorLy8gI2Vycm9yICJQbGVhc2UgdXNlIGEgbmV3ZXIgdmVyc2lvbiBvZiBY
Y29kZSwgdGhpcyB2ZXJzaW9uIGhhcyBjb2RlIGdlbmVyYXRpb24gYnVncyB3aGVuIHVzaW5nICdm
aW5hbCcgaW4gQysrIGNvZGUiCiAjZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVh
bS5oCmluZGV4IDA2OTI1ODgyMjYzNTVkNTI0MzM1OGQ2NGVhNzFmODhhMzI0OTQyZjUuLjA1Yjhl
NzU1N2VmNGMyYzczNDQ1YjUyZDFkZDcyZGQ4Y2U3ZDNlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICAKICAgICBGSUxFKiBmaWxlKCkg
eyByZXR1cm4gbV9maWxlOyB9CiAgICAgCi0gICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZv
cm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7Ci0gICAgdm9pZCBmbHVz
aCgpOworICAgIHZpcnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlz
dCkgT1ZFUlJJREUgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CisgICAgdmlydHVhbCB2b2lk
IGZsdXNoKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgRklMRSogbV9maWxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1N0cmluZ1ByaW50U3RyZWFtLmgKaW5kZXggYWM0N2QwMTAzYTVlOWJlMjhiYWQ5MDdjZmE1MDI5
M2RjNDNkNzhiYS4uNzI1YTkyMjU0OTNmOWVmZDk1NTYzMmIwNjMwMDU4NTI2NGU0NGM5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RyaW5nUHJpbnRTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBX
VEYgewogY2xhc3MgU3RyaW5nUHJpbnRTdHJlYW0gOiBwdWJsaWMgUHJpbnRTdHJlYW0gewogcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdQcmludFN0cmVhbSgpOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB+U3RyaW5nUHJpbnRTdHJlYW0oKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB+U3RyaW5nUHJpbnRTdHJlYW0oKTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJ
TlRGKDIsIDApOworICAgIHZpcnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwg
dmFfbGlzdCkgT1ZFUlJJREUgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CiAgICAgCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdG9DU3RyaW5nKCk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyB0b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggNDE4ODQ5NTI0OTQ4NWFiYzU0MjUwZGYw
NmY5MmZmZDk0ZmJlNWJkNy4uYmVlNzkxMDQyMTdkZWMxNDc2MDQ3ZDI3YTljYWQ5ZDZkOTc1YTUy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBN
ZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleXM+LCBwdWJsaWMgQ0RNQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUtleXM+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIH5NZWRpYUtleXMoKTsK
KyAgICB2aXJ0dWFsIH5NZWRpYUtleXMoKTsKIAogICAgIFBhc3NSZWZQdHI8TWVkaWFLZXlTZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAppbmRleCA0MDZi
ZTg2MTZlNWI2OTFiOTg4YzRlYmQxNzBjNDc0ZGM0Mjg2MzNiLi5hZmM0ODUwZmI4ZjYzYzE3NGVh
MmRmM2JiOGIxYmE5ZDBlYTRhZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkFuYWx5c2VyTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwogCiAgICAgLy8g
SmF2YXNjcmlwdCBiaW5kaW5ncwogICAgIHVuc2lnbmVkIGZmdFNpemUoKSBjb25zdCB7IHJldHVy
biBtX2FuYWx5c2VyLmZmdFNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmluZGV4IGY4YjE5Zjc5
ZmNlNWExNzNiNWJkMjhmMmJjOGRhZTYzMTg2OTNlNGYuLmQzZWNhYjNhZDdlZTJiYmJlNGQ4N2Rh
ZTAzOWU0ZWE1ZjAxYTliNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM3LDEwICszNywxMCBA
QCBwdWJsaWM6CiAgICAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0KiwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KTsKIAogICAgIC8vIEF1
ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpOwotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEF1ZGlvTm9kZSosIHVuc2lnbmVkIG91dHB1
dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2Rl
SW5wdXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChBdWRpb05vZGUqLCB1bnNp
Z25lZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1dEluZGV4
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrTnVtYmVy
T2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0KikgT1ZFUlJJREU7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVQdWxsU3RhdHVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKaW5kZXggMTk3
MzAyM2E1NTE0MjU0MGYwYmUwYmNmN2Q1MzEyMTlkM2NkYTQxNC4uOWM4MzFlY2U1ZDU3NTdmYjE5
ZTZlNDUxOTExN2M1YTI2YTE3NzMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApAQCAtNDIsMTQgKzQy
LDE0IEBAIHB1YmxpYzoKICAgICBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQq
LCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCBwdWxs
SW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgp
OwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVuaW5p
dGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHVuaW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gQ2FsbGVkIGluIHRoZSBtYWluIHRo
cmVhZCB3aGVuIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoZSBpbnB1dCBtYXkgaGF2ZSBj
aGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChB
dWRpb05vZGVJbnB1dCopOworICAgIHZpcnR1YWwgdm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNG
b3JJbnB1dChBdWRpb05vZGVJbnB1dCopIE9WRVJSSURFOwogCiAgICAgLy8gUmV0dXJucyB0aGUg
bnVtYmVyIG9mIGNoYW5uZWxzIGZvciBib3RoIHRoZSBpbnB1dCBhbmQgdGhlIG91dHB1dC4KICAg
ICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBkNmI1YjMx
NzBmMjhjMWMzNGMxMjE2NDEzYTQ3NDE3ZWZiNzk3Mzg2Li4xYmVkYjUwZmMzOGI0MDZiMTg0YjRm
NTQwYWE2YTg4MGIxNjFlYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTUwLDggKzUwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCiAgICAgLy8gQXVk
aW9Ob2RlCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkg
T1ZFUlJJREU7CiAKICAgICAvLyBzZXRCdWZmZXIoKSBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhy
ZWFkLiAgVGhpcyBpcyB0aGUgYnVmZmVyIHdlIHVzZSBmb3IgcGxheWJhY2suCiAgICAgLy8gcmV0
dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyUGFubmVyTm9kZSgpOwogCiAgICAgLy8gSWYgd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5n
LCBwcm9wb2dhdGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3RyZWFtIG5vZGVzLgotICAgIHZpcnR1
YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwcm9w
YWdhdGVzU2lsZW5jZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggZTJmNmI2MTJh
NDcwYWJhMjQxZThmMTNjOGIxMGQ4YThkMzFkNjNiMC4uYzhlYzA5OGUyMGUxNjYwOTE4M2JkMmFl
MTZjNjBlNmQyZGJlMzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBIUlRGRGF0YWJh
c2VMb2FkZXIqIGhydGZEYXRhYmFzZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faHJ0ZkRhdGFi
YXNlTG9hZGVyLmdldCgpOyB9CiAKICAgICAvLyBEb2N1bWVudCBub3RpZmljYXRpb24KLSAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNTRVJUcyBpZiBkb2N1bWVudCBu
byBsb25nZXIgZXhpc3RzLgogICAgIGJvb2wgaGFzRG9jdW1lbnQoKTsKQEAgLTM1MCw4ICszNTAs
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRhdGFi
YXNlTG9hZGVyOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IGRlcmVmKCk7IH0KIAogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYjE2ZmE2NDBjZWRjNjU0MGNmOWU3ZDBkNDUxMDU0ZTY4
NTgyN2U5OC4uMjYyYTc1NWY0ZDcyZTg4ZDBhNThhMTE2NzcwMjU3ZWI2ZDZkMTBlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaApAQCAtNDIsMTIgKzQyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BdWRpb0Rl
c3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZSAgIAotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzKHNpemVfdCkgeyB9OyAvLyB3ZSdyZSBwdWxsZWQgYnkgaGFyZHdhcmUgc28g
dGhpcyBpcyBuZXZlciBjYWxsZWQKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSB7IG1fY3VycmVu
dFNhbXBsZUZyYW1lID0gMDsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QpIE9W
RVJSSURFIHsgfTsgLy8gd2UncmUgcHVsbGVkIGJ5IGhhcmR3YXJlIHNvIHRoaXMgaXMgbmV2ZXIg
Y2FsbGVkCisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgT1ZFUlJJREUgeyBtX2N1cnJlbnRTYW1w
bGVGcmFtZSA9IDA7IH0KICAgICAKICAgICAvLyBUaGUgYXVkaW8gaGFyZHdhcmUgY2FsbHMgcmVu
ZGVyKCkgdG8gZ2V0IHRoZSBuZXh0IHJlbmRlciBxdWFudHVtIG9mIGF1ZGlvIGludG8gZGVzdGlu
YXRpb25CdXMuCiAgICAgLy8gSXQgd2lsbCBvcHRpb25hbGx5IGdpdmUgdXMgbG9jYWwvbGl2ZSBh
dWRpbyBpbnB1dCBpbiBzb3VyY2VCdXMgKGlmIGl0J3Mgbm90IDApLgotICAgIHZpcnR1YWwgdm9p
ZCByZW5kZXIoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMpOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoQXVkaW9CdXMq
IHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpIE9WRVJSSURFOwogCiAgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFNhbXBsZUZyYW1lOyB9CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gY3VycmVudFNhbXBsZUZyYW1lKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+
KHNhbXBsZVJhdGUoKSk7IH0KQEAgLTc4LDcgKzc4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9
CiAKICAgICAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4KLSAgICAgICAgdmlydHVhbCB2b2lk
IHByb3ZpZGVJbnB1dChBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcykKKyAgICAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyogZGVzdGlu
YXRpb25CdXMsIHNpemVfdCBudW1iZXJPZkZyYW1lcykgT1ZFUlJJREUKICAgICAgICAgewogICAg
ICAgICAgICAgYm9vbCBpc0dvb2QgPSBkZXN0aW5hdGlvbkJ1cyAmJiBkZXN0aW5hdGlvbkJ1cy0+
bGVuZ3RoKCkgPT0gbnVtYmVyT2ZGcmFtZXMgJiYgbV9zb3VyY2VCdXMtPmxlbmd0aCgpID09IG51
bWJlck9mRnJhbWVzOwogICAgICAgICAgICAgQVNTRVJUKGlzR29vZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmgKaW5k
ZXggMmQ2YzFhZjBlNWRmYmMwMWQ4ZWNlZmQxMThiNDM1MmEzYjZlY2M3YS4uMTJkYTk1MWVlNGIz
MzA1MWFlNTQ2OGNlMmYyMmE2MDJhOThjZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgQXVkaW9CdWZmZXIqIGlucHV0QnVmZmVyKCkgeyByZXR1cm4gbV9p
bnB1dEJ1ZmZlci5nZXQoKTsgfQogICAgIEF1ZGlvQnVmZmVyKiBvdXRwdXRCdWZmZXIoKSB7IHJl
dHVybiBtX291dHB1dEJ1ZmZlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZl
bnRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBBdWRpb1Byb2Nl
c3NpbmdFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWREU1BLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlx
dWFkRFNQS2VybmVsLmgKaW5kZXggZWJkNThkZGUyNjYwZjcyMzg3YzBjMjYwZmRjNWFlNTZlZTFj
MGQ0Mi4uOTcxYzc0ZTIyOGZjNDU2M2IxZmRhYWZhMDVhYWVkYTAzYTM2NzE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZERTUEtlcm5lbC5oCkBAIC00
Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgLy8gQXVkaW9EU1BLZXJuZWwK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgeyBt
X2JpcXVhZC5yZXNldCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQq
IHNvdXJjZSwgZmxvYXQqIGRlc3QsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFIHsgbV9iaXF1YWQucmVzZXQoKTsgfQog
CiAgICAgLy8gR2V0IHRoZSBtYWduaXR1ZGUgYW5kIHBoYXNlIHJlc3BvbnNlIG9mIHRoZSBmaWx0
ZXIgYXQgdGhlIGdpdmVuCiAgICAgLy8gc2V0IG9mIGZyZXF1ZW5jaWVzIChpbiBIeikuIFRoZSBw
aGFzZSByZXNwb25zZSBpcyBpbiByYWRpYW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKaW5kZXggMDE3OWUyZTAxZjJhOTA3MGU4ZjAw
ZjcwOTRlN2ZhM2E0MjlhMjkzOC4uOTBkMWM3OTlhZmRjY2Y1MGFiOWViZjVmM2E2OTBhM2E2Njgx
OTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQ
cm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJpcXVh
ZFByb2Nlc3NvcigpOwogICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5l
bD4gY3JlYXRlS2VybmVsKCk7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVs
PiBjcmVhdGVLZXJuZWwoKSBPVkVSUklERTsKICAgICAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRp
b0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIE9WRVJSSURFOwogCiAgICAgLy8gR2V0IHRoZSBtYWduaXR1ZGUgYW5kIHBoYXNlIHJlc3Bv
bnNlIG9mIHRoZSBmaWx0ZXIgYXQgdGhlIGdpdmVuCiAgICAgLy8gc2V0IG9mIGZyZXF1ZW5jaWVz
IChpbiBIeikuIFRoZSBwaGFzZSByZXNwb25zZSBpcyBpbiByYWRpYW5zLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCmluZGV4IDE5
MGMwOGYxMGM3ZjNjYmRlMzM5MDEwNDk1MTFjOTdiNWYwMDAwYjcuLjAwOWNhNGM3ZjhmZGIzZGQw
NTk1ZmQ3N2I5MDUyOTQ0MjJmYTNiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTQxLDExICs0MSwxMSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CiAK
ICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzZXQoKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBpbiB0aGUgYXVkaW8gdGhyZWFk
IChwcmUtcmVuZGVyaW5nIHRhc2spIHdoZW4gdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgYW4g
aW5wdXQgbWF5IGhhdmUgY2hhbmdlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNo
YW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tO
dW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKSBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2Rlc2lyZWROdW1iZXJPZk91dHB1dENoYW5uZWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuaAppbmRleCAxZDcxOTA3ZDYwYWFmMDJhOTI1ZTQ2YWFjOWUxNjk3NmJlNDE1Y2QyLi44OWY3
NzE0YTRmMDI2NWQ5ZmE3Yjg5NTQyNDc5OTNkNzIxMmRiMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaApAQCAtMzcs
OCArMzcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVy
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cyk7CiAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXgg
NmQ1ODkxODY4ODRjOTM1YjJiMjBlNzcwZWI4NDVjMGQ3NTQxNjRjNS4uNzA4NGM5MTIyMGNjMWZm
ZjkzZDk0M2I4ZmIxYTEzMjZkMGZjYTFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKQEAgLTQ1LDEwICs0NSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q29udm9sdmVyTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZQotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1
YWwgdm9pZCByZXNldCgpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgLy8gSW1wdWxzZSByZXNw
b25zZXMKICAgICB2b2lkIHNldEJ1ZmZlcihBdWRpb0J1ZmZlciopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oCmluZGV4IDAwOWRlOWQxYjdl
ODA3MWUxNjNmMzYyNTE2NjNiMTZhNmUwNmMzODMuLmNkNDc5MjM2N2RlMjk0ZTNlN2M2NDdhNTFm
YjFhNDQ2NzQwZTU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlEU1BLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5RFNQS2VybmVsLmgKQEAgLTM4LDggKzM4LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IERlbGF5RFNQS2VybmVsKERlbGF5UHJvY2Vzc29yKik7CiAgICAgRGVsYXlEU1BLZXJuZWwoZG91
YmxlIG1heERlbGF5VGltZSwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpIE9WRVJSSURFOwogICAgIAogICAgIGRvdWJsZSBtYXhEZWxheVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX21heERlbGF5VGltZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDhiMjkzNTM1Mjg4MDM1OTA4ZmExNjEw
MjMzMmY1OTY5ZmRlYjcyNjQuLmFlZmU0ZDhiOGRkN2NjMGQzNzhjZmVmZGY1YzU4M2UzYjQ4ZmMy
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlv
Q29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRv
dWJsZSBtYXhEZWxheVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAg
Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIE9W
RVJSSURFOwogICAgICAgICAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2RlbGF5VGltZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmluZGV4IDMzOGRmZjNi
MDUwNzYzM2I5MjJhMDBhOTQxNzI1ZWVjZTg5Zjk1MjkuLjFiOGYyM2ExYWY1MTJlYjViZjc1ZWYz
OGZjZDIwNTZmNDg0ZmMzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCkBAIC00MywxMCArNDMsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoKTsKIAogICAgIC8v
IEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZXNldCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAg
Ly8gU3RhdGljIGNvbXByZXNzaW9uIGN1cnZlIHBhcmFtZXRlcnMuCiAgICAgQXVkaW9QYXJhbSog
dGhyZXNob2xkKCkgeyByZXR1cm4gbV90aHJlc2hvbGQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCA3MWNmZWNmYmEwMGJlM2I3MDNiZDk5
MmQ0NTBmN2UwNWY3MzZhMTI0Li43NGIzZDgxNTcxOGExMTAwN2IzNjgwYWMxZTAwNGRiMzlhOTU2
NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oCkBAIC00
NSwxMSArNDUsMTEgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwg
dm9pZCByZXNldCgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwogCiAg
ICAgLy8gQ2FsbGVkIGluIHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBudW1iZXIgb2YgY2hhbm5l
bHMgZm9yIHRoZSBpbnB1dCBtYXkgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBjaGVj
a051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopOworICAgIHZpcnR1YWwg
dm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopIE9WRVJS
SURFOwogCiAgICAgLy8gSmF2YVNjcmlwdCBpbnRlcmZhY2UKICAgICBBdWRpb1BhcmFtKiBnYWlu
KCkgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaAppbmRl
eCAyZjU0OTA5NGM0NWFkYjUyYTcwYzBiZjliNjZlMjY3YzQ1ZmUxMWUxLi45NWI2NWI2Njg2MmI4
YjRkYjAyZGI3ZTg4NDE4ZDJmMDE1MzFkOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgK
QEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFs
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKICAgICAKICAg
ICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvcm1h
dChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdmlydHVh
bCB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkgT1ZFUlJJREU7CiAgICAgCiAgICAgdm9pZCBsb2NrKCk7CiAgICAgdm9pZCB1bmxvY2soKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudC5oCmluZGV4IDE3ZDIyNTdlMDA4MzI3OGY4Nzg4MDM0MDFi
ZmZlNjljMTdjOTg1ZDMuLmJmNjFjY2Q1YWI2OWRmMDk1NWRlMjEzZjMxOGQ1M2FlZjZiNjdmZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAK
ICAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIoKSB7IHJldHVybiBtX3JlbmRlcmVkQnVm
ZmVyLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZjE2NmIzYzQyMGVjNjI1ZjQzMmUw
NjI5Yjk5Y2RlY2Q2NzcwNTBlMy4uZjk0Yzk0YjE5ZDAyNDdjOWRkZmM2MzY4NjRjNDgzNzliYzAz
MTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSAgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUYXJnZXQt
PnNhbXBsZVJhdGUoKTsgfQorICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0
ZToKICAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiwgQXVkaW9C
dWZmZXIqIHJlbmRlclRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggZGY1OGY5NTYwN2JkNjQ3N2QzMWEzOGI3OWQ1ODVk
MjQ5MGRhNTdiOC4uMWJiZjQ3YzE5MDk5ZDlkNjZlNjNkODI3NzQ2YjMwNjNhMTFkOWE3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApA
QCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+T3NjaWxsYXRvck5vZGUoKTsK
ICAgICAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKIAogICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKaW5kZXggYzM1
MmZkMThlZTEzOWIwZjllNTkzYmFhMzI2NTdkZWUzM2ZjYzhmMi4uMTZlMjVmMTkyZjg4ZGNjZTVk
ZjgyMThhZTRhNjI2OGJlZDljZDk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmgKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UGFubmVyTm9kZSgpOwogCiAgICAgLy8gQXVkaW9Ob2RlCi0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHB1bGxJbnB1
dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFs
aXplKCk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5p
bml0aWFsaXplKCkgT1ZFUlJJREU7CiAKICAgICAvLyBMaXN0ZW5lcgogICAgIEF1ZGlvTGlzdGVu
ZXIqIGxpc3RlbmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IGYzOGRlZDkxMTcwZGNiOTNmYWZkMTQ2NmNl
ZmJjN2Q3ODFiYjQ0NTMuLjg4NTNjZWY1ODYzODg3Nzc1YmVjZDVkNTMyMTRjYjI2ZDkwYjVkMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNj
cmlwdFByb2Nlc3Nvck5vZGUoKTsKIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aW5pdGlhbGl6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVu
aW5pdGlhbGl6ZSgpIE9WRVJSSURFOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlclNpemU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaAppbmRleCA2MzVhYzc1ZDk0YjIzZDMx
ZjhhOWQ2OWNhOTc1NDdkYjFhOTMyYzExLi5jY2U2M2E1NzYxOGI1ZWVhNTVjMWI0ZTcyZjFiZDYw
YTVkOTA0MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJQcm9jZXNzb3IuaApAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5XYXZlU2hhcGVyUHJvY2Vzc29yKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpOworICAgIHZpcnR1YWwgUGFzc093blB0cjxB
dWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24s
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNvbnN0
IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykgT1ZFUlJJREU7CiAKICAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwog
ICAgIEZsb2F0MzJBcnJheSogY3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
aAppbmRleCAyMjkxMGUwYTM2MDFmNWQ0MTBjZmJlNjNhY2JiM2QwNTA2OGU4NmJkLi41NGI1ZTZm
ZTMxZDY0M2QzNGVmYjdmNzUxOWU2MjY0ZDdiNTljNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKQEAgLTQ1LDE1ICs0
NSwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUFSSUFH
cmlkPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFS
SUFHcmlkKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBcmlhVGFibGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9ICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKICAgICAKIHByaXZh
dGU6CiAgICAgLy8gQVJJQSB0cmVlZ3JpZHMgYW5kIGdyaWRzIHN1cHBvcnQgc2VsZWN0ZWQgcm93
cy4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSB7IHJldHVybiB0cnVl
OyB9ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nl
c3NpYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1NlbGVjdGVkUm93cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2b2lkIGFkZFJvd0Rl
c2NlbmRhbnQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiAgICAgYm9vbCBhZGRU
YWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2Vs
bC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRD
ZWxsLmgKaW5kZXggZDVhZTRhYzU5NjU1YWM0MGVmMWIzMDQzOTZjYTFlMWVhMmE1MTU4YS4uY2Y5
NzhiNGZhZjE5NDNhOWI4OWU1OWM5MDk2MzhhZGFjYzYwYzEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgK
QEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbCgpOwogICAgIAogICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBh
bmQgcm93IHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCByb3dJbmRl
eFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpIE9WRVJSSURFOwogICAg
IC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2VsbAot
ICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiYgY29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpIE9WRVJSSURFOwogICAgIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkgY29uc3Qg
T1ZFUlJJREU7CiB9OyAKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
aAppbmRleCAwNTRmY2Y2ZmY4Yjk1MGYzNzhkYjNhYWQwMWE5MzMzMGU4ZWRmZGZiLi4zNGMyMTc3
YTFjYzY5ZDBhYmY2OTlhYWFiMWQ2NzIwNjJhY2RhNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKQEAgLTQ0
LDExICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjbG9zZWRSb3dzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGRpc2Nsb3NlZEJ5
Um93KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFk
ZXJPYmplY3QoKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVj
dCgpIE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVHJl
ZUdyaWRSb3coKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dFRhYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJs
ZSgpIGNvbnN0IE9WRVJSSURFOwogfTsgCiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuaAppbmRleCBhZjE3ZWVkNzU2YmRjZjkwMDdlZDc4ZTZiMzAwZTk0NWU5NDVj
YTE1Li4zYjFmN2VhN2IyYThiODY4OTM4OWYxNTMyZGYyNGNhN2U5MDdlYmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbmsuaApAQCAtNDksMjQgKzQ5LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhUTUxNYXBF
bGVtZW50KEhUTUxNYXBFbGVtZW50KiBlbGVtZW50KSB7IG1fbWFwRWxlbWVudCA9IGVsZW1lbnQ7
IH0gICAgCiAgICAgSFRNTE1hcEVsZW1lbnQqIG1hcEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X21hcEVsZW1lbnQuZ2V0KCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25z
dCB7IHJldHVybiBtX2FyZWFFbGVtZW50LmdldCgpOyB9CisgICAgdmlydHVhbCBOb2RlKiBub2Rl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9hcmVhRWxlbWVudC5nZXQoKTsgfQogICAgICAg
ICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIAotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgVVJMIHVy
bCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9IAotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFbGVtZW50KiBhbmNo
b3JFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25F
bGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNB
QSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWVGb3JNU0FBKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBlbGVtZW50UmVjdCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOiAgICAKICAgICBSZWZQ
dHI8SFRNTEFyZWFFbGVtZW50PiBtX2FyZWFFbGVtZW50OwpAQCAtNzQsMTEgKzc0LDExIEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXRo
IGVsZW1lbnRQYXRoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgUmVuZGVyRWxlbWVudCogaW1hZ2VN
YXBMaW5rUmVuZGVyZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVRl
eHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlTWFwTGluaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0ltYWdlTWFwTGluaygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuaAppbmRleCBjNTkxNmFlNmU3NTE1ZTY1
NTIyMWJiYTBiOTZmNTFjMTM5YTcwZDIwLi41MDlkOTE1M2ZkZTRiZDI2MjdkODM3MDc0Y2QwZDJj
MGY5MTg2ZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdC5oCkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlMaXN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmly
dHVhbCB+QWNjZXNzaWJpbGl0eUxpc3QoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc1Vub3JkZXJlZExpc3QoKSBj
b25zdDsKICAgICBib29sIGlzT3JkZXJlZExpc3QoKSBjb25zdDsKICAgICBib29sIGlzRGVzY3Jp
cHRpb25MaXN0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIExpc3RSb2xlOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBMaXN0Um9sZTsgfQog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCBPVkVSUklERTsKIH07CiAgICAgCiBpbmxpbmUgQWNjZXNzaWJpbGl0eUxpc3QqIHRv
QWNjZXNzaWJpbGl0eUxpc3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCmluZGV4
IGRkYTM3ZThkNTdhMDYwZDBlNzJlMWYxODQxOTU0Zjc3Mjg4MDI3NGEuLmJhYmZlYmIwMmQ5NzVi
N2Y1MmI1YTQ1MzRkM2Y4MmI1MTQwYjNlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKQEAgLTQxLDIwICs0MSwyMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUxpc3RCb3g+IGNyZWF0
ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5TGlzdEJveCgpOwog
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGlzTGlzdEJveCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVuQXR0
cmlidXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdm9pZCBzZXRTZWxlY3RlZENoaWxkcmVuKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gTGlzdEJveFJvbGU7IH0KKyAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExp
c3RCb3hSb2xlOyB9CiAgICAgICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZENoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpYmxl
Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgdmlydHVhbCB2b2lk
IHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKIAogcHJpdmF0ZTogICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmpl
Y3QoSFRNTEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiB9OwogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCmluZGV4IDExNDQ0NWMzMTViMmMzZDU0ZjE4YjQ3
YmZlNDM2NmM4NDBjNjEzNzAuLjcxMDgyMGNhYmI1NmYwM2RkM2E0MzBmNjdjOTgyNzk4NzMxZDQ1
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKQEAgLTUwLDI5ICs1MCwyOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBzZXRIVE1MRWxlbWVudChIVE1MRWxlbWVudCogZWxlbWVudCkgeyBtX29wdGlv
bkVsZW1lbnQgPSBlbGVtZW50OyB9CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBMaXN0Qm94T3B0aW9uUm9sZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGUqIG5vZGUo
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbkVsZW1lbnQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0ZWQoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBMaXN0Qm94T3B0aW9uUm9sZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1NlbGVjdGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX29wdGlvbkVsZW1lbnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkg
Y29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgCiBwcml2YXRlOgogICAgIEhUTUxFbGVtZW50KiBtX29wdGlvbkVsZW1lbnQ7CiAg
ICAgCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGxpc3RCb3hPcHRpb25Q
YXJlbnROb2RlKCkgY29uc3Q7CiAgICAgaW50IGxpc3RCb3hPcHRpb25JbmRleCgpIGNvbnN0Owog
ICAgIEludFJlY3QgbGlzdEJveE9wdGlvblJlY3QoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IE9WRVJSSURFOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmgKaW5kZXggNzk4YWZlNjY3YzUwMTE4ZGNhOWZlMzhiYjgyNjgxNDNkMTk2NzI4OS4u
ZmNkODY0NGMwNTdjOGY0M2Q4MzcxNTIxNzhlMjkzNDJhOTkxZWRhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJv
bHMuaApAQCAtNDMsMTcgKzQzLDE3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbCgpIHsgfQogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBTdHJpbmcgdGl0bGUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwg
U3RyaW5nIHRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcg
aGVscFRleHQoKSBjb25zdCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2woUmVuZGVyT2JqZWN0Kik7CiAgICAgTWVkaWFDb250cm9s
RWxlbWVudFR5cGUgY29udHJvbFR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgY29udHJvbFR5cGVO
YW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBPVkVSUklERTsKQEAgLTY2
LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxp
dHlNZWRpYVRpbWVsaW5lKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVRpbWVsaW5l
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGltZWxp
bmUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBoZWxwVGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24oKSBjb25zdCBPVkVSUklERTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGUpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtODMsMTYgKzgzLDE2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVy
T2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWlu
ZXIoKSB7IH0KIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gVG9vbGJhclJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFRvb2xiYXJSb2xlOyB9CiAKLSAg
ICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGFj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBU
ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIoUmVuZGVyT2JqZWN0Kik7CiAgICAgYm9v
bCBjb250cm9sbGluZ1ZpZGVvRWxlbWVudCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyBlbGVt
ZW50VHlwZU5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIApAQCAtMTAyLDE1ICsxMDIsMTUg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNy
ZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5TWVkaWFUaW1l
RGlzcGxheSgpIHsgfQogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBBcHBsaWNhdGlvblRpbWVyUm9sZTsgfQorICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQXBwbGlj
YXRpb25UaW1lclJvbGU7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7
CisgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBPVkVSUklERTsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheShS
ZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJlbCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xMYWJl
bCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0
LmgKaW5kZXggOTVmNzk3MmIzMDNiMjBlMmFhNTViM2Q1ZTlkMWQ4ODEyYjE5ZDIyNy4uZmUwMjdh
MDg3ZDY1NmI0OWUwZWVlNzljOWU2Zjg3YTEwOTg2ZTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCkBAIC0zOSwyMCAr
MzksMjAgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0IDogcHVibGljIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlNZW51TGlzdD4gY3JlYXRlKFJlbmRlck1lbnVMaXN0KiByZW5kZXJlcik7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcHJlc3Mo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZvaWQgZGlk
VXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQWNjZXNzaWJpbGl0eU1lbnVMaXN0KFJlbmRlck1lbnVMaXN0Kik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFBvcFVwQnV0dG9u
Um9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gUG9wVXBCdXR0b25Sb2xlOyB9CisgICAgdmlydHVhbCBib29sIGNhblNl
dEZvY3VzQXR0cmlidXRlKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGRyZW4oKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZCgpIE9WRVJSSURFOwogfTsKIAogaW5saW5lIEFjY2Vzc2liaWxpdHlNZW51TGlz
dCogdG9BY2Nlc3NpYmlsaXR5TWVudUxpc3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3RPcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0T3B0aW9uLmgKaW5kZXggYzM0MGI3ZTRmZjhkYzE1Mzc5Y2RjMWNjNjNhYWEwZTVm
MzYwZTgwMy4uZjQyMzEzODBkNTUzYTA1NTUyN2NlOTE2OTA4MjM2OTVhMjkwZDcwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdE9wdGlvbi5oCkBAIC00MiwyMiArNDIsMjIgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24oKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc01l
bnVMaXN0T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0T3B0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBNZW51
TGlzdE9wdGlvblJvbGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIE1lbnVMaXN0T3B0aW9uUm9sZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
c2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIG5h
bWVGb3JNU0FBKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpOwot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5n
IHN0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIG5h
bWVGb3JNU0FBKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVk
KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fZWxlbWVudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmgKaW5kZXggNTJiMzBkY2VmMGYzN2YyMzc1NTAwOTU5ZTQ4ZGFm
YTVjZGVkOThiOS4uN2ZlM2VhYTg3ZGNkMThmZTA3MTYzMWE5ZWU5NmQ0OWQ0OTgzNzYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cCk7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNP
ZmZTY3JlZW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpOwogCkBAIC00
OCwxNiArNDgsMTYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzTWVudUxpc3RQb3B1cCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1l
bnRSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBNZW51TGlzdFBvcHVwUm9s
ZTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTWVudUxpc3RQb3B1cFJvbGU7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cHJlc3MoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIEFjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbiogbWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhU
TUxFbGVtZW50KikgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCmluZGV4IGQzYzE0MmE1MWY2MzAyNWZj
Yzg0NWRkYjE5OTFkNGRhMDQ5YTE5NzIuLjBlNzI4NDJlYTI1YTViZDY0MWU4NjQ3ZmU4OGViODkx
MDJkYjViMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgKQEAgLTM3LDIwICszNywyMCBAQCBwcm90ZWN0ZWQ6CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1vY2tPYmplY3QoKTsKICAgICAKLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyZW50OyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRP
YmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50KSB7IG1fcGFyZW50ID0g
cGFyZW50OyB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1fcGFy
ZW50OwogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgcGFyZW50IG9iamVjdCBjbGVh
cnMgaXRzIGNoaWxkcmVuLgotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyBt
X3BhcmVudCA9IDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIE9WRVJS
SURFIHsgbV9wYXJlbnQgPSAwOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzTW9j
a09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNb2Nr
T2JqZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgT1ZFUlJJREU7CiB9OyAK
ICAgICAKIGlubGluZSBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCogdG9BY2Nlc3NpYmlsaXR5TW9j
a09iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKaW5kZXggMmJl
MjdlNjQ0NjBkNjZkZDk4ZmJiN2YxNmE0NmVmOTg3ZjhjMmI3Zi4uYzBhZTJlMjk3ZmJmNjcyYmE1
YWI0MTEyNTExNGI1NWU4M2NiZjM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaApAQCAtNjIsOTUgKzYyLDk1IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdD4g
Y3JlYXRlKE5vZGUqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGluaXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIE9WRVJS
SURFOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVhbCBib29sIGNhbnZhc0hhc0ZhbGxi
YWNrQ29udGVudCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c0ZpZWxkc2V0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzSG92
ZXJlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzSW1hZ2VCdXR0b24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1
dEltYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QmFyKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudVJlbGF0
ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFj
a0NvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0FuY2hvcigp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBpc0dyb3VwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzSGVhZGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlQnV0dG9uKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmsoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlz
TmF0aXZlQ2hlY2tib3hPclJhZGlvKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZl
SW1hZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c1NlYXJjaEZpZWxkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3Q7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGlzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzc2VkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlz
U2xpZGVyKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzc2VkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZXF1aXJlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVp
cmVkQXR0cmlidXRlKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZvaWQgc2V0Tm9kZShO
b2RlKik7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9
Ci0gICAgdmlydHVhbCBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQotICAgIHZpcnR1YWwg
Ym9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGhlYWRp
bmdMZXZlbCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQg
bWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9y
UmFuZ2UoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRSYWRpb0J1dHRvbigpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRUYWJJdGVtKCk7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2ti
b3hPclJhZGlvVmFsdWUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgaGllcmFyY2hp
Y2FsTGV2ZWwoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFj
Y2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJF
bGVtZW50TW9kZSgpKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3Q7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0OwotCi0gICAg
dmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBOb2Rl
KiBub2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ub2RlOyB9CisgICAgdmlydHVhbCBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGhl
YWRpbmdMZXZlbCgpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVE
ZXNjcmlwdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JS
YW5nZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBj
b25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRSYWRpb0J1dHRvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogc2VsZWN0ZWRUYWJJdGVtKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKworICAg
IHZpcnR1YWwgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJF
bGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTdHJpbmcgdGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ1ZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUo
aW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJp
bmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVh
bCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgRWxlbWVudCog
bW91c2VCdXR0b25MaXN0ZW5lcigpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9y
RWxlbWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1lbnVGb3JNZW51QnV0dG9u
KCkgY29uc3Q7CiAgICAKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlVmFsdWVCeVBlcmNlbnQoZmxv
YXQgcGVyY2VudENoYW5nZSk7CiAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBm
aXJzdENoaWxkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYXN0
Q2hpbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3Vz
U2libGluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNp
YmxpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2Jq
ZWN0SWZFeGlzdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZp
cnN0Q2hpbGQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGxhc3RDaGlsZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygp
IGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZXNz
aWJpbGl0eVJvbGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IGluY3JlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaW5jcmVtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAK
IHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX2FyaWFSb2xlOwpAQCAtMTYwLDE5
ICsxNjAsMTkgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pbml0aWFsaXplZDsKICNlbmRpZgog
Ci0gICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9ub2RlOyB9
CisgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAh
bV9ub2RlOyB9CiAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vz
c2liaWxpdHlSb2xlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7Ci0gICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIHVuc2lnbmVkIGluZGV4KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgdW5zaWduZWQgaW5kZXgpIE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwotICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBPVkVSUklERTsKICAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChBY2Nlc3NpYmlsaXR5Um9s
ZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25zdCBPVkVS
UklERTsKICAgICB2b2lkIGFsdGVyU2xpZGVyVmFsdWUoYm9vbCBpbmNyZWFzZSk7CiAgICAgdm9p
ZCBjaGFuZ2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKTsKICAgICAvLyBUaGlzIHJldHVybnMg
dHJ1ZSBpZiBpdCdzIGZvY3VzYWJsZSBidXQgaXQncyBub3QgY29udGVudCBlZGl0YWJsZSBhbmQg
aXQncyBub3QgYSBjb250cm9sIG9yIEFSSUEgY29udHJvbC4KQEAgLTE4Miw4ICsxODIsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQq
PiYgZWxlbWVudHMpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25G
b3JFbGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7CiAgICAgdm9pZCBl
bGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hS
ZWN0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBP
VkVSUklERTsKICAgICAKICAgICBFbGVtZW50KiBtZW51RWxlbWVudEZvck1lbnVCdXR0b24oKSBj
b25zdDsKICAgICBFbGVtZW50KiBtZW51SXRlbUVsZW1lbnRGb3JNZW51KCkgY29uc3Q7CkBAIC0x
OTksNyArMTk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhlbHBUZXh0KFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VGV4dD4mKSBjb25zdDsKICAgICBTdHJpbmcgYWx0ZXJuYXRpdmVUZXh0Rm9yV2ViQXJl
YSgpIGNvbnN0OwogICAgIHZvaWQgYXJpYUxhYmVsZWRCeVRleHQoVmVjdG9yPEFjY2Vzc2liaWxp
dHlUZXh0PiYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogaW5saW5lIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0KiB0b0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVByb2dyZXNzSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCmluZGV4IDMxNDRjOGIwZDZiMmM3OTAwZTJl
ZDQyMzI0NTM3YWQyNDI1MmM5YjMuLjdkYTNmMjRiNGMzYzZmZDVjZDg0MzE2OGI5OGE4MzYxNmU2
MjM0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVByb2dyZXNzSW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaApAQCAtNDYsMTMgKzQ2LDEzIEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOyB9CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBQcm9ncmVzc0luZGljYXRvclJvbGU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dy
ZXNzSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBmbG9h
dCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZv
clJhbmdlKCkgY29uc3Q7CisgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QgT1ZFUlJJ
REU7CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICAgICBleHBsaWNpdCBBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IoUmVuZGVyUHJvZ3Jlc3MqKTsKQEAgLTYzLDcgKzYzLDcg
QEAgcHJpdmF0ZToKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBjb25zdDsK
ICNlbmRpZgogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDBmZTAz
Mjc1MDc4OWE4NTdkYmI2NTEwZjU4ZWY3ZTRlNmQ2YTQwNGEuLmU4NmUwM2NiYzJmMjMyNTRjYjNj
ZWY4ZWNhMDFjZGZjMWExMGViOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC02MywxNjcgKzYzLDE2
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpOworICAgIHZpcnR1YWwgdm9pZCBpbml0KCkgT1ZF
UlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNBdHRhY2htZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRmls
ZVVwbG9hZEJ1dHRvbigpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGlzU2Vs
ZWN0ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzT2ZmU2Ny
ZWVuKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3Q7ICAgICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzSXRhbGljRm9udCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
U2VsZWN0ZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNVbnZpc2l0ZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaXNp
dGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzUGxhaW5UZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGhhc1NhbWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBoYXNTYW1lRm9udENvbG9yKFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNTYW1lU3R5bGUoUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGhhc1VuZGVybGluZSgpIGNvbnN0IE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
U2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2Nlc3NpYmxlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
ICAgICAKICAgICAvLyBQcm92aWRlcyBjb21tb24gbG9naWMgdXNlZCBieSBhbGwgZWxlbWVudHMg
d2hlbiBkZXRlcm1pbmluZyBpc0lnbm9yZWQuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpIGNv
bnN0IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgaW50IGxheW91dENvdW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGRvdWJsZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBPVkVSUklERTsKICAgICAK
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0OwotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0Owot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5n
Q29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcHJldmlvdXNTaWJsaW5n
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0
U2libGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0
bGVVSUVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9u
ZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQU93bnMo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxk
T2ZBcmlhUm9sZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhh
c1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICAvLyBT
aG91bGQgYmUgY2FsbGVkIG9uIHRoZSByb290IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGtpY2sg
b2ZmIGEgaGl0IHRlc3QuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Q7CisgICAgdmly
dHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UG9pbnQgY2xp
Y2tQb2ludCgpOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKSBPVkVSUklERTsKICAg
ICAKICAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCopOwotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X3JlbmRlcmVyOyB9CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1vZGVsT2Jq
ZWN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBOb2RlKiBub2RlKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICBSZW5kZXJWaWV3KiB0b3BSZW5kZXJlcigpIGNvbnN0OwogICAgIFJl
bmRlclRleHRDb250cm9sKiB0ZXh0Q29udHJvbCgpIGNvbnN0OwotICAgIEZyYW1lVmlldyogdG9w
RG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsgIAorICAgIHZpcnR1YWwgRnJhbWVWaWV3KiB0b3BE
b2N1bWVudEZyYW1lVmlldygpIGNvbnN0IE9WRVJSSURFOwogICAgIERvY3VtZW50KiB0b3BEb2N1
bWVudCgpIGNvbnN0OwogICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRWxlbWVudENvbnRhaW5l
cigpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRV
bmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNv
bnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCB0
ZXh0TGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGxhaW5U
ZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBoZWxwVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHRleHRVbmRl
ckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnRNb2RlID0gQWNjZXNzaWJpbGl0
eVRleHRVbmRlckVsZW1lbnRNb2RlKCkpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3Ry
aW5nIHRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB0ZXh0TGVuZ3RoKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0OwotICAgIHZpcnR1YWwgV2lk
Z2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0OworICAgIHZpcnR1YWwgV2lkZ2V0
KiB3aWRnZXQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdpZGdldCogd2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RG9j
dW1lbnRMaW5rcyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICB2aXJ0dWFsIEZy
YW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZyYW1lVmll
dyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgT1ZFUlJJREU7CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rl
ZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Rm9jdXNlZChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRU
ZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IE9W
RVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dENoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNl
bGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVh
bCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dENoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGFi
Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIGJvb2wgc2hvdWxkTm90aWZ5QWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2VkKCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSBPVkVSUklERTsKICAgICAKLSAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5n
ZUZvckxpbmUodW5zaWduZWQpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNGb3JW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZp
c2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJ
QUZsb3dUbygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGFyaWFI
YXNQb3B1cCgpIGNvbnN0OworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJs
ZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3Np
dGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdl
KGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklB
Rmxvd1RvKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgYXJpYUhhc1BvcHVwKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBUklBR3JhYmJl
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0
cmluZz4mKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBUklBR3JhYmJlZCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0cmluZz4mKSBP
VkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHVuc2lnbmVkIGluZGV4VmFsdWUsIGJvb2wg
bGFzdEluZGV4T0spIGNvbnN0OyAgICAKLSAgICB2aXJ0dWFsIGludCBpbmRleChjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHVuc2lnbmVkIGlu
ZGV4VmFsdWUsIGJvb2wgbGFzdEluZGV4T0spIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
aW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50KSBjb25z
dDsKLSAgICB2aXJ0dWFsIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckxpbmUodW5zaWduZWQpIGNvbnN0
OwotICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2UgZG9BWFJhbmdlRm9ySW5kZXgodW5zaWduZWQp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBsaW5lQnJlYWtzKFZlY3RvcjxpbnQ+JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVu
c2lnbmVkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIGRvQVhS
YW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFs
IFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEludFJlY3QgZG9BWEJvdW5kc0ZvclJhbmdlKGNvbnN0IFBsYWluVGV4dFJh
bmdlJikgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNvbnN0
IFBsYWluVGV4dFJhbmdlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGRv
QVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IE9WRVJSSURFOwog
ICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBT
dHJpbmcgbmFtZUZvck1TQUEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlv
bkZvck1TQUEoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1
ZUZvck1TQUEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1ZUZvck1TQUEo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdSb2xlRm9yTVNBQSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25Gb3JNU0FBKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWVGb3JNU0FB
KCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxkVmFs
dWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25z
dCBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsK
ICAgICAKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7
IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkRpcnR5OyB9Ci0gICAgU2Nyb2xsYWJsZUFyZWEq
IGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzY3JvbGxU
byhjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdl
dFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
IW1fcmVuZGVyZXI7IH0KIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5l
QWNjZXNzaWJpbGl0eVJvbGUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CkBAIC0yMzQsOCArMjM0LDggQEAgcHJpdmF0ZToKICAgICBQbGFpblRleHRSYW5n
ZSBhcmlhU2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdDsKICAgICBFbGVtZW50KiByb290RWRpdGFi
bGVFbGVtZW50Rm9yUG9zaXRpb24oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKICAgICBib29sIG5v
ZGVJc1RleHRDb250cm9sKGNvbnN0IE5vZGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9Ci0gICAg
dmlydHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzVG9VcGRhdGVDaGlsZHJlbigpIE9WRVJSSURFIHsgbV9jaGlsZHJlbkRpcnR5ID0gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgUGF0aCBlbGVtZW50UGF0aCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAog
ICAgIGJvb2wgaXNUYWJJdGVtU2VsZWN0ZWQoKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGNoZWNr
Ym94T3JSYWRpb1JlY3QoKSBjb25zdDsKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVh
RWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50KikgY29uc3Q7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IE9WRVJSSURFOwogCiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2Jq
ZWN0KikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25z
dDsKQEAgLTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTVkdSb290
KiByZW1vdGVTVkdSb290RWxlbWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgdm9p
ZCBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQoTGF5b3V0UmVjdCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNQYXRoKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIGFkZEhpZGRlbkNo
aWxkcmVuKCk7CiAgICAgdm9pZCBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwpAQCAtMjcxLDYzICsy
NzEsNjMgQEAgcHJpdmF0ZToKICAgICBib29sIGVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdm9pZCBzZXRFbGVtZW50QXR0cmlidXRlVmFsdWUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wpOwogICAgIAotICAgIHZpcnR1YWwgRVNwZWFrIHNw
ZWFrUHJvcGVydHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEVTcGVhayBzcGVha1Byb3BlcnR5KCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGFy
aWFMaXZlUmVnaW9uU3RhdHVzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGFyaWFMaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXJp
YUxpdmVSZWdpb25BdG9taWMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgYXJpYUxpdmVSZWdp
b25CdXN5KCkgY29uc3Q7ICAgIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlh
TGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBhcmlhTGl2ZVJlZ2lvblJlbGV2YW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGFyaWFMaXZlUmVnaW9uQXRvbWljKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGFyaWFMaXZlUmVnaW9uQnVzeSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
Ym9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE1B
VEhNTCkKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4gdHJ1ZSBmb3IgaXNNYXRoRWxl
bWVudCgpLgotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhFbGVtZW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aEZyYWN0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTWF0
aEZlbmNlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTdWJzY3JpcHRTdXBlcnNj
cmlwdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhSb3coKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoVW5kZXJPdmVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlz
TWF0aFJvb3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU3F1YXJlUm9vdCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzTWF0aE51bWJlcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhPcGVyYXRv
cigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFNlcGFyYXRvck9wZXJhdG9yKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGlzTWF0aElkZW50aWZpZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNNYXRoVGFibGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVSb3coKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGFibGVDZWxsKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aE11bHRpc2NyaXB0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
TWF0aEVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRnJh
Y3Rpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFN1YnNjcmlwdFN1cGVyc2Ny
aXB0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aFJvdygpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhVbmRlck92ZXIoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm9vdCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGlzTWF0aFRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNNYXRoTnVtYmVyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aE9w
ZXJhdG9yKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzTWF0aEZlbmNlT3Bl
cmF0b3IoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoU2VwYXJhdG9y
T3BlcmF0b3IoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoSWRlbnRp
ZmllcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZVJvdygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHQoKSBjb25zdCBPVkVSUklERTsK
ICAgICAKICAgICAvLyBHZW5lcmljIGNvbXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aEJhc2VPYmplY3QoKSBPVkVSUklERTsKICAgICAKICAgICAvLyBSb290IGNvbXBv
bmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoUmFkaWNhbmRPYmpl
Y3QoKTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSb290SW5kZXhPYmpl
Y3QoKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhSYWRpY2FuZE9iamVj
dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFJvb3RJ
bmRleE9iamVjdCgpIE9WRVJSSURFOwogICAgIAogICAgIC8vIEZyYWN0aW9uIGNvbXBvbmVudHMu
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoTnVtZXJhdG9yT2JqZWN0KCk7
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoRGVub21pbmF0b3JPYmplY3Qo
KTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhOdW1lcmF0b3JPYmplY3Qo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhEZW5vbWlu
YXRvck9iamVjdCgpIE9WRVJSSURFOwogCiAgICAgLy8gVW5kZXIgb3ZlciBjb21wb25lbnRzLgot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCk7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpOworICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFVuZGVyT2JqZWN0KCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoT3Zlck9iamVjdCgpIE9WRVJSSURFOwog
ICAgIAogICAgIC8vIFN1YnNjcmlwdC9zdXBlcnNjcmlwdCBjb21wb25lbnRzLgotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1YnNjcmlwdE9iamVjdCgpOwotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFN1cGVyc2NyaXB0T2JqZWN0KCk7CisgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0T2JqZWN0KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3VwZXJzY3JpcHRPYmplY3Qo
KSBPVkVSUklERTsKICAgICAKICAgICAvLyBGZW5jZWQgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFs
IFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5n
IG1hdGhGZW5jZWRDbG9zZVN0cmluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IG1hdGhMaW5l
VGhpY2tuZXNzKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJp
bmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VT
dHJpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVz
cygpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gTXVsdGlzY3JpcHRzIGNvbXBvbmVudHMuCi0g
ICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3Jp
cHRQYWlycyYpOwotICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0
eU1hdGhNdWx0aXNjcmlwdFBhaXJzJik7CisgICAgdmlydHVhbCB2b2lkIG1hdGhQcmVzY3JpcHRz
KEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJz
JikgT1ZFUlJJREU7CiAgICAgCiAgICAgYm9vbCBpc0lnbm9yZWRFbGVtZW50V2l0aGluTWF0aFRy
ZWUoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCmluZGV4IDUxOTIyOWRiMzgwZDlkMzBkZDczYTc4NGM2
N2YwODJjOWIxMjU4OWMuLjA1NmM5MGJmZWZkZDVjOGFmZWZkZGY4ZWIyM2NjM2Q1Yzg2OTg0OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
VkdSb290LmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2li
aWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiB9OwogCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHRvQWNjZXNzaWJpbGl0
eVNWR1Jvb3QoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IDBj
ZTI1OWZhMWNiOWIxMTAzNzhkNTM5YTc2YmRmYmZiMTNiNTkwMDEuLmJlMDdkYjkyZjVhMzVjNzNj
M2E1YTgzNjJiYzEzNjE4ZGFjNDc3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKQEAgLTM3LDE1ICszNywxNSBA
QCBjbGFzcyBTY3JvbGxWaWV3OwogY2xhc3MgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcgOiBwdWJs
aWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+IGNyZWF0ZShTY3JvbGxWaWV3Kik7ICAgIAotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xs
QXJlYVJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xlOyB9CiAgICAgU2Nyb2xsVmlldyog
c2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsVmlldzsgfQogCiAgICAgdmlydHVh
bCB+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7
CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJs
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldyhTY3JvbGxWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCmluZGV4IDZjYWVhZWE5
MjIxNjFmMGFmNmFkMjVjMjcwZTFhOTZjZTg0ZWE3YjIuLmY2M2IzZmJiNTZiYWUxNzk5MWZjZGI4
NGYyZDQwYTI5MTNhMWIxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCkBAIC00NCwyMCArNDQsMjAgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKFNjcm9sbGJh
ciopOwogCi0gICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXROdW1lcmljVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBTY3JvbGxCYXJSb2xlOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIFNjcm9sbEJhclJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIC8vIEFzc3VtZXMgZmxvYXQgWzAuLjFdCi0g
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGZsb2F0KTsKLSAgICB2aXJ0dWFsIGZsb2F0IHZhbHVl
Rm9yUmFuZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZmxvYXQpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAppbmRleCAyYzRkYmJm
MmRiZmJlODhlNGZmMWFjMGJlMDNlNTY5OGQ3MmNiYTNkLi4wOGYyODIyM2ViYTQ3ODliNDE5ZTRk
YTljMTk0ZGFkZmU0MTUyNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaApAQCAtNDcsMjMgKzQ3LDIzIEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBTbGlkZXJSb2xlOyB9ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU2xpZGVyUm9sZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1NsaWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZHJlbigpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRW
YWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBmbG9h
dCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdDsgICAgCisgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JS
YW5nZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5n
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiB9OwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5U2xp
ZGVyVGh1bWIgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgewpAQCAtNzIsMTQgKzcy
LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5U2xpZGVy
VGh1bWI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYigp
IHsgfQogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBTbGlkZXJUaHVtYlJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFNsaWRlclRodW1iUm9sZTsgfQog
Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAg
ICAgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5oCmluZGV4IGQzZDZlNmFkNzQ5MGUxNjVlNDJiNWQ3Mzc1OGUzZDZmZjNiYWI2ZjIuLmEwZjhi
NzQ4MTliMWI2ZGVmOTA5YjFjN2JlMDA4ODY4YTRiMzZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTQ3
LDExICs0NywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uKCk7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIFNwaW5CdXR0b25Sb2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVTcGlu
QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZHJlbigpOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gU3BpbkJ1dHRvblJvbGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2
ZVNwaW5CdXR0b24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgU3BpbkJ1dHRvbkVsZW1lbnQq
IG1fc3BpbkJ1dHRvbkVsZW1lbnQ7CiB9OyAKQEAgLTY4LDEwICs2OCwxMCBAQCBwcml2YXRlOgog
ICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydCgpOwogICAgIGJvb2wgbV9pc0luY3JlbWVu
dG9yIDogMTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEJ1dHRvblJv
bGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEJ1dHRvblJv
bGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdCBPVkVSUklERTsKIH07CiAgICAgCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24q
IHRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgK
aW5kZXggZTNjZTNiMGJmMmM2YzliMDc3OGI2OTE2MTZhZjhhYzIwNjI2ZjMyNC4uNzU1YTlhODhk
NWNjMTUzMTc2NzU1ZDQ4NmI1ZTEwN2U4MzM3NWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCkBAIC00NSwxMyArNDUsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUYWJsZT4gY3JlYXRl
KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZSgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGluaXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpIE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNs
ZWFyQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDaGlsZHJlbigpIE9WRVJSSURFOwogICAgIAogICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29sdW1ucygpOwogICAgIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgcm93cygpOwpAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB1
bnNpZ25lZCBjb2x1bW5Db3VudCgpOwogICAgIHVuc2lnbmVkIHJvd0NvdW50KCk7Ci0gICAgdmly
dHVhbCBpbnQgdGFibGVMZXZlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwo
KSBjb25zdCBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAg
Ly8gYWxsIHRoZSBjZWxscyBpbiB0aGUgdGFibGUKICAgICB2b2lkIGNlbGxzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAppbmRleCA3OGYwYjkwNmJjODFiYjYzNDhmYjA4
N2M5MGNiYmQwM2I5NDY0NGNlLi5iZTg2NjdhZjk4MTY1YWVmYzNiODE4OTRkNmUzODg4ZTE0NTc3
NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwog
ICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoKTsKICAgICAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNlbGwo
KSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRp
b24gYW5kIHJvdyBzcGFuIG9mIGNlbGwKICAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKTsKQEAgLTUxLDEzICs1MSwxMyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJl
bnRUYWJsZSgpIGNvbnN0OwogICAgIGludCBtX3Jvd0luZGV4OwotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgT1ZFUlJJREU7CiAK
IHByaXZhdGU6CiAgICAgLy8gSWYgYSB0YWJsZSBjZWxsIGlzIG5vdCBleHBvc2VkIGFzIGEgdGFi
bGUgY2VsbCwgYSBUSCBlbGVtZW50IGNhbiBzZXJ2ZSBhcyBpdHMgdGl0bGUgVUkgZWxlbWVudC4K
LSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxlbWVu
dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBPVkVSUklERTsKIH07IAogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCmluZGV4IDZlNzM3YzEyMWQxMDQ2
OWQxYWQ2Njg5YzYxMzVkMGE5MTQyNWU5NGYuLjRmYjM0NDM5M2NjODc4Mjc3MjcwNTk1ZTdjZWVj
OWFmZTQxNDg5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApAQCAtNDcsMjMgKzQ3LDIzIEBAIHB1YmxpYzoK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3QoKTsKICAgICAgICAg
Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBDb2x1bW5Sb2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDb2x1bW5Sb2xlOyB9CisgICAgdmlydHVhbCBib29s
IGlzVGFibGVDb2x1bW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAg
ICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29sdW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9
IGNvbHVtbkluZGV4OyB9CiAgICAgaW50IGNvbHVtbkluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9j
b2x1bW5JbmRleDsgfSAgICAKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFs
IExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
ZWxlbWVudFJlY3QoKSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6ICAgIAogICAgIHVu
c2lnbmVkIG1fY29sdW1uSW5kZXg7CiAgICAgTGF5b3V0UmVjdCBtX2NvbHVtblJlY3Q7CiAgICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5kZXJU
YWJsZVNlY3Rpb24qLCBib29sIHRoVGFnUmVxdWlyZWQpOwotICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsKICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oCmluZGV4
IDZhOWIyYzk1YjMwNjM0Nzg1MDVjMjUyMGJlOGZjNWRmMTEzNmUzOWYuLjE2MzQ2NDI3OTk3ZmEz
OTdjOWFjN2QxNmRmNTZiZmYwY2JkOTAxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWlu
ZXIuaApAQCAtNDMsMTYgKzQzLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwg
fkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcigpOwogICAgIAotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gVGFibGVIZWFkZXJD
b250YWluZXJSb2xlOyB9CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU7IH0KICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGRyZW4oKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVu
dFJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25z
dCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6CiAgICAgTGF5b3V0UmVjdCBtX2hlYWRlclJlY3Q7
CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QgT1ZFUlJJREU7CiB9OyAKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cu
aAppbmRleCBkMjQyZWU0NDljZDZjYWUxYmIyYjcxNDFhNWEwOGRkYWY1MGRiZGUxLi4wZWUwY2U4
ZmFlMjhhNzFlMWI3YWRmMTZmNzA2ODk2NjlhYTQ3Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUYWJsZVJv
dz4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJs
ZVJvdygpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIHJldHJp
ZXZlcyB0aGUgInJvdyIgaGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikK
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwpAQCAtNTUs
MTMgKzU1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZENoaWxkKEFjY2Vzc2liaWxpdHlP
YmplY3QqKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIGludCBtX3Jvd0luZGV4OwogICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IE9WRVJSSURFOwogfTsgCiAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4IDA2MzljOTZhNGMxNzNlMjk1ZjVjNTUwYjc0ZmI0NzEx
MTVlNTc0NWEuLmI1ZDliMWExMDMzMDY4NGRmMWU0OTI5YWE0OTY0MWYzOTI5NDhiZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Nyw3ICs0
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlz
dGVuZXIoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBvdGhlcik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIG90aGVyKSBPVkVSUklERTsKIAogICAgICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBldmVudCBsaXN0ZW5lciB3YXMgY3JlYXRlZCBmb3IgYW4gZXZlbnQgaGFuZGxlciBh
dHRyaWJ1dGUsIGxpa2UgIm9ubG9hZCIgb3IgIm9uY2xpY2siLgogICAgICAgICBib29sIGlzQXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dHJpYnV0ZTsgfQpAQCAtNjAsMTIgKzYwLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
SlNDOjpKU09iamVjdCogaW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6U2xv
dFZpc2l0b3ImKTsKLSAgICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6U2xvdFZpc2l0
b3ImKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wg
aXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBPVkVS
UklERTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNP
YmplY3Q+IG1fanNGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggYzVkNzAwZGQzMWRiYTlh
ZTZhMGM2MTBiNzc4ZDQyNTk1ZjZiYTk5NS4uOTRkMWM1Y2UyYjMwOTRlZDNjNjVjMTlkZWQzN2Q1
MzczNjdmMGFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKQEAgLTM3LDE1ICszNywxNSBAQCBwdWJsaWM6
CiAgICAgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7CiAgICAgdmlydHVhbCB+V2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyKCk7CiAgICAgCi0gICAgdmlydHVhbCBKU0M6OkpTQXJyYXlC
dWZmZXIqIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpB
cnJheUJ1ZmZlciopOworICAgIHZpcnR1YWwgSlNDOjpKU0FycmF5QnVmZmVyKiB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKSBPVkVS
UklERTsKICAgICAKICAgICBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKCkgeyBy
ZXR1cm4gJm1fb3duZXI7IH0KIAogcHJpdmF0ZToKICAgICBjbGFzcyBKU0FycmF5QnVmZmVyT3du
ZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRl
eHQpOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYp
IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgT1ZFUlJJREU7CiAgICAgfTsKIAogICAgIEpTQXJy
YXlCdWZmZXJPd25lciBtX293bmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY19jbGFzcy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5oCmluZGV4IDM0
Y2FkNWZiMjRiY2U4MzEzOTk1ZWUyYjNjNDAyZGUwMzQ3NzdmN2MuLmE2N2RlNmU4YmZkNzUzMTRi
NjU2YTRmOWNjMjlhOWNiZWVjZDkwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfY2xhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgKQEAg
LTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDQ2xhc3MqIGNsYXNzRm9ySXNBKE5Q
Q2xhc3MqKTsKICAgICB2aXJ0dWFsIH5DQ2xhc3MoKTsKIAotICAgIHZpcnR1YWwgTWV0aG9kKiBt
ZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCBG
aWVsZCogZmllbGROYW1lZChQcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3Q7CisgICAgdmly
dHVhbCBNZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5z
dGFuY2UqKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBOUENsYXNzKiBtX2lzYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAppbmRleCBlZTdkOGYyMmMwNWE1ODY5ZjMx
MjE4MzAwZGQ5YmZkYjRmZTdiOGVhLi5kZDNjZjIyZjczNjczOTA0OTkxOWU4NzI3MzJjMGIwZDk1
ZDE0MTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCkBAIC01MSwyMiArNTEs
MjIgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihTdHJpbmcp
OwogICAgIHN0YXRpYyB2b2lkIG1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3Rh
dGUqKTsKIAotICAgIH5DSW5zdGFuY2UgKCk7CisgICAgdmlydHVhbCB+Q0luc3RhbmNlKCk7CiAK
LSAgICB2aXJ0dWFsIENsYXNzICpnZXRDbGFzcygpIGNvbnN0OworICAgIHZpcnR1YWwgQ2xhc3Mg
KmdldENsYXNzKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVP
ZihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OworICAgIHZpcnR1YWwgSlNW
YWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29u
c3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZU1ldGhvZChFeGVjU3Rh
dGUqLCBSdW50aW1lTWV0aG9kKiBtZXRob2QpOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0lu
dm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tlRGVm
YXVsdE1ldGhvZChFeGVjU3RhdGUqKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgZ2V0TWV0aG9kKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBKU1ZhbHVlIGlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqLCBSdW50aW1lTWV0aG9kKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0ZSopIE9WRVJS
SURFOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RydWN0KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBKU1ZhbHVlIGludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0
Jik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RydWN0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBKU1ZhbHVlIGludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBB
cmdMaXN0JikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JikgT1ZFUlJJREU7CiAKICAg
ICBKU1ZhbHVlIHN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEpTVmFsdWUgbnVt
YmVyVmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgQ0luc3RhbmNlKE5QT2JqZWN0KiwgUGFzc1JlZlB0cjxSb290T2JqZWN0Pik7
CiAKLSAgICB2aXJ0dWFsIFJ1bnRpbWVPYmplY3QqIG5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRl
Kik7CisgICAgdmlydHVhbCBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSopIE9WRVJSSURFOwogICAgIGJvb2wgdG9KU1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKiwgSlNWYWx1ZSYpIGNvbnN0OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgK
aW5kZXggNDdiN2NlZTQ4YzdiYWI3NTUxYWEyOTYzNzNmNTQ4NWVlOTE2MTNlZi4uZTcwZGE0NTlj
OGJkN2NkZWE5NWQ1MTBmNjg2YjUwZGFhZDc3YTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19y
dW50aW1lLmgKQEAgLTM4LDggKzM4LDggQEAgY2xhc3MgQ0ZpZWxkIDogcHVibGljIEZpZWxkIHsK
IHB1YmxpYzoKICAgICBDRmllbGQoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9maWVsZElkZW50aWZp
ZXIoaWRlbnQpIHsgfQogCi0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0
OworICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25z
dCBJbnN0YW5jZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRv
SW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCBPVkVS
UklERTsKIAogICAgIE5QSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gX2Zp
ZWxkSWRlbnRpZmllcjsgfQogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDTWV0aG9k
KE5QSWRlbnRpZmllciBpZGVudCkgOiBfbWV0aG9kSWRlbnRpZmllcihpZGVudCkgeyB9CiAKICAg
ICBOUElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIF9tZXRob2RJZGVudGlm
aWVyOyB9Ci0gICAgdmlydHVhbCBpbnQgbnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gMDsgfQogCiBwcml2YXRlOgogICAgIE5QSWRlbnRpZmllciBfbWV0aG9kSWRlbnRpZmllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAppbmRleCBjYzY5NjFlZjhhYjgyOGMwZGUz
MjQ2OWUyYzY2NjYyYzIxODczMWZkLi5mNWU1ZDRkYTUwMWQ2MDljOTY1ZjQwYjJkNjY2NTNkOGM2
YjdhZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCkBAIC01NSw3ICs1NSw3
IEBAIGNsYXNzIFJvb3RPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxSb290T2JqZWN0PiwgcHJp
dmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CiAgICAgZnJpZW5kIGNsYXNzIEphdmFKU09iamVj
dDsKIAogcHVibGljOgotICAgIH5Sb290T2JqZWN0KCk7CisgICAgdmlydHVhbCB+Um9vdE9iamVj
dCgpOwogICAgIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IGNyZWF0ZShjb25z
dCB2b2lkKiBuYXRpdmVIYW5kbGUsIEpTR2xvYmFsT2JqZWN0Kik7CiAKQEAgLTgzLDcgKzgzLDcg
QEAgcHJpdmF0ZToKICAgICBSb290T2JqZWN0KGNvbnN0IHZvaWQqIG5hdGl2ZUhhbmRsZSwgSlNH
bG9iYWxPYmplY3QqKTsKIAogICAgIC8vIFdlYWtIYW5kbGVPd25lcgotICAgIHZpcnR1YWwgdm9p
ZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCkgT1ZFUlJJREU7CiAKICAgICBib29sIG1faXNWYWxpZDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggMDA2YTBjNTM4YzhjNWZlNTAyNTE2YWYzMjM3Mzc3
ZTFmYzQ1MzMwNS4uNzM2OWIxYWUwMzIzNTNjMjc5NDg3OTRkODNjYWI1OTQ2OTQ1YmUzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTgyLDkgKzgyLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UmFkaXVzWChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRpdXNY
KSB7IG1fcmFkaXVzWCA9IHJhZGl1c1g7IH0KICAgICB2b2lkIHNldFJhZGl1c1koUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CiAK
LSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVSZWN0
YW5nbGVUeXBlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0OworICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVJlY3Rh
bmdsZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgT1ZF
UlJJREU7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBz
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKQEAgLTEyMCw5ICsxMjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
YWRpdXNYKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1c1gpIHsgbV9yYWRpdXNY
ID0gcmFkaXVzWDsgfQogICAgIHZvaWQgc2V0UmFkaXVzWShQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiByYWRpdXNZKSB7IG1fcmFkaXVzWSA9IHJhZGl1c1k7IH0KIAotICAgIHZpcnR1YWwg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlw
ZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVJbnNldFJlY3Rhbmds
ZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgT1ZFUlJJ
REU7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4mKSBjb25zdDsKQEAgLTE1Miw5ICsxNTIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDZW50
ZXJZKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclkpIHsgbV9jZW50ZXJZID0g
Y2VudGVyWTsgfQogICAgIHZvaWQgc2V0UmFkaXVzKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHJhZGl1cykgeyBtX3JhZGl1cyA9IHJhZGl1czsgfQogCi0gICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBDU1NCYXNpY1NoYXBlQ2lyY2xlVHlwZTsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0
IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVDaXJjbGVUeXBlOyB9CisgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMo
Y29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CkBAIC0xODMsOSAr
MTgzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFkaXVzWChQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByYWRpdXNYKSB7IG1fcmFkaXVzWCA9IHJhZGl1c1g7IH0KICAgICB2b2lkIHNl
dFJhZGl1c1koUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzWSkgeyBtX3JhZGl1
c1kgPSByYWRpdXNZOyB9CiAKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IENTU0Jhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENT
U0Jhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hh
cGUmKSBjb25zdCBPVkVSUklERTsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMjE4LDkgKzIxOCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRSdWxlIHcpIHsgbV93aW5kUnVsZSA9IHc7IH0KICAg
ICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KIAotICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVBvbHlnb25U
eXBlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0OworICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVBvbHlnb25UeXBl
OyB9CisgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IE9WRVJSSURFOwog
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IGI0OWIxMTk3ZTA3Y2U1OTJlZjMzYzMxNTkzODczYjUzZDAzMzhlMmQuLjM2NmFlNGI2MjgwOTU2
MzhkNmE4MTMyYzUyNDcwMzE3OTkzNjJmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTEwOSwyMSArMTA5LDIxIEBAIHByaXZh
dGU6CiAgICAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJv
b2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gQ1NTT00gZnVu
Y3Rpb25zLiBEb24ndCBtYWtlIHRoZXNlIHB1YmxpYy4KLSAgICB2aXJ0dWFsIENTU1J1bGUqIHBh
cmVudFJ1bGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlQ
cmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Z2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwotICAgIHZp
cnR1YWwgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBn
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCk7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Ym9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIENTU1J1bGUqIHBh
cmVudFJ1bGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJv
cGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlQcmlvcml0eShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0
UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlv
cml0eSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92
ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NT
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0
aWVzKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgPSBVcGRhdGVMYXlvdXQp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMzE5NWFlYmFmZTFhNDll
MmE3MDY1MTZlZjAyY2Q1NjZlN2I3NTY3NS4uMTE5NTI0YmI4ZGU1OTNjYTdmYmJiOTEyYjk1YTRl
MGVjZmQwMzc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC0xMTksOCArMTE5
LDggQEAgcHJpdmF0ZToKICAgICBDU1NTdHlsZVNoZWV0KFBhc3NSZWZQdHI8U3R5bGVTaGVldENv
bnRlbnRzPiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFBh
c3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiwgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5s
aW5lU3R5bGVzaGVldCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBBU0NJSUxpdGVyYWwoInRleHQvY3NzIik7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDU1NT
dHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
U3RyaW5nIHR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQv
Y3NzIik7IH0KIAogICAgIGJvb2wgY2FuQWNjZXNzUnVsZXMoKSBjb25zdDsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5oCmluZGV4IDA2NWU5ZjI3ODQ5YWI4OWQ2ODMzMDk2NDQwZDU1OWMwMTJkZTFkMDYuLjA1ODRh
NWVhZjZmYjk4NWM3OWFhZjQ4NzE5ODg4ZGQyZmQ0NzczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNzcs
MTQgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbmFtZS5uYW1lc3BhY2VVUkko
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX25hbWUucHJlZml4KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdmFsdWUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9u
ZU5vZGUoYm9vbCBkZWVwKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVlKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBdHRyaWJ1dGVOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
dHRyaWJ1dGVOb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklE
RTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaAppbmRl
eCAxZDUzODI4Njg2MjgyNjYyZGQwMDI3NzRkN2JjN2QxZWM1ODhiM2NmLi5iNTY2MWJmMTMzM2Jj
NzgyNGJmZGVjNzM3MjAzNWM2ZTFmZDgyMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQodGV4dCkpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBTdHJpbmcm
IHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3Qg
U3RyaW5nJiBzKSB7IG1fdGV4dCA9IHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DREFUQVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaAppbmRl
eCAzZmFjMTZmYWJlZGM5ODEyZTM3OWE0MDNjZmUwZjc3NDQ2MDkwOWM4Li4yMTNiOTFkZmI3MTgw
Mjg5ZjIzYmFmZTAxOTFhNTY4ODc4OTg3MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ0RBVEFTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5o
CkBAIC0zNCwxMSArMzQsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDREFUQVNlY3Rpb24o
RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1l
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKLSAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBT
dHJpbmcgbm9kZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5vZGVUeXBlIG5v
ZGVUeXBlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNs
b25lTm9kZShib29sIGRlZXApIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVB
bGxvd2VkKE5vZGVUeXBlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIH07CiAKIGlubGlu
ZSBib29sIGlzQ0RBVEFTZWN0aW9uKGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxk
Tm9kZUxpc3QuaAppbmRleCBkZmRlNTczNDJlYjVhZjFjY2IzN2Y3ODk3MWZhOTQ4NTgwNTAxNDc0
Li40NTZlNTJjMmE0MmQwOGU3N2JhNWE3MWE5NmNjZjdkMWZjY2ExMzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGlsZE5vZGVMaXN0LmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgQ2hpbGROb2RlTGlzdChQYXNzUmVmUHRy
PE5vZGU+IHJvb3ROb2RlKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxl
bWVudCopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCop
IGNvbnN0IE9WRVJSSURFOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5oCmluZGV4IDcxM2ZlYjg5N2M0ZThiOWY4
ZDBmYWI1MDk2MmQ0ZDFhZmNkNDE0MTMuLmQxMzBhMmEwOTBlY2M3ZWU4OGY0ZTcxNDI2NjVmZGRl
ZjQyY2ZkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5n
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuaApAQCAt
NDAsMTYgKzQwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEYXRh
c2V0RE9NU3RyaW5nTWFwKGVsZW1lbnQpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVm
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZigpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIGdldE5hbWVzKFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdmlydHVhbCBTdHJpbmcgaXRl
bShjb25zdCBTdHJpbmcmIG5hbWUpOwotICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBT
dHJpbmcmIG5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZp
cnR1YWwgdm9pZCBnZXROYW1lcyhWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgU3RyaW5nIGl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0SXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4
Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSXRlbShjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
RWxlbWVudCogZWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZpcnR1YWwgRWxl
bWVudCogZWxlbWVudCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IERhdGFzZXRET01TdHJpbmdNYXAoRWxlbWVudCogZWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggNWY4YzY2NWE4MjM1YmViZjk0ZDc1NmM0ZWU1MmE2ZjhlZjBk
YjI1Yy4uZjM2YjAyNDY5YzQyNzQyNmNmZjU5NDc5NDExNTc5ZDk0MzIyMWFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTI1Myw3ICsyNTMsNyBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBn
ZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlBY2Nlc3NLZXko
Y29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgaW52YWxpZGF0ZUFjY2Vzc0tleU1hcCgpOwpA
QCAtNDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZG9jdW1lbnRVUkkoKSBjb25z
dCB7IHJldHVybiBtX2RvY3VtZW50VVJJOyB9CiAgICAgdm9pZCBzZXREb2N1bWVudFVSSShjb25z
dCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFVSTCBiYXNlVVJJKCkgY29uc3QgT1ZFUlJJREU7CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJ
QklMSVRZX0FQSSkKICAgICBTdHJpbmcgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CkBAIC02MDMs
OSArNjAzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIE9WRVJSSURFOwogCiAg
ICAgYm9vbCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUpOwogICAgIEZyYW1lKiBmaW5k
VW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpOwpAQCAtOTM0LDcgKzkzNCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRE5TUHJlZmV0Y2hFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ROU1ByZWZldGNoRW5hYmxlZDsgfQogICAgIHZvaWQgcGFyc2VETlNQcmVmZXRjaENv
bnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2so
UGFzc093blB0cjxUYXNrPik7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJl
YWQgYXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrKFBhc3NPd25QdHI8
VGFzaz4pIE9WRVJSSURFOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFk
IGFzeW5jaHJvbm91c2x5LgogCiAgICAgdm9pZCBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCByZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXJDYWxsYmFja3MoKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEFubm90YXRlZFJlZ2lvbnMoY29uc3QgVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiYp
OwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBPVkVSUklERTsKIAog
I2lmIEVOQUJMRShTVkcpCiAgICAgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBzdmdFeHRl
bnNpb25zKCk7CkBAIC0xMDE3LDggKzEwMTcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9jZXNz
aW5nTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CiAg
ICAgYm9vbCBsb2FkRXZlbnRGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZEV2ZW50Rmlu
aXNoZWQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgY29udGFpbnNWYWxpZGl0eVN0eWxlUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zVmFsaWRpdHlTdHlsZVJ1bGVzOyB9CiAgICAg
dm9pZCBzZXRDb250YWluc1ZhbGlkaXR5U3R5bGVSdWxlcygpIHsgbV9jb250YWluc1ZhbGlkaXR5
U3R5bGVSdWxlcyA9IHRydWU7IH0KQEAgLTEwMjgsNyArMTAyOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICAg
dm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBT
dHJpbmcmIG5ld1VSTCk7CiAgICAgdm9pZCBlbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpOwotICAgIERvY3VtZW50RXZlbnRR
dWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRRdWV1ZTsgfQorICAgIHZp
cnR1YWwgRG9jdW1lbnRFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9ldmVudFF1ZXVlOyB9CiAKICAgICB2b2lkIGFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
cihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKICAgICB2b2lkIHJlbW92ZU1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcihNZWRpYUNhblN0YXJ0TGlzdGVuZXIqKTsKQEAgLTEwOTUsOCArMTA5NSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y0FuaW1hdGlvblN0YXJ0VGltZSk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXQq
IGVycm9yRXZlbnRUYXJnZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25z
b2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPik7CisgICAgdmlydHVhbCBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklERTsK
IAogICAgIHZvaWQgaW5pdEROU1ByZWZldGNoKCk7CiAKQEAgLTExNzgsNyArMTE3OCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2woRWxlbWVudCopOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlm
aWVyID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyID0gMCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFNlY3VyaXR5T3Jp
Z2luKiB0b3BPcmlnaW4oKSBjb25zdCBPVkVSUklERTsKIApAQCAtMTIxNSwxOSArMTIxNSwxOSBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBub2Rl
TmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlw
ZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4sIEpTQzo6RXhlY1N0YXRlKiA9IDAsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIg
PSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+LCBKU0M6OkV4ZWNTdGF0ZSogPSAwLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyID0gMCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGlt
ZXJJbnRlcnZhbCgpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSB0aW1lckFsaWdubWVu
dEludGVydmFsKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgdGltZXJBbGlnbm1lbnRJbnRl
cnZhbCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCB1cGRhdGVUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJik7CiAgICAgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2VUaW1lckZp
cmVkKFRpbWVyPERvY3VtZW50PiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5oCmluZGV4IGI4OGYxZTFlMTFkNDYwNDE5NTZhMjRhNTY1MTZhODI0YTVlMTI0ZmQuLjY2MWJl
MWQ2MGE2ZTIyODU2NzlhMDhhYzFmNjcwZDQ4ODZmMGIwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRFdmVudFF1ZXVlLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNz
IERvY3VtZW50RXZlbnRRdWV1ZSBGSU5BTCA6IHB1YmxpYyBFdmVudFF1ZXVlIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQmKTsKLSAgICB+RG9jdW1l
bnRFdmVudFF1ZXVlKCk7CisgICAgdmlydHVhbCB+RG9jdW1lbnRFdmVudFF1ZXVlKCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQmKSBPVkVSUklERTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IGZkMDFlZDE3MTk3NGU4ZmNhMTcyY2MyODZk
YTRiN2RjZjRjZTAzZjIuLjc5NmY4YzA0NTgyMGEwZmY4ZDJmMzU0NDBiODE4YmI5MDczZmNkZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzYsMTcgKzM2LDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBhcnNlSFRNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250
ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7
CiAgICAgYm9vbCBwYXJzZVhNTChjb25zdCBTdHJpbmcmLCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZW1wbGF0ZUNv
bnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1l
bnRGcmFnbWVudChEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIp
OwotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJp
bmcgbm9kZU5hbWUoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIE5v
ZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNs
b25lTm9kZShib29sIGRlZXApOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5v
ZGVUeXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXAp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBj
b25zdCBPVkVSUklERTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IGZkODkxMWUyNWRmMjJjYjcwODEwMzlmMmIzNGJmNjhlNjgwZDAyMmYuLjQxZjVmYmI3YmRjNDcz
OWIwNDBkYjliZGM1NjUwMTBjOWEyZWVhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjU0LDcg
KzI1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdCBPVkVS
UklERSBGSU5BTDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIFBhc3NSZWZQ
dHI8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCk7CiAgICAgUGFzc1JlZlB0cjxF
bGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKQEAgLTQyMyw3ICs0MjMsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgaXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIGlzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
UGFyc2luZ0NoaWxkcmVuKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2lu
Z0NoaWxkcmVuKCkgT1ZFUlJJREUgRklOQUw7CiAKICAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQ
c2V1ZG9FbGVtZW50KCkgY29uc3Q7CkBAIC00NzQsNyArNDc0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5k
UG9pbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkNvbnRh
aW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ly8gVXNlZCBmb3IgZGlzYWJsZWQgZm9ybSBlbGVtZW50czsgaWYgdHJ1ZSwgcHJldmVudHMgbW91
c2UgZXZlbnRzIGZyb20gYmVpbmcgZGlzcGF0Y2hlZAogICAgIC8vIHRvIGV2ZW50IGxpc3RlbmVy
cywgYW5kIHByZXZlbnRzIERPTUFjdGl2YXRlIGV2ZW50cyBmcm9tIGJlaW5nIHNlbnQgYXQgYWxs
LgpAQCAtNDgyLDcgKzQ4Miw3IEBAIHB1YmxpYzoKIAogCiAjaWYgRU5BQkxFKFNWRykKLSAgICB2
aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSop
IGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgaGFzUGVuZGluZ1Jlc291cmNlcygpIGNvbnN0Owog
ICAgIHZvaWQgc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwogICAgIHZvaWQgY2xlYXJIYXNQZW5k
aW5nUmVzb3VyY2VzKCk7CkBAIC02MzYsMTIgKzYzNiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZEZyb21QYXJzZXJPckJ5Q2xvbmluZyhjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKTsKIAog
I2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciog
YnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRG
b3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgT1ZFUlJJREU7
CiAjZW5kaWYKIAogICAgIHZvaWQgY2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB2aXJ0dWFsQ29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8pIHsgcmV0dXJuIGNvbXB1dGVkU3R5bGUocHNl
dWRvRWxlbWVudFNwZWNpZmllcik7IH0KKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB2aXJ0dWFs
Q29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID0gTk9QU0VVRE8p
IE9WRVJSSURFIHsgcmV0dXJuIGNvbXB1dGVkU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7
IH0KICAgICAKICAgICAvLyBjbG9uZU5vZGUgaXMgcHJpdmF0ZSBzbyB0aGF0IG5vbi12aXJ0dWFs
IGNsb25lRWxlbWVudFdpdGhDaGlsZHJlbiBhbmQgY2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVu
CiAgICAgLy8gYXJlIHVzZWQgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FcnJvckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oCmluZGV4IDcy
MTc3YzgwYTdiYzI4MWFhN2Y4ZThkNjAxNTA0YjZhODFjMzM0MDAuLmQwMGU3ZjQ1ODhlZTdhYjlh
OWY1ZGVhMTc3NzU3MDZjNzUwMTdhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
cnJvckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuaApAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGluZW5vKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CiAgICAgdW5zaWduZWQgY29sbm8oKSBjb25zdCB7IHJldHVybiBtX2Nv
bHVtbk51bWJlcjsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFj
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBFcnJvckV2ZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuaAppbmRleCAzNDczMTFkODQ3MDJjODFiMmZlZGE4MTdkZjg2ZWU1MDMw
NGViZWUxLi4wMDRiMzZlMmY3NTMyMTYyMjc3N2ZiZDZiMzg1MTI1ZjA1YTM0YjE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTk4LDEyICs5OCwxMiBAQCBwdWJsaWM6CiAgICAg
CiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXlFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5RXZlbnQuZ2V0KCk7IH0KIAotICAgIGludCBrZXlDb2RlKCkgY29uc3Q7IC8vIGtl
eSBjb2RlIGZvciBrZXlkb3duIGFuZCBrZXl1cCwgY2hhcmFjdGVyIGZvciBrZXlwcmVzcwotICAg
IGludCBjaGFyQ29kZSgpIGNvbnN0OyAvLyBjaGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJlc3MsIDAg
Zm9yIGtleWRvd24gYW5kIGtleXVwCisgICAgdmlydHVhbCBpbnQga2V5Q29kZSgpIGNvbnN0IE9W
RVJSSURFOyAvLyBrZXkgY29kZSBmb3Iga2V5ZG93biBhbmQga2V5dXAsIGNoYXJhY3RlciBmb3Ig
a2V5cHJlc3MKKyAgICB2aXJ0dWFsIGludCBjaGFyQ29kZSgpIGNvbnN0IE9WRVJSSURFOyAvLyBj
aGFyYWN0ZXIgY29kZSBmb3Iga2V5cHJlc3MsIDAgZm9yIGtleWRvd24gYW5kIGtleXVwCiAKLSAg
ICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHdoaWNo
KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB3aGljaCgpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIC8vIFdlIG9ubHkgaGF2ZSB0aGlzIG5lZWQgdG8gc3RvcmUga2V5
cHJlc3MgY29tbWFuZCBpbmZvIG9uIHRoZSBNYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzNDU1ZDQyYTEz
MDExYmRhNTBjZGNiMzY0ZWRjZTc4ZjZmN2IwZDYzLi5lMDBmNmNjMGJmOGU5OGE5Y2Q5NDcyMjI4
ZjVjOWZlZTJjMDcyMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUyMCwxNCArNTIwLDE0IEBAIHB1Ymxp
YzoKIAogICAgIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUqKTsK
IAotICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCk7CisgICAgdmlydHVhbCBOb2RlKiB0b05vZGUo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEhUTUxJbnB1dEVsZW1lbnQqIHRvSW5wdXRFbGVtZW50
KCk7CiAKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7IC8vIEltcGxl
bWVudGVkIGluIERvY3VtZW50LmgKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
LCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VD
YXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0
dXJlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVy
ZSkgT1ZFUlJJREU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKICAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PikgT1ZFUlJJREU7
CkBAIC02NzUsOCArNjc1LDggQEAgcHJpdmF0ZToKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJs
ZShFZGl0YWJsZUxldmVsLCBVc2VyU2VsZWN0QWxsVHJlYXRtZW50ID0gVXNlclNlbGVjdEFsbElz
QWx3YXlzTm9uRWRpdGFibGUpIGNvbnN0OwogICAgIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJp
bGl0eShFZGl0YWJsZUxldmVsKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpOwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCk7CisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIG5vblJl
bmRlcmVyU3R5bGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBSZW5kZXJTdHls
ZSogdmlydHVhbENvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaAppbmRleCBkNGM3NGZjYWEzMjdmMmQ4NDUxMDYx
M2EyYTA0ZDViZmVhMjhmNjZjLi45YTFhNWIxZTAyMDg3YmM3NDE2ZjkxMzg1ZTY1YjdmMzYyM2I5
Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UGFnZVRyYW5zaXRpb25FdmVudCgpOwog
Ci0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsK
IAogICAgIGJvb2wgcGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKaW5kZXggMDViZjkwNjBhNjdjMTU0YjJkZjIyMjQ4
OTI4Y2Q4NDIzNTAwODE5Zi4uMGY5ZTgyN2Q3ZGQzNDU1Nzc2OGNjZTAwN2E4N2NiOGU2YzE3YTlh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fk
ZWQ7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWwoKSBjb25zdCB7IHJldHVybiBtX3Rv
dGFsOyB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29u
c3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFOwogCiBwcm90ZWN0ZWQ6CiAgICAgUHJvZ3Jlc3NFdmVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmgKaW5kZXggM2RlOTNjNjNlZTcwNmQ4ZTkwZmZlMjRlMDVhNzk2Yzc4OTRm
ZWM4Yy4uYzM2YWU3MTgwMTgyZTc5ZGNiNjNjZDgyZjRkYTc2MWI4NzE1NmExMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHNldWRvRWxlbWVudChob3N0LCBwc2V1ZG9JZCkp
OwogICAgIH0KLSAgICB+UHNldWRvRWxlbWVudCgpOworICAgIHZpcnR1YWwgflBzZXVkb0VsZW1l
bnQoKTsKIAogICAgIEVsZW1lbnQqIGhvc3RFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0
RWxlbWVudDsgfQogICAgIHZvaWQgY2xlYXJIb3N0RWxlbWVudCgpIHsgbV9ob3N0RWxlbWVudCA9
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4
IDFjM2VjY2NjNDkwMjE3Nzc1ZWY3ODM4YzUzNTJlNWY0ODZkZTI3NGUuLjg3NDg2ODgyYjllYzcy
M2RjZWUwYzBhMWVhZjhhOTQ4YmI2MGMyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBZGRDb25zb2xlTWVzc2FnZVRh
c2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwogICAgICAgICB9Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAg
ICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggODUx
NTIyMTUyOWY5ZGRiNzkwMmJlYzhjZjI3MGU2M2NkMzZlZGExNC4uMTYyNTljMTA2NzUxYzE1ODYx
YTg5MDAxYTE5MDFmMTQ3MGRkZTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC03Niw3
ICs3Niw3IEBAIHB1YmxpYzoKICAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkg
eyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlv
bigpIHsgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3RFbGVtZW50KCkp
OyB9CiAKLSAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAg
U2hhZG93Um9vdChEb2N1bWVudCYsIFNoYWRvd1Jvb3RUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5oCmluZGV4IGM5NGEwYzUxYjVjNjgwOTkxYWE3NDRhMDk1Njc3NGM4YzY3ZGY0Y2Iu
LmVmNDFiY2RmNmEzNGJiNjc1OGY5NDE2YTRkNTY0NzY3ZjVjYjBmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBh
ZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVy
dHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpOwogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIHN0eWxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1N0eWxlU3RyaW5nLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGFnTm9kZUxpc3QuaAppbmRleCA5ZmI4NzExNWZiZmZlYjY4Yzc2Njc3YWRkOTU0MzI0MGJhMDk0
OGJjLi41NWI4YWE5M2E5MWRmNGI1NzE0NGE2N2U1Y2EzYzVhMjljNWQyZmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGFnTm9kZUxpc3QuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgVGFnTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiByb290Tm9kZSwgQ29sbGVjdGlvblR5cGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7
CiAKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2VVUkk7CiAgICAgQXRvbWljU3RyaW5nIG1f
bG9jYWxOYW1lOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxU
YWdOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoRWxlbWVudCopIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhFbGVtZW50KikgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICBBdG9taWNTdHJpbmcgbV9sb3dlcmVkTG9jYWxOYW1lOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
CmluZGV4IGY0ZWJhNGJjNjY5ZDRhNGEyODkwMTUyZjI1YjQ3YjVjMTRjYWE0OGQuLmZhYTY3OTE4
NDQ4OTM5YTAyNWZkNGQ5NWVkMzU3ZjhmMmM4NjIzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtNjYsNyAr
NjYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0PiB2aXJ0dWFsQ3Jl
YXRlKGNvbnN0IFN0cmluZyYpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgdm9pZCBm
b3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdCBPVkVSUklERTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5o
CmluZGV4IGM5ZjU2NzAwZThjYzFhYzJiZGU4MThjMzU1OGQ4ZTEzYTFjN2VkMTQuLjdlYjljNjcz
MWE2NTQwNDNiN2Y0YjhkMzM4ZmJiMmVhNTRhMTJlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgICAgICBTdHJp
bmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAgICAgIHZpcnR1YWwgRXZl
bnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgICAgIGJv
b2wgaXNMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2lucHV0VHlwZSA9PSBUZXh0RXZlbnRJ
bnB1dExpbmVCcmVhazsgfQogICAgICAgICBib29sIGlzQ29tcG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lucHV0VHlwZSA9PSBUZXh0RXZlbnRJbnB1dENvbXBvc2l0aW9uOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJhbnNpdGlvbkV2ZW50LmgKaW5kZXggNDNkYTZjNjZhYzkwNmMxZTgyNTQxYTIxMDg0
Zjk3YTIzYzRlNTViNS4uMDgyMWViMDIxOTdmMDAzMDM4MmY0ZjhmYjFhOTk2NjU3MzQ5ZDNiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBw
c2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50
SW50ZXJmYWNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVy
ZmFjZSgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIFRyYW5zaXRpb25FdmVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmgKaW5kZXggZTVkYzUzZWE3MjAxMWY5MmU4NTViODQ4OWU2OGVlODlj
ZmM2MGRjNy4uMjkxZDQxZTkzZjQ5N2NkYzRjOTcyOTE1MzcwY2Y3NDRmZTQ0Nzc5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVUlFdmVudC5oCkBAIC02MSw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICBBYnN0cmFjdFZpZXcq
IHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXcuZ2V0KCk7IH0KICAgICBpbnQgZGV0YWlsKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KIAotICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2Ug
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNVSUV2ZW50KCkgY29u
c3Q7CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1VJRXZlbnQoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgaW50IGtleUNvZGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBjaGFyQ29k
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlv
bkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAppbmRl
eCA5MzAzZTNlMDM0ZDU1MTQ3YzBmOGMzYTA5NDRkOGUzMjc5NTg5YWRmLi4yZjg1Mzg2ZGZhOTQz
NzRlZTFmMmQ2MTY1NjZlOWEzNWFkYTY4ZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lKCkgY29uc3Q7CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7
CisgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9WRVJS
SURFOwogCiBwcml2YXRlOgogICAgIFdlYktpdEFuaW1hdGlvbkV2ZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgKaW5kZXggMWExY2E2NjQ4NjdhMWM1OWY4
ODAzMGFmMDI5YWViYWQwMjI1MjNhYy4uZWFmZjFlYWRiNzMyZWNhMTllMjg0Y2Y1OWQyMjlmY2Fk
YjAwOWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25F
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lKCkgY29uc3Q7
CiAgICAgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgog
ICAgIFdlYktpdFRyYW5zaXRpb25FdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmgKaW5kZXggNDUyZGMyYTYzYjQxY2RiNDQ3OTYy
YWUwYmEzZDJhOGEwMTg4NDZkMi4uYTI1ZTM1MWE0MmJhZDk2YWU3NDA3NjQxM2ZkNjY2ZjQ2Nzk1
M2Q2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVu
dENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZC5oCkBAIC00Niw3ICs0Niw3IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lIHRhZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7IH0KIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOworICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgY29uc3QgUG9zaXRpb24mIGVuZE9mU2VsZWN0aW9u
LCBSZWZQdHI8RWxlbWVudD4mKSA9IDA7CiAgICAgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlT2ZF
bmNsb3NpbmdUZXh0Tm9kZShjb25zdCBQb3NpdGlvbiYpOwogICAgIHZvaWQgcmFuZ2VGb3JQYXJh
Z3JhcGhTcGxpdHRpbmdUZXh0Tm9kZXNJZk5lZWRlZChjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBQ
b3NpdGlvbiYsIFBvc2l0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmgKaW5kZXggNGVmZjFlODUzYjc1YjljNTYyNjkwNTkzYjI0NGFjOGJjZTQ2YzQ4Ny4u
NjY2MzdjOGRmMDVhYTVjOGY4OTkxZTYxMmYwYmYyODIxZTg1Mjc0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaApAQCAtNzEsOCArNzEsOCBAQCBwcml2YXRl
OgogICAgIEFwcGx5U3R5bGVDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4sIGJvb2wgcmVtb3Zl
T25seSwgRWRpdEFjdGlvbik7CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmLCBjb25z
dCBFZGl0aW5nU3R5bGUqLCBib29sICgqaXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVs
ZW1lbnQqKSwgRWRpdEFjdGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwotICAg
IHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGRvQXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gc3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAg
ICAgYm9vbCBpc1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCmluZGV4
IGY2Y2UxYjgzZDMyNmVjYzMzZTI2NGVhNzhlZWRmMDQ3NjRkNjk3OTQuLjFkNWMxMjM0MTFmYTY2
ZDlhMjM3ZjUwMjFiYzhkOGYxYTgyYTVmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kKERvY3VtZW50Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgp
IE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IGQ0MTRmMjJjZjJkMTk3NDMz
YWYwZWU4YjgzODZkMDU5ZmMwYzkxNzQuLjA5MmVjMzhiZjU0Mjg0ODhmZWU1NjFmMGI4MjI1YTVh
MjJhYjRkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVuYXBw
bHkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOwotICAg
IEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZWRp
dEFjdGlvbjsgfQorICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9lZGl0QWN0aW9uOyB9CiAgICAgdm9pZCBhcHBlbmQoU2ltcGxl
RWRpdENvbW1hbmQqKTsKICAgICBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9lZGl0QWN0aW9uID09IEVkaXRBY3Rpb25DcmVhdGVMaW5rOyB9CiAKQEAgLTE3MCw3
ICsxNzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVmVjdG9yPFJlZlB0cjxFZGl0Q29tbWFuZD4gPiBt
X2NvbW1hbmRzOwogCiBwcml2YXRlOgotICAgIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29tbWFuZCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDb21w
b3NpdGVFZGl0Q29tbWFuZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IFJlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBtX2NvbXBvc2l0aW9uOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgKaW5k
ZXggNjEzNjM2NjNkZGRiYTU0M2YyZWQ2YTcyOWJhMDY0ZTU2YzU4YmYyZi4uNjAwZTFjMjBmZmU4
YzAxNzM1NTRhODc2MDk5YjRhYmUxOTA0MjhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgKQEAgLTM5LDggKzM5LDggQEAgcHVi
bGljOgogICAgIH0KIHByaXZhdGU6CiAgICAgU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZChQYXNz
UmVmUHRyPFJhbmdlPiByYW5nZVRvQmVDb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlv
bik7Ci0gICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
UmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9BcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXRhaW5BdXRvY29y
cmVjdGlvbkluZGljYXRvcigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgUmVmUHRyPFJhbmdlPiBt
X3JhbmdlVG9CZUNvcnJlY3RlZDsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fc2VsZWN0aW9uVG9C
ZUNvcnJlY3RlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggMjZjZjhjMzAyNmE3NjY2MzQzYjk1
MmViYWI3NjhiMjJhNmZjNzA4Mi4uOTUzMDQ1ZGRlMzEwZjcxNzkzOWM2MzY4ODY2N2NmNTg0NzFi
ODY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgbmFtZSwgcG9saWN5KSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBpc0ZpbGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBT
dHJpbmcmIHBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KICAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVRocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVRocmVhZFRhc2suaAppbmRleCBiYWNiYTExN2QyZWRkYThiOWI4NzFkMzg4Mjg3NzNjODY4NzVj
MTM2Li42ZWIyYjc0MDBkZmZkN2IxNjRlNDljMWViNDFiZTFlNDQxYzBiOTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWRUYXNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkVGFzay5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKSBPVkVSUklERQogICAgIHsKICAgICAgICAgKCpzdGF0
aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0aG9kKSgpOwogICAgIH0KQEAgLTc2LDcgKzc2
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bVRhc2soKQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzaygpIE9WRVJSSURFCiAgICAgewog
ICAgICAgICAoKnN0YXRpY19jYXN0PFQqPihpbnN0YW5jZSgpKS4qbV9tZXRob2QpKG1fcGFyYW1l
dGVyMSk7CiAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybVRhc2soKSBPVkVSUklERQogICAgIHsKICAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5z
dGFuY2UoKSkuKm1fbWV0aG9kKShtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMik7CiAgICAgfQpA
QCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgKCpzdGF0aWNfY2FzdDxUKj4oaW5zdGFuY2UoKSkuKm1fbWV0
aG9kKShtX3BhcmFtZXRlcjEsIG1fcGFyYW1ldGVyMiwgbV9wYXJhbWV0ZXIzKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAppbmRleCA3MmQ4ZWY1YzFmYWE4
MjJjMTM1NTJmN2YzN2E0NWIwY2RjNmQyNmNjLi4yOTJmNTMyNzM0MGJkNzA1YTIxY2RjYmM1YWJk
NzNlMTc0MTJlZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgK
QEAgLTQ2LDE1ICs0NiwxNSBAQCBwdWJsaWM6CiAKICAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4g
bV9wYWdlOyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0
b3J5SXRlbT4pOworICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+KSBPVkVSUklERTsKICAgICB2b2lkIGdvQmFjaygpOwogICAgIHZvaWQgZ29Gb3J3YXJkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKik7CisgICAgdmlydHVhbCB2
b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgT1ZFUlJJREU7CiAgICAgICAgIAogICAgIEhpc3Rv
cnlJdGVtKiBiYWNrSXRlbSgpOwogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwogICAg
IEhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0
ZW1BdEluZGV4KGludCk7CisgICAgdmlydHVhbCBIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50
KSBPVkVSUklERTsKIAogICAgIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRl
bVZlY3RvciYpOwogICAgIHZvaWQgZm9yd2FyZExpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRl
bVZlY3RvciYpOwpAQCAtNjMsMTEgKzYzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhcGFj
aXR5KGludCk7CiAgICAgYm9vbCBlbmFibGVkKCk7CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wp
OwotICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQoKTsKLSAgICB2aXJ0dWFsIGludCBmb3J3
YXJkTGlzdENvdW50KCk7CisgICAgdmlydHVhbCBpbnQgYmFja0xpc3RDb3VudCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgaW50IGZvcndhcmRMaXN0Q291bnQoKSBPVkVSUklERTsKICAgICBib29s
IGNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSopOwogCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7
CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgT1ZFUlJJREU7CiAgICAgYm9vbCBjbG9zZWQoKTsK
IAogICAgIHZvaWQgcmVtb3ZlSXRlbShIaXN0b3J5SXRlbSopOwpAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJhY2tGb3J3YXJkTGlzdChQYWdlKik7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSB7IHJldHVybiBlbmFibGVkKCkgJiYgY2FwYWNp
dHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIE9WRVJSSURFIHsgcmV0dXJuIGVu
YWJsZWQoKSAmJiBjYXBhY2l0eSgpOyB9CiAKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgSGlzdG9y
eUl0ZW1WZWN0b3IgbV9lbnRyaWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuaAppbmRleCAxYWZjODc2Y2UzMjMxMzRkMWQ0ZTA4NDUxY2RiNDExNDhmYjU4
Y2Q3Li5hMTllYjAyMjA1MmYwYWQyZjdiNmQ1MDU2YmI2MDA1ZGI1YmM5YjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlIDogcHVi
bGljIElucHV0VHlwZSB7CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQmFzZUNoZWNrYWJsZUlu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVS
UklERTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1D
b250cm9sU3RhdGUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hv
ckVsZW1lbnQuaAppbmRleCBmNmI3OTkxN2JmMGNjMjIzZDczNTk5NjFiMzQzYzU0YjQwNDZhZjVl
Li44OGU0OTA2ZDNhNTMxYzFhOTA4YTY2MzE0OWIwN2EyZDlmZGExYzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC0xMTEsMTQgKzExMSwxNCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUgPSB0cnVlLCBib29sIHBhdXNlID0gZmFs
c2UpIE9WRVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9v
bCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9v
bCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCBi
b29sIGRyYWdnYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHZvaWQgc2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25V
UkwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAppbmRleCAxODBmNjEzMDY0
Yjg0Mjg4MTQyYTdlOTJhMjZlZTQ4MTQ4NzE4NWUyLi5mMTBhMTVmZTI3NGIwYjAxNTUzMDAwYWU2
NTVhOGRlNTIxODI0NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKQEAg
LTUyLDExICs1MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtl
eWJvYXJkRXZlbnQqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZv
Y3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgp
IGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2Uo
Ym9vbCAvKnJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiovKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgLypyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24qLykgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIE9WRVJSSURFOwogCiAgICAg
ZW51bSBTaGFwZSB7IERlZmF1bHQsIFBvbHksIFJlY3QsIENpcmNsZSwgVW5rbm93biB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDk0N2FkMzdjZjIzYWE0OGNi
NDA1YjA4ZWEyZmIyYTg4NmM5ZTg5ZDkuLmFlZTUyYWE0NjM3MDA4OGVmNzA2ZWFiZWVmZjhmNzFj
YzM5NWM2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTE0
NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIEhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVu
ZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBhcmVBdXRob3JT
aGFkb3dzQWxsb3dlZCgpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmgKaW5kZXggZGVjOGUyZTQzY2ZiYjM1YTgzZDNhZjM0OTFiMzk3YjU4ZGE4YTVkNC4u
N2YyMWY4MmVhNGQ0OGNkOTJmMmNhMDEyZGZhNzA1Y2ZjZGY3YTIwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkKLSAgICB2aXJ0dWFsIE5vZGUq
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIHZpcnR1YWwg
Tm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgT1ZFUlJJREU7
CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8v
IE5vbi1ET00gQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggNmNlYTRkODZiZDBj
MTI2MzMzYWQyOTM2MWFiZDJkMGQ2YjNhN2MxNy4uMjA3OTZlN2M5ZGM0M2M2MWZhNThmM2VmMzJk
MDlkZmFlNTljYWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtNzcsMTIgKzc3
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xpY2soKTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogCiAgICAgYm9v
bCBpZUZvcmJpZHNJbnNlcnRIVE1MKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOwotICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVu
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJl
bmRlclN0eWxlJikgT1ZFUlJJREU7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBjb25z
dCB7IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmgKaW5kZXggZTNlNDg5MTZkZjY1Y2M2MGE4NTE4YzQ5NTU2YjcxMDM3MDRm
MjNhMy4uNGYzYTA3NTRhOTY5NzcxMzcxYWFhOWFmOTE1OThmOGRjYWIyNTU1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKQEAgLTQ3LDExICs0NywxMSBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEhUTUxGaWVsZFNldEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxl
Jik7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGFyZUF1dGhvclNoYWRvd3NBbGxvd2VkKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCA1NjA4ZTAwNTdkYThkNTI3MzdkMTZmMzFjNWU0
NWRlOTJmNGVkOTZjLi44NDlkMTVjMGQ5NWExNzcwYzA1ZDM2YWJmZTdkM2ZlMWYxMzUzZWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtNjgs
NyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29u
c3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3Q7
CiAKQEAgLTgwLDEzICs4MCwxMyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlkZSBpbiBkZXJp
dmVkIGNsYXNzZXMgdG8gZ2V0IHRoZSBlbmNvZGVkIG5hbWU9dmFsdWUgcGFpciBmb3Igc3VibWl0
dGluZy4KICAgICAvLyBSZXR1cm4gdHJ1ZSBmb3IgYSBzdWNjZXNzZnVsIGNvbnRyb2wgKHNlZSBI
VE1MNC0xNy4xMy4yKS4KLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFM
aXN0JiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9y
bURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2YXRlZFN1Ym1pdChib29s
KSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVW
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICB2b2lkIGhpZGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKICAgICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ+ID4qIHVuaGFuZGxlZEludmFsaWRDb250cm9scyA9IDApOwpAQCAtMTMx
LDE3ICsxMzEsMTcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgdmFsaWRhdGlvbk1lc3NhZ2VTaGFk
b3dUcmVlQ29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgdm9pZCByZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgeyBkZXJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpIE9WRVJSSURFIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBPVkVSUklERSB7
IGRlcmVmKCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtQ29udHJvbEVsZW1l
bnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGFs
d2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZFUlJJREUgRklO
QUw7CiAKLSAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAgdmlydHVhbCBIVE1M
Rm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpIE9WRVJSSURFOwogICAgIHZvaWQgdXBk
YXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVt
ZW50KiBhc0hUTUxFbGVtZW50KCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gdGhpczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUuaAppbmRleCBmZTAxY2IzZGY4YmQ3MWFkYjdjNGUzYTY4MDg1ZDRjZGFiNjhlMGM4Li5hNjdk
ZTQ0YzQ0Nzk3NjczYWM0MzY0MDVjYjlmYTc5ZjhmMWMxMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaApAQCAtMzQs
NyArMzQsNyBAQCBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlIDogcHVibGlj
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWlu
UmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9s
U3RhdGUoKSBjb25zdDsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRv
Y29tcGxldGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCk7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAppbmRleCA5MzJhMWE2OWY2ODY4NjMwNGRmNmU4NGJhMDljMGM1ZTViMDJjMDk0Li5j
ZGNlYjBiZTg4Y2ZhNzBiMjY1ODM4MjIyZmJiMjU3ZmU1M2ZhZWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBtZXRob2QoKSBjb25zdDsKICAgICB2b2lkIHNldE1ldGhvZChjb25zdCBTdHJpbmcmKTsKIAot
ICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHRh
cmdldCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgYm9vbCB3YXNVc2VyU3VibWl0dGVkKCkgY29u
c3Q7CiAKQEAgLTExMSwxNyArMTExLDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEZv
cm1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KikgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkb2N1bWVudERpZFJlc3VtZUZyb21QYWdlQ2FjaGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklE
RTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGVl
ZDQ4NzlmYjllMmVmNmRjNzk5MjYxM2U5Y2Y2ZDI4MDhmMzc4YzguLmQ5Mjk4MzdlYTFlNzhkMTk5
ODcyNDI0ODhjY2QzNjRmNjY2YTk3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIFVSTCBsb2NhdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJik7CiAKLSAgICB2
aXJ0dWFsIFNjcm9sbGJhck1vZGUgc2Nyb2xsaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsaW5nOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9sbGluZzsgfQogICAgIAogICAgIGludCBtYXJnaW5X
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFyZ2luV2lkdGg7IH0KICAgICBpbnQgbWFyZ2luSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5IZWlnaHQ7IH0KQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIGludCB3aWR0aCgpOwogICAgIGludCBoZWlnaHQoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgogICAgIEhUTUxGcmFtZUVsZW1lbnRC
YXNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNjEsNyArNjEsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ29udGVudEF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c0ZyYW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzRnJhbWVFbGVtZW50QmFzZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBhcmVBdXRob3JTaGFkb3dzQWxsb3dlZCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKaW5kZXggMTQzODQ5MGQ2MTBjMGFiODYzODQ2MGExY2FjYWVmMDMzODkyODVkZi4uMGJiMjE0
ZmVlNjI2YmM5MDdjNjJhNjc5NzBlY2I5MTdlOWMxN2RhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlTG9hZGVyLmhhc1BlbmRp
bmdBY3Rpdml0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWlu
UmFuZ2VFbmRQb2ludCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklE
RTsKIApAQCAtOTgsMTUgKzk4LDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5
bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFy
dFNlbGVjdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGRyYWdnYWJs
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25zdCBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBP
VkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCmluZGV4IGQzYjYwNjg3
MWY0NmRkNThiYTljMTI2ODQ1NjZlNmQ3N2Y4MTAxYTIuLjQwNjg4YjcxZDM2YjVkNjI5MWZmM2Zk
MDQ4ODBiZTVmYzFhZTBlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2FkZXIuaApA
QCAtMzIsMTAgKzMyLDEwIEBAIHB1YmxpYzoKICAgICBIVE1MSW1hZ2VMb2FkZXIoRWxlbWVudCop
OwogICAgIHZpcnR1YWwgfkhUTUxJbWFnZUxvYWRlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoTG9hZEV2ZW50KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopIE9WRVJSSURFOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAppbmRleCBjZGVjOTI0NDgyZWY4OTkwYjljOTg4ZmQwNzQ3ZDQxYmM1M2JlOWI1Li5k
Y2YzNjZlZmU2OWZlZjc3NjJkYjU5Y2VlOWMxODg3Y2QwMDUxNWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNjIsMTUgKzYyLDE1IEBAIHB1YmxpYzoKIAogICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0c3BlZWNoY2hhbmdlKTsKIAot
ICAgIHZpcnR1YWwgSFRNTElucHV0RWxlbWVudCogdG9JbnB1dEVsZW1lbnQoKSB7IHJldHVybiB0
aGlzOyB9CisgICAgdmlydHVhbCBIVE1MSW5wdXRFbGVtZW50KiB0b0lucHV0RWxlbWVudCgpIE9W
RVJSSURFIHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29t
cGxldGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29u
c3QgT1ZFUlJJREU7CiAKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQogICAgIHZpcnR1YWwgYm9v
bCBoYXNCYWRJbnB1dCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJu
TWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZs
b3coKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92ZXJmbG93KCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCB0b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHR5cGVN
aXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3Q7CisgICAgdmlydHVh
bCBIVE1MRWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIEhU
TUxFbGVtZW50KiBpbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0OwogICAgIEhUTUxFbGVtZW50KiBp
bm5lclNwaW5CdXR0b25FbGVtZW50KCkgY29uc3Q7CiAgICAgSFRNTEVsZW1lbnQqIHJlc3VsdHNC
dXR0b25FbGVtZW50KCkgY29uc3Q7CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgSFRNTEVsZW1lbnQqIHNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0OwogICAgIEhUTUxF
bGVtZW50KiBzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEhUTUxFbGVt
ZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEhUTUxFbGVtZW50
KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIGJvb2wgY2hlY2tl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDaGVja2VkOyB9CiAgICAgdm9pZCBzZXRDaGVja2VkKGJv
b2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaE5vRXZlbnQpOwpAQCAtMTY2LDcg
KzE2Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmKTsKIAot
ICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCk7CiAgICAgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yID0gRGlzcGF0
Y2hOb0V2ZW50KTsKICAgICB2b2lkIHNldFZhbHVlRm9yVXNlcihjb25zdCBTdHJpbmcmKTsKQEAg
LTE5OSw4ICsxOTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhbkhhdmVTZWxlY3Rpb24oKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0
eWxlJik7Ci0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSYsIFJlbmRlclN0eWxlJik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7CkBAIC0yMDgsOCArMjA4LDggQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBGb3IgaXNBY3RpdmF0ZWRTdWJtaXQgYW5kIHNldEFjdGl2YXRlZFN1
Ym1pdCwgd2Ugc2hvdWxkIHVzZSB0aGUgTlZJLWlkaW9tIGhlcmUgYnkgbWFraW5nCiAgICAgLy8g
aXQgcHJpdmF0ZSB2aXJ0dWFsIGluIGFsbCBjbGFzc2VzIGFuZCBleHBvc2UgYSBwdWJsaWMgbWV0
aG9kIGluIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgdG8gY2FsbAogICAgIC8vIHRoZSBwcml2YXRl
IHZpcnR1YWwgbWV0aG9kLgotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCBmbGFnKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmF0ZWRTdWJtaXQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wgZmxhZykgT1ZFUlJJREU7CiAKICAg
ICBTdHJpbmcgYWx0VGV4dCgpIGNvbnN0OwogCkBAIC0yMzEsNyArMjMxLDcgQEAgcHVibGljOgog
CiAgICAgVVJMIHNyYygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29u
c3Q7CisgICAgdmlydHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdm9p
ZCBzZXRNYXhMZW5ndGgoaW50LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBib29sIG11bHRpcGxl
KCkgY29uc3Q7CkBAIC0zMTksNyArMzE5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEhU
TUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1F
bGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRl
U2V0dGluZyB7IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKQEAgLTMzOSw0OCArMzM5LDQ4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rp
b24pOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3Jl
UHJldmlvdXNTZWxlY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJ
bnB1dE1ldGhvZCgpIE9WRVJSSURFIEZJTkFMOwogCi0gICAgdmlydHVhbCBib29sIGlzVGV4dEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzVGV4dEZp
ZWxkKCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5UcmlnZ2VySW1wbGljaXRTdWJtaXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5U
cmlnZ2VySW1wbGljaXRTdWJtaXNzaW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaXNUZXh0
RmllbGQoKTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTYXZlQW5k
UmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEZv
cm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xT
dGF0ZSYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZl
bnRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZl
bnRzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRp
ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGNvcHlOb25B
dHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpOwor
ICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBPVkVS
UklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgY29uc3QgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJblJhbmdlKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzT3V0T2ZSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc0luUmFuZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNP
dXRPZlJhbmdlKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRE
aWRSZXN1bWVGcm9tUGFnZUNhY2hlKCk7CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkUmVz
dW1lRnJvbVBhZ2VDYWNoZSgpIE9WRVJSSURFOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCkgT1ZF
UlJJREU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgYm9vbCBuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpOwogICAgIHZvaWQgcmVnaXN0ZXJG
b3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwpAQCAtMzkwLDIxICszOTAsMjEgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzVGV4dFR5cGUoKSBjb25zdDsKICAgICBib29sIHRvb0xvbmcoY29u
c3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVBsYWNlaG9sZGVyVGV4dCgpOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVy
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4
dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBpbm5lclRleHRWYWx1ZSgpLmlzRW1wdHkoKTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5U3VnZ2VzdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdWdnZXN0ZWRWYWx1
ZSgpLmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3VnZ2VzdGVkVmFsdWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdWdnZXN0ZWRWYWx1ZSgpLmlzRW1wdHkoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KE5vZGUqIG9sZEZvY3VzZWROb2RlLCBG
b2N1c0RpcmVjdGlvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVu
dCgpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNS
ZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1D
b250cm9sKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKSBPVkVSUklERTsKIAogICAgIHZvaWQgdXBkYXRl
VHlwZSgpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpIE9WRVJSSURFOwogCiAjaWYgRU5BQkxF
KERBVEFMSVNUX0VMRU1FTlQpCiAgICAgdm9pZCByZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNl
cnZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaAppbmRleCA3MTRlYzY0
MjQzZmRiOTQ0NDJiYzEzN2Y1M2MyMTg0ZDBhYjVlMmJiLi5jMTM1ODAzZDFiMDI5NTI4YmNkMzU2
ZDUyY2M1NmYzNWNlNzNmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
YWJlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQu
aApAQCAtNDMsMTQgKzQzLDE0IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1
c2FibGUoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rp
b24oYm9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rp
b24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogCiAgICAgLy8gT3ZlcnJpZGRlbiB0
byB1cGRhdGUgdGhlIGhvdmVyL2FjdGl2ZSBzdGF0ZSBvZiB0aGUgY29ycmVzcG9uZGluZyBjb250
cm9sLgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCA9IHRydWUsIGJvb2wgcGF1c2Ug
PSBmYWxzZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRy
dWUpIE9WRVJSSURFOwogCiAgICAgLy8gT3ZlcnJpZGRlbiB0byBlaXRoZXIgY2xpY2soKSBvciBm
b2N1cygpIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRyb2wuCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKGJvb2wgcmVz
dG9yZVByZXZpb3VzU2VsZWN0aW9uLCBGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5oCmluZGV4IGUzYjU3ZTMxZTUwNTlmYTVj
ZjdiMGNlNDY2N2E0NjgzMTRkZGI5N2UuLmUzN2VkMmQ2ZGE5Y2Q5MzFjZGM2ZjkxOGZhMzI2ZDMw
MzY4MjA1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBDb250cm9sIGluIHRoZSBsZWdlbmQncyBmaWVs
ZHNldCB0aGF0IGdldHMgZm9jdXMgYW5kIGFjY2VzcyBrZXkuCiAgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudCogYXNzb2NpYXRlZENvbnRyb2woKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24pIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgpIGNvbnN0
IE9WRVJSSURFOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
ZTBlOWE4ZjhjNjZlNmFjZjNiZGZkMWY5ZWQ3MzljYjIwZmY3NmJlNC4uZjU1ZjA3MDY4YTgzMjJm
ODdhNGZiNWU2Zjg3OTY4NDZhMDUzM2UyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTEwNiwxNyArMTA2LDE3IEBAIHB1YmxpYzoKICAgICBNZWRpYVBsYXllciog
cGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFzVmlkZW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNB
dWRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3QgT1ZF
UlJJREU7CiAKICAgICB2b2lkIHJld2luZChkb3VibGUgdGltZURlbHRhKTsKLSAgICB2b2lkIHJl
dHVyblRvUmVhbHRpbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpIE9W
RVJSSURFOwogCiAgICAgLy8gRXZlbnR1YWxseSBvdmVybG9hZGVkIGluIEhUTUxWaWRlb0VsZW1l
bnQKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH07CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2F2
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCBPVkVSUklERTsKICAgICAK
ICAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCkBAIC0xNDksMzcgKzE0OSwzNyBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHByZWxvYWQoKSBjb25zdDsgICAgCiAgICAgdm9pZCBzZXRQcmVsb2FkKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZvaWQgbG9hZCgpOwogICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwm
ID0gVVJMKCkpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQotICAgIFJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Q7CiAKIC8vIHBsYXliYWNrIHN0YXRl
Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDdXJyZW50VGlt
ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGlt
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3Vi
bGUsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKICAgICBkb3VibGUgaW5pdGlhbFRpbWUoKSBj
b25zdDsKICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7Ci0gICAgZG91YmxlIGR1cmF0aW9u
KCkgY29uc3Q7Ci0gICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKLSAgICBkb3VibGUgZGVmYXVsdFBs
YXliYWNrUmF0ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3Vi
bGUpOwotICAgIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFBsYXli
YWNrUmF0ZShkb3VibGUpOworICAgIHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3VibGUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKSBPVkVSUklERTsKICAgICB2b2lkIHVwZGF0
ZVBsYXliYWNrUmF0ZSgpOwogICAgIGJvb2wgd2Via2l0UHJlc2VydmVzUGl0Y2goKSBjb25zdDsK
ICAgICB2b2lkIHNldFdlYmtpdFByZXNlcnZlc1BpdGNoKGJvb2wpOwotICAgIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gcGxheWVkKCk7Ci0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJs
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBj
b25zdCBPVkVSUklERTsKICAgICBib29sIGVuZGVkKCkgY29uc3Q7CiAgICAgYm9vbCBhdXRvcGxh
eSgpIGNvbnN0OyAgICAKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wgYik7CiAgICAgYm9vbCBs
b29wKCkgY29uc3Q7ICAgIAogICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwotICAgIHZvaWQgcGxh
eSgpOwotICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIE9WRVJSSURFOwogCiAvLyBjYXB0aW9ucwogICAg
IGJvb2wgd2Via2l0SGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdDsKQEAgLTIyMCwxNiArMjIwLDE2
IEBAIHB1YmxpYzoKIC8vIGNvbnRyb2xzCiAgICAgYm9vbCBjb250cm9scygpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q29udHJvbHMoYm9vbCk7Ci0gICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGJvb2wgbXV0ZWQo
KSBjb25zdDsKLSAgICB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIHZpcnR1YWwgZG91YmxlIHZv
bHVtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZG91Ymxl
LCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpIE9WRVJSSURFOwog
CiAgICAgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKTsKLSAgICB2b2lkIGJlZ2luU2NydWJiaW5nKCk7
Ci0gICAgdm9pZCBlbmRTY3J1YmJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJp
bmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgT1ZFUlJJREU7
CiAgICAgCi0gICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblBs
YXkoKSBjb25zdCBPVkVSUklERTsKIAogICAgIGRvdWJsZSBwZXJjZW50TG9hZGVkKCkgY29uc3Q7
CiAKQEAgLTMwMCwxOSArMzAwLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRleHRUcmFj
a0Rpc3BsYXkoKTsKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQg
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSBPVkVSUklERTsKIAogICAgIC8v
IFRleHRUcmFja0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hh
bmdlZChUZXh0VHJhY2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNv
bnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3Zl
Q3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7Ci0gICAgdmlydHVhbCB2
b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4p
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1Jl
ZlB0cjxUZXh0VHJhY2tDdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5n
ZWQoVGV4dFRyYWNrKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVD
aGFuZ2VkKFRleHRUcmFjayopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0
VHJhY2tDdWVMaXN0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1
ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+KSBPVkVSUklERTsKIAogICAgIC8vIFZpZGVvVHJhY2tDbGllbnQKLSAgICB2aXJ0
dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKik7CisgICAgdmly
dHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopIE9WRVJSSURF
OwogCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXByZXNlbnRhdGlv
biopOwpAQCAtMzM3LDIxICszMzcsMjEgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+aGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsgfQogICAgIAotICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZvaWQgdG9nZ2xlRnVsbHNjcmVlblN0YXRlKCk7Ci0gICAgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgT1ZFUlJJREU7CiAgICAg
dm9pZCBleGl0RnVsbHNjcmVlbigpOwogCi0gICAgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNv
bnN0OwotICAgIGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGhhc0Nsb3Nl
ZENhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNsb3NlZENhcHRp
b25zVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUoYm9vbCkgT1ZFUlJJREU7CiAKICAgICBNZWRpYUNvbnRyb2xzKiBtZWRp
YUNvbnRyb2xzKCkgY29uc3Q7CiAKICAgICB2b2lkIHNvdXJjZVdhc1JlbW92ZWQoSFRNTFNvdXJj
ZUVsZW1lbnQqKTsKICAgICB2b2lkIHNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50Kik7
CiAKLSAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisgICAgdmlydHVh
bCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkgT1ZFUlJJREU7CiAKICAgICAv
LyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRp
YUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CkBAIC0zNjEsNyArMzYxLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CiAKICNpZiBFTkFCTEUoV0VCX0FV
RElPKQogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSogYXVkaW9Tb3VyY2VOb2RlKCkg
eyByZXR1cm4gbV9hdWRpb1NvdXJjZU5vZGU7IH0KQEAgLTM5MCw3ICszOTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKQEAgLTQwMSw3ICs0
MDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlNb2RlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERpc3BsYXlNb2Rl
KERpc3BsYXlNb2RlIG1vZGUpIHsgbV9kaXNwbGF5TW9kZSA9IG1vZGU7IH0KICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNNZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTWVkaWFFbGVtZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4K
ICAgICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7CkBAIC00MzgsMTcgKzQzOCwxNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7Ci0g
ICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJl
bmRlclN0eWxlJik7CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50
byhDb250YWluZXJOb2RlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5
bGUoU3R5bGU6OkNoYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxl
OjpDaGFuZ2UpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBPVkVSUklE
RTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCBib29s
IGNhblN1c3BlbmQoKSBjb25zdCBPVkVSUklERTsKQEAgLTQ1NiwzNCArNDU2LDM0IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhVm9sdW1lRGlk
Q2hhbmdlKCk7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVN0YXRlKCkgeyB9CiAgICAgCiAg
ICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKTsKICAgICB2b2lk
IHNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAotICAgIHZpcnR1
YWwgRG9jdW1lbnQqIG1lZGlhUGxheWVyT3duaW5nRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKik7Ci0gICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyUmVhZHlTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopOwotICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclZvbHVtZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZChNZWRpYVBsYXllciopOwotICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciopOwot
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKik7Ci0g
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5
ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhN
ZWRpYVBsYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlc291cmNlTm90U3Vw
cG9ydGVkKE1lZGlhUGxheWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVwYWlu
dChNZWRpYVBsYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNpemVDaGFuZ2Vk
KE1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCBEb2N1bWVudCogbWVkaWFQbGF5ZXJPd25pbmdE
b2N1bWVudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtT
dGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJSZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck11dGVDaGFuZ2VkKE1lZGlh
UGxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25D
aGFuZ2VkKE1lZGlhUGxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKE1lZGlhUGxh
eWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VOb3RT
dXBwb3J0ZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJSZXBhaW50KE1lZGlhUGxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyUmVuZGVy
aW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKE1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVyUmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZChNZWRpYVBsYXllciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikgT1ZFUlJJREU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKE1lZGlhUGxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopIE9WRVJSSURFOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBtZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZShNZWRpYVBsYXll
ciopOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChN
ZWRpYVBsYXllciopOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckZpcnN0VmlkZW9GcmFt
ZUF2YWlsYWJsZShNZWRpYVBsYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopIE9WRVJSSURFOwogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJL
ZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CkBAIC00OTMsNyArNDkzLDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLSAgICB2aXJ0dWFsIGJvb2wg
bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5Kik7CisgICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSop
IE9WRVJSSURFOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVy
cmVyKCkgY29uc3QgT1ZFUlJJREU7CkBAIC01OTYsNyArNTk2LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc2V0UGxheWJhY2tSYXRlSW50ZXJuYWwoZG91YmxlKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYUNhblN0YXJ0KCk7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKSBPVkVS
UklERTsKIAogICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCk7CiAgICAgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwpAQCAtNjE2LDggKzYxNiw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICAgICBib29sIGlzQmxvY2tlZCgpIGNv
bnN0OwogICAgIGJvb2wgaXNCbG9ja2VkT25NZWRpYUNvbnRyb2xsZXIoKSBjb25zdDsKLSAgICBi
b29sIGhhc0N1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiAhbV9jdXJyZW50U3JjLmlzRW1wdHko
KTsgfQotICAgIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbW92aWVMb2FkVHlw
ZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtOyB9CisgICAgdmlydHVhbCBib29sIGhhc0N1
cnJlbnRTcmMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhbV9jdXJyZW50U3JjLmlzRW1wdHko
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW07IH0KICAgICBi
b29sIGlzQXV0b3BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2F1dG9wbGF5aW5nOyB9CiAKICNp
ZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCmluZGV4
IGYwZjQ4ZGEyMmEwMTVhM2I1NmZmYjFiZjIyM2IyZmRjNGYxZDFjNTQuLjYxYzQ1OWFiZGU1YTc2
NjgwNDE3NjJhY2ZjNmM0ZDBjNmRhZDk4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdmFsdWVSYXRp
bygpIGNvbnN0OwogICAgIEdhdWdlUmVnaW9uIGdhdWdlUmVnaW9uKCkgY29uc3Q7CiAKLSAgICBi
b29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIEhUTUxNZXRlckVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAppbmRleCA5ZDc3MmRkOGZmM2ExODJlYjc4MzY1
NmI0ZmFiZDZkMTI2NTcxNTFmLi44NTlkNjE0MjFjOGY2NDdlNTEyNzUzOTk3NTI3NThlNTNlMjI3
OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaApAQCAtNDUs
MTMgKzQ1LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVu
ZGVyZXJzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMo
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24o
Ym9vbCBzZW5kTW91c2VFdmVudHMpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24o
Ym9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogCiAgICAgLy8gPG9wdGdyb3VwPiBuZXZl
ciBoYXMgYSByZW5kZXJlciBzbyB3ZSBtYW51YWxseSBtYW5hZ2UgYSBjYWNoZWQgc3R5bGUuCiAg
ICAgdm9pZCB1cGRhdGVOb25SZW5kZXJTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5oCmluZGV4IGI5MjkwMGRjMjljZDcyNzY0ZDJjODI5Yjg1MWQ5ZjE1YjE2MTBl
Y2QuLjRiMDRkNzBiZWNhZjgwYjUzMWMyMDA1YzQyOTNmZWMwMTJjZWU0MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKQEAgLTcwLDE0ICs3MCwxNCBAQCBwcml2YXRl
OgogICAgIEhUTUxPcHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
QXR0YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hS
ZW5kZXJlcnMoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZF
UlJJREU7CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlclN0
eWxlKiBub25SZW5kZXJlclN0eWxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAK
LSAgICB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBPVkVSUklERTsKIAogICAg
IFN0cmluZyBjb2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCAzMmNkMDg3YTA0M2Y3Y2Q2ODM4ZWNjOTk0N2Nj
MjQ1MzFjY2E4ZWI2Li4yMzAyMzM3ZTgwNWQyMjQwMTRmODUzNzlhMGU4NTBmN2M1NjhmMmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQ2FwdHVyaW5nTW91c2VFdmVudHMoKSBjb25zdCB7IHJldHVy
biBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7IH0KICAgICB2b2lkIHNldElzQ2FwdHVyaW5nTW91
c2VFdmVudHMoYm9vbCBjYXB0dXJpbmcpIHsgbV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzID0gY2Fw
dHVyaW5nOyB9CiAKLSAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBjYW5Qcm9jZXNz
RHJhZygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oCmluZGV4IDcxYmEwNTk2ZGE2NmQwOWYzM2RlZWFlOGEwMDk3NTM5YmZhYjAyOTQuLjJm
ZjI2ZDlkNjBjYjNmODcxZmE5ZjgzZDBhY2RkNTQ0ZmRmNWQzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2Fs
Y1N0eWxlKFN0eWxlOjpDaGFuZ2UpIE9WRVJSSURFOwogCi0gICAgdm9pZCBkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
QWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKaW5kZXggYThmNDM4Y2EyNzliOWQwNTlmMWUz
YWYyYzY4MWUzN2Y1MmI3ZmY5NC4uMmU5YWJkYmExOWQ2YmY3NWQ2NmU3ZWUzMDRjZjcwNjI5MGVm
OTY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgZG91YmxlIHBvc2l0aW9uKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgSFRNTFByb2dyZXNz
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTU0LDcgKzU0LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CisgICAgdmlydHVhbCBS
ZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwogICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9n
cmVzcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5k
ZXggMjVkMWMxZWMxY2I5ZDdiYzhjMjVkZWRjMmE0MGIyZmJiMGFlZWViNS4uZTJiMTZiODk2YTRj
M2JhZDc3NzlkOTYxYjExMjI1YmMyNTYyMDAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBPVkVSUklERTsKICAgICB2b2lk
IGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50KTsKIAogICAgIHZvaWQgc2V0TXVsdGlwbGUo
Ym9vbCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxTZWxlY3RFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRG
b2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREU7CkBAIC0xMjAsOSArMTIwLDkgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8
RWxlbWVudD4gb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0aW9uKSBPVkVSUklERSBGSU5B
TDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxFbGVtZW50
PiBuZXdGb2N1c2VkRWxlbWVudCkgT1ZFUlJJREUgRklOQUw7CiAgICAgCi0gICAgdmlydHVhbCBi
b29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xTdGF0
ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTMyLDEyICsxMzIs
MTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBS
ZW5kZXJTdHlsZSYpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBw
ZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKIAogICAgIHZvaWQgZGlz
cGF0Y2hDaGFuZ2VFdmVudEZvck1lbnVMaXN0KCk7CiAKQEAgLTE1MSw4ICsxNTEsOCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVk
SW50byhDb250YWluZXJOb2RlJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPcHRp
b25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgp
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1
aXJlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIGhhc1BsYWNlaG9s
ZGVyTGFiZWxPcHRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaAppbmRleCBlY2U1MTVkNDcwNDU1YjgwNTk0YjRlZDA4MTZlYzVkMTlkYjA3ZGVjLi4yMjRj
YzMzNGNhYmZkOGU5NzhjZGVmZGFhOTBhMDMyZmZmZDljYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIC8vIFVz
ZWQgdG8gb2J0YWluIGVpdGhlciBhIHNvbGlkIG9yIG91dHNldCBib3JkZXIgZGVjbCBhbmQgdG8g
ZGVhbCB3aXRoIHRoZSBmcmFtZSBhbmQgcnVsZXMgYXR0cmlidXRlcy4KICAgICB2aXJ0dWFsIGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICBlbnVtIFRhYmxlUnVsZXMgeyBVbnNldFJ1bGVzLCBOb25lUnVsZXMsIEdyb3Vwc1J1bGVz
LCBSb3dzUnVsZXMsIENvbHNSdWxlcywgQWxsUnVsZXMgfTsKICAgICBlbnVtIENlbGxCb3JkZXJz
IHsgTm9Cb3JkZXJzLCBTb2xpZEJvcmRlcnMsIEluc2V0Qm9yZGVycywgU29saWRCb3JkZXJzQ29s
c09ubHksIFNvbGlkQm9yZGVyc1Jvd3NPbmx5IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCmluZGV4IDNlNzk5YjdlNDhiNTgyMWFhNGE3MjIyN2ZlMGJhMTE3ZGVl
MTM5MjkuLjBjZmVlYjJmNDQ3NWIzZjFkZTViNTY2ZDMzMDhjNDcwYzc2NjNiNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC00MCwxMiArNDAsMTIgQEAg
cHVibGljOgogCiAgICAgYm9vbCBzaG91bGRXcmFwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fd3Jh
cCAhPSBOb1dyYXA7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAgICB2b2lkIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdDsKICAgICB2
b2lkIHNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBpbnQgdGV4dExlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkubGVuZ3RoKCk7IH0KLSAgICB2aXJ0dWFsIGludCBtYXhM
ZW5ndGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBtYXhMZW5ndGgoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2b2lkIHNldE1heExlbmd0aChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAvLyBG
b3IgVmFsaWRpdHlTdGF0ZQogICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkg
Y29uc3QgT1ZFUlJJREU7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgdG9vTG9uZygpIGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGlubmVyVGV4
dEVsZW1lbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVt
ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVk
KCk7CiAKQEAgLTc0LDQxICs3NCw0MSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Tm9uRGlydHlW
YWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXJFbGVtZW50
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpOwotICAg
IHZpcnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmlzRW1w
dHkoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIHBsYWNlaG9s
ZGVyRWxlbWVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFj
ZWhvbGRlclRleHQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJl
ZEZvcm1Db250cm9sKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9s
KCkgY29uc3QgeyByZXR1cm4gaXNSZXF1aXJlZCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzT3B0
aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFpc1JlcXVpcmVkRm9y
bUNvbnRyb2woKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBpc1JlcXVpcmVkKCk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc3Vi
dHJlZUhhc0NoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKSBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250
cm9sU3RhdGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGb3JtQ29udHJv
bCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Rm9ybUNv
bnRyb2woKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSYsIFJlbmRlclN0eWxlJik7Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZv
cm1EYXRhTGlzdCYsIGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOworICAgIHZpcnR1
YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHls
ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVh
cmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cyk7CisgICAgdmly
dHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3MoKSBjb25zdCBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aAppbmRleCAyNzQ5NmI4YTJmZWI4NWYwZWU4Y2JjOWIyN2FlYTNlNTNiOTU2YmQ2Li5lM2M4ZTQ1
ZTFjNDFiOWU1MzBjNDgyZjBmOThkNWI5MjQyMDg2MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgcmVzdG9yZUNhY2hlZFNlbGVjdGlvbigpOwogICAgIGJvb2wg
aGFzQ2FjaGVkU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTZWxlY3Rpb25TdGFy
dCA+PSAwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCkgPSAwOwogCiAgICAgdm9pZCBz
ZXRMYXN0Q2hhbmdlV2FzTm90VXNlckVkaXQoKSB7IG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0ID0g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggYmEwZjVi
NGNiOWJkOGRmMjQzODBiYjg3NjQ2MjA2YjAzMjdkOGU0My4uNDE0MGMxYzVkMDE1Njc1YWUwZWFl
OGI2OWM0YjQzYTA2N2UzODc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKQEAgLTc0LDI0ICs3NCwyNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxWaWRlb0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiAj
aWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUmVuZGVyRWxl
bWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOworICAgIHZp
cnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJT
dHlsZSYpIE9WRVJSSURFOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRl
cmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVv
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNv
bnN0IHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRlbygpOyB9Ci0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c1ZpZGVvKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBoYXNWaWRlbygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigp
LT5oYXNWaWRlbygpOyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3Bs
YXlTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERv
Y3VtZW50KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzcGxheU1vZGUoRGlzcGxh
eU1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBzZXREaXNwbGF5TW9kZShEaXNwbGF5TW9kZSkgT1ZF
UlJJREU7CiAKICAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCBkNzcwYTAyY2ZiZGFjNDc5OTdkNDljZGRiYjI5M2JjYmRjMWQ0OWM4
Li43MGM4MjllNmU2NjY5MDNhYmYxZDNlMDJhOTgwZTQ3YjI1NGU5MWVlIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBzdHJva2VTdHlsZShHcmFwaGljc0NvbnRleHQqIGMpCisgICAgdmlydHVhbCB2b2lk
IHN0cm9rZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogYykgT1ZFUlJJREUKICAgICB7CiAgICAgICAg
IGMtPnNldFN0cm9rZVRoaWNrbmVzcyhtX2NhbnZhc0NvbnRleHQtPmxpbmVXaWR0aCgpKTsKICAg
ICAgICAgYy0+c2V0TGluZUNhcChtX2NhbnZhc0NvbnRleHQtPmdldExpbmVDYXAoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBl
cy5oCmluZGV4IDhkODQwZTVlMDFiYTA5NDkwOTI3Mzc5YmMyZjEwYWU4N2M0YWU3ZDcuLjdjNzg2
Zjg2MDA3NjhjMzA2ZjBiNTk0MTdmMDhiNzhkMDIwMWYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCkBAIC0xNjks
NyArMTY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24o
KSBjb25zdCA9IDA7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRBY3RpdmUoYm9vbCAvKmZsYWcq
LyA9IHRydWUsIGJvb2wgLypwYXVzZSovID0gZmFsc2UpIE9WRVJSSURFIEZJTkFMOworICAgIHZp
cnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCAvKmZsYWcqLyA9IHRydWUsIGJvb2wgLypwYXVzZSov
ID0gZmFsc2UpIE9WRVJSSURFIEZJTkFMOwogCiAgICAgdm9pZCBzdGFydFRpbWVyKCk7CiAgICAg
dm9pZCBzdG9wVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDIxMzQxNDI3MjI4YzQwNWNjNjFhODlmMjlmNWE5YTVm
MTY1MzhkOWMuLjNlYzA5NjNlNGRkYTU5MmY0ZWM3MGMzOTE2YzE2YmE4NDIzYTdiOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaApA
QCAtNDU1LDcgKzQ1NSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxl
Jik7CisgICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSYsIFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1h
Z2U+IGNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NwaW5CdXR0b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0
dG9uRWxlbWVudC5oCmluZGV4IDk2YTY2N2RhNzg4ZmY0ZTk3MmIxODZkMzkzYTYxOGE1YmZlZDky
NjIuLjRlMGFlOTNiZGNkYmYyZGFkNmI5ZmY1ZDljYzQ1MjdhZTQ4MTk2ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuaApAQCAtNjksMTMgKzY5
LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQm
LCBTcGluQnV0dG9uT3duZXImKTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0
YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1
dHRvbkVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHNo
YWRvd0hvc3QoKSAmJiBzaGFkb3dIb3N0KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOyB9CiAg
ICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkT25seVBzZXVkb0NsYXNzKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5Qb3B1cCgpIE9WRVJSSURFOwogICAgIHZvaWQgZG9T
dGVwQWN0aW9uKGludCk7CiAgICAgdm9pZCBzdGFydFJlcGVhdGluZ1RpbWVyKCk7CkBAIC04Myw3
ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXBlYXRpbmdUaW1lckZpcmVkKFRpbWVyPFNw
aW5CdXR0b25FbGVtZW50PiopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkKGJvb2wgPSB0
cnVlKSBPVkVSUklERTsKICAgICBib29sIHNob3VsZFJlc3BvbmRUb01vdXNlRXZlbnRzKCk7Ci0g
ICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIFNwaW5CdXR0b25Pd25lciogbV9zcGluQnV0dG9uT3duZXI7
CiAgICAgYm9vbCBtX2NhcHR1cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggZjIzZDA5MzE2MTc0ZGRjMDYy
OTY1M2MwZTE3NDk0NTdjZWZiYmI5ZS4uZjJkMWJlZjc4MWMyNDAzOTQzMmZlZWQ4NjE3ZmRkMmUz
ODA0YTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRleHRDb250cm9sSW5uZXJDb250YWluZXI+IGNyZWF0ZShEb2N1bWVudCYp
OwogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJDb250YWluZXIoRG9jdW1lbnQmKTsK
LSAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwg
UmVuZGVyU3R5bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKIH07CiAKIGNsYXNzIFRleHRD
b250cm9sSW5uZXJFbGVtZW50IEZJTkFMIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTU5
LDExICs1OSwxMSBAQCBjbGFzcyBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQgRklOQUwgOiBw
dWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCBSZW5kZXJF
bGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CisgICAg
dmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRl
clN0eWxlJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBj
dXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzTW91
c2VGb2N1c2FibGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogfTsKQEAgLTcy
LDEyICs3MiwxMiBAQCBjbGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IEZJTkFM
IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKIAogcHJpdmF0
ZToKICAgICBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KERvY3VtZW50Jik7Ci0gICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogfTsKIApAQCAtODUsMTMgKzg1LDEzIEBAIGNsYXNzIFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uRWxlbWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bkVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6
CiAgICAgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50KERvY3VtZW50Jik7Ci0gICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaAppbmRl
eCAxY2MzNDI0NDhkZGNiOTUzNjRmZDEyZGQwMDQxYzA3YjdkNWVkYjJlLi40NTQ4MjYyMjg2NDZj
MzE3OGFhN2RlMmVhYTk0OTdjYzBmMDI0NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9BdWRpb1RyYWNrTGlzdC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsK
ICAgICB9Ci0gICAgfkF1ZGlvVHJhY2tMaXN0KCk7CisgICAgdmlydHVhbCB+QXVkaW9UcmFja0xp
c3QoKTsKIAogICAgIEF1ZGlvVHJhY2sqIGdldFRyYWNrQnlJZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAppbmRl
eCBiOTA5ZjBhY2IyNGFhYmFjNmY0YjFiNGM0M2I5NzUzYzI4MWMzNmY5Li40ODJlZTNlN2U0YmRm
MTljNDE3MzJhMGQxMDhmN2Y4Y2ZjNjQxNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0xpc3QoZWxlbWVudCwgY29udGV4dCkpOwog
ICAgIH0KLSAgICB+VGV4dFRyYWNrTGlzdCgpOworICAgIHZpcnR1YWwgflRleHRUcmFja0xpc3Qo
KTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
aW50IGdldFRyYWNrSW5kZXgoVGV4dFRyYWNrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5oCmluZGV4IDdkZGU2MjBhNWNjZjIwYWY4ZTJjNGUwNDkyYTNhNGUyOTZk
ZjUxMTQuLjkyYWE1Njg3ZjQ3ZmViYzU5ZDk3ZmM4ZGU5ZTZjNTAwY2U0YTc4MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNs
YXNzIFRyYWNrQmFzZTsKIAogY2xhc3MgVHJhY2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRyYWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJs
aWM6Ci0gICAgflRyYWNrTGlzdEJhc2UoKTsKKyAgICB2aXJ0dWFsIH5UcmFja0xpc3RCYXNlKCk7
CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBjb250YWlucyhUcmFja0Jhc2UqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaAppbmRleCBjZmU1ZDM3YmZiNjVkMmE4OWY5NGRiMjYxNTkwYzY1MGQy
ZmZhNTM3Li43OWZhYzYzNjUzMWMyZGUzOWZlNTkyNDY0MGY0MWU1MGIwODI2OGNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC05NywxNCArOTcsMTQg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNy
ZWF0ZShpbnQpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckJhc2ljVmFsdWU+IGNy
ZWF0ZShkb3VibGUpOwogCi0gICAgdmlydHVhbCBib29sIGFzQm9vbGVhbihib29sKiBvdXRwdXQp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBhc051bWJlcihkb3VibGUqIG91dHB1dCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGFzTnVtYmVyKGxvbmcqIG91dHB1dCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGFzTnVtYmVyKGludCogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIodW5zaWduZWQgbG9uZyogb3V0cHV0KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIodW5zaWduZWQgaW50KiBvdXRwdXQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBh
c0Jvb2xlYW4oYm9vbCogb3V0cHV0KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
YXNOdW1iZXIoZG91YmxlKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBhc051bWJlcihsb25nKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBhc051bWJlcihpbnQqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGFzTnVtYmVyKHVuc2lnbmVkIGxvbmcqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGFzTnVtYmVyKHVuc2lnbmVkKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdCBP
VkVSUklERTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGJv
b2wgdmFsdWUpIDogSW5zcGVjdG9yVmFsdWUoVHlwZUJvb2xlYW4pLCBtX2Jvb2xWYWx1ZSh2YWx1
ZSkgeyB9CkBAIC0xMjIsOSArMTIyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3RvclN0cmluZz4gY3JlYXRlKGNvbnN0IGNoYXIqKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3Q7ICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBhc1N0cmluZyhTdHJpbmcqIG91dHB1dCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0IE9WRVJSSURF
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEluc3BlY3RvclN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKSA6IEluc3BlY3RvclZhbHVlKFR5cGVTdHJpbmcpLCBtX3N0cmluZ1ZhbHVlKHZhbHVl
KSB7IH0KQEAgLTE0MSwxMyArMTQxLDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIERpY3Rpb25h
cnk6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogICAgIHR5cGVkZWYgRGljdGlvbmFyeTo6Y29uc3RfaXRl
cmF0b3IgY29uc3RfaXRlcmF0b3I7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBhc09iamVjdCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGFzT2JqZWN0KCkgT1ZFUlJJREU7CiAgICAgSW5zcGVjdG9yT2JqZWN0KiBvcGVuQWNjZXNz
b3JzKCk7CiAKIHByb3RlY3RlZDoKLSAgICB+SW5zcGVjdG9yT2JqZWN0QmFzZSgpOworICAgIHZp
cnR1YWwgfkluc3BlY3Rvck9iamVjdEJhc2UoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhc09iamVj
dChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KTsKKyAgICB2aXJ0dWFsIGJvb2wgYXNP
YmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCkgT1ZFUlJJREU7CiAKICAgICB2
b2lkIHNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKTsKICAgICB2b2lkIHNldE51
bWJlcihjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSk7CkBAIC0xNzMsNyArMTczLDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgdm9pZCByZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZp
cnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIqIG91dHB1dCkgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAg
ICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CkBAIC0yMjUsMTQgKzIy
NSwxNCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZhbHVl
PiA+OjppdGVyYXRvciBpdGVyYXRvcjsKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+ID46OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBhc0FycmF5KCk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBhc0FycmF5KCkgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgpOyB9CiAKIHByb3RlY3RlZDoK
LSAgICB+SW5zcGVjdG9yQXJyYXlCYXNlKCk7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQXJyYXlC
YXNlKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBvdXRwdXQpOworICAgIHZpcnR1YWwgYm9vbCBhc0FycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4qIG91dHB1dCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHB1c2hCb29sZWFuKGJvb2wpOwogICAg
IHZvaWQgcHVzaEludChpbnQpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByb3RlY3RlZDoKIAogICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGdldChzaXplX3QgaW5kZXgpOwogCi0gICAgdmly
dHVhbCB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyKiBvdXRwdXQpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBjb25zdCBPVkVSUklE
RTsKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KICAg
ICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAppbmRleCA5MjAzNzQxYTFiOWRkYzM5ZDU5MzIwNzdjNjdhYTRkMjYy
NTllZjc5Li5mZjc5YzU4YzYyYTZmMTM5NjYxY2Y1NmQ3NmIyNTg0MDhmNDNkNjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC02NCw3MCArNjQsNzAgQEAgY2xhc3MgRW1w
dHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbXB0eUNocm9tZUNsaWVudCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY2hyb21lRGVzdHJveWVkKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3
aW5kb3dSZWN0KCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0UmVjdCB3aW5kb3dSZWN0KCkgT1ZFUlJJREUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KIAot
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0K
KyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBwYWdlUmVjdCgpIE9WRVJSSURFIHsgcmV0dXJuIEZsb2F0
UmVjdCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdW5mb2N1cygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCB0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKEVsZW1lbnQqKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoRWxlbWVudCopIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKikgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
KSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3coKSB7IH0KKyAgICB2aXJ0dWFs
IFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBPVkVSUklERSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3coKSBPVkVSUklERSB7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHJ1bk1vZGFsKCkgeyB9CisgICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sYmFyc1Zpc2libGUoYm9vbCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHRvb2xiYXJzVmlzaWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkgeyB9Ci0gICAgdmly
dHVhbCBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgbWVudWJhclZpc2libGUoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgbWVudWJhclZpc2libGUoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHNldFJlc2l6YWJsZShib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVz
aXphYmxlKGJvb2wpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRN
ZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERSB7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29u
c3QgU3RyaW5nJiwgRnJhbWUqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNh
blJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJp
bmcmLCBGcmFtZSopIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVdpbmRvd1Nvb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29u
KCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZy
YW1lKiwgY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRD
b25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBydW5K
YXZhU2NyaXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3Ry
aW5nJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SW50ZXJydXB0SmF2YVNjcmlwdCgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01l
bnVXcml0aW5nRGlyZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVX
cml0aW5nRGlyZWN0aW9uKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJp
bmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcm
KSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgS2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1v
ZGUoKSB7IHJldHVybiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7IH0KKyAgICB2aXJ0dWFsIEtleWJv
YXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCkgT1ZFUlJJREUgeyByZXR1cm4gS2V5Ym9hcmRBY2Nl
c3NEZWZhdWx0OyB9CiAKLSAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBj
b25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVz
aXplclJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBJbnRSZWN0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgSW50UmVjdCYsIGJvb2wpIE9WRVJS
SURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhj
b25zdCBJbnRSZWN0JiwgYm9vbCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYsIGJvb2wpIE9WRVJSSURF
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBJ
bnRTaXplJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERSB7IH0KICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Ny
b2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JikgeyB9CiAjZW5kaWYKQEAgLTEzNywyMiArMTM3
LDIyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhj
b25zdCBJbnRQb2ludCYgcCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gcDsgfQogICAgIHZpcnR1
YWwgSW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmIHIpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHI7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bVBhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRl
bnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3QgeyB9CisgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKEZy
YW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0
IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0aW9uKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBwcmludChGcmFtZSopIE9WRVJSSURFIHsgfQogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3Qg
U3RyaW5nJiwgRGF0YWJhc2VEZXRhaWxzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgRGF0YWJhc2VEZXRhaWxzKSBPVkVS
UklERSB7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdp
biosIGludDY0X3QpIE9WRVJSSURFIHsgfQogCiAjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQp
CiAgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hvb3Nlciop
IHsgfQpAQCAtMTY3LDM5ICsxNjcsMzkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgRmlsZUljb25Mb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgTm9kZSopIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkQmx1cihjb25zdCBOb2RlKikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGVsZW1lbnREaWRGb2N1cyhjb25zdCBOb2RlKikgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGVsZW1lbnREaWRCbHVyKGNvbnN0IE5vZGUqKSBPVkVSUklERSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgT1ZFUlJJREUg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJlY3Qm
KSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdCBPVkVSUklERSB7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBH
cmFwaGljc0xheWVyKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdp
bmdTeW5jaHJvbml6YXRpb24oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyRmx1c2goKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNz
TGF5ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKSBPVkVSUklERSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBPVkVSUklE
RSB7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIEFYU3Rh
cnRGcmFtZUxvYWQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgQVhGaW5pc2hGcmFtZUxvYWQoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBBWFN0YXJ0RnJhbWVMb2FkKCkgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIEFYRmluaXNoRnJhbWVMb2FkKCkgT1ZFUlJJREUgeyB9CiAj
ZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91
Y2hFdmVudHMoYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29s
KSBPVkVSUklERSB7IH0KICNlbmRpZgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2
ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSBPVkVSUklERSB7IH0KICAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMo
Y29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JikgeyB9Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50
Pj4mKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hh
bmdlcygpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiAvLyBGSVhNRSAoYnVnIDEx
NjIzMyk6IEdldCByaWQgb2YgRW1wdHlGcmFtZUxvYWRlckNsaWVudC4gSXQgaXMgYSB0cmF2ZXN0
eS4KQEAgLTIwOSwxNjIgKzIwOSwxNjEgQEAgY2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6
IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgfkVtcHR5RnJhbWVMb2FkZXJDbGllbnQoKSB7ICB9
Ci0gICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBh
c3NlcnRpb25zCisgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9ucwogCi0gICAgdmlydHVhbCB2
b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBmb3JjZUxheW91dCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5v
bkhUTUwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50
TG9hZGVyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCkgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIE9WRVJS
SURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hlZEZyb21QYXJlbnQzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVu
dDIoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50Mygp
IE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2Fu
Y2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFIHsgfQogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdmlydHVhbCBib29sIGNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUHJvdGVjdGlvblNwYWNlJikgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVu
dExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGludCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShE
b2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBpbnQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91
YmxlLCBkb3VibGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0
ZVdpdGhpblBhZ2UoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3Rh
dGVXaXRoaW5QYWdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVX
aXRoaW5QYWdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoSWNvblR5cGUp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9j
dW1lbnRMb2FkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVz
KSB7IH0KLQotICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNo
b3coKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KSBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRv
dWJsZSwgZG91YmxlKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURF
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBPVkVSUklE
RSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKEljb25UeXBlKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgT1ZFUlJJ
REUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aERvY3VtZW50TG9hZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaExvYWQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRM
YXlvdXQoTGF5b3V0TWlsZXN0b25lcykgT1ZFUlJJREUgeyB9CisKKyAgICB2aXJ0dWFsIEZyYW1l
KiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgT1ZFUlJJREUgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lG
dW5jdGlvbikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYsIEZyYW1l
UG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5j
dGlvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgT1ZFUlJJREUgeyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zp
c2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dy
ZXNzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRp
b24oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90
aWZpY2F0aW9uKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90
aWZpY2F0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NTdGFy
dGVkTm90aWZpY2F0aW9uKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9n
cmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpIE9WRVJSSURFIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgT1ZFUlJJREUg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgeyBVTlVTRURfUEFS
QU0oc3VnZ2VzdGVkTmFtZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmco
KSkgT1ZFUlJJREUgeyBVTlVTRURfUEFSQU0oc3VnZ2VzdGVkTmFtZSk7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgT1ZFUlJJREUgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNo
YXIqLCBpbnQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IGNoYXIqLCBpbnQpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IFJl
c291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9u
KHRydWUpOyByZXR1cm4gZXJyb3I7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIs
IDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
ICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xp
Y3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiBSZXNvdXJjZUVy
cm9yKCIiLCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFIHsgUmVzb3VyY2VFcnJvciBl
cnJvcigiIiwgMCwgIiIsICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVy
biBlcnJvcjsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwg
IiIsICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigi
IiwgMCwgIiIsICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KIAotICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
eyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQotICAgIHZpcnR1YWwgUmVz
b3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KLSAgICB2aXJ0dWFsIFJl
c291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQorICAgIHZpcnR1
YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsg
fQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
ICIiLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxv
YWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREUgeyByZXR1cm4gUmVzb3Vy
Y2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQogCi0gICAgdmlydHVhbCBib29sIHNob3VsZEZhbGxC
YWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgT1ZFUlJJREUgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29s
IGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGVBc0hUTUwoY29uc3QgU3RyaW5nJikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlz
dHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJp
bmcmKSBjb25zdCB7IHJldHVybiAiIjsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlN
RVR5cGVBc0hUTUwoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29u
c3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiAiIjsgfQogCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZENv
bXBsZXRlZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSB7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgVVJMJikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lk
IHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgT1ZFUlJJREUgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFVSTCYpIHsgcmV0dXJuICIiOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFVSTCYpIE9WRVJSSURFIHsgcmV0dXJuICIiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSB7
IH0gICAgCisgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgT1ZFUlJJREUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFNhdmVUb1BhZ2VDYWNoZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0
b3JlRnJvbVBhZ2VDYWNoZSgpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2xvYmFsSGlzdG9yeSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5UmVkaXJlY3RMaW5rcygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlz
dG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9y
eUl0ZW1Gb3JQYWdlKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0o
SGlzdG9yeUl0ZW0qKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFVSTCYsIGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5KCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlS
ZWRpcmVjdExpbmtzKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9I
aXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9y
eUl0ZW0qKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IElu
dFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3Jl
YXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxlbWVu
dCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZU1lZGlh
UGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dNZWRp
YVBsYXllclByb3h5UGx1Z2luKFdpZGdldCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoaWRlTWVk
aWFQbGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgT1ZFUlJJREUgeyB9CiAjZW5k
aWYKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUo
KTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURFIHsgcmV0dXJu
IE9iamVjdENvbnRlbnRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlh
VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0IHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVu
dEF2YWlsYWJsZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmly
c3ROYXZpZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCkgT1ZFUlJJREUgeyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgdmlydHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3Rl
T2JqZWN0KCkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSog
d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3QgeyByZXR1cm4gcmVzcG9uc2U7IH0KKyAgICB2
aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBPVkVS
UklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxs
Q2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIE5TQ2FjaGVkVVJM
UmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdCBPVkVSUklERSB7IHJldHVybiByZXNwb25zZTsgfQog
I2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIEZJWE1F
OiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9uc2UgLSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5n
Q29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBPVkVSUklERTsKQEAgLTM3NCwxOCAr
MzczLDE4IEBAIHB1YmxpYzoKIAogY2xhc3MgRW1wdHlUZXh0Q2hlY2tlckNsaWVudCA6IHB1Ymxp
YyBUZXh0Q2hlY2tlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEVy
YXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVu
dChjb25zdCBTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0
cmluZyYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQsIGludCosIGludCopIHsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9D
b3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0
IFVDaGFyKiwgaW50LCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oVGV4
dENoZWNraW5nVHlwZSkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpIE9WRVJSSURF
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhcios
IGludCwgaW50KiwgaW50KikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZT
dHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCosIGlu
dCopIE9WRVJSSURFIHsgfQogCiAjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRD
aGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRD
aGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIE9WRVJSSURFIHsg
fTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4dENoZWNraW5nUmVxdWVzdD4pIE9WRVJSSURFOwogfTsK
IApAQCAtMzk0LDEwNyArMzkzLDEwMyBAQCBjbGFzcyBFbXB0eUVkaXRvckNsaWVudCA6IHB1Ymxp
YyBFZGl0b3JDbGllbnQgewogcHVibGljOgogICAgIEVtcHR5RWRpdG9yQ2xpZW50KCkgeyB9CiAg
ICAgdmlydHVhbCB+RW1wdHlFZGl0b3JDbGllbnQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURlc3Ryb3llZCgpIHsgfQotCi0gICAgdmlydHVhbCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFJh
bmdlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKSB7IH0KLSAgICB2
aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIHsgcmV0dXJuIC0xOyB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgc2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKSB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSos
IEVkaXRvckluc2VydEFjdGlvbikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlv
bikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRSYW5nZShSYW5nZSosIFJhbmdlKiwgRUFmZmluaXR5LCBib29sKSB7IHJldHVybiBmYWxzZTsg
fQotCi0gICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0eVNldCos
IFJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJh
bmdlQWZ0ZXJEZWxldGUoUmFuZ2UqLCBSYW5nZSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKEZyYW1lKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmco
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJh
bmdlKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+Jikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBPVkVSUklERSB7IH0KKworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIE9W
RVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgT1ZFUlJJREUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hl
Y2tpbmcoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9n
Z2xlR3JhbW1hckNoZWNraW5nKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBpbnQgc3BlbGxD
aGVja2VyRG9jdW1lbnRUYWcoKSBPVkVSUklERSB7IHJldHVybiAtMTsgfQorCisKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKikgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopIE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoTm9k
ZSosIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIFJhbmdl
KiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJhbmdlKiwgUmFuZ2UqLCBFQWZm
aW5pdHksIGJvb2wpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgUmFuZ2UqKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShSYW5nZSosIFJhbmdlKikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5n
ZSosIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIE9WRVJS
SURFIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxV
bmRvU3RlcD4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRv
UmVkb09wZXJhdGlvbnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJh
dGlvbnMoKSBPVkVSUklERSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1l
KiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCB7
IHJldHVybiBkZWZhdWx0VmFsdWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBk
ZWZhdWx0VmFsdWUpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5k
bygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNh
blJlZG8oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHVuZG8oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVkbygpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB1bmRvKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklE
RSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChLZXli
b2FyZEV2ZW50KikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUlucHV0TWV0
aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50KikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHRleHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50KikgeyB9Ci0gICAgdmlydHVhbCBib29s
IGRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiwgS2V5Ym9hcmRFdmVudCopIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0
RmllbGQoRWxlbWVudCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0
QXJlYShFbGVtZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRp
dGluZyhFbGVtZW50KikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERp
ZEVuZEVkaXRpbmcoRWxlbWVudCopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0
RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZlbnQq
KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJl
RGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopIE9WRVJSSURFIHsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIHZpcnR1YWwgdm9pZCBtYXJrZWRUZXh0QWJhbmRvbmVkKEZyYW1l
KikgeyB9Ci0KLSAgICB2aXJ0dWFsIE5TU3RyaW5nKiB1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCop
IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIERvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJh
Z21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBWZWN0b3I8UmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYpIHsgcmV0dXJuIDA7IH07Ci0gICAgdmlydHVhbCB2b2lk
IHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgeyB9OwotICAgIHZpcnR1YWwg
TlNVUkwqIGNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFs
IE5TVVJMKiBjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNTdHJpbmcqKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBOU1N0cmluZyogdXNlclZpc2libGVTdHJpbmcoTlNVUkwqKSBPVkVSUklERSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdt
ZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVjdG9yPFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+PiYpIE9WRVJSSURFIHsgcmV0dXJuIDA7IH07CisgICAgdmlydHVh
bCB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9
OworICAgIHZpcnR1YWwgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIE9WRVJSSURFIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5TVVJMICpjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNT
dHJpbmcqKSBPVkVSUklERSB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQp
Ci0gICAgdmlydHVhbCB2b2lkIHVwcGVyY2FzZVdvcmQoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
bG93ZXJjYXNlV29yZCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjYXBpdGFsaXplV29yZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB1cHBlcmNhc2VXb3JkKCkgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGxvd2VyY2FzZVdvcmQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y2FwaXRhbGl6ZVdvcmQoKSBPVkVSUklERSB7IH0KICNlbmRpZgogCiAjaWYgVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQotICAgIHZpcnR1YWwgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1Bh
bmVsKGJvb2wpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dp
bmcoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVTbWFydEluc2Vy
dERlbGV0ZSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21h
dGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCkgeyB9Ci0gICAgdmlydHVhbCBib29s
IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNl
bWVudCgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0
aXR1dGlvbnNQYW5lbChib29sKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3Vic3Rp
dHV0aW9uc1BhbmVsSXNTaG93aW5nKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbigpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbigpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9t
YXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKSBPVkVSUklE
RSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xl
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgT1ZFUlJJREUgeyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShERUxFVElPTl9VSSkKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0RlbGV0ZUlu
dGVyZmFjZShIVE1MRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQqKSBPVkVSUklERSB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCBib29s
IHNob3VsZFNob3dVbmljb2RlTWVudSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIHNob3VsZFNob3dVbmljb2RlTWVudSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKLSAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiAmbV90
ZXh0Q2hlY2tlckNsaWVudDsgfQorICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRD
aGVja2VyKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJDbGllbnQ7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3BlbGxp
bmdVSUlzU2hvd2luZygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFy
RGV0YWlsJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBzcGVsbGluZ1VJSXNTaG93aW5nKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2V0SW5wdXRNZXRob2RTdGF0ZSgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wpIE9WRVJSSURFIHsgfQogCiBwcml2YXRlOgogICAgIEVtcHR5
VGV4dENoZWNrZXJDbGllbnQgbV90ZXh0Q2hlY2tlckNsaWVudDsKQEAgLTUwNiwyOSArNTAxLDI4
IEBAIGNsYXNzIEVtcHR5Q29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGll
bnQgewogcHVibGljOgogICAgIEVtcHR5Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KICAgICB2aXJ0
dWFsIH5FbXB0eUNvbnRleHRNZW51Q2xpZW50KCkgeyAgfQotICAgIHZpcnR1YWwgdm9pZCBjb250
ZXh0TWVudURlc3Ryb3llZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ry
b3llZCgpIE9WRVJSSURFIHsgfQogCiAjaWYgVVNFKENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVO
VVMpCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBh
c3NPd25QdHI8Q29udGV4dE1lbnU+KSBPVkVSUklERTsKICNlbHNlCi0gICAgdmlydHVhbCBQbGF0
Zm9ybU1lbnVEZXNjcmlwdGlvbiBnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0
TWVudSopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtTWVudURlc2NyaXB0aW9u
IGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKENvbnRleHRNZW51KikgT1ZFUlJJREUgeyBy
ZXR1cm4gMDsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENv
bnRleHRNZW51KikgT1ZFUlJJREUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgVVJMJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlJbWFnZVRvQ2xpcGJvYXJkKGNv
bnN0IEhpdFRlc3RSZXN1bHQmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2ds
ZShjb25zdCBGcmFtZSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnko
RnJhbWUqKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgVVJMJikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29n
bGUoY29uc3QgRnJhbWUqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5E
aWN0aW9uYXJ5KEZyYW1lKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIGlzU3BlYWtp
bmcoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzcGVhayhj
b25zdCBTdHJpbmcmKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5n
KCkgT1ZFUlJJREUgeyB9CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCB2b2lkIHNl
YXJjaFdpdGhTcG90bGlnaHQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3Rs
aWdodCgpIE9WRVJSSURFIHsgfQogI2VuZGlmCiAKICNpZiBVU0UoQUNDRVNTSUJJTElUWV9DT05U
RVhUX01FTlVTKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgT1ZFUlJJREUgeyB9CiAjZW5kaWYKIH07CiAj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC01MzksMTIgKzUzMywxMiBAQCBjbGFz
cyBFbXB0eURyYWdDbGllbnQgOiBwdWJsaWMgRHJhZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgRW1w
dHlEcmFnQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB+RW1wdHlEcmFnQ2xpZW50KCkge30KLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBDbGlw
Ym9hcmQqKSB7IH0KLSAgICB2aXJ0dWFsIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNr
Rm9yRHJhZyhEcmFnRGF0YSopIHsgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0K
LSAgICB2aXJ0dWFsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2lu
dChjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Ob25lOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdE
YXRhKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCopIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tG
b3JEcmFnKERyYWdEYXRhKikgT1ZFUlJJREUgeyByZXR1cm4gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Tm9uZTsgfQorICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFz
a0ZvclBvaW50KGNvbnN0IEludFBvaW50JikgT1ZFUlJJREUgeyByZXR1cm4gRHJhZ1NvdXJjZUFj
dGlvbk5vbmU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZVJlZiwgY29u
c3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCkg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkg
T1ZFUlJJREUgeyB9CiB9OwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKQEAgLTU1
NCwxNCArNTQ4LDE0IEBAIHB1YmxpYzoKICAgICBFbXB0eUluc3BlY3RvckNsaWVudCgpIHsgfQog
ICAgIHZpcnR1YWwgfkVtcHR5SW5zcGVjdG9yQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRl
c3Ryb3llZCgpIE9WRVJSSURFIHsgfQogICAgIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIHsgfQorICAgIHZpcnR1
YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBi
cmluZ0Zyb250ZW5kVG9Gcm9udCgpIE9WRVJSSURFIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGhp
Z2hsaWdodCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBo
aWRlSGlnaGxpZ2h0KCkgT1ZFUlJJREUgeyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZUNsaWVu
dCA6IHB1YmxpYyBEZXZpY2VDbGllbnQgewpAQCAtNTcyLDE2ICs1NjYsMTYgQEAgcHVibGljOgog
CiBjbGFzcyBFbXB0eURldmljZU1vdGlvbkNsaWVudCA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGll
bnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlv
bkNvbnRyb2xsZXIqKSB7IH0KLSAgICB2aXJ0dWFsIERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rp
b24oKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZU1vdGlvbkNv
bnRyb2xsZXJEZXN0cm95ZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihE
ZXZpY2VNb3Rpb25Db250cm9sbGVyKikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBEZXZpY2VN
b3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgT1ZFUlJJREUg
eyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU9yaWVudGF0aW9uQ2xpZW50IDogcHVibGljIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSB7IH0KLSAgICB2aXJ0dWFsIERl
dmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIERldmljZU9yaWVudGF0aW9uRGF0
YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBPVkVSUklE
RSB7IH0KIH07CiAKIHZvaWQgZmlsbFdpdGhFbXB0eUNsaWVudHMoUGFnZTo6UGFnZUNsaWVudHMm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggYTUxM2I5YTNmZmJlODA3ZGQ4
NThmM2Q3NjY2NGIyZjNkZDkzY2IxYy4uMjcxZTk4Mjc1M2M4NzFjMWU1MjJkYmEyMjFlOTAzODhj
OTQ3MGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCk7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Uq
KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZl
bnQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGMzMWYy
N2VkZjk3NDdlNGRmMTVhNWE5Yzg1MTc5NzY2ZjFkMDBhYmEuLmE1MjNhN2M1MGZhZTY2ZjVhNmVh
ZGJlMGI1NTVlN2VjNjdmYWRhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0xMDksNyArMTA5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbFN0b3BCdWZmZXJpbmdEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkgeyB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoZGF0YSwgbGVu
Z3RoKTsgfSAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQnVm
ZmVyaW5nRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
IE9WRVJSSURFIHsgd2lsbFN0b3BCdWZmZXJpbmdEYXRhKGRhdGEsIGxlbmd0aCk7IH0KKyNlbmRp
ZgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhh
bmRsZSopIE9WRVJSSURFIHsgcmV0dXJuIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgT1ZF
UlJJREUgeyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsgfSAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBPVkVS
UklERSB7IGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7IH0gCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDJiOWY1ZDRlZjY3
Y2NhOTJhNDQ2N2NhMzJkMDY4ODY4YmU2NGM1ZDkuLjhlNWE4ODY2ZDkzZGRkODQxOWFlMjM5NDE4
ZTQ5NGUwZjE3ZTdkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdWJyZXNvdXJjZUxv
YWRlcigpOwogCiAgICAgdm9pZCBjYW5jZWxJZk5vdEZpbmlzaGluZygpOwotICAgIHZpcnR1YWwg
Ym9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCk7CisgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3Vy
Y2VMb2FkZXIoKSBPVkVSUklERTsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Uo
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNTliM2JkYmM3YTZhNjU5ZTFhNTRm
OTEzNDdjNzIwY2ZlYTZiZDNhZS4uNzM1N2I0NWZhNmFhN2QwY2QxMTM3MGM0NWZhNjM3ZGIzZWY4
MDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEwOTgsNyArMTA5OCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGZpcmVkKCkKKyAgICB2aXJ0dWFsIHZv
aWQgZmlyZWQoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV9jYWNoZUdyb3VwLT5kaWRSZWFj
aE1heEFwcENhY2hlU2l6ZSgpOwogICAgICAgICBkZWxldGUgdGhpczsKQEAgLTExMjQsNyArMTEy
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYWxsQ2FjaGVMaXN0
ZW5lclRhc2sobG9hZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIAogICAgICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgK
aW5kZXggMzI3MDg0OWQ4ZWUwMTkxNTRhMmQ1YjlmMGVkY2FkYTU3ZTBhZDNkNy4uYTUwMTY3M2Ex
ZWVhYTI3MzNiNTMxM2FkMGQ1NGEzMTA4N2ZjMzY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaApAQCAtNTQsNyAr
NTQsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgOiBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXBwbGljYXRpb25DYWNoZUdyb3VwKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5ID0gZmFsc2UpOyAgICAKLSAgICB+
QXBwbGljYXRpb25DYWNoZUdyb3VwKCk7CisgICAgdmlydHVhbCB+QXBwbGljYXRpb25DYWNoZUdy
b3VwKCk7CiAgICAgCiAgICAgZW51bSBVcGRhdGVTdGF0dXMgeyBJZGxlLCBDaGVja2luZywgRG93
bmxvYWRpbmcgfTsKIApAQCAtMTA3LDEyICsxMDcsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZv
ciBub3JtYWwgcmVzb3VyY2UgbG9hZGluZywgV2ViS2l0IGNsaWVudCBpcyBhc2tlZCBhYm91dCBl
YWNoIHJlc291cmNlIGluZGl2aWR1YWxseS4gU2luY2UgYXBwbGljYXRpb24gY2FjaGUgZG9lcyBu
b3QgYmVsb25nIHRvIGFueSBwYXJ0aWN1bGFyIGRvY3VtZW50LAogICAgIC8vIHRoZSBleGlzdGlu
ZyBjbGllbnQgY2FsbGJhY2sgY2Fubm90IGJlIHVzZWQsIHNvIGFzc3VtZSB0aGF0IGFueSBjbGll
bnQgdGhhdCBlbmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGFsc28gd2FudHMgaXQgdG8gdXNlIGNy
ZWRlbnRpYWwgc3RvcmFnZS4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50IGxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIE9WRVJSSURF
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWFuaWZlc3REYXRhKGNvbnN0IGNoYXIqLCBp
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNh
dGlvbkNhY2hlLmgKaW5kZXggYzg2ZDJjODBlNzc3ZDM4MzkzY2VmOTRjM2I1MTBkMjA2ZjFlNWRk
Ny4uZDY2MTE4MGU1ZWM2MTQwNTcyNzI5ODAwZWUwNmY0YzYyOGQwMDNhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCkBA
IC00Niw3ICs0Niw3IEBAIGNsYXNzIFVSTDsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGUgRklO
QUwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxET01BcHBsaWNh
dGlvbkNhY2hlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBET01X
aW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NQXBwbGlj
YXRpb25DYWNoZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERP
TUFwcGxpY2F0aW9uQ2FjaGUoZnJhbWUpKTsgfQotICAgIH5ET01BcHBsaWNhdGlvbkNhY2hlKCkg
eyBBU1NFUlQoIW1fZnJhbWUpOyB9CisgICAgdmlydHVhbCB+RE9NQXBwbGljYXRpb25DYWNoZSgp
IHsgQVNTRVJUKCFtX2ZyYW1lKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcmFt
ZUZvclBhZ2VDYWNoZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbm5lY3RGcmFt
ZUZyb21QYWdlQ2FjaGUoRnJhbWUqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkYmFlOWRjMWJiOTcx
NTYwNGIxMGU5NzgwYWNkYWE4YzRmNzA0NDZlLi4zZmY1YjkyYTg1ZTMyNTgzZTEyM2M3NTQ1YTNh
OGMwMjAwNDIxNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1l
Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFJhbmdl
Kik7CiAKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVHlwZSB0
eXBlKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByYXdEYXRh
UmVwcmVzZW50YXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNzNiZjc4NzNkZjJjMWQyMWM4YWZmYTQxNThlNDNk
Y2Q4NTk1YTI0NC4uYjE2ZGNlNjg2ODkzNzFjOWUzYTk4MDdkOTlkMWI1Yjg2ZDhmMzEwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5o
CkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIE9WRVJSSURFOwogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNo
ZWNrTm90aWZ5KCkgT1ZFUlJJREU7CiAKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKICAgICAgICAgU3RyaW5nIG1fZGVjb2RlZFNoZWV0VGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGZhZTAwMzkzNGE2MDAwZWYz
MmMzZGRhZWU5MzhhMzZkODBlZDMzOTEuLjU0ODE3OWZkYWRiYjA3MzUzNjZmYTlmMzNjZDMxN2Rj
ZTQ1OWUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkRm9udCgpOwogCiAgICAg
dm9pZCBiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciogZGwpOwotICAgIGJv
b2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9Cisg
ICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
IW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YSgpOwog
ICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZmxvYXQgc2l6
ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgRm9udE9yaWVudGF0aW9uID0gSG9yaXpvbnRhbCwg
Rm9udFdpZHRoVmFyaWFudCA9IFJlZ3VsYXJXaWR0aCwgRm9udFJlbmRlcmluZ01vZGUgPSBOb3Jt
YWxSZW5kZXJpbmdNb2RlKTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7CisgICAgdmlydHVhbCB2b2lk
IGNoZWNrTm90aWZ5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VF
bmNvZGVkRGF0YSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGxvYWQoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENsaWVudC5oCmlu
ZGV4IDBhZTY0MThjYTJmZTRmZjRmNWM2MmI3YTEyMGZlNDgyN2IzODRkNWIuLmQ4ZjQxYjY5OTg5
NzE3ZjRlZDA0MjQ3OWZkMzhiODQ5NjIyYTQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBDYWNo
ZWRGb250Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DYWNoZWRGb250Q2xpZW50KCkgeyB9CiAgICAgc3RhdGljIENhY2hlZFJlc291
cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBGb250VHlwZTsgfQotICAgIHZp
cnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CisgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNs
aWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZXhw
ZWN0ZWRUeXBlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250Kikg
eyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNs
aWVudC5oCmluZGV4IDc2NWNkNjNmYmRkYTkyZjM3OTg1ZjY4ZjYzMDdlYzU1MWJjZjhmNGUuLjVi
YmNiMmEyOTlkM2RmYTcxN2Q4YTJkOWM4YWM0NmYzNmEzMTFkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBA
IGNsYXNzIENhY2hlZEltYWdlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRJbWFnZUNsaWVudCgpIHsgfQogICAgIHN0YXRp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gSW1hZ2VU
eXBlOyB9Ci0gICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGll
bnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIENh
Y2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW5ldmVyIGEg
ZnJhbWUgb2YgYW4gaW1hZ2UgY2hhbmdlcywgZWl0aGVyIGJlY2F1c2Ugd2UgZ290IG1vcmUgZGF0
YSBmcm9tIHRoZSBuZXR3b3JrIG9yCiAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgYW5pbWF0aW5nLiBJ
ZiBub3QgbnVsbCwgdGhlIEludFJlY3QgaXMgdGhlIGNoYW5nZWQgcmVjdCBvZiB0aGUgaW1hZ2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dENsaWVudC5oCmluZGV4IGIwZWI1YTlmMzE5OTRkNzA5ZTAwNGFlNWIxMjc0ZTdhZDM0YTgwZTAu
LjkwNDkzN2U3NmQxODM4YWE1YzE4MjA2Y2UxMmE4NzkzNDc4MTM4M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudENsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudENsaWVudC5oCkBA
IC0zNSw3ICszNSw3IEBAIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IDogcHVibGljIENh
Y2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTVkdEb2N1
bWVudENsaWVudCgpIHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhw
ZWN0ZWRUeXBlKCkgeyByZXR1cm4gU1ZHRG9jdW1lbnRUeXBlOyB9Ci0gICAgdmlydHVhbCBDYWNo
ZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
ZXhwZWN0ZWRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBy
ZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBleHBlY3RlZFR5cGUo
KTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKaW5kZXggMDBjYzU0Njk2
MDllM2IxMmYyZTBiMGE1MTljNmY5YmVkOWM3MjhiNy4uMmY1NDk5NDdhNzY2OTJlMjk1MDUyZjZj
ZTc0NDhhODk1MmY3OGE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIENhY2hl
ZFN0eWxlU2hlZXRDbGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkNhY2hlZFN0eWxlU2hlZXRDbGllbnQoKSB7IH0KICAgICBzdGF0aWMg
Q2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0dXJuIFN0eWxlU2hl
ZXRUeXBlOyB9Ci0gICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VD
bGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KKyAgICB2aXJ0dWFs
IENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgVVJMJiAvKiBiYXNlVVJM
ICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNvbnN0IENhY2hlZENTU1N0eWxlU2hl
ZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IC8qIGhyZWYgKi8sIGNvbnN0IFVSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBz
aGVldCAqLykgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggMjY0ZDY2MzhiNTM4NmJjM2ZlYjc0MGUwZDE4MTYwNzMy
MmM2NTE1OS4uOWI4YWEwZWQ5M2ZmMGIyZmY3MTQ2YTFmZTFlZGVhZWM2NzEyNzk4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5n
JiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQ7IH0KIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBj
aGVja05vdGlmeSgpIE9WRVJSSURFOwogCiAgICAgICAgIFN0cmluZyBtX3NoZWV0OwogICAgICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
aW5kZXggNTViZGZkNjVkNzk1NmU1N2ZmNTQ2NGFiYWRmM2NjZDVmNGJiOTM2MS4uNDY0NDAwZmY5
YjNlMDEzNmM4N2MzYjUxYWU0ZGJkN2QwNjJmN2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC02
NCw3ICs2NCw3IEBAIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIGNsYXNzIENocm9tZSA6IHB1Ymxp
YyBIb3N0V2luZG93IHsKIHB1YmxpYzoKICAgICBDaHJvbWUoUGFnZSYsIENocm9tZUNsaWVudCYp
OwotICAgIH5DaHJvbWUoKTsKKyAgICB2aXJ0dWFsIH5DaHJvbWUoKTsKIAogICAgIENocm9tZUNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKaW5kZXggODgzZWJlMjczYmM0ZmU4OTA5NDMyNDZiNzgyODFkNDdkZTY3ZDZmYi4uZTBkMTMx
MjMzYmY3N2NkOGViNTBjMWVjODQ2MWIxYzNlOTRjMDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCkBAIC0xMDcsNyArMTA3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gRE9NV2luZG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgICAgICB2aXJ0dWFsIERPTVdpbmRvdyog
dG9ET01XaW5kb3coKTsKKyAgICAgICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCkg
T1ZFUlJJREU7CiAKICAgICAgICAgdm9pZCByZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3Bl
cnR5Kik7CiAgICAgICAgIHZvaWQgdW5yZWdpc3RlclByb3BlcnR5KERPTVdpbmRvd1Byb3BlcnR5
Kik7CkBAIC0yNzUsOSArMjc1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8v
IEV2ZW50cwogICAgICAgICAvLyBFdmVudFRhcmdldCBBUEkKLSAgICAgICAgdmlydHVhbCBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+LCBib29sIHVzZUNhcHR1cmUpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIGJvb2wgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVBbGxFdmVudExpc3RlbmVycygpIE9WRVJSSURFOwogCiAgICAgICAgIHVzaW5nIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHBycFRhcmdldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiN2JmMGEwZDcyZGJiMTJiNGQ2MmQ5NjU1N2M2
YjBkNGZkNDM5ZmU1Li41YWVlYzgwZjIzY2Q3OTVjNTczODJjYzY0NWFiMDlmYTg2OTM1YTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTUwOSw3ICs1MDksNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB1cGRhdGVTY3JvbGxhYmxlQXJlYVNldCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5UGFnZVRoYXRDb250ZW50QXJlYVdpbGxQYWludCgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgYm9vbCBzaG91bGRVc2VMb2FkVGltZURlZmVycmVkUmVwYWludERlbGF5KCkgY29uc3Q7
CiAgICAgdm9pZCBkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5o
CmluZGV4IGJmNDcxY2U3MDY0MDIwYThlOGM2MDVhYmE2ODlmMzQwZjM1MTFmYjkuLmYzMTQ5YzA2
N2RiYTM2OWExYjZjOGRhZjgxZDk5NzI1ZjIwZGMxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaApAQCAtNDksMTkgKzQ5LDE5IEBA
IHB1YmxpYzoKICAgICBDU1NQcm9wZXJ0eUlEIHRyYW5zaXRpb25Qcm9wZXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhbnNpdGlvblByb3BlcnR5OyB9CiAgICAgQ1NTUHJvcGVydHlJRCBhbmltYXRp
bmdQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW5nUHJvcGVydHk7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBvbkFuaW1hdGlvbkVuZChkb3VibGUgZWxhcHNlZFRpbWUpOwotICAgIHZp
cnR1YWwgYm9vbCBzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgdmlydHVh
bCB2b2lkIHBhdXNlQW5pbWF0aW9uKGRvdWJsZSAvKnRpbWVPZmZzZXQqLyk7Ci0gICAgdmlydHVh
bCB2b2lkIGVuZEFuaW1hdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvbkFuaW1hdGlvbkVuZChk
b3VibGUgZWxhcHNlZFRpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzdGFydEFuaW1h
dGlvbihkb3VibGUgdGltZU9mZnNldCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNl
QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZW5kQW5pbWF0aW9uKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShDb21w
b3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJl
bnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBh
bmltYXRlZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShSZWZQdHI8
UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShD
b21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+
JiBhbmltYXRlZFN0eWxlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QW5pbWF0ZWRT
dHlsZShSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXQoUmVuZGVyU3R5bGUqIHRvKTsKIAogICAgIHZvaWQgc2V0T3ZlcnJp
ZGRlbihib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGRlbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3ZlcnJpZGRlbjsgfQorICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZGVuKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9vdmVycmlkZGVuOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0
c1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhZmZlY3Rz
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIGhhc1N0
eWxlKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tU3R5bGUgJiYgbV90b1N0eWxlOyB9CiAKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBibGVuZFByb3BlcnR5VmFsdWVJblN0eWxl
KENTU1Byb3BlcnR5SUQsIFJlbmRlclN0eWxlKik7CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSB0aW1l
VG9OZXh0U2VydmljZSgpOworICAgIHZpcnR1YWwgZG91YmxlIHRpbWVUb05leHRTZXJ2aWNlKCkg
T1ZFUlJJREU7CiAgICAgCiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZTsgfQogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYikgeyBtX2FjdGl2ZSA9IGI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKaW5kZXggOTYyMzNjNTU4MmI1M2Nm
ZGEyNWY0YTcyOWUzZjMyMGE4ZTdjMzNkYy4uNTk1MTEwMzkzZjYwMzM2YzY4Yzk5ZjliMTkzMmIw
ZjkzYmRjMTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2
YWxUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgK
QEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBJbnRlcnZhbFR5cGUo
bG93LCBoaWdoLCBkYXRhKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tJbnZhcmlh
bnRzKCkgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgY2hlY2tJbnZhcmlhbnRzKCkgY29uc3QgT1ZF
UlJJREUKICAgICB7CiAgICAgICAgIGlmICghUE9EUmVkQmxhY2tUcmVlPEludGVydmFsVHlwZT46
OmNoZWNrSW52YXJpYW50cygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgxLDcg
KzE4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZWFyY2hGb3JPdmVybGFwc0Zyb208QWRh
cHRlclR5cGU+KG5vZGUtPnJpZ2h0KCksIGFkYXB0ZXIpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
Ym9vbCB1cGRhdGVOb2RlKEludGVydmFsTm9kZSogbm9kZSkKKyAgICB2aXJ0dWFsIGJvb2wgdXBk
YXRlTm9kZShJbnRlcnZhbE5vZGUqIG5vZGUpIE9WRVJSSURFCiAgICAgewogICAgICAgICAvLyBX
b3VsZCB1c2UgY29uc3QgVCYsIGJ1dCBuZWVkIHRvIHJlYXNzaWduIHRoaXMgcmVmZXJlbmNlIGlu
IHRoaXMKICAgICAgICAgLy8gZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QT0RSZWRCbGFja1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJl
ZEJsYWNrVHJlZS5oCmluZGV4IDY4OWZmMDJjNmI3ZTE0ZTQ0NWI5YjMwNzMzYTQ4NzU4MTA0YTBi
MzUuLjkwZGMyZmE4NWRmOTYzMjE3NzFmMDMyY2I5OGVlMmVhNTk0ZjBmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCkBAIC03MzQsNyArNzM0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgQ291bnRlcigpCiAgICAgICAgICAgICA6IG1fY291bnQoMCkgeyB9CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0KGNvbnN0IFQmKSB7ICsrbV9jb3VudDsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoY29uc3QgVCYpIE9WRVJSSURFIHsgKyttX2NvdW50OyB9
CiAgICAgICAgIGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggM2NiNGIwMzExMmVl
N2E2OGI1ZTJhZDBhMmI2NzAzNzhiZmE5ZjU5MS4uZjRjNTEzYjE2OTE5Y2Y5ZGYyOTE4MDUzNjAw
MjJhMjFkYjVhMjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNDYs
NyArNDYsNyBAQCBjbGFzcyBTY3JvbGxiYXI7CiAKIGNsYXNzIFNjcm9sbFZpZXcgOiBwdWJsaWMg
V2lkZ2V0LCBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgewogcHVibGljOgotICAgIH5TY3JvbGxWaWV3
KCk7CisgICAgdmlydHVhbCB+U2Nyb2xsVmlldygpOwogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEg
ZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRp
b24pIGNvbnN0IE9WRVJSSURFOwpAQCAtMjQwLDEzICsyNDAsMTMgQEAgcHVibGljOgogICAgIHZv
aWQgYWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXplckNvdW50KGludCBvdmVybGFwRGVsdGEp
OwogICAgIHZvaWQgd2luZG93UmVzaXplclJlY3RDaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKTsgLy8gT3ZlcnJpZGRlbiB0byB1cGRhdGUgdGhlIG92
ZXJsYXBwaW5nIHNjcm9sbGJhciBjb3VudC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFNj
cm9sbFZpZXcqKSBPVkVSUklERTsgLy8gT3ZlcnJpZGRlbiB0byB1cGRhdGUgdGhlIG92ZXJsYXBw
aW5nIHNjcm9sbGJhciBjb3VudC4KIAogICAgIC8vIENhbGxlZCB3aGVuIG91ciBmcmFtZSByZWN0
IGNoYW5nZXMgKG9yIHRoZSByZWN0L3Njcm9sbCBwb3NpdGlvbiBvZiBhbiBhbmNlc3RvciBjaGFu
Z2VzKS4KLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBPVkVSUklERTsKICAgICAKICAgICAvLyBXaWRnZXQg
b3ZlcnJpZGUgdG8gdXBkYXRlIG91ciBzY3JvbGxiYXJzIGFuZCBub3RpZnkgb3VyIGNvbnRlbnRz
IG9mIHRoZSByZXNpemUuCi0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgT1ZF
UlJJREU7CiAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gbm90aWZ5IG91ciBjb250ZW50cyBv
ZiBhIGNsaXByZWN0IGNoYW5nZS4KICAgICB2aXJ0dWFsIHZvaWQgY2xpcFJlY3RDaGFuZ2VkKCkg
T1ZFUlJJREU7CkBAIC0yNzMsMTMgKzI3MywxMyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8g
V2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUg
dmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2b2lkIHBh
aW50U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAv
LyBXaWRnZXQgb3ZlcnJpZGVzIHRvIGVuc3VyZSB0aGF0IG91ciBjaGlsZHJlbidzIHZpc2liaWxp
dHkgc3RhdHVzIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIHdlIGdldCBzaG93biBhbmQgaGlkZGVu
LgotICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2hvdygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgT1ZFUlJJREU7CiAgICAgCiAgICAg
Ly8gUGFuIHNjcm9sbGluZy4KICAgICBzdGF0aWMgY29uc3QgaW50IG5vUGFuU2Nyb2xsUmFkaXVz
ID0gMTU7CkBAIC0yODksNyArMjg5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
UG9pbnRJblNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgYm9v
bCBzY3JvbGxiYXJDb3JuZXJQcmVzZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHNj
cm9sbENvcm5lclJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsQ29ybmVy
UmVjdCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IDFjN2Q1
YjkzN2I3NmI1ZjU2YWU0ZmIwZTcxZTA0MjUxNWJmN2ZlNWEuLjZiNzhkN2Y0NDBjNzlhOTFjODg2
NDYwNDRmYzg2MDkzMzVjZDRkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBA
IC01NSw0OCArNTUsNDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbGJhcigpOwogCiAg
ICAgLy8gU2Nyb2xsYmFyVGhlbWVDbGllbnQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCBp
bnQgeCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eCgpOyB9Ci0gICAgdmlydHVhbCBpbnQgeSgp
IGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eSgpOyB9Ci0gICAgdmlydHVhbCBpbnQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBXaWRnZXQ6OndpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIGludCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBJbnRTaXpl
IHNpemUoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnNpemUoKTsgfQotICAgIHZpcnR1YWwgSW50
UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmxvY2F0aW9uKCk7IH0KKyAg
ICB2aXJ0dWFsIGludCB4KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0K
KyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gV2lkZ2V0Ojp5KCk7
IH0KKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdpZGdl
dDo6d2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJbnRQ
b2ludCBsb2NhdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdpZGdldDo6bG9jYXRpb24o
KTsgfQogCi0gICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBX
aWRnZXQ6OnBhcmVudCgpOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3Qg
eyByZXR1cm4gV2lkZ2V0Ojpyb290KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHBhcmVu
dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFdpZGdldDo6cGFyZW50KCk7IH0KKyAgICB2aXJ0
dWFsIFNjcm9sbFZpZXcqIHJvb3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBXaWRnZXQ6OnJv
b3QoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6
ZnJhbWVSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJl
Y3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gV2lkZ2V0OjpmcmFtZVJlY3QoKTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGUoKSB7IFdpZGdldDo6aW52YWxpZGF0ZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZSgpIE9WRVJSSURFIHsgV2lkZ2V0OjppbnZhbGlkYXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xsYmFyKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3Jv
bGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhj
b25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpIHsgcmV0dXJuIFdpZGdldDo6Y29udmVydEZyb21D
b250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsgfQorICAgIHZpcnR1YWwgSW50UG9pbnQgY29u
dmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgT1ZF
UlJJREUgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93
UG9pbnQpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgdmlydHVhbCBib29s
IGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQogCi0gICAgdmlydHVhbCBpbnQgdmFsdWUoKSBj
b25zdCB7IHJldHVybiBscm91bmRmKG1fY3VycmVudFBvcyk7IH0KLSAgICB2aXJ0dWFsIGZsb2F0
IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KLSAgICB2aXJ0dWFs
IGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KLSAgICB2
aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQotICAg
IHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZSAtIG1fdmlz
aWJsZVNpemU7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IHZhbHVl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbHJvdW5kZihtX2N1cnJlbnRQb3MpOyB9CisgICAg
dmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jdXJy
ZW50UG9zOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdG90YWxTaXplKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KKyAgICB2aXJ0dWFsIGludCBtYXhp
bXVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXpl
OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KIAotICAgIHZpcnR1YWwgaW50IGxp
bmVTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9saW5lU3RlcDsgfQotICAgIHZpcnR1YWwgaW50IHBh
Z2VTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU3RlcDsgfQorICAgIHZpcnR1YWwgaW50IGxp
bmVTdGVwKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9saW5lU3RlcDsgfQorICAgIHZpcnR1
YWwgaW50IHBhZ2VTdGVwKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9wYWdlU3RlcDsgfQog
Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9wcmVzc2VkUGFydDsgfQotICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBh
cnQgcHJlc3NlZFBhcnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9
CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9ob3ZlcmVkUGFydDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlQ2hhbmdl
ZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdHlsZUNoYW5nZWQoKSBPVkVSUklERSB7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGVuYWJs
ZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5hYmxlZChib29sKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCBieSB0aGUgU2Ny
b2xsYWJsZUFyZWEgd2hlbiB0aGUgc2Nyb2xsIG9mZnNldCBjaGFuZ2VzLgogICAgIHZvaWQgb2Zm
c2V0RGlkQ2hhbmdlKCk7CkBAIC0xMTksOSArMTE5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0
UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9sbGJh
cigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdCBP
VkVSUklERTsKICAgICBib29sIHNob3VsZFBhcnRpY2lwYXRlSW5IaXRUZXN0aW5nKCk7CiAKICAg
ICBib29sIGlzV2luZG93QWN0aXZlKCkgY29uc3Q7CkBAIC0xNDQsMjEgKzE0NCwyMSBAQCBwdWJs
aWM6CiAKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1l
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKSBPVkVSUklERTsKIAogICAgIGJvb2wgc3Vw
cHJlc3NJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N1cHByZXNzSW52YWxpZGF0aW9u
OyB9CiAgICAgdm9pZCBzZXRTdXBwcmVzc0ludmFsaWRhdGlvbihib29sIHMpIHsgbV9zdXBwcmVz
c0ludmFsaWRhdGlvbiA9IHM7IH0KIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0VG9Db250
YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGNv
bnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIHZpcnR1
YWwgSW50UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXco
Y29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBJbnRQb2ludCBj
b252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1
YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0OworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRG
cm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHZvaWQgbW92ZVRodW1iKGludCBwb3MsIGJvb2wgZHJhZ2dpbmdEb2N1bWVudCA9IGZhbHNlKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc0FscGhhTG9ja2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fs
cGhhTG9ja2VkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldElzQWxwaGFMb2NrZWQoYm9vbCBmbGFn
KSB7IG1faXNBbHBoYUxvY2tlZCA9IGZsYWc7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBbHBoYUxv
Y2tlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faXNBbHBoYUxvY2tlZDsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRJc0FscGhhTG9ja2VkKGJvb2wgZmxhZykgT1ZFUlJJREUgeyBtX2lzQWxw
aGFMb2NrZWQgPSBmbGFnOyB9CiAKIHByb3RlY3RlZDoKICAgICBTY3JvbGxiYXIoU2Nyb2xsYWJs
ZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUsIFNjcm9s
bGJhclRoZW1lKiA9IDApOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByb3RlY3RlZDoKICAgICBib29s
IG1faXNBbHBoYUxvY2tlZDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxi
YXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYmFy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKaW5kZXggMmQyM2JhYTQwYWMzMDc3ZjM4NGUx
NGJiNTVkNDBmMWE5YWViNTg1NC4uYTkwNzE3YmQ4ZGI2YWU4ZDZlNTQ5YzkwNDQzZGUzNGZlY2Ux
MzE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGlj
OgogICAgICAgICA6IG1fb2JqZWN0KG8pLCBtX2Z1bmN0aW9uKGYpIHsgfQogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikodGhpcyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSBPVkVSUklERSB7IChtX29iamVjdC0+Km1fZnVu
Y3Rpb24pKHRoaXMpOyB9CiAKICAgICBUaW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwogICAgIFRp
bWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0aW9uOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBUaW1lckJhc2U6OmlzQWN0aXZlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCBmaXJlZCgpCisgICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgT1ZFUlJJREUKICAgICB7CiAg
ICAgICAgIGlmIChtX3Nob3VsZFJlc3RhcnRXaGVuVGltZXJGaXJlcykgewogICAgICAgICAgICAg
bV9zaG91bGRSZXN0YXJ0V2hlblRpbWVyRmlyZXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKaW5kZXggNmJlMTkxMDI0
MWE3YTc2OGU3ZGY2YjIyZTUzYjcyM2UzYjFlYTc4OS4uNjc3ZTIyMjY0MjU3ZGExOWZlMWQ3Y2M1
M2NiMjFhNjEzYjM0ZDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRpbWluZ0Z1bmN0aW9uKTsKICAgICB9CiAgICAg
Ci0gICAgfkxpbmVhclRpbWluZ0Z1bmN0aW9uKCkgeyB9CisgICAgdmlydHVhbCB+TGluZWFyVGlt
aW5nRnVuY3Rpb24oKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJu
IG90aGVyLmlzTGluZWFyVGltaW5nRnVuY3Rpb24oKTsKICAgICB9CkBAIC0xMTMsOSArMTEzLDkg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgfkN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24oKSB7IH0KKyAgICB2aXJ0dWFsIH5DdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkgeyB9
CiAgICAgCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24m
IG90aGVyKQorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9u
JiBvdGhlcikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmIChvdGhlci5pc0N1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bio+KCZvdGhlcik7CkBAIC0xNjUsOSArMTY1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oc3RlcHMsIHN0ZXBBdFN0YXJ0KSk7CiAg
ICAgfQogICAgIAotICAgIH5TdGVwc1RpbWluZ0Z1bmN0aW9uKCkgeyB9CisgICAgdmlydHVhbCB+
U3RlcHNUaW1pbmdGdW5jdGlvbigpIHsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIE9WRVJSSURFCiAgICAgewogICAgICAg
ICBpZiAob3RoZXIuaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIGNvbnN0
IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5n
RnVuY3Rpb24qPigmb3RoZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKaW5kZXggZTA0NDkyNmU4NGQwNDZiODYz
Mzc1MjZmNDRiZmFkY2ZhY2VhYTEzZS4uMTVkZjk4NjJlYWMxNDZiZmU1ZWUyNGMwNDFmOGFkZmFj
NDhlMjExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCkBAIC01NywxMiArNTcsMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgPSAwOwog
CiAgICAgLy8gQXVkaW9Qcm9jZXNzb3IgbWV0aG9kcwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7Ci0gICAg
dmlydHVhbCB2b2lkIHNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cyk7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29uc3QgeyByZXR1
cm4gbV9udW1iZXJPZkNoYW5uZWxzOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRl
c3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVzZXQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TnVtYmVyT2ZDaGFu
bmVscyh1bnNpZ25lZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9udW1iZXJPZkNoYW5uZWxzOyB9CiAK
ICAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXggMDU4Y2FhYWJlOTY3NzRjMDUyNTdlMzll
YTZlMzc2NzM5YTFjMTI5Yi4uMGJmMDlmNWMxODgwOTcxYTY5YjIwNjY2MTIwYzIzYTFjOGQzZmNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaApAQCAtMzgs
OCArMzgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFJURlBhbm5lcigpOwogCiAgICAgLy8g
UGFubmVyCi0gICAgdmlydHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVsZXZh
dGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRp
b0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIE9WRVJSSURFOwogCiAgICAg
c2l6ZV90IGZmdFNpemUoKSBjb25zdCB7IHJldHVybiBmZnRTaXplRm9yU2FtcGxlUmF0ZShtX3Nh
bXBsZVJhdGUpOyB9CiAgICAgc3RhdGljIHNpemVfdCBmZnRTaXplRm9yU2FtcGxlUmF0ZShmbG9h
dCBzYW1wbGVSYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCmluZGV4IDkyOGFhYzAzZDI3MDI5MGZkMjY5OTIz
YmFiYjJhNjFmNDI1MDU2YjAuLjQ4NWUyZmUwNzZiNmNmM2RiNzQwOGFhZjc1NTM5YjY3Yzk4NmZk
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuaApAQCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKICAgICBBdWRp
b0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAg
IHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25NYWMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzUGxh
eWluZygpIE9WRVJSSURFIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CiAKLSAgICBmbG9hdCBzYW1w
bGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgdmlydHVhbCBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBjb25maWd1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IDU0ODg1ODgzMGQxMDg2Mjhh
YWEwMDVmMTYwYzg2NWQ2MjgyNDVjNjUuLmVkYjg2NzBkMzQ3ODA0ZTdhY2MzNmU0ZGMzNjhmZTVm
MWJhOWFkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2lt
cGxlRm9udERhdGEuaApAQCAtMTU4LDggKzE1OCw4IEBAIHB1YmxpYzoKICAgICBHbHlwaCB6ZXJv
R2x5cGgoKSBjb25zdCB7IHJldHVybiBtX3plcm9HbHlwaDsgfQogICAgIHZvaWQgc2V0WmVyb0ds
eXBoKEdseXBoIHplcm9HbHlwaCkgeyBtX3plcm9HbHlwaCA9IHplcm9HbHlwaDsgfQogCi0gICAg
dmlydHVhbCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIz
MikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBjb250YWluc0NoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKSBjb25z
dCBPVkVSUklERTsKIAogICAgIEdseXBoIGdseXBoRm9yQ2hhcmFjdGVyKFVDaGFyMzIpIGNvbnN0
OwogCkBAIC0xNjksMTUgKzE2OSwxNSBAQCBwdWJsaWM6CiAgICAgQWRkaXRpb25hbEZvbnREYXRh
KiBmb250RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERhdGEuZ2V0KCk7IH0KICAgICBib29s
IGlzU1ZHRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERhdGE7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0N1c3RvbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzQ3VzdG9tRm9udDsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQot
ICAgIHZpcnR1YWwgYm9vbCBpc1NlZ21lbnRlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBp
c0N1c3RvbUZvbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzQ3VzdG9tRm9udDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lz
TG9hZGluZzsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NlZ21lbnRlZCgpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgY29uc3QgR2x5cGhEYXRhJiBtaXNzaW5nR2x5cGhEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9taXNzaW5nR2x5cGhEYXRhOyB9CiAgICAgdm9pZCBzZXRNaXNzaW5nR2x5cGhEYXRhKGNv
bnN0IEdseXBoRGF0YSYgZ2x5cGhEYXRhKSB7IG1fbWlzc2luZ0dseXBoRGF0YSA9IGdseXBoRGF0
YTsgfQogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgU3RyaW5nIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBPVkVSUklERTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggODM4YmMyNmVhMTVjZGM0NGY4NzFiZWUyZmZjNDJm
YTE3Zjg3YzZjYy4uNGNkYTg0YzZkYWYzN2Q4NTdmNGEwMjBkY2E4N2YyMDBjYzg2MmQ0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC00Myw4
ICs0Myw3IEBAIHB1YmxpYzoKIAogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKIHB1YmxpYzoKLQotICAgIH5JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGKCk7CisgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
RigpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE1vZGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6
TW9kZSkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCA4YTlhYjY4NDQ5YjdiYjkzZDc4MzhkZWE1YmRiNDM5
MTExMTdmNGIyLi43ZjUwM2NjMmMwNjkzZTAxOTUxMjg1ZjU5ODkzODdiMDdmNTViNDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5o
CkBAIC0xMjgsNDUgKzEyOCw0NSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uKCk7CiAKICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVQcml2
YXRlSW50ZXJmYWNlIG92ZXJyaWRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJp
bmcmIHVybCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpIE9WRVJS
SURFOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgdmlydHVhbCB2b2lkIGxvYWQoY29u
c3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+KSB7IH07CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9QbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1BsYXkoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0ID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBwbGF5KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CisgICAg
dmlydHVhbCB2b2lkIHBsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgSW50U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSGFzVmlkZW87
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEhh
c0F1ZGlvOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7Ci0gICAgdmlydHVh
bCBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgSW50U2l6ZSBuYXR1cmFsU2l6
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fY2FjaGVkSGFzVmlkZW87IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QXVkaW8oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2NhY2hlZEhhc0F1ZGlvOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9h
dCBkdXJhdGlvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRp
bWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlZWsoZmxvYXQpOwotICAgIHZpcnR1
YWwgYm9vbCBzZWVraW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJhdGUoZmxvYXQp
OwotICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vl
ayhmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlZWtpbmcoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRW
b2x1bWUoZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZEhhc0NhcHRpb25zOyB9CisgICAgdmlydHVhbCBib29sIGhh
c0Nsb3NlZENhcHRpb25zKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jYWNoZWRIYXNDYXB0
aW9uczsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkg
PSAwOwotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtTdGF0ZTsgfQotICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsg
fQotICAgIHZpcnR1YWwgZG91YmxlIG1heFRpbWVTZWVrYWJsZURvdWJsZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBk
aWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25z
dCBJbnRTaXplJik7CisgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdv
cmtTdGF0ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbmV0d29ya1N0YXRlOyB9CisgICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisgICAgdmlydHVhbCBkb3VibGUgbWF4VGltZVNl
ZWthYmxlRG91YmxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBkb3VibGUgbWluVGlt
ZVNlZWthYmxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRpZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaXpl
KGNvbnN0IEludFNpemUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIE9WRVJSSURF
OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2
b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgT1ZFUlJJREU7CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbygpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fc2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbzsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJvb2wpIE9WRVJSSURFOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oCmluZGV4IDY2ZjNkMmMxODFhYTYzMmZjNjNkMDg1MTBiNmI5MWE4YjUzMTE0
NmEuLjA4MjdhZGViODYwYjNkMzRlNTU4ZjJlZjMzM2MzMzNlZWI5MTM0NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakM7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIHsKIHB1YmxpYzoKLSAgICB+TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpOworICAgIHZpcnR1YWwgfk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiAgICAgdm9pZCBzZXRBc3NldChpZCk7
Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrc0NoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJh
Y2tzQ2hhbmdlZCgpIE9WRVJSSURFOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VM
RUNUSU9OX0dST1VQKQogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IHBsYXllckl0ZW0oKSBj
b25zdCB7IHJldHVybiBtX2F2UGxheWVySXRlbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXgg
YzBhZGRkNDJiNjNmYmRmMDhhOTZlODRkYjJmZjI1OWY5NzczZGMyNy4uMTEyNjVkMDE1OWQwNGRh
MWFkODliNTA0NmEzYjEwNDUyMjIzYzFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0xMjYs
MTMgKzEyNiwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotCi0gICAgdmlydHVhbCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIHJldHVybiBpc1NhbWVUeXBlKG8pOwogICAgIH0KIAotICAgIHZp
cnR1YWwgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIGlzRGVmYXVsdCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IEZp
bHRlck9wZXJhdGlvbih0eXBlKQpAQCAtMTQ4LDggKzE0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9uJiBvKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU2Ft
ZVR5cGUobyk7CiAgICAgfQpAQCAtMTY2LDEwICsxNjQsMTAgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24odXJsLCBm
cmFnbWVudCwgdHlwZSkpOwogICAgIH0KLSAgICB+UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKCk7
CisgICAgdmlydHVhbCB+UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKCk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnQ7IH0K
QEAgLTE4NSw3ICsxODMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCwgT3Bl
cmF0aW9uVHlwZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJP
cGVyYXRpb24mIG8pIGNvbnN0CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJiBvKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKCFpc1Nh
bWVUeXBlKG8pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEyLDEwICsyMTAsMTAg
QEAgcHVibGljOgogCiAgICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50
OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFz
c3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJv
b2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QK
KyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNv
bnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDQsMTIgKzI0MiwxMiBAQCBwdWJsaWM6CiAKICAgICBk
b3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBPUEFDSVRZOyB9
CisgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV90eXBlID09IE9QQUNJVFk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgT1ZFUlJJ
REU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYgbykgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmICghaXNT
YW1lVHlwZShvKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3OSwxMCArMjc3LDEw
IEBAIHB1YmxpYzoKICAgICBkb3VibGUgZXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9u
ZW50OyB9CiAgICAgZG91YmxlIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91
Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IE9W
RVJSSURFCiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0zMTIsMTMgKzMxMCwxMyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBM
ZW5ndGgmIHN0ZERldmlhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9v
bCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUg
cHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIE9WRVJSSURFOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlv
biYgbykgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUo
bykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDgsMTQgKzM0NiwxMyBAQCBwdWJs
aWM6CiAgICAgaW50IHN0ZERldmlhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9u
OyB9CiAgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIE9WRVJSSURFOwogCiBwcml2YXRl
OgotCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBv
KSBjb25zdAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlv
biYgbykgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCA4MzcyNzgwYTI3NDM0MzgyOThkYTViZDBl
ZjdmMDcyODNmNzJiMjE2Li4wMjk0NWUxYjI4MTQ3N2EyNmQ0N2RhNTdkMGEzOTA3MzViMzhmODNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCkBAIC0xMTEsOSArMTExLDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNF
KENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQogICAgIGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25z
dCBDcmVkZW50aWFsJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAg
IHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpOworICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCByZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9W
RVJSSURFOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0yNTUsOCArMjU1LDggQEAg
cHJpdmF0ZToKICAgICBib29sIHN0YXJ0KCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1Mb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZBdXRoZW50
aWNhdGlvbkNsaWVudCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZBdXRoZW50
aWNhdGlvbkNsaWVudCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZBdXRoZW50
aWNhdGlvbkNsaWVudCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhVVNFKENGTkVUV09SSykKICAgICB2b2lkIGNyZWF0ZU5TVVJMQ29ubmVj
dGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBz
aG91bGRDb250ZW50U25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0F1dG9UYWJsZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxh
eW91dC5oCmluZGV4IDFiNjE2NTEwMTRlZTc2MWQzMzVmNDJiZDEzNjFjMDE4MjI5ZWQ0MzUuLjcy
MTk4MTgxMDQ1YzQzMjc4NzM0MDU3MmIwYWNkOGYwZjkzYTNmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmgKQEAgLTM0LDExICszNCwxMSBAQCBjbGFzcyBS
ZW5kZXJUYWJsZUNlbGw7CiBjbGFzcyBBdXRvVGFibGVMYXlvdXQgOiBwdWJsaWMgVGFibGVMYXlv
dXQgewogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9UYWJsZUxheW91dChSZW5kZXJUYWJsZSop
OwotICAgIH5BdXRvVGFibGVMYXlvdXQoKTsKKyAgICB2aXJ0dWFsIH5BdXRvVGFibGVMYXlvdXQo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBhcHBseVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyhMYXlvdXRVbml0JiBt
aW5XaWR0aCwgTGF5b3V0VW5pdCYgbWF4V2lkdGgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBmdWxsUmVjYWxjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4IDU3YmM5ODBlOTYwZWZlOWZmOWRkY2U5OWFh
ZTM3ZjM1YTk3MzU2YjAuLmQwZDQyMTFjYzA3ZDQwN2ZlY2E4OTMyNDAyZTkzYjc1OWY3M2UxODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFnbWVudDsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHZpcnR1YWwgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCBPVkVSUklERQog
ICAgIHsKICAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0
CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24mIG8p
IGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaAppbmRleCBjNWMwM2E4NWE5MDhiOGNiYTYyMDIwMWYzMDc4OGI2ZDg0Yjg5ZWJjLi42Mzk4
OWE5ZWE4ZTQ1ZTQ2OTU3ZTY5YWM4MzFiNDc1NDdlZmRkNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgogI2lmbmRl
ZiBOREVCVUcKICAgICB2aXJ0dWFsIH5JbmxpbmVGbG93Qm94KCk7CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIHNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5lQm94KiA9IDAsIGNvbnN0IGNo
YXIqID0gMCwgY29uc3QgSW5saW5lQm94KiA9IDAsIGNvbnN0IGNoYXIqID0gMCwgY29uc3QgUmVu
ZGVyT2JqZWN0KiA9IDAsIGludCA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgY2hhciog
Ym94TmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzaG93TGluZVRyZWVBbmRNYXJrKGNv
bnN0IElubGluZUJveCogPSAwLCBjb25zdCBjaGFyKiA9IDAsIGNvbnN0IElubGluZUJveCogPSAw
LCBjb25zdCBjaGFyKiA9IDAsIGNvbnN0IFJlbmRlck9iamVjdCogPSAwLCBpbnQgPSAwKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGJveE5hbWUoKSBjb25zdCBPVkVS
UklERTsKICNlbmRpZgogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29u
c3QgeyByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChJbmxpbmVCb3g6OnJlbmRlcmVyKCkp
OyB9CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVM
aW5lKFJlbmRlckFyZW5hJikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGV4dHJh
Y3RMaW5lKCkgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKSBP
VkVSUklERSBGSU5BTDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UG9zaXRpb24oZmxvYXQgZHgs
IGZsb2F0IGR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZs
b2F0IGR5KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZUJveEZyb21S
ZW5kZXJPYmplY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGluZUJveFRvUmVuZGVyT2Jq
ZWN0KCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29u
c3QgTGF5b3V0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7
CiAgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgY29uc3QgTGF5b3V0UmVj
dCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUJvdHRvbSkgT1ZFUlJJREU7CiAKICAgICBib29sIGJveFNoYWRvd0NhbkJlQXBwbGllZFRvQmFj
a2dyb3VuZChjb25zdCBGaWxsTGF5ZXImKSBjb25zdDsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCByZW1vdmVDaGlsZChJbmxpbmVCb3gqIGNoaWxkKTsKIAotICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGNhbkFjY29tbW9kYXRlRWxsaXBzaXMoYm9v
bCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoKSBjb25zdCBPVkVSUklERSBG
SU5BTDsKICAgICB2aXJ0dWFsIGZsb2F0IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGZsb2F0
IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRo
LCBmbG9hdCAmdHJ1bmNhdGVkV2lkdGgsIGJvb2wmKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZDJlMGU1NmViMDYxMGVlOGVmNmI3NTkzNmU4YTEx
NWQyMzJkNGUwMC4uMjc4ZGZlNmJjNDU0YTQ5NzRiMThiMjhhZDk3MThmNThlMTM4ODY5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTEyMCw4ICsxMjAsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZUxpbmVCb3hUcmVlKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDaGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSAwKTsKIApAQCAtMjM0LDcgKzIzNCw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHN0
YXJ0QWxpZ25lZE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBzaG91bGRJ
bmRlbnRUZXh0KTsKICAgICBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAgICAgCiAgICAgLy8gQmxvY2sgZmxvd3Mgc3Vi
Y2xhc3MgYXZhaWxhYmxlV2lkdGggdG8gaGFuZGxlIG11bHRpIGNvbHVtbiBsYXlvdXQgKHNocmlu
a2luZyB0aGUgd2lkdGggYXZhaWxhYmxlIHRvIGNoaWxkcmVuIHdoZW4gbGF5aW5nIG91dC4pCiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGNvbnN0IE9WRVJS
SURFIEZJTkFMOwpAQCAtNDUwLDE1ICs0NTAsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYp
IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklERTsKIAotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJ
REU7CiAKICAgICB2b2lkIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgYm9vbCBmaXhlZFBvc2l0aW9uT2JqZWN0c09ubHkgPSBmYWxzZSk7CiAgICAgdm9pZCBt
YXJrRml4ZWRQb3NpdGlvbk9iamVjdEZvckxheW91dElmTmVlZGVkKFJlbmRlck9iamVjdCogY2hp
bGQpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50
SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KTsKICAgICBib29sIHBhaW50Q2hpbGQo
UmVuZGVyQm94KiwgUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50
SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KTsKICAgIApAQCAtNDg4LDcgKzQ4OCw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKSBPVkVSUklERTsKICAgICB2b2lkIGFkanVzdEludHJpbnNpY0xvZ2ljYWxXaWR0aHNG
b3JDb2x1bW5zKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJveEJhc2VsaW5l
KCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGludCBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCBPVkVSUklERTsKICAgICBpbnQgbGFzdExpbmVCb3hCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSkgY29uc3Q7CiAKQEAgLTUwMiw4ICs1MDIsOCBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBu
ZXdTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBi
b29sIGhhc0xpbmVJZkVtcHR5KCkgY29uc3Q7CiAgICAgCkBAIC01NTksNyArNTU5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJlbmRlckJs
b2NrKiB0b0Jsb2NrLCBib29sIGZ1bGxSZW1vdmVJbnNlcnQpOwogCiAgICAgdm9pZCBhZGRDaGls
ZFRvQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQpOwotICAgIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJP
YmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBPVkVSUklERTsKICAgICB2b2lkIGFkZENoaWxk
VG9Bbm9ueW1vdXNDb2x1bW5CbG9ja3MoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCk7CiAKICAgICB2b2lkIGFkZENoaWxkSWdub3JpbmdBbm9ueW1vdXND
b2x1bW5CbG9ja3MoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0
IGdldENsZWFyRGVsdGEoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCB5UG9zKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXZv
aWRzRmxvYXRzKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBib29sIGhhc092ZXJoYW5naW5nRmxv
YXRzKCkgeyByZXR1cm4gcGFyZW50KCkgJiYgIWhhc0NvbHVtbnMoKSAmJiBjb250YWluc0Zsb2F0
cygpICYmIGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbSgpID4gbG9naWNhbEhlaWdodCgpOyB9CiAg
ICAgYm9vbCBoYXNPdmVyaGFuZ2luZ0Zsb2F0KFJlbmRlckJveCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IGJhY2IzMDk1ZDU5NTdlNTBlMzhjNzI2YTU1MGE2OTEwZDc2
NGJiZmEuLjk2M2RkMjU5NmM3YzMyYjM5N2RmMjNkMDA3MjVjODQ2Y2E1Nzc4MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIwOCw4ICsyMDgsOCBAQCBwdWJsaWM6CiAK
ICAgICAvLyBJRSBleHRlbnNpb25zLiBVc2VkIHRvIGNhbGN1bGF0ZSBvZmZzZXRXaWR0aC9IZWln
aHQuICBPdmVycmlkZGVuIGJ5IGlubGluZXMgKFJlbmRlckZsb3cpCiAgICAgLy8gdG8gcmV0dXJu
IHRoZSByZW1haW5pbmcgd2lkdGggb24gYSBnaXZlbiBsaW5lIChhbmQgdGhlIGhlaWdodCBvZiBh
IHNpbmdsZSBsaW5lKS4KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25z
dCB7IHJldHVybiB3aWR0aCgpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIGhlaWdodCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9m
ZnNldFdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gd2lkdGgoKTsgfQorICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBoZWln
aHQoKTsgfQogCiAgICAgdmlydHVhbCBpbnQgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSBjb25z
dCBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIGludCBwaXhlbFNuYXBwZWRPZmZzZXRIZWln
aHQoKSBjb25zdCBPVkVSUklERSBGSU5BTDsKQEAgLTI4OCwxOSArMjg4LDE5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgY29uc3QgeyBy
ZXR1cm4gbWFyZ2luQmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2Vk
TWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgCiAgICAgTGF5b3V0UmVjdCByZWZsZWN0aW9uQm94KCkgY29uc3Q7CiAgICAg
aW50IHJlZmxlY3Rpb25PZmZzZXQoKSBjb25zdDsKICAgICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhl
IG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmVj
dCBpbiB0aGUgcmVmbGVjdGlvbi4KICAgICBMYXlvdXRSZWN0IHJlZmxlY3RlZFJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBMYXlvdXRV
bml0IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFVuaXQgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBMYXlvdXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW5hbWUgdGhlc2UgYmFjayB0byBvdmVycmlk
ZUxvZ2ljYWxIZWlnaHQvV2lkdGggYW5kIGhhdmUgdGhlbSBzdG9yZQogICAgIC8vIHRoZSBib3Jk
ZXItYm94IGhlaWdodC93aWR0aCBsaWtlIHRoZSByZWd1bGFyIGhlaWdodC93aWR0aCBhY2Nlc3Nv
cnMgb24gUmVuZGVyQm94LgpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyQ29udGFpbmluZ0Jsb2NrT3ZlcnJpZGVTaXplKCk7CiAgICAgdm9pZCBjbGVhck92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKIAotICAgIHZpcnR1YWwgTGF5
b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBv
aW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFs
IExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlv
dXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgCiAgICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hT
aXppbmcoTGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RCb3Jk
ZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgaGVpZ2h0KSBjb25zdDsK
QEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBhaW50RHVyaW5nTGF5b3V0
SWZNb3ZlZChjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRPdmVy
aGFuZ2luZ0Zsb2F0cyhib29sIHBhaW50QWxsRGVzY2VuZGFudHMpOwogCi0gICAgdmlydHVhbCBM
YXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29u
dGVudCgpIGNvbnN0IE9WRVJSSURFOwogICAgIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9n
aWNhbEhlaWdodEZvckNvbnRlbnQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGUpIGNvbnN0Owog
CiAgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50SW5S
ZWdpb24oUmVuZGVyUmVnaW9uKikgY29uc3Q7CkBAIC00NzAsNyArNDcwLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzVW5zcGxpdHRhYmxlU2Nyb2xsaW5nT3ZlcmZsb3coKSBjb25zdDsKICAgICBi
b29sIGlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBM
YXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5
b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCk7CisgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5p
dCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIExh
eW91dFJlY3Qgb3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIFJl
bmRlclJlZ2lvbiosIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3JlT3Zlcmxh
eVNjcm9sbGJhclNpemUsIFBhaW50UGhhc2UgPSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kKTsK
ICAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3ZlcmZsb3dDbGlwUmVjdEZvckNoaWxkTGF5ZXJzKGNv
bnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyUmVnaW9uKiByZWdpb24sIE92ZXJsYXlT
Y3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkgeyByZXR1cm4gb3ZlcmZsb3dDbGlwUmVj
dChsb2NhdGlvbiwgcmVnaW9uLCByZWxldmFuY3kpOyB9CkBAIC00ODMsNyArNDgzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZp
cnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVj
dCogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwg
Y29uc3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKIAogICAgIC8vIENhbGxlZCB3aGVuIGEgcG9z
aXRpb25lZCBvYmplY3QgbW92ZXMgYnV0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgY2hhbmdlIHNpemUu
ICBBIHNpbXBsaWZpZWQgbGF5b3V0IGlzIGF0dGVtcHRlZAogICAgIC8vIHRoYXQganVzdCB1cGRh
dGVzIHRoZSBvYmplY3QncyBwb3NpdGlvbi4gSWYgdGhlIHNpemUgZG9lcyBjaGFuZ2UsIHRoZSBv
YmplY3QgcmVtYWlucyBkaXJ0eS4KQEAgLTUwMCw3ICs1MDAsNyBAQCBwdWJsaWM6CiAKICAgICBM
YXlvdXRSZWN0IG1hc2tDbGlwUmVjdCgpOwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsK
IAogICAgIFJlbmRlckJsb2NrKiBvdXRlcm1vc3RCbG9ja0NvbnRhaW5pbmdGbG9hdGluZ09iamVj
dCgpOwogCkBAIC01MjEsNyArNTIxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNEZXByZWNhdGVk
RmxleEl0ZW0oKSBjb25zdCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZ09yT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0RlcHJlY2F0ZWRG
bGV4aWJsZUJveCgpOyB9CiAgICAgYm9vbCBpc0ZsZXhJdGVtSW5jbHVkaW5nRGVwcmVjYXRlZCgp
IGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPmlzRmxleGlibGVCb3hJbmNsdWRpbmdE
ZXByZWNhdGVkKCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3Np
dGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5l
SGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9k
ZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0TGVmdCgp
IGNvbnN0IE9WRVJSSURFOwpAQCAtNjAxLDEwICs2MDEsMTAgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdT
dHlsZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxs
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGcm9tU3R5bGUoKSBPVkVSUklERTsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgaXQg
Y291bGQgbm90IGNoZWFwbHkgY29tcHV0ZSB0aGUgZXh0ZW50IChlLmcuIGZpeGVkIGJhY2tncm91
bmQpLCBpbiB3aGljaCBjYXNlIHRoZSByZXR1cm5lZCByZWN0IG1heSBiZSBpbmNvcnJlY3QuCkBA
IC02MzQsNyArNjM0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJG
bGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqLCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBU
cmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9j
YWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IE9WRVJS
SURFOwogCiAgICAgdm9pZCBwYWludFJvb3RCb3hGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
CmluZGV4IDkyNWVlYWEzNjdhZWM1ODk2MGZmYWIzMDZkZjFjNGU3NjM0MDcwN2MuLjE5M2Q3Y2M2
M2Q2NjY2MjI0MmI4ODc2ZDQxYmI2NGUzNmFkMTVmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKFRpbWVyPFJlbmRl
ckJveE1vZGVsT2JqZWN0PiopOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRl
KFNlbGVjdGlvblN0YXRlIHMpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShT
ZWxlY3Rpb25TdGF0ZSkgT1ZFUlJJREU7CiAKICAgICBib29sIGNhbkhhdmVCb3hJbmZvSW5SZWdp
b24oKSBjb25zdCB7IHJldHVybiAhaXNGbG9hdGluZygpICYmICFpc1JlcGxhY2VkKCkgJiYgIWlz
SW5saW5lKCkgJiYgIWhhc0NvbHVtbnMoKSAmJiAhaXNUYWJsZUNlbGwoKSAmJiBpc1JlbmRlckJs
b2NrKCkgJiYgIWlzUmVuZGVyU1ZHQmxvY2soKTsgfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJv
eWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCiAg
ICAgY2xhc3MgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkgewogICAgIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAppbmRleCBlZWZhOGU1OWM3MzQ1NTcxMDMyN2Mw
MzJmZWMyYjRmZmVmNDI0NDBmLi5lMzVlMmE1MmIwNzNhOTZhNmRjY2MyNTgxZThiMjc2NmNiMTEw
YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCkBAIC00MiwxNyAr
NDIsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigp
IGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVj
dCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCAqYmVmb3JlQ2hpbGQgPSAwKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqKSB7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVj
dCAqYmVmb3JlQ2hpbGQgPSAwKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hp
bGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUxlZnRv
dmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2b2lkIHNldHVwSW5uZXJTdHlsZShSZW5kZXJTdHlsZSopOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
cm9tRWxlbWVudCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVHZW5lcmF0
ZWRDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cm9s
Q2xpcCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY29u
dHJvbENsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGhhc0NvbnRyb2xDbGlwKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjb250cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKICAgICBTdHJp
bmcgdGV4dCgpIGNvbnN0OwpAQCAtNjMsMTIgKzYzLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRl
ckJ1dHRvbiI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJCdXR0b24oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlmRW1wdHko
KSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxl
UmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxSZW5kZXJCdXR0
b24+Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKaW5kZXgg
OWYyNGZjYWExNmQ0NDdlYmM3NTM3YWYxNzMzYTkyNjdkOTVkZDQzOC4uNDM5ZGE3Yjg0MWI3NGQx
MDNhYWRmMDNkNDUyNDRjYzVmMDQzZjE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmgKQEAgLTQzLDE2ICs0MywxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgZWxlbWVudCgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwogCi0gICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZpZWxkU2V0
IjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuICJSZW5kZXJGaWVsZFNldCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNldCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29s
IHJlbGF5b3V0Q2hpbGRyZW4pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7Ci0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRz
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiB9OwogCiBpbmxpbmUgUmVuZGVyRmll
bGRzZXQqIHRvUmVuZGVyRmllbGRzZXQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCmluZGV4IDUx
NzAyNTYzNjNkNGM4YTNjNDA3ZTlmOGQ5N2JhZjNlNDNjYWIwMTQuLmY2YjI3NDRjNzMxMDAwNTFk
NmZmNzc4N2I2YmJiZDk3YjI4NjJiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCkBAIC00NiwxOSArNDYsMTkgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRDb250cm9sKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZpbGVVcGxvYWRDb250cm9sIjsgfQorICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbCI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVJlcGxhY2Vk
V2l0aElubGluZVJ1bkluKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExh
eW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGludCBtYXhGaWxlbmFtZVdp
ZHRoKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKIAogICAgIEhU
TUxJbnB1dEVsZW1lbnQqIHVwbG9hZEJ1dHRvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDVlYTljMGJhMGMwMjUyMzI2MjQx
NjE1YTI4ZTc3MWIxMTMwZDFmNWIuLjI1ZGJjNTFlYjRmOWZkZTdjZTgzY2MwNjZiYzYxZjJiZWQw
ZDQwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAg
IGVudW0gRmxleFNpZ24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmgKaW5kZXggMDkzMmVhODJjYzk0NWNkODY2Mjg5YTM1ZDQ0ZjNiNzM5NTRkODk3My4uOTQw
ZDRkMTQ2MTk5MmU4OWU0YTExMzA1MGFiY2YwMTViMTc4M2IwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVGbG93VGhyZWFkU3R5
bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAotICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHJlcGFpbnRSZWN0YW5nbGVJblJlZ2lv
bnMoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlKSBjb25zdDsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCmluZGV4IGZiZTFkNjlkNWFh
ODgwMDM3ZDRjMDE4OTQ4YmY0MzcxMmY5Yzg1NTcuLjRhMThhMGI0OGI2ZGY2N2RhZmUyYjEyZGM3
NGM3YjUxMGVlYzFlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGdWxsU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxT
Y3JlZW4uaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuIEZJTkFMIDog
cHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyRnVs
bFNjcmVlbiogY3JlYXRlQW5vbnltb3VzKERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZW5kZXJGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVu
IjsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckZ1bGxTY3JlZW4oKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4iOyB9CiAKICAgICB2b2lk
IHNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrKik7CiAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9s
ZGVyKCkgeyByZXR1cm4gbV9wbGFjZWhvbGRlcjsgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyRnVsbFNjcmVlbigpOwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgT1ZF
UlJJREU7CiAKIHByb3RlY3RlZDoKICAgICBSZW5kZXJCbG9jayogbV9wbGFjZWhvbGRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNDEzYWU0MTIxNGJlMDNkZDQx
ZTYzMTgyNDk4NzA3Y2RhMzc3MDViNy4uZWEzZWFjMDgyNWYyNmRkNDE1MTllMWY3YTg0YTAzZDQz
ZTNlNzBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTY5LDI1
ICs2OSwyNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIE9WRVJSSURFIEZJTkFMOwogCi0g
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJl
Y3QqID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIs
IGNvbnN0IEludFJlY3QqID0gMCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHBhaW50SW50b1JlY3Qo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFIEZJTkFMOwotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKQorICAgIHZpcnR1
YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIE9WRVJSSURFCiAgICAgewogICAgICAgICBp
ZiAobV9pbWFnZVJlc291cmNlKQogICAgICAgICAgICAgaW1hZ2VDaGFuZ2VkKG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2VQdHIoKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAi
UmVuZGVySW1hZ2UiOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJbWFnZSgpIGNvbnN0IE9W
RVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFJl
cGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQmFja2dyb3VuZElzS25vd25Ub0JlT2JzY3VyZWQo
KSBPVkVSUklERSBGSU5BTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApp
bmRleCAyOWViNWM5NTlhMjQwNTI2NDZlOTg2ZGIzMWM0YmIwNmY3ZDhjNzQwLi5hNzQwYjNhZjc2
ZGVkMWY5NzViNzEyODUyOTA1NTY1MzlkZTg3OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaApAQCAtMzEzLDcgKzMxMyw3IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xh
c3MgUmVuZGVyUmVwbGljYTsKIAogICAgIGV4cGxpY2l0IFJlbmRlckxheWVyKFJlbmRlckxheWVy
TW9kZWxPYmplY3QmKTsKLSAgICB+UmVuZGVyTGF5ZXIoKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJM
YXllcigpOwogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKIApAQCAtNDExLDkgKzQxMSw5IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
dmVydGljYWxTY3JvbGxiYXIoKTsgfQogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgb3ZlcnJpZGVz
Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJl
dHVybiBtX2hCYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3Jv
bGxiYXIoKSBjb25zdCB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFNjcm9s
bGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OworICAgIHZpcnR1YWwg
U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9oQmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFy
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92QmFyLmdldCgpOyB9CisgICAgdmlydHVhbCBT
Y3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBPVkVSUklERTsK
IAogICAgIGludCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKE92ZXJsYXlTY3JvbGxiYXJTaXplUmVs
ZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwogICAgIGludCBob3Jp
em9udGFsU2Nyb2xsYmFySGVpZ2h0KE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdu
b3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwpAQCAtNzYxLDEwICs3NjEsMTAgQEAgcHVi
bGljOgogICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2luZy5nZXQoKTsgfQogICAgIFJlbmRlckxheWVyQmFja2luZyogZW5zdXJlQmFja2luZygp
OwogICAgIHZvaWQgY2xlYXJCYWNraW5nKGJvb2wgbGF5ZXJCZWluZ0Rlc3Ryb3llZCA9IGZhbHNl
KTsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsaW5nKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVmVydGljYWxTY3Jv
bGxiYXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xs
Q29ybmVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9s
bGluZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJG
b3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBHcmFw
aGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0
IE9WRVJSSURFOwogICAgIGJvb2wgbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Q7CiAg
ICAgYm9vbCBuZWVkc0NvbXBvc2l0aW5nTGF5ZXJzUmVidWlsdEZvckNsaXAoY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpIGNvbnN0OwpAQCAt
MTAwMywzMSArMTAwMywzMSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRCZVNlbGZQYWlu
dGluZ0xheWVyKCkgY29uc3Q7CiAKLSAgICBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikg
Y29uc3Q7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3Qg
T1ZFUlJJREU7CiAgICAgCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3Qg
SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFJl
Y3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0
RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdW
aWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3
KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBJ
bnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xs
YmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXpl
KFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xs
T2Zmc2V0KGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0OwotICAgIHZpcnR1YWwgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9u
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdDsKLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250
ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycykgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgdmlzaWJs
ZUhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IHZpc2libGVXaWR0aCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIElu
dFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEludFBvaW50IGxhc3RL
bm93bk1vdXNlUG9zaXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNj
cm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0JikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25z
dCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRQ
b2ludCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFBvaW50
IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFNp
emUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJ
bnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QoVmlzaWJsZUNvbnRlbnRSZWN0SW5j
bHVkZXNTY3JvbGxiYXJzKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxl
SGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0
aW9ucygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0
aW9ucygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJl
YUJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBSZWN0YW5nbGUgZW5jb21w
YXNzaW5nIHRoZSBzY3JvbGwgY29ybmVyIGFuZCByZXNpemVyIHJlY3QuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXggNWI3ZjliYWIxMzFhNmU1YmQ4ZjYx
MzNjNDgwODY2M2Y0YmE3Yjc3ZC4uOWI1ODkyN2Q1ZWVmYjA4NjA4MWY4MjM1Y2YzZjFiYTRlN2Ux
ZTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAt
MzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyTGluZUJyZWFrKCk7CiAK
ICAgICAvLyBGSVhNRTogVGhlIGxpZXMgaGVyZSBrZWVwIHJlbmRlciB0cmVlIGR1bXAgYmFzZWQg
dGVzdCByZXN1bHRzIHVuY2hhbmdlZC4KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2lzV0JSID8gIlJlbmRlcldvcmRCcmVhayIgOiAiUmVuZGVy
QlIiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9pc1dCUiA/ICJSZW5kZXJXb3JkQnJlYWsiIDogIlJlbmRlckJSIjsgfQog
CiAgICAgdmlydHVhbCBib29sIGlzV0JSKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pc1dC
UjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCBkMTAw
Y2ZiMGE4NzIxNzU1NmU1YjhkNTBhZDQzM2Y0MGE4NzY0MTNmLi5jNWJhZjBjZmFiZTQ3ZjI5MTBk
OWFkYjNlMjUyZTcwYmU2MzQwMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmgKQEAgLTYyLDQ0ICs2Miw0NCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZWxlbWVudCgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwogCi0gICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckxpc3RCb3giOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gIlJlbmRlckxpc3RCb3giOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0Qm94KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVs
ZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVSZXBsYWNlZFdpdGhJbmxpbmVSdW5JbigpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cm9sQ2xpcCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY29udHJvbENsaXBSZWN0KGNv
bnN0IExheW91dFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0NvbnRyb2xDbGlw
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjb250cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5PdmVyZmxvd0NvbnRyb2wo
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbkluQ29udGFpbmVyLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOworICAgIHZpcnR1YWwgYm9vbCBp
c1BvaW50SW5PdmVyZmxvd0NvbnRyb2woSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSwgRWxlbWVudCoqIHN0b3BF
bGVtZW50ID0gMCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvZ2ljYWxTY3JvbGwoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIg
PSAxLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQgPSAwKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2Fs
V2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9u
TW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25z
dCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJ
bnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQXV0b3Njcm9sbCgpOworICAgIHZpcnR1
YWwgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBdXRvc2Nyb2xsKCkgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFuU2Nyb2xsKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYW5TY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKLQotICAg
IHZpcnR1YWwgaW50IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGludCBzY3JvbGxMZWZ0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsVG9wKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsV2lkdGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGlu
dCBzY3JvbGxIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGVmdChp
bnQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxUb3AoaW50KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGlu
dCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBp
bnQgc2Nyb2xsTGVmdCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFRv
cCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbFdpZHRoKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExlZnQoaW50KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsVG9wKGludCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wg
bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmluZGV4IDUwODk0YTg4ZDE4NDc3NWIyZmU2
ZTUzMWUxMzk0ZGE4MGZiZGM4OTMuLmIxZmYyOWQyNjU0MjZhMjQ5NzVkMzI1NzI3ZTg1OThlYzU1
MTVlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRl
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCkBAIC01
NSwyNyArNTUsMjcgQEAgcHVibGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBpdGVtQ291bnRGb3JP
cmRlcmVkTGlzdChjb25zdCBIVE1MT0xpc3RFbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckxpc3RJ
dGVtIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuICJSZW5kZXJMaXN0SXRlbSI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0xp
c3RJdGVtKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RJ
dGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCBib29sIGlz
RW1wdHkoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHBv
c2l0aW9uTGlzdE1hcmtlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5
bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNo
aWxkcmVuKCk7CisgICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkg
T1ZFUlJJREU7CiAKICAgICB2b2lkIGluc2VydE9yTW92ZU1hcmtlclJlbmRlcmVySWZOZWVkZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCmluZGV4IDBm
OTc0ODBiODViM2U1OGY0YTMzMWQ5M2FkMzQ1YTcwMjQ1MmVmOTguLmNiMTJlNzMyZWEwYzlhZmI2
MzM3ZmE4MWRiY2VlNTdlZWI1ZTRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaApAQCAtNTEsMzUgKzUxLDM1IEBAIHByaXZhdGU6CiAKICAgICBleHBs
aWNpdCBSZW5kZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJik7CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTGlzdE1hcmtlciI7
IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiAiUmVuZGVyTGlzdE1hcmtlciI7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xp
c3RNYXJrZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzTGlz
dE1hcmtlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBl
ZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBJbmxpbmVCb3gqIGNyZWF0ZUlubGluZUJveCgpOworICAgIHZpcnR1YWwgSW5s
aW5lQm94KiBjcmVhdGVJbmxpbmVCb3goKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Q7Ci0gICAgdmlydHVh
bCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGlu
ZSkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBPVkVSUklERTsK
IAotICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiAhaXNJbWFn
ZSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3Rh
dGUpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25TdGF0ZSkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xp
cFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
QmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICB2b2lkIHVwZGF0ZU1hcmdpbnMoKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnQoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogbmV3U3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CisgICAgdmlydHVh
bCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBuZXdTdHlsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIAog
ICAgIEludFJlY3QgZ2V0UmVsYXRpdmVNYXJrZXJSZWN0KCk7CiAgICAgTGF5b3V0UmVjdCBsb2Nh
bFNlbGVjdGlvblJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmgKaW5kZXggYzBjNmM2N2NiOTZiNmZkZGYxMmU2NmEwN2E4NzI0NzRiYTI2ZjAzZi4uOTg0OTFh
YzIxNzM1NTJhNmM0YjU4MmRiY2FjNmIyMDBlYWNhMGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTYxLDI3ICs2MSwyNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0IFdURl9ERUxFVEVEX0ZVTkNUSU9OOwogCi0g
ICAgdmlydHVhbCBib29sIGlzTWVudUxpc3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
dmlydHVhbCBib29sIGlzTWVudUxpc3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGls
ZChSZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlc0Fub255bW91c1dyYXBw
ZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJl
bmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVt
ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgT1ZFUlJJREU7CiAK
LSAgICB2aXJ0dWFsIExheW91dFJlY3QgY29udHJvbENsaXBSZWN0KGNvbnN0IExheW91dFBvaW50
JikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhhc0NvbnRyb2xDbGlwKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjb250cm9sQ2xpcFJlY3QoY29uc3Qg
TGF5b3V0UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJv
bENsaXAoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29s
IGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4oKSBjb25z
dCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IHsgcmV0dXJuICJSZW5kZXJNZW51TGlzdCI7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVyTWVudUxpc3QiOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQ
cm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgLy8gUG9wdXBNZW51Q2xpZW50IG1ldGhvZHMKICAgICB2aXJ0dWFs
IHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlT25DaGFuZ2Ug
PSB0cnVlKSBPVkVSUklERTsKQEAgLTExNCw3ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNj
cm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgT1ZFUlJJREU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlmRW1wdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIGhhc0xpbmVJZkVtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgLy8gRmxleGJveCBkZWZpbmVzIGJhc2VsaW5lcyBkaWZmZXJlbnRseSB0
aGFuIHJlZ3VsYXIgYmxvY2tzLgogICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwg
bWVudWxpc3RzIG5lZWQgdG8gZG8gdGhlIHJlZ3VsYXIgYmxvY2sgYmVoYXZpb3IuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCmluZGV4IGE2OTk5ZGYxZTNhNGYxOTQ4MzcyZmNk
YTc3MjY2ZmUwNTZlMDhmYTMuLmY2ZGFhOGU3MDFiNWU3YjU4YjNkMTM4ODM5NjJiZTk5YWJhNjEw
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCkBAIC0zNiwxNSArMzYs
MTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlck1ldGVyKCk7CiAKICAgICBIVE1MTWV0
ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
RnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBPVkVS
UklERTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVu
aXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29t
cHV0ZWRWYWx1ZXMmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJNZXRlciI7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNNZXRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuICJSZW5kZXJNZXRlciI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNZXRlcigpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNG
b3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogfTsKIAogaW5saW5lIFJlbmRlck1ldGVyKiB0b1JlbmRlck1ldGVyKFJlbmRlck9iamVj
dCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDY5
YjA0NGY2YTk1ZGRkYjE2NDFhNzhjMDA2ZjM5MjU5M2Q0ZjgwNGEuLjNhNWRkMzk2ZjFkYjBmZGI2
N2Q3MDM3MGNjYmFjZWI0NWM4ZGZiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKQEAgLTg3NCw5ICs4NzQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgcHJl
dmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGludCBjdXJyZW50KSBjb25zdDsKICAgICB2
aXJ0dWFsIGludCBuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IDApOworICAg
IHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9
IDApIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdl
UHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIHsgfQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVuZGVy
SW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlbmRlckltYWdlKENh
Y2hlZEltYWdlKikgT1ZFUlJJREU7CiAKICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYg
c3BvcywgaW50JiBlcG9zKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmgKaW5kZXggYTdjNjUxNmMzOWMyOTk4OGQ0OTBmZWM0MjI5Y2RiNzU5ZWYw
M2M2My4uZjQ1Nzk3MDg2OWNhNzljY2Y2NDY4ODc5MGVkNWEyZWI5NzEwMGM5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflJlbmRlclJlcGxhY2VkKCk7CiAKICAgICB2aXJ0dWFsIExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQg
ID0gQ29tcHV0ZUFjdHVhbCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNvbnN0IE9WRVJSSURFOwogCiAg
ICAgTGF5b3V0UmVjdCByZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJp
bnNpY1NpemUpIGNvbnN0OwogCkBAIC00MSwyMiArNDEsMjIgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ry
b3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbnRy
aW5zaWNTaXplKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV9pbnRyaW5zaWNTaXpl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZs
b2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQ
ZXJjZW50YWdlSW50cmluc2ljU2l6ZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJ
bnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91Ymxl
JiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lk
dGgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbmlt
dW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFVuaXQoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpIE9WRVJSSURFOwogCiAg
ICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAg
IHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKICAgICB2b2lkIHNldEludHJpbnNpY1NpemUo
Y29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkgeyBtX2ludHJpbnNpY1NpemUgPSBpbnRy
aW5zaWNTaXplOyB9CiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7CkBA
IC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREUgRklOQUw7CiAgICAg
Ci0gICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBPVkVSUklERSBGSU5BTDsKICAg
ICB2b2lkIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KFJlbmRlckJv
eCosIEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvLCBi
b29sJiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuaAppbmRleCA0ODUyM2E3NjcxNGY1YTFiNzNhYTYyZWVjZGFjN2I1
ZGE5MjVmYWViLi4wMmI1ZDViY2ZlZTgwMDVhY2Q1ZWU4Y2Y2YTFlMTBmODRmMTI1ZDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCkBAIC0zOSwxNSArMzksMTUgQEAg
cHVibGljOgogICAgIGJvb2wgaW5EcmFnTW9kZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTbGlk
ZXIiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuICJSZW5kZXJTbGlkZXIiOyB9CisgICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVJlcGxh
Y2VkV2l0aElubGluZVJ1bkluKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGludCBi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlv
dXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgYm9vbCBy
ZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwogfTsKIAog
aW5saW5lIFJlbmRlclNsaWRlciogdG9SZW5kZXJTbGlkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IGE5NzZmYjQ5MDJhOTkw
MmI0NDQ3MmNhNTU1NmM4N2YyY2VmZGQ2YmUuLjExNDJkYzkxN2JiMjRmNTJlZjA5NTY4MDE5NDM4
ZGE5NmYzZWMxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC01
MiwzMyArNTIsMzMgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY29sbGFwc2VCb3JkZXJzKCkg
Y29uc3QgeyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyQ29sbGFwc2UoKTsgfQogCi0gICAgaW50IGJv
cmRlclN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJTdGFydDsgfQotICAgIGludCBib3Jk
ZXJFbmQoKSBjb25zdCB7IHJldHVybiBtX2JvcmRlckVuZDsgfQotICAgIGludCBib3JkZXJCZWZv
cmUoKSBjb25zdDsKLSAgICBpbnQgYm9yZGVyQWZ0ZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGlu
dCBib3JkZXJTdGFydCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm9yZGVyU3RhcnQ7IH0K
KyAgICB2aXJ0dWFsIGludCBib3JkZXJFbmQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Jv
cmRlckVuZDsgfQorICAgIHZpcnR1YWwgaW50IGJvcmRlckJlZm9yZSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgaW50IGJvcmRlckFmdGVyKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICBp
bnQgYm9yZGVyTGVmdCgpIGNvbnN0CisgICAgdmlydHVhbCBpbnQgYm9yZGVyTGVmdCgpIGNvbnN0
IE9WRVJSSURFCiAgICAgewogICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBib3JkZXJTdGFydCgpIDogYm9yZGVyRW5kKCk7CiAgICAgICAgIHJldHVybiBzdHls
ZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVyQWZ0ZXIoKSA6IGJvcmRl
ckJlZm9yZSgpOwogICAgIH0KIAotICAgIGludCBib3JkZXJSaWdodCgpIGNvbnN0CisgICAgdmly
dHVhbCBpbnQgYm9yZGVyUmlnaHQoKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4g
c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVyRW5kKCkgOiBib3JkZXJT
dGFydCgpOwogICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSA/IGJvcmRlckJlZm9yZSgpIDogYm9yZGVyQWZ0ZXIoKTsKICAgICB9CiAKLSAgICBpbnQg
Ym9yZGVyVG9wKCkgY29uc3QKKyAgICB2aXJ0dWFsIGludCBib3JkZXJUb3AoKSBjb25zdCBPVkVS
UklERQogICAgIHsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSA/IGJvcmRlckFmdGVyKCkgOiBib3JkZXJCZWZvcmUoKTsKICAgICAgICAgcmV0dXJuIHN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlclN0YXJ0KCkgOiBib3JkZXJF
bmQoKTsKICAgICB9CiAKLSAgICBpbnQgYm9yZGVyQm90dG9tKCkgY29uc3QKKyAgICB2aXJ0dWFs
IGludCBib3JkZXJCb3R0b20oKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gc3R5
bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGJvcmRlckJlZm9yZSgpIDogYm9y
ZGVyQWZ0ZXIoKTsKQEAgLTMwMCw3ICszMDAsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQg
Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJiBz
dHlsZUxvZ2ljYWxIZWlnaHQpOwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG92ZXJmbG93Q2xp
cFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qLCBPdmVybGF5
U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBQYWlu
dFBoYXNlID0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCkgT1ZFUlJJREUgRklOQUw7Ci0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IG92ZXJmbG93Q2xpcFJlY3RGb3JDaGlsZExheWVycyhjb25zdCBM
YXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBPdmVybGF5U2Nyb2xs
YmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIHsgcmV0dXJuIFJlbmRlckJveDo6b3ZlcmZsb3dD
bGlwUmVjdChsb2NhdGlvbiwgcmVnaW9uLCByZWxldmFuY3kpOyB9CisgICAgdmlydHVhbCBMYXlv
dXRSZWN0IG92ZXJmbG93Q2xpcFJlY3RGb3JDaGlsZExheWVycyhjb25zdCBMYXlvdXRQb2ludCYg
bG9jYXRpb24sIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2
YW5jeSByZWxldmFuY3kpIE9WRVJSSURFIHsgcmV0dXJuIFJlbmRlckJveDo6b3ZlcmZsb3dDbGlw
UmVjdChsb2NhdGlvbiwgcmVnaW9uLCByZWxldmFuY3kpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKSBPVkVSUklERSBGSU5BTDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IGNjMjNhODQyYTdjMDcwNzU2NjA0
ZDliMjIzZTdhNGIwNDYyMTkxZjIuLmJmODNjM2EwYTBlYWExYzBhMGZiNTM4YjlmZTYzNDg1Zjky
NjgyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAg
LTEwOSwyMSArMTA5LDIxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2VsbExvZ2ljYWxXaWR0
aChpbnQgY29uc3RyYWluZWRMb2dpY2FsV2lkdGgpOwogCi0gICAgdmlydHVhbCBpbnQgYm9yZGVy
TGVmdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGJvcmRlclJpZ2h0KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBpbnQgYm9yZGVyVG9wKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgYm9yZGVyQm90
dG9tKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgYm9yZGVyU3RhcnQoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGludCBib3JkZXJFbmQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBib3JkZXJCZWZv
cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBib3JkZXJBZnRlcigpIGNvbnN0OworICAgIHZp
cnR1YWwgaW50IGJvcmRlckxlZnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBi
b3JkZXJSaWdodCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGJvcmRlclRvcCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGJvcmRlckJvdHRvbSgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgaW50IGJvcmRlclN0YXJ0KCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBpbnQgYm9yZGVyRW5kKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBp
bnQgYm9yZGVyQmVmb3JlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgYm9yZGVy
QWZ0ZXIoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZvaWQgY29sbGVjdEJvcmRlclZhbHVlcyhS
ZW5kZXJUYWJsZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWVzJikgY29uc3Q7CiAgICAgc3RhdGljIHZv
aWQgc29ydEJvcmRlclZhbHVlcyhSZW5kZXJUYWJsZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWVzJik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50JikgT1ZFUlJJREU7CiAKICAgICBib29sIGFsaWduTGVmdFJpZ2h0Qm9yZGVyUGFp
bnRSZWN0KGludCYgbGVmdFhPZmZzZXQsIGludCYgcmlnaHRYT2Zmc2V0KTsKICAgICBib29sIGFs
aWduVG9wQm90dG9tQm9yZGVyUGFpbnRSZWN0KGludCYgdG9wWU9mZnNldCwgaW50JiBib3R0b21Z
T2Zmc2V0KTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE92ZXJy
aWRlTG9naWNhbENvbnRlbnRIZWlnaHRGcm9tUm93SGVpZ2h0KExheW91dFVuaXQpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbGJhcnNDaGFuZ2VkKGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckNo
YW5nZWQsIGJvb2wgdmVydGljYWxTY3JvbGxiYXJDaGFuZ2VkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsYmFyc0NoYW5nZWQoYm9vbCBob3Jpem9udGFsU2Nyb2xsYmFyQ2hhbmdlZCwgYm9vbCB2
ZXJ0aWNhbFNjcm9sbGJhckNoYW5nZWQpIE9WRVJSSURFOwogCiAgICAgYm9vbCBjZWxsV2lkdGhD
aGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9jZWxsV2lkdGhDaGFuZ2VkOyB9CiAgICAgdm9pZCBz
ZXRDZWxsV2lkdGhDaGFuZ2VkKGJvb2wgYiA9IHRydWUpIHsgbV9jZWxsV2lkdGhDaGFuZ2VkID0g
YjsgfQpAQCAtMjE5LDI0ICsyMTksMjQgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCk7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBPVkVSUklERTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVuZGVyVGFi
bGVDZWxsIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZUNlbGwiOyB9CisgICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gKGlzQW5vbnlt
b3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlQ2VsbCAoYW5vbnltb3Vz
KSIgOiAiUmVuZGVyVGFibGVDZWxsIjsgfQogCi0gICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxs
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
QmVSZW1vdmVkRnJvbVRyZWUoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVM
b2dpY2FsV2lkdGgoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29y
YXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGJveFNoYWRvd1Nob3Vs
ZEJlQXBwbGllZFRvQmFja2dyb3VuZChCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZs
b3dCb3gqKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zm
c2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zm
c2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wq
IG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDQ5
NzQ3OGY4MDc5NGFjY2I3NDY1NTVlMzhjNmJkMzlhNWViMDBkMzMuLjJmZjA0ODVjN2IxNTM4Mzll
YWY0M2Q5MzFiMTQzOTFjY2JlYTdmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuaApAQCAtMTA2LDEwICsxMDYsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHRy
YW5zZm9ybVRleHQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVh
ZigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcykgT1ZFUlJJREUgRklOQUw7CiAgICAgdmly
dHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQg
PSB0cnVlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3Qo
SW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUgPSAwKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5l
Qm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUg
PSAwKSBPVkVSUklERTsKIAogICAgIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0
dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLT5tYXJnaW5MZWZ0KCksIDApOyB9CiAg
ICAgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChzdHlsZSgpLT5tYXJnaW5SaWdodCgpLCAwKTsgfQpAQCAtMTE5LDggKzExOSw4IEBA
IHB1YmxpYzoKICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3goKSBjb25zdCB7IHJldHVy
biBtX2ZpcnN0VGV4dEJveDsgfQogICAgIElubGluZVRleHRCb3gqIGxhc3RUZXh0Qm94KCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0VGV4dEJveDsgfQogCi0gICAgdmlydHVhbCBpbnQgY2FyZXRNaW5P
ZmZzZXQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdCBPVkVSUklERTsKICAgICB1bnNpZ25lZCBy
ZW5kZXJlZFRleHRMZW5ndGgoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgaW50IHByZXZpb3VzT2Zm
c2V0KGludCBjdXJyZW50KSBjb25zdCBPVkVSUklERSBGSU5BTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggYmQyZTUwYzI3YTQ3NjQ3Yzc4NDg2
YjBmNDM4NmE2NDA3NTAxOGYzNi4uM2EwYTIwMTY3YTdiMDVhMmI1Y2JiZDU5ZTdlY2VkZjBmODgy
NTFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgK
QEAgLTYwLDkgKzYwLDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21w
dXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0
IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiB0
ZXh0QmFzZVN0eWxlKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21F
bGVtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1
ZXMmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogbGF5b3V0U3Bl
Y2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKTsKKyAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxk
cmVuKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCBXVEZf
REVMRVRFRF9GVU5DVElPTjsKQEAgLTcxLDE2ICs3MSwxNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc1RleHRDb250cm9sKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUxlZnRvdmVyQW5vbnltb3Vz
QmxvY2soUmVuZGVyQmxvY2sqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJB
bm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBhdm9pZHNGbG9hdHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCBib29sIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVu
SW4oKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuQmVQcm9ncmFtYXRp
Y2FsbHlTY3JvbGxlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNh
bGNQcm9wYWdhdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGlu
bGluZSBSZW5kZXJUZXh0Q29udHJvbCogdG9SZW5kZXJUZXh0Q29udHJvbChSZW5kZXJPYmplY3Qq
IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCAzOGE0NzA0ZmJjMjRkZGMzM2NjZDZiYmEyYThiY2E2
ZTQ3N2IyMDdmLi44ODQyNDA2MGQxMGM0ZjZjNWNmMDVlOGQyMDczYzYzOTcwYTdkN2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUoSFRNTElucHV0RWxlbWVudCYpOwogICAgIHZpcnR1YWwgflJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpOwogICAgIC8vIEZJWE1FOiBNb3ZlIGNyZWF0ZSpT
dHlsZSgpIHRvIHRoZWlyIGNsYXNzZXMuCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkg
Y29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRl
eHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKIAogICAgIHZvaWQgY2Fwc0xvY2tTdGF0ZU1h
eUhhdmVDaGFuZ2VkKCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIFJlbmRlclRl
eHRDb250cm9sSW5uZXJCbG9jayhFbGVtZW50KiBlbGVtZW50KSA6IFJlbmRlckJsb2NrRmxvdyhl
bGVtZW50KSB7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlmRW1wdHko
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0xpbmVJZkVtcHR5
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCmluZGV4IDNmYzdjMDBmZGU4NDY0
MGU4MzI4ZmRhYWQyMjlmMjcwYzhlZmIyMjEuLjdjNzUwM2IwMDA5ZjIxNjM2NjdlMjY5YTViMmI3
OGRjYzVmMDc5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgUmVuZGVy
QmxvY2sqIGJsb2NrRm9yQWNjb21wYW55aW5nRmlyc3RMZXR0ZXIoKSBjb25zdDsKIAogICAgIHVu
c2lnbmVkIG1fc3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA1
OTdlNWE2MzMxZjk2ZjdhZTViNmFkYjZkNjBjNzkwYWQ0ODA3ZTcwLi42MGZmYmYwYzE5NzI1NDJi
NzYyMzcwOWYwMGM0NDM4OWI5ZmY4YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVwYWludFJlY3Rhbmds
ZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1tZWRp
YXRlID0gZmFsc2UpOwogICAgIHZvaWQgcmVwYWludFZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCiAgICAgZW51bSBTZWxlY3Rpb25S
ZXBhaW50TW9kZSB7IFJlcGFpbnROZXdYT1JPbGQsIFJlcGFpbnROZXdNaW51c09sZCwgUmVwYWlu
dE5vdGhpbmcgfTsKQEAgLTk2LDggKzk2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBwcmludGlu
ZygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIHZvaWQgc2V0TWF4aW1hbE91dGxpbmVTaXplKGludCBvKTsKQEAgLTE1MSw3
ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXlvdXRTdGF0ZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50ID09IDAgJiYgbV9sYXlvdXRTdGF0ZTsg
fQogICAgIExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
U3RhdGU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXRU
ZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwog
CiAgICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUxvZ2ljYWxIZWlnaHQ7IH0KICAgICB2b2lkIHNldFBhZ2VMb2dpY2FsSGVpZ2h0KExheW91dFVu
aXQgaGVpZ2h0KQpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGNoZWNrVHdv
UGFzc0xheW91dEZvckF1dG9IZWlnaHRSZWdpb25zKCkgY29uc3Q7CiAgICAgRmxvd1RocmVhZENv
bnRyb2xsZXImIGZsb3dUaHJlYWRDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogCiAgICAgSW50ZXJ2YWxBcmVuYSogaW50ZXJ2YWxB
cmVuYSgpOwogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFn
cyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5l
cihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJH
ZW9tZXRyeU1hcCYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRl
c0ZsYWdzLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0NvbHVtbnMoaW50IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgK
aW5kZXggY2MyMWRiMzcwMjU5YzJjMGQ4MDRkOTExY2JkNTYyNGVkNGZjYTM3OC4uMTVmODZiY2Fm
Zjg0YTQxYWNhNDczZjU5MzE5ZGQ4ZTcxM2Y1N2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cGFpbnRDdXN0b21IaWdobGlnaHQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25z
dCBBdG9taWNTdHJpbmcmIGhpZ2hsaWdodFR5cGUpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVU
b3AsIExheW91dFVuaXQgbGluZUJvdHRvbSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVCb3R0b20pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
IGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIE9WRVJSSURFIEZJ
TkFMOwogCiAgICAgdXNpbmcgSW5saW5lQm94OjpoYXNTZWxlY3RlZENoaWxkcmVuOwpAQCAtMTk5
LDcgKzE5OSw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBnZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUo
SW5saW5lQm94KiYpIGNvbnN0OwogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogYm94TmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgY2hhciogYm94TmFtZSgp
IGNvbnN0IE9WRVJSSURFOwogI2VuZGlmCiBwcml2YXRlOgogICAgIExheW91dFVuaXQgbGluZVNu
YXBBZGp1c3RtZW50KExheW91dFVuaXQgZGVsdGEgPSAwKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCAyM2I1
NjhkMzljZjE0NmRhNTk0Njk4ODdiMzg0MWM2NTA3ZDgzNzBmLi5jNTgxMTI4ZjNiMTM0MDBkMmE1
NWEzOTU3M2E5MDViYjJhYzRlNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC00Myw5ICs0Myw5IEBAIGNsYXNzIFJl
bmRlck1hdGhNTEJsb2NrIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKICAg
ICBSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50KiBjb250YWluZXIpOwogCi0gICAgdmlydHVhbCBi
b29sIGlzQ2hpbGRBbGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxl
KikgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1M
QmxvY2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TWF0aE1MQmxvY2soKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFJvdygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MTWF0aCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggZGY1MzA4MTYzMTJjOTA5NjczNTBlMWMzZjdmODE5
MTY1NjQ0MjFiZi4uN2JmMzFiNzMyZThiOTgyMTE0YmU3NDY1ODczZTJlYjdlODI0YTlmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uaApAQCAtMzYsMjMgKzM2LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlbmRlck1hdGhNTEZyYWN0aW9uIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1Ymxp
YzoKICAgICBSZW5kZXJNYXRoTUxGcmFjdGlvbihFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgp
IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1i
ZWxsaXNoZWRPcGVyYXRvcigpOworICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVu
ZW1iZWxsaXNoZWRPcGVyYXRvcigpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgaW50IGZp
cnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgZmxvYXQgbGluZVRoaWNr
bmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVRoaWNrbmVzczsgfQotICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOworCiBwcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBPVkVSUklERTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TWF0aE1MRnJhY3Rpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTWF0aE1MRnJhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBmaXhDaGlsZFN0eWxlKFJlbmRlck9iamVjdCogY2hpbGQpOwogICAgIHZpcnR1
YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTWF0aE1MRnJhY3Rpb24iOyB9CisgICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRl
ck1hdGhNTEZyYWN0aW9uIjsgfQogICAgIAogICAgIExheW91dFVuaXQgbV9saW5lVGhpY2tuZXNz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaAppbmRleCA3NDdmMDcwZDkxNWZkMmE5NjM3ZWRmMzQxYTI0NTg2NTEz
MzIwYmY2Li5mMjM3NTlkN2RlN2NmOGEyOGRhNWIwMWE1MmU0ZWU0N2QzYWNhYmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5oCkBAIC0zOCw5ICszOCw5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRv
cihFbGVtZW50Kik7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoRWxlbWVudCosIFVDaGFyIG9w
ZXJhdG9yQ2hhcik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxP
cGVyYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
U3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1l
bnQoKSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1
bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBPVkVSUklERSB7IHJldHVybiB0aGlzOyB9CkBAIC01OCw3
ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICBSZW5kZXJCbG9jayogY3JlYXRlR2x5cGgoVUNoYXIg
Z2x5cGgsIGludCBtYXhIZWlnaHRGb3JSZW5kZXJlciwgaW50IGNoYXJSZWxhdGl2ZSk7CiAgICAg
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MT3BlcmF0b3IgKGFub255bW91cyki
IDogIlJlbmRlck1hdGhNTE9wZXJhdG9yIjsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVy
TWF0aE1MT3BlcmF0b3IgKGFub255bW91cykiIDogIlJlbmRlck1hdGhNTE9wZXJhdG9yIjsgfQog
CiAgICAgaW50IGdseXBoSGVpZ2h0Rm9yQ2hhcmFjdGVyKFVDaGFyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCAyMTUzY2YzNzUyZTExNGQ4
ZTdkNTYwZGJhNTVhZjMyNTFhODJhNWY0Li5kNGVjMzJkY2UyOTg0YjFjOGE2YmY2MjIxNDM1ZTY0
ODk2ZmM0OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0
aCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxC
YXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlKiwgZG91YmxlKSBjb25zdCBPVkVSUklE
RTsKIAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQmFzaWNTaGFwZVJl
Y3RhbmdsZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIEJhc2ljU2hhcGVSZWN0YW5nbGVUeXBlOyB9CiBwcml2YXRlOgogICAgIEJhc2ljU2hh
cGVSZWN0YW5nbGUoKSB7IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqLCBkb3Vi
bGUpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBCYXNpY1NoYXBlQ2lyY2xlVHlwZTsgfQorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gQmFzaWNTaGFwZUNpcmNsZVR5cGU7IH0KIHByaXZhdGU6CiAg
ICAgQmFzaWNTaGFwZUNpcmNsZSgpIHsgfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFw
ZSosIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIEJhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfSAKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEJhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQog
cHJpdmF0ZToKICAgICBCYXNpY1NoYXBlRWxsaXBzZSgpIHsgfQogCkBAIC0xNzAsOSArMTcwLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3Qm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gYmxlbmQoY29u
c3QgQmFzaWNTaGFwZSosIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdp
bmRSdWxlIHdpbmRSdWxlKCkgY29uc3QgeyByZXR1cm4gbV93aW5kUnVsZTsgfQorICAgIHZpcnR1
YWwgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3dpbmRSdWxl
OyB9CiAKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEJhc2ljU2hhcGVQ
b2x5Z29uVHlwZTsgfQorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gQmFzaWNTaGFwZVBvbHlnb25UeXBlOyB9CiBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVQ
b2x5Z29uKCkKICAgICAgICAgOiBtX3dpbmRSdWxlKFJVTEVfTk9OWkVSTykKQEAgLTIxMSw3ICsy
MTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZsb2F0
UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBibGVu
ZChjb25zdCBCYXNpY1NoYXBlKiwgZG91YmxlKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlw
ZTsgfQorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQmFz
aWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsgfQogcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlSW5z
ZXRSZWN0YW5nbGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDhmNzg2ZTk4MTAxMzY5YTUzNDUyYzZkOWMw
ZjkwNDA5NjU5MDIwZTkuLjM5ZGM1OTE1NjM0Mjc1YTA3OWIwODA4MWVkOTRiNjYyYWY0ODVhN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmgKQEAgLTUzLDEyICs1MywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRS
ZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwKikgY29uc3QgT1ZFUlJJ
REUgRklOQUw7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IE9WRVJSSURF
IEZJTkFMOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+
JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRl
c0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9W
RVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVh
bCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBuZXdTdHlsZSkgT1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogCiAgICAgc3RhdGljIGJvb2wgY2hlY2tJbnRlcnNl
Y3Rpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgc3RhdGljIGJvb2wg
Y2hlY2tFbmNsb3N1cmUoUmVuZGVyT2JqZWN0KiwgY29uc3QgRmxvYXRSZWN0Jik7CkBAIC03Niw3
ICs3Niw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgbmV2ZXIgYmUgY2FsbGVkLCBTVkcgdXNlcyBhIGRpZmZlcmVudCBub2RlQXRQb2ludCBtZXRo
b2QKLSAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JikgT1ZFUlJJREUgRklOQUw7CiAgICAgYm9vbCBtX2hhc1NWR1NoYWRvdzsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggODkx
YzQyYWRkYWNmMTM3NzYwOTliZGQzMjgwNjNkZTliZjgzZjJmYi4uMDM2OWZhMWJjM2UzNDg2Yjk1
NmUxNTdkZmY4YTI3NDMyNDAxZWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVChvYmplY3QpOwogICAgIH0KIAotICAgIHZvaWQgc3Ryb2tlU3R5bGUoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTdHlsZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpIE9WRVJSSURFCiAgICAgewogICAgICAgICBTVkdSZW5kZXJTdXBwb3J0Ojph
cHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIG1fc3R5bGUsIG1fb2JqZWN0KTsKICAg
ICB9CkBAIC05MSw3ICs5MSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVsZW1lbnQoKSBjb25z
dCBXVEZfREVMRVRFRF9GVU5DVElPTjsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZy
b21FbGVtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaGFw
ZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IFdpbmRSdWxlKSBjb25zdDsKICAgICBmbG9hdCBzdHJva2VXaWR0aCgpIGNvbnN0OwpAQCAtMTE2
LDcgKzExNiw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdTaGFwZSgpIGNv
bnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVy
U1ZHU2hhcGUiOyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlclNWR1NoYXBlIjsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFIEZJTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkQm9vbGVhbi5oCmluZGV4IGQ2ZDQ4ZmFiNzI4ZDgzOTQ5YTZjOWVhODIwMmQ2
NDQ3N2M2ZmJhMDUuLjU3YTI0MWYwMTJlODk3MzVkMzM0OTllOTljOWNjYzlmOTIyY2QzMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKQEAgLTQyLDE2ICs0MiwxNiBA
QCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxl
bWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZEJvb2xlYW5Bbmlt
YXRvcigpIHsgfQogICAgIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFu
aW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFs
V2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdB
bmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmlt
YXRlZFR5cGUqKTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBz
dGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFu
aW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGFk
ZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmgKaW5kZXggODljODZh
MDI3NjM5ZWQ4ODljN2FkMzhiMzgwMmE1ODZmN2M4NmZlMS4uODY4YmNjNTZiMTA1NGE3OWYwZmYw
MTE0MDUyYWEzN2VlOGIzMTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5n
LmgKQEAgLTQzLDE2ICs0MywxNiBAQCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBbmlt
YXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNW
R0FuaW1hdGVkU3RyaW5nQW5pbWF0b3IoKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAg
dmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1
YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRl
ZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1YWwg
dm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURp
c3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7
CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdl
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOworCisgICAg
dmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0
ZWRUeXBlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBPVkVSUklERTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QuaAppbmRleCBhMmJiNDczZGFiMzg3YjY1MGRiNmZmMGYyOTY5NjM2YmVh
YTM2Njg4Li4zYzI5MDkyZGE0NmMzNGYzNTgzMTQ2Y2RmNTQ2ZGRjNGQ5NDdhNjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCkBAIC00MiwxNiAr
NDIsMTYgQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yKFNW
R0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IoKSB7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAg
dmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1
YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRl
ZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIHZpcnR1YWwg
dm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURp
c3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7
CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdl
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIE9WRVJSSURFOworCisgICAg
dmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0
ZWRUeXBlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICBjb25zdCBTdHJpbmcmIG1fdHJhbnNmb3JtVHlwZVN0cmluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50LmgKaW5kZXggNjUzZmEzYjYxMWM1NzE0ZjMwNzEzODBjNzIzZGRiMGExYTcx
OGQxMi4uMGE2NjBjMjJjMDcyNDkyNGZmYzJkYjgyYzhmMGM0OGRkNmViNDE4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBTVkdEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBib29sIGNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKaW5kZXggZTg3NWU3ODc3MzJmMzY4NzZiNmUwNmQwNmNkODYwZWNjZjM4NzJiZC4uNDYwZjky
YTUyODZjMzI2ODE1MWVlOTI4MjQ3OTNhNDc2YTE1Yzk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oCkBAIC0xNDIsMTAgKzE0MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50KCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYp
OworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIEF0dHJpYnV0ZU1vZGlm
aWNhdGlvblJlYXNvbiA9IE1vZGlmaWVkRGlyZWN0bHkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdCBPVkVSUklE
RTsKIApAQCAtMTcxLDggKzE3MSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGFyZUF1
dGhvclNoYWRvd3NBbGxvd2VkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwotICAg
IHZpcnR1YWwgUmVuZGVyU3R5bGUqIHZpcnR1YWxDb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVk
b0VsZW1lbnRTcGVjaWZpZXIgPSBOT1BTRVVETykgeyByZXR1cm4gY29tcHV0ZWRTdHlsZShwc2V1
ZG9FbGVtZW50U3BlY2lmaWVyKTsgfQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUo
U3R5bGU6OkNoYW5nZSk7CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogdmlydHVhbENvbXB1dGVk
U3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllciA9IE5PUFNFVURPKSBPVkVSUklE
RSB7IHJldHVybiBjb21wdXRlZFN0eWxlKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpOyB9CisgICAg
dmlydHVhbCBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJ
bXBsKiB2ZXJzaW9uKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oCmluZGV4IGM3MzdjZDkxNDdkNGExNjU5OTk0Njk5MGQwOGQyYjM0Nzg4YjZlOTUuLjZiMGIy
ZDI4NTgxZjI1Mzk3YzdmZWFiMDY1MzgxNTE2ZWUyMTI5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudEluc3RhbmNlLmgKQEAgLTQ3LDEyICs0NywxMiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFBhcmVudE5vZGUoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkgeyBtX3BhcmVu
dEluc3RhbmNlID0gaW5zdGFuY2U7IH0KIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wg
dXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7
CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIE9WRVJSSURF
OwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgdmlydHVhbCBi
b29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pIE9WRVJSSURFOwpAQCAtMTUzLDcg
KzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogICAgIGJvb2wg
aGFzVHJlZVNoYXJlZFBhcmVudCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wYXJlbnRJbnN0YW5jZTsg
fQogCi0gICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKTsKKyAgICB2aXJ0dWFsIE5vZGUqIHRvTm9k
ZSgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPFNWR0VsZW1l
bnRJbnN0YW5jZT4gY2hpbGQpOwogICAgIHZvaWQgc2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxl
bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAppbmRleCBlZDJhNTgwZDRiODdi
M2RhYzg0OGM2MDJmNDM3MTJiYjMzODIxZmNjLi41NDllZjg2Mjc0YWNkODQ3ZjkzNjY0YTcwZWY4
YzZhMjUxYjMxMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaApAQCAtODUsNyAr
ODUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSB7IHJldHVybiBmYWxzZTsgfSAgCisgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERSB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgdm9pZCBlbnN1cmVHbHlwaENhY2hlKCk7CiAgICAgdm9pZCByZWdp
c3RlckxpZ2F0dXJlc0luR2x5cGhDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R0VsZW1lbnQuaAppbmRleCBlOWEwZDI0MzMyODhhZTFhNTYyNDI1Mjc5OTllYjAzYjRjZGNhNjIz
Li5kNWQ4OTI5NDJlNTQ1MzFhMzIxOTIxOWEzOGExNGM3MmM4ZTkzOTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuaApAQCAtMzYsMTYgKzM2LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
U1ZHR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0
dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5
bGUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsg
fQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIE9W
RVJSSURFOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0dFbGVt
ZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuaAppbmRleCAzZDkzMTQwMzMwYTAxZDViMTI3MmNjYzhlY2JlN2MxOTI4
N2U3ODgyLi45NzU4MzlmOTFiNTBkMzQ0MzRjZmYwZDVkMTJjMjk0YjUyYzljODU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBAIC0zNiwyNyArMzYsMjcgQEAgY2xh
c3MgU1ZHR3JhcGhpY3NFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsIHB1YmxpYyBTVkdUcmFu
c2Zvcm1hYmxlLCBwdWJsaWMgU1YKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdHcmFwaGljc0Vs
ZW1lbnQoKTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTShTdHlsZVVwZGF0
ZVN0cmF0ZWd5ID0gQWxsb3dTdHlsZVVwZGF0ZSk7Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gZ2V0U2NyZWVuQ1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgPSBBbGxvd1N0eWxlVXBkYXRlKTsK
LSAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7
CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kg
PSBBbGxvd1N0eWxlVXBkYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBnZXRTY3JlZW5DVE0oU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxlbWVudCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogZmFydGhlc3RWaWV3cG9y
dEVsZW1lbnQoKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
IGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUgbW9k
ZSkgY29uc3QgeyByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6bG9jYWxDb29yZGluYXRlU3BhY2VU
cmFuc2Zvcm0obW9kZSk7IH0KLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBhbmltYXRlZExv
Y2FsVHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBs
ZW1lbnRhbFRyYW5zZm9ybSgpOworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29v
cmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUgbW9kZSkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6bG9jYWxDb29yZGluYXRlU3BhY2VU
cmFuc2Zvcm0obW9kZSk7IH0KKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBhbmltYXRlZExv
Y2FsVHJhbnNmb3JtKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBGbG9h
dFJlY3QgZ2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gQWxsb3dTdHlsZVVwZGF0ZSk7Cisg
ICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gQWxsb3dT
dHlsZVVwZGF0ZSkgT1ZFUlJJREU7CiAKICAgICAvLyAiYmFzZSBjbGFzcyIgbWV0aG9kcyBmb3Ig
YWxsIHRoZSBlbGVtZW50cyB3aGljaCByZW5kZXIgYXMgcGF0aHMKICAgICB2aXJ0dWFsIHZvaWQg
dG9DbGlwUGF0aChQYXRoJik7Ci0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CisgICAgdmlydHVhbCBSZW5kZXJFbGVt
ZW50KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgT1ZFUlJJREU7
CiAKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgT1ZFUlJJ
REU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3JhcGhpY3NF
bGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9y
bSwgdHJhbnNmb3JtKQpAQCAtNjYsOSArNjYsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc1NWR0dyYXBoaWNzRWxlbWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIC8vIFNWR1Rlc3RzCi0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcygpIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcygpIE9WRVJSSURFIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRG
ZWF0dXJlcyh0aGlzKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucygpIE9WRVJSSURFIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNp
b25zKHRoaXMpOyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
KSBPVkVSUklERSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9
CiAKICAgICAvLyBVc2VkIGJ5IDxhbmltYXRlTW90aW9uPgogICAgIE93blB0cjxBZmZpbmVUcmFu
c2Zvcm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1hYmxlLmgKaW5kZXggM2M0ZjdiYTBjMGViMjVlZmRjMDJhNDM5Zjg5OGYwNWQ2YTA2MzgzNi4u
MTFhYTA3Y2UyZWZjZmMxYzcyOTg0ODFjMWM1N2Q2ZTFjNGQzOGU5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVHJhbnNmb3JtYWJsZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBwYXJzZVRyYW5zZm9ybVZhbHVlKHVuc2lnbmVkIHR5cGUsIGNvbnN0IFVDaGFyKiYg
cHRyLCBjb25zdCBVQ2hhciogZW5kLCBTVkdUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgU1ZHVHJh
bnNmb3JtOjpTVkdUcmFuc2Zvcm1UeXBlIHBhcnNlVHJhbnNmb3JtVHlwZShjb25zdCBTdHJpbmcm
KTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJh
bnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0IHsgcmV0dXJuIGFuaW1hdGVkTG9j
YWxUcmFuc2Zvcm0oKTsgfQorICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRp
bmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsgfQogICAgIHZpcnR1YWwgQWZmaW5l
VHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IDY1ZWU5ZTU4ZGMyYjFiOTdmNjM2YjAyZDg2OTA2
ZTVhNTk2N2UzYjcuLjhkMDFjNjE5N2NmMzMxMzUxMzdmODFkMzZmOGYwZTMyMjRmYjk1NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExpc3RQcm9wZXJ0eSo+KG1fYW5pbVZhbC5nZXQoKSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRMaXN0VGVhck9mZigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZExpc3RUZWFyT2Zm
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgaW50IGZpbmRJdGVtKFNW
R1Byb3BlcnR5KiBwcm9wZXJ0eSkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IDZmNjQzZTg3Y2U2ZDRjZDgwYjU3MmU5ZjNkNTYz
YWU3MzI0NmQ5Y2QuLmNjMDhiOWFkYWY0MThkZmUyMzUyYjkxMTljNzg3OWNjNWM5OGIyNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC0yOSwxNCAr
MjksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1RyYW5zZm9ybUxpc3Q+IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIFNWR0xpc3RQcm9w
ZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4qIGJhc2VWYWwoKQorICAgIHZpcnR1YWwgU1ZH
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0PiogYmFzZVZhbCgpIE9WRVJSSURF
CiAgICAgewogICAgICAgICBpZiAoIW1fYmFzZVZhbCkKICAgICAgICAgICAgIG1fYmFzZVZhbCA9
IFNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSh0aGlzLCBCYXNlVmFsUm9s
ZSwgbV92YWx1ZXMsIG1fd3JhcHBlcnMpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0Pio+KG1fYmFzZVZhbC5nZXQoKSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9y
bUxpc3Q+KiBhbmltVmFsKCkKKyAgICB2aXJ0dWFsIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZH
VHJhbnNmb3JtTGlzdD4qIGFuaW1WYWwoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKCFt
X2FuaW1WYWwpCiAgICAgICAgICAgICBtX2FuaW1WYWwgPSBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVy
dHlUZWFyT2ZmOjpjcmVhdGUodGhpcywgQW5pbVZhbFJvbGUsIG1fdmFsdWVzLCBtX3dyYXBwZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuaAppbmRleCAzYzY1NTI0Njc5NGM0MzA3Mjc3ZDVlMTYzMjYzMTQ5MzVjMzFl
Nzg2Li4xYzY3NzEyNzU1NzhhZTU0OWU2ZTNhNDA0ZGI4MmQxOTkxNDQ2NTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGlzUmVhZE9u
bHkoKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmltVmFs
Um9sZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBj
b21taXRDaGFuZ2UoKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKSBPVkVSUklERQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKICAgICAgICAgQVNTRVJUKG1fd3JhcHBl
cnMpOwpAQCAtMTQ5LDEzICsxNDksMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2FuaW1hdGVk
UHJvcGVydHktPmNvbW1pdENoYW5nZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwcm9j
ZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVtVHlwZSYsIHVuc2lnbmVkKikK
KyAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBMaXN0
SXRlbVR5cGUmLCB1bnNpZ25lZCopIE9WRVJSSURFCiAgICAgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCBi
b29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihSZWZQdHI8TGlzdEl0ZW1UZWFyT2Zm
PiYgbmV3SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpCisgICAgdmlydHVhbCBib29sIHBy
b2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPiYgbmV3
SXRlbSwgdW5zaWduZWQqIGluZGV4VG9Nb2RpZnkpIE9WRVJSSURFCiAgICAgewogICAgICAgICBT
VkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5T2ZJdGVtID0gbmV3SXRlbS0+YW5p
bWF0ZWRQcm9wZXJ0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5VGVhck9mZi5oCmluZGV4IDA3ZGJkMTBmMGI2NGE4NWQwZDkzNzliMGJkNzQw
NDUyNWI3ZDE5ZTEuLmM2ODNmYjRlYmI4Y2M1ZTFiYjE4YTM3MDBmZjRiYTA5OTUyNzBiYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9m
Zi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9m
Zi5oCkBAIC04OSwxNCArODksMTQgQEAgcHVibGljOgogICAgICAgICBtX2FuaW1hdGVkUHJvcGVy
dHkgPSAwOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKQorICAgIHZp
cnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKCFt
X2FuaW1hdGVkUHJvcGVydHkgfHwgbV92YWx1ZUlzQ29weSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5LT5jb21taXRDaGFuZ2UoKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGlzUmVh
ZE9ubHkoKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYgKG1fcm9sZSA9PSBBbmlt
VmFsUm9sZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDI5ZjJkZWUyMGU3NzJjYTViZjUzOGZhZmU0Y2U2
Yjk1NTU2OWM4MDEuLjI1MzJiOTI2ZGQzM2Y2MTNkMTE3YjIzY2U4NDFiYTFhY2MwNDVmYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTY5LDcgKzY5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFVSTCBjb21wbGV0ZVVS
TChjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERSBGSU5BTDsKIAogICAgICAgICBjb25zdCBH
cm91cFNldHRpbmdzKiBncm91cFNldHRpbmdzKCkgeyByZXR1cm4gbV9ncm91cFNldHRpbmdzLmdl
dCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkgT1ZFUlJJREU7CiAK
</data>
<flag name="review"
          id="235955"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>