<?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>13973</bug_id>
          
          <creation_ts>2007-06-01 16:44:37 -0700</creation_ts>
          <short_desc>Autogenerate most of the rest of kjs_dom.h/cpp</short_desc>
          <delta_ts>2007-06-06 21:39:58 -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>DOM</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>13779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>8517</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-01 16:44:37 -0700</bug_when>
    <thetext>Big patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8518</commentid>
    <comment_count>1</comment_count>
      <attachid>14837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-01 16:48:36 -0700</bug_when>
    <thetext>Created attachment 14837
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8385</commentid>
    <comment_count>2</comment_count>
      <attachid>14837</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-06-06 16:54:57 -0700</bug_when>
    <thetext>Comment on attachment 14837
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8216</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-06 21:39:58 -0700</bug_when>
    <thetext>Landed in r22039.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14837</attachid>
            <date>2007-06-01 16:48:36 -0700</date>
            <delta_ts>2007-06-06 16:54:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>mostOfKJS_dom.html</filename>
            <type>text/plain</type>
            <size>134343</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTcgQEAKKzIwMDctMDYtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NzMKKyAgICAgICAg
QXV0b2dlbmVyYXRlIG1vc3Qgb2YgdGhlIHJlc3Qgb2Yga2pzX2RvbS5oL2NwcAorCisgICAgICAg
IC0gQXV0b2dlbmVyYXRlIEpTTm9kZUxpc3QgYW5kIEpTTmFtZWROb2RlTWFwLgorICAgICAgICAt
IE1vdmUgSlNFdmVudFRhcmdldE5vZGUsIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24sIGFuZCBKU0RP
TUV4Y2VwdGlvbkNvbnN0cnVjdG9yIAorICAgICAgICAgIGludG8gdGhlaXIgb3duIGZpbGVzLgor
ICAgICAgICAtIFJlbmFtZSBLSlM6OkRPTUV2ZW50VGFyZ2VOb2RlIHRvIFdlYkNvcmU6OkpTRXZl
bnRUYXJnZXROb2RlIHRvIGFkaGVyZQorICAgICAgICAgIHRvIGNvbnZlbnRpb24gYW5kIGFsbG93
IGVhc2llciBjb2RlIGdlbmVyYXRpb24uCisgICAgICAgIC0gQWRkIEpTIGNvbnN0cnVjdG9ycyBm
b3IgSlNOb2RlTGlzdCBhbmQgSlNOYW1lZE5vZGVNYXAuCisgICAgICAgIC0gTW92ZWQgbW9yZSB0
b0pTIG1ldGhvZHMgaW50byB0aGUgY29ycmVjdCAoY29ycmVzcG9uZGluZykgaGVhZGVyIGZpbGVz
LgorICAgICAgICAtIENsZWFuZWQgdXAgY29kZSBpbiBvcmRlciBmb3IgY2hhbmdlcyB0byB3b3Jr
LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01FeGNl
cHRpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3I6OkpTRE9NRXhjZXB0aW9uQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01FeGNlcHRpb25Db25zdHJ1Y3Rvcjo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NRXhjZXB0aW9uQ29u
c3RydWN0b3I6OmdldFZhbHVlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RE9NRXhj
ZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9u
Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RPTUV4Y2VwdGlvbkNv
bnN0cnVjdG9yOjpjbGFzc0luZm8pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Y3VzdG9t
R2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6Om1hcmspOgorICAgICAgICAo
V2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpKU0V2ZW50
VGFyZ2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpnZXRW
YWx1ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpwdXQp
OgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6OnB1dFZhbHVlUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6OnNldExpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpnZXRMaXN0ZW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlRnVuY3Rpb246OmNhbGxB
c0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXROb2RlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRN
TEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEZvcm1FbGVtZW50OjpuYW1l
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVtZW50Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNG
b3JOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6SlNOYW1lZE5vZGVzQ29s
bGVjdGlvbjo6SlNOYW1lZE5vZGVzQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU05h
bWVkTm9kZXNDb2xsZWN0aW9uOjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNO
YW1lZE5vZGVzQ29sbGVjdGlvbjo6aW5kZXhHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNO
YW1lZE5vZGVzQ29sbGVjdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTTm9kZUxpc3Q6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTTm9kZUxpc3Q6OmltcGxlbWVudHNDYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9k
ZUxpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVMaXN0
OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9ranNfZG9tLmg6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2Rv
bW5vZGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZXZlbnRzLmNwcDoKKyAgICAgICAg
KEtKUzo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9ranNfaHRtbC5jcHA6CisgICAgICAgIChLSlM6OkpTSFRNTENvbGxlY3Rpb246OmdldE5h
bWVkSXRlbXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19odG1sLmg6CisgICAgICAgICog
YmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9ranNfd2luZG93Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9ET01JbnRlcm5hbC5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0T2JqZWN0IF9pbml0aWFsaXpl
U2NyaXB0RE9NTm9kZUltcF0pOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVXRpbGl0eS5t
bToKKyAgICAgICAgKEtKUzo6Y3JlYXRlRE9NV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3Jl
QVhPYmplY3QubW06CisgICAgICAgICogZG9tL0F0dHIuaWRsOgorICAgICAgICAqIGRvbS9DaGFy
YWN0ZXJEYXRhLmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudEZyYWdtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRUeXBlLmlkbDoK
KyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL05hbWVkTm9kZU1hcC5p
ZGw6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlTGlzdC5pZGw6
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDA3LTA2LTAxICBHZW9yZ2UgU3Rh
aWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBiZGFzaC4KSW5k
ZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIxOTQ5KQorKysgV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNiArMzE5LDcgQEAgYWxsIDogXAogICAg
IEpTQ29tbWVudC5oIFwKICAgICBKU0NvdW50ZXIuaCBcCiAgICAgSlNDU1NTdHlsZURlY2xhcmF0
aW9uLmggXAorICAgIEpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IubHV0LmggXAogICAgIEpTRE9N
SW1wbGVtZW50YXRpb24uaCBcCiAgICAgSlNET01QYXJzZXIuaCBcCiAgICAgSlNET01XaW5kb3cu
aCBcCkBAIC0zMjYsOSArMzI3LDEwIEBAIGFsbCA6IFwKICAgICBKU0RvY3VtZW50RnJhZ21lbnQu
aCBcCiAgICAgSlNEb2N1bWVudFR5cGUuaCBcCiAgICAgSlNFbGVtZW50LmggXAotICAgIEpTRXZl
bnQuaCBcCiAgICAgSlNFbnRpdHkuaCBcCiAgICAgSlNFbnRpdHlSZWZlcmVuY2UuaCBcCisgICAg
SlNFdmVudC5oIFwKKyAgICBKU0V2ZW50VGFyZ2V0Tm9kZS5sdXQuaCBcCiAgICAgSlNIVE1MQXBw
bGV0RWxlbWVudC5oIFwKICAgICBKU0hUTUxBbmNob3JFbGVtZW50LmggXAogICAgIEpTSFRNTEFy
ZWFFbGVtZW50LmggXApAQCAtMzkzLDkgKzM5NSwxMSBAQCBhbGwgOiBcCiAgICAgSlNNZWRpYUxp
c3QuaCBcCiAgICAgSlNNb3VzZUV2ZW50LmggXAogICAgIEpTTXV0YXRpb25FdmVudC5oIFwKKyAg
ICBKU05hbWVkTm9kZU1hcC5oIFwKICAgICBKU05vZGUuaCBcCiAgICAgSlNOb2RlRmlsdGVyLmgg
XAogICAgIEpTTm9kZUl0ZXJhdG9yLmggXAorICAgIEpTTm9kZUxpc3QuaCBcCiAgICAgSlNOb3Rh
dGlvbi5oIFwKICAgICBKU092ZXJmbG93RXZlbnQuaCBcCiAgICAgSlNQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc5Niw2ICsyNzk2LDE2IEBACiAJCUJDNTE1NzlG
MEMwM0JCRDMwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTE1NkU1MEMwM0I3NDEwMDhCQjBF
RSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnQuaCAqLzsgfTsKIAkJQkM1MTU3REQwQzAzQkMyMjAw
OEJCMEVFIC8qIERPTUhUTUxGcmFtZUVsZW1lbnRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzUxNTZGMzBDMDNCN0RDMDA4QkIwRUUgLyog
RE9NSFRNTEZyYW1lRWxlbWVudFByaXZhdGUuaCAqLzsgfTsKIAkJQkM1MTU4MEIwQzAzRDQwNDAw
OEJCMEVFIC8qIEpTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTE1ODBBMEMwM0Q0MDQwMDhCQjBFRSAvKiBKU0hU
TUxEb2N1bWVudEN1c3RvbS5jcHAgKi87IH07CisJCUJDNTc0MkExMEMwRkYwMjUwMEIwNEQwNCAv
KiBKU05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNTc0MjlGMEMwRkYwMjUwMEIwNEQwNCAvKiBKU05vZGVMaXN0LmNwcCAqLzsgfTsK
KwkJQkM1NzQyQTIwQzBGRjAyNTAwQjA0RDA0IC8qIEpTTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc0MkEwMEMwRkYwMjUwMEIwNEQw
NCAvKiBKU05vZGVMaXN0LmggKi87IH07CisJCUJDNTc0MkE3MEMwRkYwNDYwMEIwNEQwNCAvKiBK
U05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNTc0MkE2MEMwRkYwNDYwMEIwNEQwNCAvKiBKU05vZGVMaXN0Q3VzdG9tLmNw
cCAqLzsgfTsKKwkJQkM1NzQzQjEwQzBGRjlDNDAwQjA0RDA0IC8qIEpTRE9NRXhjZXB0aW9uQ29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM1NzQzQjAwQzBGRjlDNDAwQjA0RDA0IC8qIEpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3Iu
Y3BwICovOyB9OworCQlCQzU3NDNCMzBDMEZGOURFMDBCMDREMDQgLyogSlNET01FeGNlcHRpb25D
b25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM1NzQzQjIwQzBGRjlERTAwQjA0RDA0IC8qIEpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3Iu
aCAqLzsgfTsKKwkJQkM1NzQzRjYwQzBGRkI2RDAwQjA0RDA0IC8qIEpTRE9NRXhjZXB0aW9uQ29u
c3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzU3NDNGNTBDMEZGQjZEMDBCMDREMDQgLyogSlNET01FeGNlcHRpb25Db25zdHJ1Y3Rv
ci5sdXQuaCAqLzsgfTsKKwkJQkM1NzQ0REQwQzEwMEQwMDAwQjA0RDA0IC8qIEpTRXZlbnRUYXJn
ZXROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzU3NDREQzBDMTAwRDAwMDBCMDREMDQgLyogSlNFdmVudFRhcmdldE5vZGUuaCAqLzsgfTsKKwkJ
QkM1NzQ0RTMwQzEwMEQxQTAwQjA0RDA0IC8qIEpTRXZlbnRUYXJnZXROb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc0NEUyMEMxMDBEMUEw
MEIwNEQwNCAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5jcHAgKi87IH07CisJCUJDNTc0NTQ5MEMxMDEx
RUIwMEIwNEQwNCAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc0NTQ4MEMxMDExRUIwMEIwNEQwNCAvKiBK
U0V2ZW50VGFyZ2V0Tm9kZS5sdXQuaCAqLzsgfTsKKwkJQkM1NzQ3NzAwQzEwQTBFMjAwQjA0RDA0
IC8qIEpTTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzU3NDc2RjBDMTBBMEUyMDBCMDREMDQgLyogSlNOb2RlQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJQkM1ODIzRjUwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1ODIz
RjQwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlC
QzU4MjVGMzBDMEI4OTM4MDA1M0YxQjUgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTgyNUYy
MEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICovOyB9
OwogCQlCQzU4OEFGMDBCRkE2Q0Y5MDBFRTY3OUUgLyogSFRNTFBhcnNlckVycm9yQ29kZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTg4QUVGMEJG
QTZDRjkwMEVFNjc5RSAvKiBIVE1MUGFyc2VyRXJyb3JDb2Rlcy5oICovOyB9OwpAQCAtMjg1OSw2
ICsyODY5LDEyIEBACiAJCUJDQ0Q3NERDMEE0QzhEMzUwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJj
ZURvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0NENzREQjBBNEM4RDM1MDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oICov
OyB9OwogCQlCQ0NENzRFNTBBNEM4RERGMDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0NE
NzRFNDBBNEM4RERGMDA1RkRBNkQgLyogSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAgKi87IH07
CiAJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQ0ZCQUU3MEI1MTUyRUQwMDAxRjFE
NyAvKiBUb2tlbml6ZXIuaCAqLzsgfTsKKwkJQkNEMEZENEUwQzBGQ0E5MTAwNDlDRjlBIC8qIEpT
TmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNEMEZENEMwQzBGQ0E5MTAwNDlDRjlBIC8qIEpTTmFtZWROb2Rlc0Nv
bGxlY3Rpb24uY3BwICovOyB9OworCQlCQ0QwRkQ0RjBDMEZDQTkxMDA0OUNGOUEgLyogSlNOYW1l
ZE5vZGVzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNEMEZENEQwQzBGQ0E5MTAwNDlDRjlBIC8qIEpTTmFtZWROb2Rlc0NvbGxlY3Rp
b24uaCAqLzsgfTsKKwkJQkNEMEZEOTYwQzBGQ0U3QzAwNDlDRjlBIC8qIEpTTmFtZWROb2RlTWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDBG
RDk0MEMwRkNFN0MwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9kZU1hcC5jcHAgKi87IH07CisJCUJDRDBG
RDk3MEMwRkNFN0MwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEZEOTUwQzBGQ0U3QzAwNDlDRjlBIC8q
IEpTTmFtZWROb2RlTWFwLmggKi87IH07CisJCUJDRDBGRDlDMEMwRkNFRDUwMDQ5Q0Y5QSAvKiBK
U05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0QwRkQ5QjBDMEZDRUQ1MDA0OUNGOUEgLyogSlNOYW1lZE5vZGVNYXBD
dXN0b20uY3BwICovOyB9OworCQlCQ0QwRkYwQzBDMEZFMjkwMDA0OUNGOUEgLyogSlNET01XaW5k
b3dDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNEMEZGMEIwQzBGRTI5MDAwNDlDRjlBIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLzsg
fTsKIAkJQkNENDFBQkIwQzA2MERFODAwQzBFNDQ2IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0Q0MUFCQTBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cCAqLzsgfTsKIAkJQkNFMDEzOUEwQzBCRUYxODAwNDM4NjBBIC8qIEpTU3R5bGVTaGVldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0UwMTM5ODBD
MEJFRjE4MDA0Mzg2MEEgLyogSlNTdHlsZVNoZWV0LmNwcCAqLzsgfTsKIAkJQkNFMDEzOUIwQzBC
RUYxODAwNDM4NjBBIC8qIEpTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFMDEzOTkwQzBCRUYxODAwNDM4NjBBIC8qIEpTU3R5bGVT
aGVldC5oICovOyB9OwpAQCAtNjA2OSw2ICs2MDg1LDE2IEBACiAJCUJDNTE1NkU3MEMwM0I3NDEw
MDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTE1hcnF1ZWVFbGVtZW50SW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1MTU2RjMwQzAzQjdEQzAwOEJCMEVFIC8qIERP
TUhUTUxGcmFtZUVsZW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01IVE1MRnJhbWVFbGVtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzUxNTgwQTBDMDNENDA0MDA4QkIwRUUgLyogSlNIVE1MRG9jdW1lbnRDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1NzQyOUYwQzBGRjAy
NTAwQjA0RDA0IC8qIEpTTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzU3NDJBMDBDMEZGMDI1MDBCMDREMDQgLyogSlNOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQzU3NDJBNjBDMEZGMDQ2MDBCMDREMDQgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVMaXN0Q3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1NzQzQjAwQzBGRjlDNDAwQjA0RDA0IC8q
IEpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNET01FeGNlcHRpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDNTc0M0IyMEMwRkY5REUwMEIwNEQwNCAvKiBKU0RPTUV4Y2VwdGlv
bkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRXhj
ZXB0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1NzQz
RjUwQzBGRkI2RDAwQjA0RDA0IC8qIEpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IubHV0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9y
Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzU3NDREQzBDMTAwRDAwMDBC
MDREMDQgLyogSlNFdmVudFRhcmdldE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFdmVudFRhcmdldE5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM1NzQ0RTIwQzEwMEQxQTAwQjA0RDA0IC8qIEpTRXZlbnRUYXJnZXROb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRUYXJnZXROb2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM1NzQ1NDgwQzEwMTFFQjAwQjA0RDA0IC8qIEpT
RXZlbnRUYXJnZXROb2RlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNFdmVudFRhcmdldE5vZGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
NTc0NzZGMEMxMEEwRTIwMEIwNEQwNCAvKiBKU05vZGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM1ODIzRjQwQzBBOThERjAwNTNGMUI1IC8qIEpTSFRNTEVsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRWxl
bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTgyNUYyMEMw
Qjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1ODhBRUYwQkZBNkNGOTAwRUU2
NzlFIC8qIEhUTUxQYXJzZXJFcnJvckNvZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MUGFyc2VyRXJyb3JDb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjEzNSw2ICs2MTYxLDEyIEBACiAJCUJDQ0Q3NERCMEE0QzhEMzUwMDVGREE2RCAvKiBI
VE1MVmlld1NvdXJjZURvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIVE1MVmlld1NvdXJjZURvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQ0Q3NEU0MEE0QzhEREYwMDVGREE2RCAvKiBIVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDRkJBRTcwQjUxNTJFRDAw
MDFGMUQ3IC8qIFRva2VuaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VG9rZW5pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRDBGRDRDMEMwRkNB
OTEwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEMEZENEQwQzBGQ0E5MTAwNDlDRjlBIC8qIEpTTmFt
ZWROb2Rlc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TmFtZWROb2Rlc0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNE
MEZEOTQwQzBGQ0U3QzAwNDlDRjlBIC8qIEpTTmFtZWROb2RlTWFwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hbWVkTm9kZU1hcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDRDBGRDk1MEMwRkNFN0MwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9k
ZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOYW1lZE5vZGVNYXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEMEZEOUIwQzBGQ0VENTAwNDlDRjlB
IC8qIEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkNEMEZGMEIwQzBGRTI5MDAwNDlDRjlBIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV2luZG93Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNENDFBQkEwQzA2MERFODAwQzBF
NDQ2IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFMDEzOTgwQzBCRUYxODAwNDM4NjBBIC8qIEpT
U3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
dHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFMDEzOTkwQzBC
RUYxODAwNDM4NjBBIC8qIEpTU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
NjIwLDEyICs2NjUyLDE2IEBACiAJCQkJQTg2NjI5Q0IwOURBMkI0NzAwOTYzM0E1IC8qIEpTTW91
c2VFdmVudC5oICovLAogCQkJCTY1REYzMUU3MDlEMUNDNjAwMDBCRTMyNSAvKiBKU011dGF0aW9u
RXZlbnQuY3BwICovLAogCQkJCTY1REYzMUU4MDlEMUNDNjAwMDBCRTMyNSAvKiBKU011dGF0aW9u
RXZlbnQuaCAqLywKKwkJCQlCQ0QwRkQ5NDBDMEZDRTdDMDA0OUNGOUEgLyogSlNOYW1lZE5vZGVN
YXAuY3BwICovLAorCQkJCUJDRDBGRDk1MEMwRkNFN0MwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9kZU1h
cC5oICovLAogCQkJCTE0REMwRDM1MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUuY3BwICovLAog
CQkJCTE0REMwRDM2MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUuaCAqLywKIAkJCQkxNDExNUI3
MDA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmNwcCAqLywKIAkJCQkxNDExNUI3MTA5
Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmggKi8sCiAJCQkJMUE3NTBEOEIwQTkwRTUy
MTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmNwcCAqLywKIAkJCQkxQTc1MEQ4QzBBOTBFNTIx
MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCAqLywKKwkJCQlCQzU3NDI5RjBDMEZGMDI1MDBC
MDREMDQgLyogSlNOb2RlTGlzdC5jcHAgKi8sCisJCQkJQkM1NzQyQTAwQzBGRjAyNTAwQjA0RDA0
IC8qIEpTTm9kZUxpc3QuaCAqLywKIAkJCQk2NURGMzFFOTA5RDFDQzYwMDAwQkUzMjUgLyogSlNO
b3RhdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90YXRp
b24uaCAqLywKIAkJCQkxQTBENTczRTBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50
LmNwcCAqLywKQEAgLTY5OTMsNiArNzAyOSw4IEBACiAJCQkJNjU2NTgxNEIwOUQxMzA0MzAwMEU2
MUQ3IC8qIEhUTUxFbnRpdHlOYW1lcy5jICovLAogCQkJCUE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIw
MyAvKiBIVE1MTmFtZXMuY3BwICovLAogCQkJCUE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBI
VE1MTmFtZXMuaCAqLywKKwkJCQlCQzU3NDNGNTBDMEZGQjZEMDBCMDREMDQgLyogSlNET01FeGNl
cHRpb25Db25zdHJ1Y3Rvci5sdXQuaCAqLywKKwkJCQlCQzU3NDU0ODBDMTAxMUVCMDBCMDREMDQg
LyogSlNFdmVudFRhcmdldE5vZGUubHV0LmggKi8sCiAJCQkJNjU2NTgxREEwOUQxNTA4RDAwMEU2
MUQ3IC8qIGtqc19jc3MubHV0LmggKi8sCiAJCQkJNjU2NTgxREIwOUQxNTA4RDAwMEU2MUQ3IC8q
IGtqc19kb20ubHV0LmggKi8sCiAJCQkJNjU2NTgxREMwOUQxNTA4RDAwMEU2MUQ3IC8qIGtqc19l
dmVudHMubHV0LmggKi8sCkBAIC05MTYwLDEyICs5MTk4LDE4IEBACiAJCQkJOTNGOEIzMDYwQTMw
MEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLywKIAkJCQlFMTBCOTNDMjBCNzND
MjkxMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwICovLAogCQkJCUUxMEI5
MzdCMEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oICovLAorCQkJ
CUJDNTc0M0IwMEMwRkY5QzQwMEIwNEQwNCAvKiBKU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmNw
cCAqLywKKwkJCQlCQzU3NDNCMjBDMEZGOURFMDBCMDREMDQgLyogSlNET01FeGNlcHRpb25Db25z
dHJ1Y3Rvci5oICovLAorCQkJCUJDNTc0NEUyMEMxMDBEMUEwMEIwNEQwNCAvKiBKU0V2ZW50VGFy
Z2V0Tm9kZS5jcHAgKi8sCisJCQkJQkM1NzQ0REMwQzEwMEQwMDAwQjA0RDA0IC8qIEpTRXZlbnRU
YXJnZXROb2RlLmggKi8sCiAJCQkJOTM4RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVs
ZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgKi8sCiAJCQkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0OEVD
IC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovLAogCQkJCUE4MEU3RTY0MEExQTgy
RUMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcCAqLywKIAkJCQlBODBFN0U2
MzBBMUE4MkVDMDA3RkI4QzUgLyogSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5oICovLAogCQkJCUE4
MjZFOEFEMEExQThGMjMwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3Iu
Y3BwICovLAogCQkJCUE4MjZFOEFDMEExQThGMjMwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVt
ZW50Q29uc3RydWN0b3IuaCAqLywKKwkJCQlCQ0QwRkQ0QzBDMEZDQTkxMDA0OUNGOUEgLyogSlNO
YW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJQkNEMEZENEQwQzBGQ0E5MTAwNDlDRjlB
IC8qIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24uaCAqLywKIAkJCQk4NTc0RDFGMTBBREU2MTIyMDA0
Q0JBMTEgLyogSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLAogCQkJCTg1NzREMUYy
MEFERTYxMjIwMDRDQkExMSAvKiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovLAogCQkJ
CUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi8sCkBA
IC05MjQ2LDYgKzkyOTAsNyBAQAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDMjBGQjdFMEMwRThFNkMwMEQx
NDQ3RiAvKiBKU0NTU1ZhbHVlQ3VzdG9tLmNwcCAqLywKIAkJCQk5MjkyNjQ3NjBCNjFGQzcyMDBC
NDFEMzQgLyogSlNEb2N1bWVudEN1c3RvbS5jcHAgKi8sCisJCQkJQkNEMEZGMEIwQzBGRTI5MDAw
NDlDRjlBIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzRFREVGMzBDMDhGM0ZC
MDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkM1MTU4
MEEwQzAzRDQwNDAwOEJCMEVFIC8qIEpTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlC
QzU4MjNGNDBDMEE5OERGMDA1M0YxQjUgLyogSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAgKi8sCkBA
IC05MjU2LDcgKzkzMDEsMTAgQEAKIAkJCQk0NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovLAogCQkJCUJDMTdGOTY1MEI2NEVCQjgw
MDRBNjVDQiAvKiBKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBQjRDQjRF
QTBCOEJEQTNEMDA5RjQwQjAgLyogSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oICovLAorCQkJ
CUJDRDBGRDlCMEMwRkNFRDUwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgKi8s
CisJCQkJQkM1NzQ3NkYwQzEwQTBFMjAwQjA0RDA0IC8qIEpTTm9kZUN1c3RvbS5jcHAgKi8sCiAJ
CQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAq
LywKKwkJCQlCQzU3NDJBNjBDMEZGMDQ2MDBCMDREMDQgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJQkM5OEEyN0MwQzBDOTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVldEN1c3RvbS5j
cHAgKi8sCiAJCQkJQjI1REZBQUUwQjJFMjkyOTAwMEU2NTEwIC8qIEpTU1ZHTWF0cml4Q3VzdG9t
LmNwcCAqLywKIAkJCQlCMkM5NkQ4QzBCM0FGMkI3MDA1RTgwRUMgLyogSlNTVkdQYXRoU2VnQ3Vz
dG9tLmNwcCAqLywKQEAgLTExNDk2LDYgKzExNTQ0LDEzIEBACiAJCQkJQkM0NkMyMDMwQzBEREM4
RjAwMjBDRkMzIC8qIEpTQ1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDZDMjA3
MEMwRERDQTEwMDIwQ0ZDMyAvKiBKU0NTU1N0eWxlUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNDNUJFMDEwQzBFOTMxMTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNEMEZENEYwQzBGQ0E5MTAwNDlDRjlBIC8qIEpTTmFtZWROb2Rlc0NvbGxlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRDBGRDk3MEMwRkNFN0MwMDQ5Q0Y5QSAvKiBKU05h
bWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM1NzQyQTIwQzBGRjAyNTAwQjA0RDA0
IC8qIEpTTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNTc0M0IzMEMwRkY5REUwMEIw
NEQwNCAvKiBKU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
QzU3NDNGNjBDMEZGQjZEMDBCMDREMDQgLyogSlNET01FeGNlcHRpb25Db25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUJDNTc0NEREMEMxMDBEMDAwMEIwNEQwNCAvKiBKU0V2ZW50
VGFyZ2V0Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM1NzQ1NDkwQzEwMTFFQjAwQjA0RDA0
IC8qIEpTRXZlbnRUYXJnZXROb2RlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMjkwOCw2ICsx
Mjk2MywxNSBAQAogCQkJCUJDNDZDMjA2MEMwRERDQTEwMDIwQ0ZDMyAvKiBKU0NTU1N0eWxlUnVs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIwRkI3RjBDMEU4RTZDMDBEMTQ0N0YgLyogSlND
U1NWYWx1ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0M1QkUwMDBDMEU5MzExMDAx
MUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDRDBGRDRF
MEMwRkNBOTEwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUJDRDBGRDk2MEMwRkNFN0MwMDQ5Q0Y5QSAvKiBKU05hbWVkTm9kZU1hcC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQ0QwRkQ5QzBDMEZDRUQ1MDA0OUNGOUEgLyogSlNOYW1lZE5v
ZGVNYXBDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNEMEZGMEMwQzBGRTI5MDAwNDlD
RjlBIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNTc0MkEx
MEMwRkYwMjUwMEIwNEQwNCAvKiBKU05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJD
NTc0MkE3MEMwRkYwNDYwMEIwNEQwNCAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUJDNTc0M0IxMEMwRkY5QzQwMEIwNEQwNCAvKiBKU0RPTUV4Y2VwdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNTc0NEUzMEMxMDBEMUEwMEIwNEQwNCAv
KiBKU0V2ZW50VGFyZ2V0Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzU3NDc3MDBDMTBB
MEUyMDBCMDREMDQgLyogSlNOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkNvbnN0
cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBL
SlM7CisKK2NvbnN0IENsYXNzSW5mbyBKU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yOjppbmZvID0g
eyAiRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CisKKy8qIFNvdXJjZSBmb3Ig
RE9NRXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJl
Z2VuZXJhdGUuCitAYmVnaW4gSlNET01FeGNlcHRpb25Db25zdHJ1Y3RvclRhYmxlIDE1CisgIElO
REVYX1NJWkVfRVJSICAgICAgICAgICAgICAgIFdlYkNvcmU6OklOREVYX1NJWkVfRVJSICAgICAg
ICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBET01TVFJJTkdfU0laRV9FUlIgICAgICAg
ICAgICBXZWJDb3JlOjpET01TVFJJTkdfU0laRV9FUlIgICBEb250RGVsZXRlfFJlYWRPbmx5Cisg
IEhJRVJBUkNIWV9SRVFVRVNUX0VSUiAgICAgICAgIFdlYkNvcmU6OkhJRVJBUkNIWV9SRVFVRVNU
X0VSUiAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBXUk9OR19ET0NVTUVOVF9FUlIgICAg
ICAgICAgICBXZWJDb3JlOjpXUk9OR19ET0NVTUVOVF9FUlIgICBEb250RGVsZXRlfFJlYWRPbmx5
CisgIElOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAgICAgIFdlYkNvcmU6OklOVkFMSURfQ0hBUkFD
VEVSX0VSUiAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBOT19EQVRBX0FMTE9XRURfRVJS
ICAgICAgICAgICBXZWJDb3JlOjpOT19EQVRBX0FMTE9XRURfRVJSICBEb250RGVsZXRlfFJlYWRP
bmx5CisgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiAgIFdlYkNvcmU6Ok5PX01PRElGSUNB
VElPTl9BTExPV0VEX0VSUiAgRG9udERlbGV0ZXxSZWFkT25seQorICBOT1RfRk9VTkRfRVJSICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpOT1RfRk9VTkRfRVJSICAgICAgICAgICAgICAgIERvbnRE
ZWxldGV8UmVhZE9ubHkKKyAgTk9UX1NVUFBPUlRFRF9FUlIgICAgICAgICAgICAgV2ViQ29yZTo6
Tk9UX1NVUFBPUlRFRF9FUlIgICAgRG9udERlbGV0ZXxSZWFkT25seQorICBJTlVTRV9BVFRSSUJV
VEVfRVJSICAgICAgICAgICBXZWJDb3JlOjpJTlVTRV9BVFRSSUJVVEVfRVJSICBEb250RGVsZXRl
fFJlYWRPbmx5CisgIElOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICAgIFdlYkNvcmU6OklOVkFM
SURfU1RBVEVfRVJSICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgU1lOVEFYX0VSUiAgICAgICAg
ICAgICAgICAgICAgV2ViQ29yZTo6U1lOVEFYX0VSUiAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBJTlZBTElEX01PRElGSUNBVElPTl9FUlIgICAgICBXZWJDb3JlOjpJTlZBTElEX01P
RElGSUNBVElPTl9FUlIgICAgIERvbnREZWxldGV8UmVhZE9ubHkKKyAgTkFNRVNQQUNFX0VSUiAg
ICAgICAgICAgICAgICAgV2ViQ29yZTo6TkFNRVNQQUNFX0VSUiAgICAgICAgICAgICAgICBEb250
RGVsZXRlfFJlYWRPbmx5CisgIElOVkFMSURfQUNDRVNTX0VSUiAgICAgICAgICAgIFdlYkNvcmU6
OklOVkFMSURfQUNDRVNTX0VSUiAgIERvbnREZWxldGV8UmVhZE9ubHkKK0BlbmQKKyovCisKK0pT
RE9NRXhjZXB0aW9uQ29uc3RydWN0b3I6OkpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKSAKK3sgCisgICAgc2V0UHJvdG90eXBlKGV4ZWMtPmxleGljYWxJbnRlcnByZXRl
cigpLT5idWlsdGluT2JqZWN0UHJvdG90eXBlKCkpOworfQorCitib29sIEpTRE9NRXhjZXB0aW9u
Q29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVy
biBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNET01FeGNlcHRpb25Db25zdHJ1Y3RvciwgRE9NT2JqZWN0
PihleGVjLCAmSlNET01FeGNlcHRpb25Db25zdHJ1Y3RvclRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOworfQorCitKU1ZhbHVlKiBKU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpnZXRW
YWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3QKK3sKKyAgICAvLyBXZSB1
c2UgdGhlIHRva2VuIGFzIHRoZSB2YWx1ZSB0byByZXR1cm4gZGlyZWN0bHkKKyAgICByZXR1cm4g
anNOdW1iZXIodG9rZW4pOworfQorCitKU09iamVjdCogZ2V0RE9NRXhjZXB0aW9uQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBjYWNoZUdsb2JhbE9iamVjdDxKU0RP
TUV4Y2VwdGlvbkNvbnN0cnVjdG9yPihleGVjLCAiW1tET01FeGNlcHRpb24uY29uc3RydWN0b3Jd
XSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0RPTUV4Y2VwdGlvbkNvbnN0
cnVjdG9yX2gKKyNkZWZpbmUgSlNET01FeGNlcHRpb25Db25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRl
ICJranNfYmluZGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICAvLyBDb25zdHJ1
Y3RvciBmb3IgRE9NRXhjZXB0aW9uIC0gY29uc3RydWN0b3Igc3R1ZmYgbm90IGltcGxlbWVudGVk
IHlldAorICAgIGNsYXNzIEpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgS0pTOjpE
T01PYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgSlNET01FeGNlcHRpb25Db25zdHJ1Y3Rv
cihLSlM6OkV4ZWNTdGF0ZSopOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3Bl
cnR5U2xvdCYpOworICAgICAgICBLSlM6OkpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoS0pTOjpF
eGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0OworICAgICAgICAvLyBubyBwdXQgLSBhbGwgcmVh
ZC1vbmx5CisKKyAgICAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEtKUzo6Q2xh
c3NJbmZvIGluZm87CisgICAgfTsKKworICAgIEtKUzo6SlNPYmplY3QqIGdldERPTUV4Y2VwdGlv
bkNvbnN0cnVjdG9yKEtKUzo6RXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEpTRE9NRXhjZXB0aW9uQ29uc3RydWN0b3JfaApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorCisjaW5jbHVkZSAia2pzX3dpbmRvdy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdldE93
blByb3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS0pTOjpJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEtKUzo6UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBn
ZXRPdmVycmlkZVByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1l
bnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDIxOTQ5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBs
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCwx
NiArMjAsNTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50Lmgi
CiAKLSNpbmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJranNfYmluZGluZy5oIgorI2luY2x1ZGUgImtqc193aW5kb3cuaCIKKworI2lmIEVOQUJM
RShTVkcpCisjaW5jbHVkZSAiSlNTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50
LmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgS0pT
OworCiB2b2lkIEpTRG9jdW1lbnQ6Om1hcmsoKQogewogICAgIERPTU9iamVjdDo6bWFyaygpOwot
ICAgIEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6Om1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oaW1wbCgpKSk7CisgICAgU2NyaXB0SW50ZXJwcmV0ZXI6Om1hcmtE
T01Ob2Rlc0ZvckRvY3VtZW50KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oaW1wbCgpKSk7CiB9Ci0g
ICAgCisKK0pTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jKQorewor
ICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICBTY3JpcHRJbnRl
cnByZXRlciogaW50ZXJwID0gc3RhdGljX2Nhc3Q8U2NyaXB0SW50ZXJwcmV0ZXIqPihleGVjLT5k
eW5hbWljSW50ZXJwcmV0ZXIoKSk7CisgICAgSlNEb2N1bWVudCogcmV0ID0gIHN0YXRpY19jYXN0
PEpTRG9jdW1lbnQqPihpbnRlcnAtPmdldERPTU9iamVjdChkb2MpKTsKKyAgICBpZiAocmV0KQor
ICAgICAgICByZXR1cm4gcmV0OworCisgICAgaWYgKGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKKyAg
ICAgICAgcmV0ID0gbmV3IEpTSFRNTERvY3VtZW50KGV4ZWMsIHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KGRvYykpOworI2lmIEVOQUJMRShTVkcpCisgICAgZWxzZSBpZiAoZG9jLT5pc1NWR0Rv
Y3VtZW50KCkpCisgICAgICAgIHJldCA9IG5ldyBKU1NWR0RvY3VtZW50KGV4ZWMsIHN0YXRpY19j
YXN0PFNWR0RvY3VtZW50Kj4oZG9jKSk7CisjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIHJldCA9
IG5ldyBKU0RvY3VtZW50KGV4ZWMsIGRvYyk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGRvY3Vt
ZW50IGlzIGtlcHQgYXJvdW5kIGJ5IHRoZSB3aW5kb3cgb2JqZWN0LCBhbmQgd29ya3MgcmlnaHQg
d2l0aCB0aGUKKyAgICAvLyBiYWNrL2ZvcndhcmQgY2FjaGUuCisgICAgaWYgKGRvYy0+ZnJhbWUo
KSkKKyAgICAgICAgV2luZG93OjpyZXRyaWV2ZVdpbmRvdyhkb2MtPmZyYW1lKCkpLT5wdXREaXJl
Y3QoImRvY3VtZW50IiwgcmV0LCBEb250RGVsZXRlfFJlYWRPbmx5KTsKKworICAgIGludGVycC0+
cHV0RE9NT2JqZWN0KGRvYywgcmV0KTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5v
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5v
ZGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Tm9kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzg2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXROb2RlLmgiCisKKyNpbmNsdWRl
ICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TGlz
dGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRO
b2RlLmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgImtqc19ldmVudHMuaCIKKyNpbmNs
dWRlICJranNfd2luZG93LmgiCisKKyNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0Tm9kZS5sdXQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgS0pTOwordXNpbmcgbmFt
ZXNwYWNlIEV2ZW50TmFtZXM7CisKKy8qIFNvdXJjZSBmb3IgSlNFdmVudFRhcmdldE5vZGVUYWJs
ZQorQGJlZ2luIEpTRXZlbnRUYXJnZXROb2RlVGFibGUgNTAKK29uYWJvcnQgICAgICAgV2ViQ29y
ZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uQWJvcnQgICAgICAgICAgICAgICAgRG9udERlbGV0ZQor
b25ibHVyICAgICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6T25CbHVyICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlCitvbmNoYW5nZSAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRO
b2RlOjpPbkNoYW5nZSAgICAgICAgICAgICAgIERvbnREZWxldGUKK29uY2xpY2sgICAgICAgV2Vi
Q29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uQ2xpY2sgICAgICAgICAgICAgICAgRG9udERlbGV0
ZQorb25jb250ZXh0bWVudSBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6T25Db250ZXh0TWVu
dSAgICAgICAgICBEb250RGVsZXRlCitvbmRibGNsaWNrICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJn
ZXROb2RlOjpPbkRibENsaWNrICAgICAgICAgICAgIERvbnREZWxldGUKK29uYmVmb3JlY3V0ICAg
V2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uQmVmb3JlQ3V0ICAgICAgICAgICAgRG9udERl
bGV0ZQorb25jdXQgICAgICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6T25DdXQgICAg
ICAgICAgICAgICAgICBEb250RGVsZXRlCitvbmJlZm9yZWNvcHkgIFdlYkNvcmU6OkpTRXZlbnRU
YXJnZXROb2RlOjpPbkJlZm9yZUNvcHkgICAgICAgICAgIERvbnREZWxldGUKK29uY29weSAgICAg
ICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uQ29weSAgICAgICAgICAgICAgICAgRG9u
dERlbGV0ZQorb25iZWZvcmVwYXN0ZSBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6T25CZWZv
cmVQYXN0ZSAgICAgICAgICBEb250RGVsZXRlCitvbnBhc3RlICAgICAgIFdlYkNvcmU6OkpTRXZl
bnRUYXJnZXROb2RlOjpPblBhc3RlICAgICAgICAgICAgICAgIERvbnREZWxldGUKK29uZHJhZyAg
ICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uRHJhZyAgICAgICAgICAgICAgICAg
RG9udERlbGV0ZQorb25kcmFnZW5kICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6T25E
cmFnRW5kICAgICAgICAgICAgICBEb250RGVsZXRlCitvbmRyYWdlbnRlciAgIFdlYkNvcmU6OkpT
RXZlbnRUYXJnZXROb2RlOjpPbkRyYWdFbnRlciAgICAgICAgICAgIERvbnREZWxldGUKK29uZHJh
Z2xlYXZlICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uRHJhZ0xlYXZlICAgICAgICAg
ICAgRG9udERlbGV0ZQorb25kcmFnb3ZlciAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6
T25EcmFnT3ZlciAgICAgICAgICAgICBEb250RGVsZXRlCitvbmRyYWdzdGFydCAgIFdlYkNvcmU6
OkpTRXZlbnRUYXJnZXROb2RlOjpPbkRyYWdTdGFydCAgICAgICAgICAgIERvbnREZWxldGUKK29u
ZHJvcCAgICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uRHJvcCAgICAgICAgICAg
ICAgICAgRG9udERlbGV0ZQorb25lcnJvciAgICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9k
ZTo6T25FcnJvciAgICAgICAgICAgICAgICBEb250RGVsZXRlCitvbmZvY3VzICAgICAgIFdlYkNv
cmU6OkpTRXZlbnRUYXJnZXROb2RlOjpPbkZvY3VzICAgICAgICAgICAgICAgIERvbnREZWxldGUK
K29uaW5wdXQgICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uSW5wdXQgICAgICAg
ICAgICAgICAgRG9udERlbGV0ZQorb25rZXlkb3duICAgICBXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0
Tm9kZTo6T25LZXlEb3duICAgICAgICAgICAgICBEb250RGVsZXRlCitvbmtleXByZXNzICAgIFdl
YkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpPbktleVByZXNzICAgICAgICAgICAgIERvbnREZWxl
dGUKK29ua2V5dXAgICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uS2V5VXAgICAg
ICAgICAgICAgICAgRG9udERlbGV0ZQorb25sb2FkICAgICAgICBXZWJDb3JlOjpKU0V2ZW50VGFy
Z2V0Tm9kZTo6T25Mb2FkICAgICAgICAgICAgICAgICBEb250RGVsZXRlCitvbm1vdXNlZG93biAg
IFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpPbk1vdXNlRG93biAgICAgICAgICAgIERvbnRE
ZWxldGUKK29ubW91c2Vtb3ZlICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uTW91c2VN
b3ZlICAgICAgICAgICAgRG9udERlbGV0ZQorb25tb3VzZW91dCAgICBXZWJDb3JlOjpKU0V2ZW50
VGFyZ2V0Tm9kZTo6T25Nb3VzZU91dCAgICAgICAgICAgICBEb250RGVsZXRlCitvbm1vdXNlb3Zl
ciAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpPbk1vdXNlT3ZlciAgICAgICAgICAgIERv
bnREZWxldGUKK29ubW91c2V1cCAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9uTW91
c2VVcCAgICAgICAgICAgICAgRG9udERlbGV0ZQorb25tb3VzZXdoZWVsICBXZWJDb3JlOjpKU0V2
ZW50VGFyZ2V0Tm9kZTo6T25Nb3VzZVdoZWVsICAgICAgICAgICBEb250RGVsZXRlCitvbnJlc2V0
ICAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpPblJlc2V0ICAgICAgICAgICAgICAg
IERvbnREZWxldGUKK29ucmVzaXplICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6Ok9u
UmVzaXplICAgICAgICAgICAgICAgRG9udERlbGV0ZQorb25zY3JvbGwgICAgICBXZWJDb3JlOjpK
U0V2ZW50VGFyZ2V0Tm9kZTo6T25TY3JvbGwgICAgICAgICAgICAgICBEb250RGVsZXRlCitvbnNl
YXJjaCAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpPblNlYXJjaCAgICAgICAgICAg
ICAgIERvbnREZWxldGUKK29uc2VsZWN0ICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6
Ok9uU2VsZWN0ICAgICAgICAgICAgICAgRG9udERlbGV0ZQorb25zZWxlY3RzdGFydCBXZWJDb3Jl
OjpKU0V2ZW50VGFyZ2V0Tm9kZTo6T25TZWxlY3RTdGFydCAgICAgICAgICBEb250RGVsZXRlCitv
bnN1Ym1pdCAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpPblN1Ym1pdCAgICAgICAg
ICAgICAgIERvbnREZWxldGUKK29udW5sb2FkICAgICAgV2ViQ29yZTo6SlNFdmVudFRhcmdldE5v
ZGU6Ok9uVW5sb2FkICAgICAgICAgICAgICAgRG9udERlbGV0ZQorQGVuZAorKi8KKworSlNFdmVu
dFRhcmdldE5vZGU6OkpTRXZlbnRUYXJnZXROb2RlKEV4ZWNTdGF0ZSogZXhlYywgTm9kZSogbikK
KyAgICA6IEpTTm9kZShleGVjLCBuKQoreworICAgIHNldFByb3RvdHlwZShKU0V2ZW50VGFyZ2V0
Tm9kZVByb3RvdHlwZTo6c2VsZihleGVjKSk7Cit9CisKK2Jvb2wgSlNFdmVudFRhcmdldE5vZGU6
OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNW
YWx1ZVNsb3Q8SlNFdmVudFRhcmdldE5vZGUsIEpTTm9kZT4oZXhlYywgJkpTRXZlbnRUYXJnZXRO
b2RlVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0pTVmFsdWUqIEpTRXZl
bnRUYXJnZXROb2RlOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2Vu
KSBjb25zdAoreworICAgIHN3aXRjaCAodG9rZW4pIHsKKyAgICAgICAgY2FzZSBPbkFib3J0Ogor
ICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGFib3J0RXZlbnQpOworICAgICAgICBjYXNl
IE9uQmx1cjoKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihibHVyRXZlbnQpOworICAg
ICAgICBjYXNlIE9uQ2hhbmdlOgorICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGNoYW5n
ZUV2ZW50KTsKKyAgICAgICAgY2FzZSBPbkNsaWNrOgorICAgICAgICAgICAgcmV0dXJuIGdldExp
c3RlbmVyKGNsaWNrRXZlbnQpOworICAgICAgICBjYXNlIE9uQ29udGV4dE1lbnU6CisgICAgICAg
ICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoY29udGV4dG1lbnVFdmVudCk7CisgICAgICAgIGNhc2Ug
T25EYmxDbGljazoKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkYmxjbGlja0V2ZW50
KTsKKyAgICAgICAgY2FzZSBPbkVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVy
KGVycm9yRXZlbnQpOworICAgICAgICBjYXNlIE9uRm9jdXM6CisgICAgICAgICAgICByZXR1cm4g
Z2V0TGlzdGVuZXIoZm9jdXNFdmVudCk7CisgICAgICAgIGNhc2UgT25JbnB1dDoKKyAgICAgICAg
ICAgIHJldHVybiBnZXRMaXN0ZW5lcihpbnB1dEV2ZW50KTsKKyAgICAgICAgY2FzZSBPbktleURv
d246CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoa2V5ZG93bkV2ZW50KTsKKyAgICAg
ICAgY2FzZSBPbktleVByZXNzOgorICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGtleXBy
ZXNzRXZlbnQpOworICAgICAgICBjYXNlIE9uS2V5VXA6CisgICAgICAgICAgICByZXR1cm4gZ2V0
TGlzdGVuZXIoa2V5dXBFdmVudCk7CisgICAgICAgIGNhc2UgT25Mb2FkOgorICAgICAgICAgICAg
cmV0dXJuIGdldExpc3RlbmVyKGxvYWRFdmVudCk7CisgICAgICAgIGNhc2UgT25Nb3VzZURvd246
CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIobW91c2Vkb3duRXZlbnQpOworICAgICAg
ICBjYXNlIE9uTW91c2VNb3ZlOgorICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKG1vdXNl
bW92ZUV2ZW50KTsKKyAgICAgICAgY2FzZSBPbk1vdXNlT3V0OgorICAgICAgICAgICAgcmV0dXJu
IGdldExpc3RlbmVyKG1vdXNlb3V0RXZlbnQpOworICAgICAgICBjYXNlIE9uTW91c2VPdmVyOgor
ICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKG1vdXNlb3ZlckV2ZW50KTsKKyAgICAgICAg
Y2FzZSBPbk1vdXNlVXA6CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIobW91c2V1cEV2
ZW50KTsgICAgICAKKyAgICAgICAgY2FzZSBPbk1vdXNlV2hlZWw6CisgICAgICAgICAgICByZXR1
cm4gZ2V0TGlzdGVuZXIobW91c2V3aGVlbEV2ZW50KTsgICAgICAKKyAgICAgICAgY2FzZSBPbkJl
Zm9yZUN1dDoKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihiZWZvcmVjdXRFdmVudCk7
CisgICAgICAgIGNhc2UgT25DdXQ6CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoY3V0
RXZlbnQpOworICAgICAgICBjYXNlIE9uQmVmb3JlQ29weToKKyAgICAgICAgICAgIHJldHVybiBn
ZXRMaXN0ZW5lcihiZWZvcmVjb3B5RXZlbnQpOworICAgICAgICBjYXNlIE9uQ29weToKKyAgICAg
ICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihjb3B5RXZlbnQpOworICAgICAgICBjYXNlIE9uQmVm
b3JlUGFzdGU6CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoYmVmb3JlcGFzdGVFdmVu
dCk7CisgICAgICAgIGNhc2UgT25QYXN0ZToKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5l
cihwYXN0ZUV2ZW50KTsKKyAgICAgICAgY2FzZSBPbkRyYWdFbnRlcjoKKyAgICAgICAgICAgIHJl
dHVybiBnZXRMaXN0ZW5lcihkcmFnZW50ZXJFdmVudCk7CisgICAgICAgIGNhc2UgT25EcmFnT3Zl
cjoKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFnb3ZlckV2ZW50KTsKKyAgICAg
ICAgY2FzZSBPbkRyYWdMZWF2ZToKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFn
bGVhdmVFdmVudCk7CisgICAgICAgIGNhc2UgT25Ecm9wOgorICAgICAgICAgICAgcmV0dXJuIGdl
dExpc3RlbmVyKGRyb3BFdmVudCk7CisgICAgICAgIGNhc2UgT25EcmFnU3RhcnQ6CisgICAgICAg
ICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZHJhZ3N0YXJ0RXZlbnQpOworICAgICAgICBjYXNlIE9u
RHJhZzoKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFnRXZlbnQpOworICAgICAg
ICBjYXNlIE9uRHJhZ0VuZDoKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFnZW5k
RXZlbnQpOworICAgICAgICBjYXNlIE9uUmVzZXQ6CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlz
dGVuZXIocmVzZXRFdmVudCk7CisgICAgICAgIGNhc2UgT25SZXNpemU6CisgICAgICAgICAgICBy
ZXR1cm4gZ2V0TGlzdGVuZXIocmVzaXplRXZlbnQpOworICAgICAgICBjYXNlIE9uU2Nyb2xsOgor
ICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKHNjcm9sbEV2ZW50KTsKKyAgICAgICAgY2Fz
ZSBPblNlYXJjaDoKKyAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihzZWFyY2hFdmVudCk7
CisgICAgICAgIGNhc2UgT25TZWxlY3Q6CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIo
c2VsZWN0RXZlbnQpOworICAgICAgICBjYXNlIE9uU2VsZWN0U3RhcnQ6CisgICAgICAgICAgICBy
ZXR1cm4gZ2V0TGlzdGVuZXIoc2VsZWN0c3RhcnRFdmVudCk7CisgICAgICAgIGNhc2UgT25TdWJt
aXQ6CisgICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoc3VibWl0RXZlbnQpOworICAgICAg
ICBjYXNlIE9uVW5sb2FkOgorICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKHVubG9hZEV2
ZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwordm9pZCBKU0V2
ZW50VGFyZ2V0Tm9kZTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSwgaW50IGF0dHIpCit7CisgICAgbG9va3VwUHV0PEpT
RXZlbnRUYXJnZXROb2RlLCBKU05vZGU+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIs
ICZKU0V2ZW50VGFyZ2V0Tm9kZVRhYmxlLCB0aGlzKTsKK30KKwordm9pZCBKU0V2ZW50VGFyZ2V0
Tm9kZTo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbiwgSlNWYWx1
ZSogdmFsdWUsIGludCAvKmF0dHIqLykKK3sKKyAgICBzd2l0Y2ggKHRva2VuKSB7CisgICAgICAg
IGNhc2UgT25BYm9ydDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGFib3J0RXZlbnQs
IHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9uQmx1cjoKKyAgICAg
ICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGJsdXJFdmVudCwgdmFsdWUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgT25DaGFuZ2U6CisgICAgICAgICAgICBzZXRMaXN0ZW5lcihl
eGVjLCBjaGFuZ2VFdmVudCwgdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgT25DbGljazoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGNsaWNrRXZlbnQsIHZh
bHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9uQ29udGV4dE1lbnU6Cisg
ICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBjb250ZXh0bWVudUV2ZW50LCB2YWx1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPbkRibENsaWNrOgorICAgICAgICAgICAg
c2V0TGlzdGVuZXIoZXhlYywgZGJsY2xpY2tFdmVudCwgdmFsdWUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgT25FcnJvcjoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMs
IGVycm9yRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9u
Rm9jdXM6CisgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBmb2N1c0V2ZW50LCB2YWx1ZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPbklucHV0OgorICAgICAgICAgICAg
c2V0TGlzdGVuZXIoZXhlYywgaW5wdXRFdmVudCwgdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgT25LZXlEb3duOgorICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywg
a2V5ZG93bkV2ZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBP
bktleVByZXNzOgorICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywga2V5cHJlc3NFdmVudCwg
dmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT25LZXlVcDoKKyAgICAg
ICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGtleXVwRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE9uTG9hZDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4
ZWMsIGxvYWRFdmVudCwgdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
T25Nb3VzZURvd246CisgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBtb3VzZWRvd25FdmVu
dCwgdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT25Nb3VzZU1vdmU6
CisgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBtb3VzZW1vdmVFdmVudCwgdmFsdWUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT25Nb3VzZU91dDoKKyAgICAgICAgICAg
IHNldExpc3RlbmVyKGV4ZWMsIG1vdXNlb3V0RXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE9uTW91c2VPdmVyOgorICAgICAgICAgICAgc2V0TGlzdGVuZXIo
ZXhlYywgbW91c2VvdmVyRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE9uTW91c2VVcDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIG1vdXNldXBF
dmVudCwgdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT25Nb3VzZVdo
ZWVsOgorICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgbW91c2V3aGVlbEV2ZW50LCB2YWx1
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPbkJlZm9yZUN1dDoKKyAgICAg
ICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGJlZm9yZWN1dEV2ZW50LCB2YWx1ZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPbkN1dDoKKyAgICAgICAgICAgIHNldExpc3RlbmVy
KGV4ZWMsIGN1dEV2ZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBPbkJlZm9yZUNvcHk6CisgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBiZWZvcmVjb3B5
RXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9uQ29weToK
KyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGNvcHlFdmVudCwgdmFsdWUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT25CZWZvcmVQYXN0ZToKKyAgICAgICAgICAgIHNl
dExpc3RlbmVyKGV4ZWMsIGJlZm9yZXBhc3RlRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE9uUGFzdGU6CisgICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVj
LCBwYXN0ZUV2ZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBP
bkRyYWdFbnRlcjoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGRyYWdlbnRlckV2ZW50
LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPbkRyYWdPdmVyOgor
ICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgZHJhZ292ZXJFdmVudCwgdmFsdWUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT25EcmFnTGVhdmU6CisgICAgICAgICAgICBz
ZXRMaXN0ZW5lcihleGVjLCBkcmFnbGVhdmVFdmVudCwgdmFsdWUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgT25Ecm9wOgorICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywg
ZHJvcEV2ZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPbkRy
YWdTdGFydDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGRyYWdzdGFydEV2ZW50LCB2
YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPbkRyYWc6CisgICAgICAg
ICAgICBzZXRMaXN0ZW5lcihleGVjLCBkcmFnRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE9uRHJhZ0VuZDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4
ZWMsIGRyYWdlbmRFdmVudCwgdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgT25SZXNldDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIHJlc2V0RXZlbnQsIHZh
bHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9uUmVzaXplOgorICAgICAg
ICAgICAgc2V0TGlzdGVuZXIoZXhlYywgcmVzaXplRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE9uU2Nyb2xsOgorICAgICAgICAgICAgc2V0TGlzdGVuZXIo
ZXhlYywgc2Nyb2xsRXZlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIE9uU2VhcmNoOgorICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgc2VhcmNoRXZlbnQs
IHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9uU2VsZWN0OgorICAg
ICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgc2VsZWN0RXZlbnQsIHZhbHVlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE9uU2VsZWN0U3RhcnQ6CisgICAgICAgICAgICBzZXRM
aXN0ZW5lcihleGVjLCBzZWxlY3RzdGFydEV2ZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBPblN1Ym1pdDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMs
IHN1Ym1pdEV2ZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBP
blVubG9hZDoKKyAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIHVubG9hZEV2ZW50LCB2YWx1
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgSlNFdmVudFRhcmdldE5v
ZGU6OnNldExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nICZldmVu
dFR5cGUsIEpTVmFsdWUqIGZ1bmMpIGNvbnN0Cit7CisgICAgRXZlbnRUYXJnZXROb2RlQ2FzdChp
bXBsKCkpLT5zZXRIVE1MRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIEtKUzo6V2luZG93OjpyZXRy
aWV2ZUFjdGl2ZShleGVjKS0+ZmluZE9yQ3JlYXRlSlNFdmVudExpc3RlbmVyKGZ1bmMsIHRydWUp
KTsKK30KKworSlNWYWx1ZSogSlNFdmVudFRhcmdldE5vZGU6OmdldExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyID0gRXZlbnRUYXJnZXROb2RlQ2FzdChpbXBsKCkpLT5nZXRIVE1MRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUpOworICAgIEpTRXZlbnRMaXN0ZW5lcioganNMaXN0ZW5lciA9IHN0YXRpY19jYXN0
PEpTRXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKTsKKyAgICBpZiAoanNMaXN0ZW5lciAmJiBqc0xp
c3RlbmVyLT5saXN0ZW5lck9iaigpKQorICAgICAgICByZXR1cm4ganNMaXN0ZW5lci0+bGlzdGVu
ZXJPYmooKTsKKworICAgIHJldHVybiBqc051bGwoKTsKK30KKwordm9pZCBKU0V2ZW50VGFyZ2V0
Tm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW4mKSBjb25z
dAoreworfQorCisvKgorQGJlZ2luIEpTRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlVGFibGUgNQor
IyBmcm9tIHRoZSBFdmVudFRhcmdldCBpbnRlcmZhY2UKK2FkZEV2ZW50TGlzdGVuZXIgICAgICAg
IFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpBZGRFdmVudExpc3RlbmVyICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAzCityZW1vdmVFdmVudExpc3RlbmVyICAgICBXZWJDb3JlOjpKU0V2ZW50VGFy
Z2V0Tm9kZTo6UmVtb3ZlRXZlbnRMaXN0ZW5lciAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDMKK2Rp
c3BhdGNoRXZlbnQgICAgICAgICAgIFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpEaXNwYXRj
aEV2ZW50ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKK0BlbmQKKyovCisKK0tKU19JTVBMRU1FTlRf
UFJPVE9UWVBFX0ZVTkNUSU9OKEpTRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlRnVuY3Rpb24pCitL
SlNfSU1QTEVNRU5UX1BST1RPVFlQRSgiSlNFdmVudFRhcmdldE5vZGUiLCBKU0V2ZW50VGFyZ2V0
Tm9kZVByb3RvdHlwZSwgSlNFdmVudFRhcmdldE5vZGVQcm90b3R5cGVGdW5jdGlvbikKKworSlNW
YWx1ZSogSlNFdmVudFRhcmdldE5vZGVQcm90b3R5cGVGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYgYXJncykKK3sK
KyAgICBpZiAoIXRoaXNPYmotPmluaGVyaXRzKCZKU0V2ZW50VGFyZ2V0Tm9kZTo6aW5mbykpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgRE9NRXhjZXB0
aW9uVHJhbnNsYXRvciBleGNlcHRpb24oZXhlYyk7CisgICAgSlNFdmVudFRhcmdldE5vZGUqIGpz
Tm9kZSA9IHN0YXRpY19jYXN0PEpTRXZlbnRUYXJnZXROb2RlKj4odGhpc09iaik7CisgICAgRXZl
bnRUYXJnZXROb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2RlKj4oanNOb2Rl
LT5pbXBsKCkpOworICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2FzZSBKU0V2ZW50VGFyZ2V0
Tm9kZTo6QWRkRXZlbnRMaXN0ZW5lcjogeworICAgICAgICAgICAgSlNFdmVudExpc3RlbmVyKiBs
aXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRPckNyZWF0ZUpTRXZl
bnRMaXN0ZW5lcihhcmdzWzFdKTsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lcikKKyAgICAgICAg
ICAgICAgICBub2RlLT5hZGRFdmVudExpc3RlbmVyKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBs
aXN0ZW5lcixhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBKU0V2ZW50VGFyZ2V0Tm9kZTo6
UmVtb3ZlRXZlbnRMaXN0ZW5lcjogeworICAgICAgICAgICAgSlNFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU0V2ZW50TGlzdGVuZXIo
YXJnc1sxXSk7CisgICAgICAgICAgICBpZiAobGlzdGVuZXIpIAorICAgICAgICAgICAgICAgIG5v
ZGUtPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVy
LGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEpTRXZlbnRUYXJnZXROb2RlOjpEaXNwYXRj
aEV2ZW50OgorICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihub2RlLT5kaXNwYXRjaEV2ZW50
KHRvRXZlbnQoYXJnc1swXSksIGV4Y2VwdGlvbikpOworICAgIH0KKworICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworfQorCisKK0V2ZW50VGFyZ2V0Tm9kZSogdG9FdmVudFRhcmdldE5vZGUoSlNW
YWx1ZSogdmFsKQoreworICAgIGlmICghdmFsIHx8ICF2YWwtPmlzT2JqZWN0KCZKU0V2ZW50VGFy
Z2V0Tm9kZTo6aW5mbykpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFdmVudFRhcmdldE5vZGUqPihzdGF0aWNfY2FzdDxKU0V2ZW50VGFyZ2V0Tm9kZSo+KHZhbCkt
PmltcGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEpTRXZlbnRUYXJnZXROb2RlX2gKKyNkZWZpbmUgSlNFdmVudFRh
cmdldE5vZGVfaAorCisjaW5jbHVkZSAiSlNOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworICAgIGNsYXNzIEV2ZW50VGFyZ2V0Tm9kZTsKKyAgICBjbGFzcyBOb2RlOworCisgICAgY2xh
c3MgSlNFdmVudFRhcmdldE5vZGUgOiBwdWJsaWMgSlNOb2RlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIEpTRXZlbnRUYXJnZXROb2RlKEtKUzo6RXhlY1N0YXRlKiwgTm9kZSogbik7CisKKyAgICAg
ICAgdm9pZCBzZXRMaXN0ZW5lcihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBLSlM6OkpTVmFsdWUqIGZ1bmMpIGNvbnN0OworICAgICAgICBLSlM6OkpTVmFs
dWUqIGdldExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRsZXJTY29wZShLSlM6OkV4ZWNTdGF0ZSos
IEtKUzo6U2NvcGVDaGFpbiYpIGNvbnN0OworCisgICAgICAgIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpQcm9wZXJ0
eVNsb3QmKTsKKyAgICAgICAgS0pTOjpKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEtKUzo6RXhl
Y1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHB1dChLSlM6
OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6SlNWYWx1ZSogdmFsdWUs
IGludCBhdHRyKTsKKyAgICAgICAgdm9pZCBwdXRWYWx1ZVByb3BlcnR5KEtKUzo6RXhlY1N0YXRl
KiwgaW50IHRva2VuLCBLSlM6OkpTVmFsdWUqIHZhbHVlLCBpbnQgYXR0cik7CisKKyAgICAgICAg
ZW51bSB7ICAKKyAgICAgICAgICAgIEFkZEV2ZW50TGlzdGVuZXIsIFJlbW92ZUV2ZW50TGlzdGVu
ZXIsIERpc3BhdGNoRXZlbnQsCisgICAgICAgICAgICBPbkFib3J0LCBPbkJsdXIsIE9uQ2hhbmdl
LCBPbkNsaWNrLCBPbkNvbnRleHRNZW51LCBPbkRibENsaWNrLCBPbkVycm9yLAorICAgICAgICAg
ICAgT25EcmFnRW50ZXIsIE9uRHJhZ092ZXIsIE9uRHJhZ0xlYXZlLCBPbkRyb3AsIE9uRHJhZ1N0
YXJ0LCBPbkRyYWcsIE9uRHJhZ0VuZCwKKyAgICAgICAgICAgIE9uQmVmb3JlQ3V0LCBPbkN1dCwg
T25CZWZvcmVDb3B5LCBPbkNvcHksIE9uQmVmb3JlUGFzdGUsIE9uUGFzdGUsIE9uU2VsZWN0U3Rh
cnQsCisgICAgICAgICAgICBPbkZvY3VzLCBPbklucHV0LCBPbktleURvd24sIE9uS2V5UHJlc3Ms
IE9uS2V5VXAsIE9uTG9hZCwgT25Nb3VzZURvd24sCisgICAgICAgICAgICBPbk1vdXNlTW92ZSwg
T25Nb3VzZU91dCwgT25Nb3VzZU92ZXIsIE9uTW91c2VVcCwgT25Nb3VzZVdoZWVsLCBPblJlc2V0
LAorICAgICAgICAgICAgT25SZXNpemUsIE9uU2Nyb2xsLCBPblNlYXJjaCwgT25TZWxlY3QsIE9u
U3VibWl0LCBPblVubG9hZAorICAgICAgICB9OworICAgIH07CisKKyAgICBFdmVudFRhcmdldE5v
ZGUqIHRvRXZlbnRUYXJnZXROb2RlKEtKUzo6SlNWYWx1ZSopOworCisgICAgS0pTX0RFRklORV9Q
Uk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUoSlNFdmVudFRhcmdldE5vZGVQcm90b3R5cGUsIEpTTm9k
ZVByb3RvdHlwZSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNFdmVu
dFRhcmdldE5vZGVfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVk
ZSAia2pzX2RvbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMTk0
OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmgiCiAKLSNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxG
b3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTTmFtZWROb2Rlc0NvbGxlY3Rpb24uaCIKKyNpbmNs
dWRlICJranNfZG9tLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKQEAgLTUwLDcgKzUyLDcg
QEAgSlNWYWx1ZSogSlNIVE1MRm9ybUVsZW1lbnQ6Om5hbWVHZXR0ZXIoRQogICAgIGlmIChuYW1l
ZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBuYW1lZEl0ZW1z
WzBdLmdldCgpKTsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPiAxKSAKLSAgICAgICAgcmV0
dXJuIG5ldyBET01OYW1lZE5vZGVzQ29sbGVjdGlvbihleGVjLCBuYW1lZEl0ZW1zKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyBKU05hbWVkTm9kZXNDb2xsZWN0aW9uKGV4ZWMsIG5hbWVkSXRlbXMpOwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyMTk0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTI0LDExICsyNCwxMiBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5j
bHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIEtKUzsKKyNpbmNsdWRlICJranNfZG9tLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAordXNpbmcgbmFtZXNwYWNlIEtKUzsKKwogSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVj
dG9yOjpKU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBEb2N1
bWVudCogZCkKICAgICA6IG1fZG9jKGQpCiB7CkBAIC02NSw0ICs2Niw0IEBAIEpTT2JqZWN0KiBK
U0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNP
YmplY3QqPih0b0pTKGV4ZWMsIG9wdCkpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTTmFtZWROb2RlTWFwLmgiCisKKyNpbmNsdWRlICJBdG9taWNT
dHJpbmcuaCIKKyNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlICJranNfZG9tLmgi
CisjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoS0pTOjpFeGVjU3RhdGUqLCBOYW1l
ZE5vZGVNYXAqIGltcGwsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQoreworICAg
IHJldHVybiBpbXBsLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lKTsKK30KKworS0pTOjpKU1Zh
bHVlKiBKU05hbWVkTm9kZU1hcDo6bmFtZUdldHRlcihLSlM6OkV4ZWNTdGF0ZSogZXhlYywgS0pT
OjpKU09iamVjdCogb3JpZ2luYWxPYmplY3QsIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBjb25zdCBLSlM6OlByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU05hbWVkTm9k
ZU1hcCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2RlTWFwKj4oc2xvdC5zbG90QmFz
ZSgpKTsKKyAgICByZXR1cm4gS0pTOjp0b0pTKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0TmFt
ZWRJdGVtKHByb3BlcnR5TmFtZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVjdGlvbi5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTTmFtZWROb2Rlc0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUg
IkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIk5hbWVkQXR0ck1hcC5oIgorI2luY2x1ZGUgIk5v
ZGUuaCIKKyNpbmNsdWRlICJranNfZG9tLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNp
bmcgbmFtZXNwYWNlIEtKUzsKKworY29uc3QgQ2xhc3NJbmZvIEpTTmFtZWROb2Rlc0NvbGxlY3Rp
b246OmluZm8gPSB7ICJDb2xsZWN0aW9uIiwgMCwgMCwgMCB9OworCisvLyBTdWNoIGEgY29sbGVj
dGlvbiBpcyB1c3VhbGx5IHZlcnkgc2hvcnQtbGl2ZWQsIGl0IG9ubHkgZXhpc3RzCisvLyBmb3Ig
Y29uc3RydWN0cyBsaWtlIGRvY3VtZW50LmZvcm1zLjxuYW1lPlsxXSwKKy8vIHNvIGl0IHNob3Vs
ZG4ndCBiZSBhIHByb2JsZW0gdGhhdCBpdCdzIHN0b3JpbmcgYWxsIHRoZSBub2RlcyAod2l0aCB0
aGUgc2FtZSBuYW1lKS4gKERhdmlkKQorSlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6SlNOYW1lZE5v
ZGVzQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiYgbm9kZXMpCisgICAgOiBtX25vZGVzKG5vZGVzKQoreworICAgIHNldFByb3RvdHlwZShleGVj
LT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbk9iamVjdFByb3RvdHlwZSgpKTsKK30KKwor
SlNWYWx1ZSogSlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU05hbWVkTm9kZXNDb2xs
ZWN0aW9uKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNOYW1lZE5vZGVzQ29sbGVjdGlvbio+KHNs
b3Quc2xvdEJhc2UoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPm1fbm9kZXMuc2l6
ZSgpKTsKK30KKworSlNWYWx1ZSogSlNOYW1lZE5vZGVzQ29sbGVjdGlvbjo6aW5kZXhHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTmFt
ZWROb2Rlc0NvbGxlY3Rpb24gKnRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU05hbWVkTm9kZXNDb2xs
ZWN0aW9uKj4oc2xvdC5zbG90QmFzZSgpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2Jq
LT5tX25vZGVzW3Nsb3QuaW5kZXgoKV0uZ2V0KCkpOworfQorCitib29sIEpTTmFtZWROb2Rlc0Nv
bGxlY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90
LnNldEN1c3RvbSh0aGlzLCBsZW5ndGhHZXR0ZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBib29sIG9rOworICAgIHVuc2lnbmVkIGluZGV4ID0gcHJvcGVydHlOYW1lLnRv
VUludDMyKCZvayk7CisgICAgaWYgKG9rICYmIGluZGV4IDwgbV9ub2Rlcy5zaXplKCkpIHsKKyAg
ICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzLCBpbmRleCwgaW5kZXhHZXR0ZXIpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBGb3IgSUUgY29tcGF0aWJpbGl0eSwg
d2UgbmVlZCB0byBiZSBhYmxlIHRvIGxvb2sgdXAgZWxlbWVudHMgaW4gYQorICAgIC8vIGRvY3Vt
ZW50LmZvcm1OYW1lLm5hbWUgcmVzdWx0IGJ5IGlkIGFzIHdlbGwgYXMgYmUgaW5kZXguCisKKyAg
ICBBdG9taWNTdHJpbmcgYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX25vZGVzW2ldLmdldCgpOworICAgICAgICBpZiAobm9kZS0+aGFzQXR0cmli
dXRlcygpICYmIG5vZGUtPmF0dHJpYnV0ZXMoKS0+aWQoKSA9PSBhdG9taWNQcm9wZXJ0eU5hbWUp
IHsKKyAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaSwgaW5kZXhHZXR0ZXIp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gRE9NT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNOYW1lZE5vZGVzQ29sbGVjdGlvbl9oCisjZGVm
aW5lIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb25faAorCisjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNs
YXNzIE5vZGU7CisKKyAgICAvLyBJbnRlcm5hbCBjbGFzcywgdXNlZCBmb3IgdGhlIGNvbGxlY3Rp
b24gcmV0dXJuIGJ5IGUuZy4gZG9jdW1lbnQuZm9ybXMubXlpbnB1dAorICAgIC8vIHdoZW4gbXVs
dGlwbGUgbm9kZXMgaGF2ZSB0aGUgc2FtZSBuYW1lLgorICAgIGNsYXNzIEpTTmFtZWROb2Rlc0Nv
bGxlY3Rpb24gOiBwdWJsaWMgS0pTOjpET01PYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAg
SlNOYW1lZE5vZGVzQ29sbGVjdGlvbihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiYpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
S0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xv
dCYpOworCisgICAgICAgIHZpcnR1YWwgY29uc3QgS0pTOjpDbGFzc0luZm8qIGNsYXNzSW5mbygp
IGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBLSlM6OkNsYXNz
SW5mbyBpbmZvOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIEtKUzo6SlNWYWx1ZSog
bGVuZ3RoR2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCosIGNvbnN0IEtKUzo6
SWRlbnRpZmllciYsIGNvbnN0IEtKUzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBL
SlM6OkpTVmFsdWUqIGluZGV4R2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCos
IGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIGNvbnN0IEtKUzo6UHJvcGVydHlTbG90Jik7CisKKyAg
ICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7CisgICAgfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNOYW1lZE5vZGVzQ29sbGVjdGlvbl9oCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIK
KworI2luY2x1ZGUgIkF0dHIuaCIKKyNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKKyNpbmNsdWRl
ICJDb21tZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCisjaW5jbHVkZSAiRW50aXR5Lmgi
CisjaW5jbHVkZSAiRW50aXR5UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJKU0F0dHIuaCIKKyNpbmNsdWRlICJKU0NEQVRBU2VjdGlvbi5oIgorI2luY2x1
ZGUgIkpTQ29tbWVudC5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0Rv
Y3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJKU0RvY3VtZW50VHlwZS5oIgorI2luY2x1ZGUg
IkpTRW50aXR5LmgiCisjaW5jbHVkZSAiSlNFbnRpdHlSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJK
U0hUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmgi
CisjaW5jbHVkZSAiSlNOb3RhdGlvbi5oIgorI2luY2x1ZGUgIkpTUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiSlNUZXh0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUg
Ik5vdGF0aW9uLmgiCisjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW5jbHVk
ZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJKU1NWR0VsZW1lbnRXcmFwcGVy
RmFjdG9yeS5oIgorI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0tKUzo6SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywgUGFz
c1JlZlB0cjxOb2RlPiBuKQoreworICAgIE5vZGUqIG5vZGUgPSBuLmdldCgpOyAKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybiBLSlM6OmpzTnVsbCgpOworCisgICAgS0pTOjpTY3JpcHRJ
bnRlcnByZXRlciogaW50ZXJwID0gc3RhdGljX2Nhc3Q8S0pTOjpTY3JpcHRJbnRlcnByZXRlcio+
KGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpKTsKKyAgICBEb2N1bWVudCogZG9jID0gbm9kZS0+
ZG9jdW1lbnQoKTsKKyAgICBLSlM6OkRPTU5vZGUqIHJldCA9IGludGVycC0+Z2V0RE9NTm9kZUZv
ckRvY3VtZW50KGRvYywgbm9kZSk7CisgICAgaWYgKHJldCkKKyAgICAgICAgcmV0dXJuIHJldDsK
KworICAgIHN3aXRjaCAobm9kZS0+bm9kZVR5cGUoKSkgeworICAgICAgICBjYXNlIE5vZGU6OkVM
RU1FTlRfTk9ERToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkpCisgICAg
ICAgICAgICAgICAgcmV0ID0gY3JlYXRlSlNIVE1MV3JhcHBlcihleGVjLCBzdGF0aWNfcG9pbnRl
cl9jYXN0PEhUTUxFbGVtZW50PihuKSk7CisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHJldCA9IGNyZWF0
ZUpTU1ZHV3JhcHBlcihleGVjLCBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0VsZW1lbnQ+KG4pKTsK
KyNlbmRpZgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldCA9IG5ldyBKU0Vs
ZW1lbnQoZXhlYywgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgorICAgICAgICAgICAgcmV0
ID0gbmV3IEpTQXR0cihleGVjLCBzdGF0aWNfY2FzdDxBdHRyKj4obm9kZSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgorICAgICAgICAgICAgcmV0
ID0gbmV3IEpTVGV4dChleGVjLCBzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFOgorICAgICAg
ICAgICAgcmV0ID0gbmV3IEpTQ0RBVEFTZWN0aW9uKGV4ZWMsIHN0YXRpY19jYXN0PENEQVRBU2Vj
dGlvbio+KG5vZGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGU6OkVO
VElUWV9OT0RFOgorICAgICAgICAgICAgcmV0ID0gbmV3IEpTRW50aXR5KGV4ZWMsIHN0YXRpY19j
YXN0PEVudGl0eSo+KG5vZGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5v
ZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKKyAgICAgICAgICAgIHJldCA9IG5ldyBK
U1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihleGVjLCBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24qPihub2RlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlOjpD
T01NRU5UX05PREU6CisgICAgICAgICAgICByZXQgPSBuZXcgSlNDb21tZW50KGV4ZWMsIHN0YXRp
Y19jYXN0PENvbW1lbnQqPihub2RlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9OT0RFOgorICAgICAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBj
YWNoZSB0aGUgZG9jdW1lbnQgaXRzZWxmIGluIHRoZSBwZXItZG9jdW1lbnQgZGljdGlvbmFyeQor
ICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2Rl
KSk7CisgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgorICAgICAgICAgICAg
cmV0ID0gbmV3IEpTRG9jdW1lbnRUeXBlKGV4ZWMsIHN0YXRpY19jYXN0PERvY3VtZW50VHlwZSo+
KG5vZGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vZGU6Ok5PVEFUSU9O
X05PREU6CisgICAgICAgICAgICByZXQgPSBuZXcgSlNOb3RhdGlvbihleGVjLCBzdGF0aWNfY2Fz
dDxOb3RhdGlvbio+KG5vZGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5v
ZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgICAgICByZXQgPSBuZXcgSlNEb2N1
bWVudEZyYWdtZW50KGV4ZWMsIHN0YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihub2RlKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNF
X05PREU6CisgICAgICAgICAgICByZXQgPSBuZXcgSlNFbnRpdHlSZWZlcmVuY2UoZXhlYywgc3Rh
dGljX2Nhc3Q8RW50aXR5UmVmZXJlbmNlKj4obm9kZSkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXQgPSBuZXcgSlNOb2RlKGV4ZWMsIG5vZGUp
OworICAgIH0KKworICAgIGludGVycC0+cHV0RE9NTm9kZUZvckRvY3VtZW50KGRvYywgbm9kZSwg
cmV0KTsKKworICAgIHJldHVybiByZXQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNOb2RlTGlzdC5oIgorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNOb2RlLmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gTmVlZCB0byBzdXBwb3J0IGJvdGggZ2V0IGFuZCBjYWxs
LCBzbyB0aGF0IGxpc3RbMF0gYW5kIGxpc3QoMCkgd29yay4KK0tKUzo6SlNWYWx1ZSogSlNOb2Rl
TGlzdDo6Y2FsbEFzRnVuY3Rpb24oS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIEtKUzo6SlNPYmplY3Qq
IHRoaXNPYmosIGNvbnN0IEtKUzo6TGlzdCYgYXJncykKK3sKKyAgICAvLyBEbyBub3QgdXNlIHRo
aXNPYmogaGVyZS4gU2VlIEpTSFRNTENvbGxlY3Rpb24uCisgICAgS0pTOjpVU3RyaW5nIHMgPSBh
cmdzWzBdLT50b1N0cmluZyhleGVjKTsKKyAgICBib29sIG9rOworICAgIHVuc2lnbmVkIHUgPSBz
LnRvVUludDMyKCZvayk7CisgICAgaWYgKG9rKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBp
bXBsKCktPml0ZW0odSkpOworCisgICAgcmV0dXJuIEtKUzo6anNVbmRlZmluZWQoKTsKK30KKwor
Ym9vbCBKU05vZGVMaXN0OjppbXBsZW1lbnRzQ2FsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgSlNOb2RlTGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEtKUzo6RXhlY1N0
YXRlKiwgTm9kZUxpc3QqIGltcGwsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQor
eworICAgIHJldHVybiBpbXBsLT5pdGVtV2l0aE5hbWUocHJvcGVydHlOYW1lKTsKK30KKworS0pT
OjpKU1ZhbHVlKiBKU05vZGVMaXN0OjpuYW1lR2V0dGVyKEtKUzo6RXhlY1N0YXRlKiBleGVjLCBL
SlM6OkpTT2JqZWN0KiBvcmlnaW5hbE9iamVjdCwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IEtKUzo6UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTm9kZUxp
c3QqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU05vZGVMaXN0Kj4oc2xvdC5zbG90QmFzZSgpKTsK
KyAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5pbXBsKCktPml0ZW1XaXRoTmFtZShwcm9w
ZXJ0eU5hbWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9ranNfZG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L2tqc19kb20uY3BwCShyZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pz
X2RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEyICs0OCwxNSBAQAogI2luY2x1ZGUgIkpT
RW50aXR5UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSlNIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKKyNpbmNsdWRlICJKU05hbWVkTm9kZU1h
cC5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJKU05vdGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJKU1JhbmdlLmgiCiAjaW5jbHVkZSAiSlNUZXh0LmgiCiAjaW5jbHVkZSAiTmFt
ZWROb2RlTWFwLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb3RhdGlvbi5o
IgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlJhbmdlLmgi
CkBAIC0xNzEsMTEgKzE3NCw2IEBAIHZvaWQgRE9NTm9kZTo6bWFyaygpCiAgIEFTU0VSVChtYXJr
ZWQoKSk7CiB9CiAKLWJvb2wgRE9NTm9kZTo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSogKSBjb25zdAot
ewotICAgIHJldHVybiBtX2ltcGw7Ci19Ci0KIC8qIFNvdXJjZSBmb3IgRE9NTm9kZVRhYmxlLiBV
c2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KIEBiZWdpbiBET01Ob2RlVGFibGUg
MjUKICAgbm9kZU5hbWUgICAgICBET01Ob2RlOjpOb2RlTmFtZSAgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5CkBAIC0zMTgsNDQ5ICszMTYsNiBAQCBKU1ZhbHVlKiBET01Ob2RlUHJvdG90eXBlRnVu
Y3Rpb246OmNhbGxBCiAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1FdmVudFRhcmdldE5v
ZGUgKnRvRXZlbnRUYXJnZXROb2RlKEpTVmFsdWUqIHZhbCkKLXsKLSAgICBpZiAoIXZhbCB8fCAh
dmFsLT5pc09iamVjdCgmRE9NRXZlbnRUYXJnZXROb2RlOjppbmZvKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2ZW50VGFyZ2V0Tm9kZSo+KHN0YXRpY19jYXN0
PERPTUV2ZW50VGFyZ2V0Tm9kZSo+KHZhbCktPmltcGwoKSk7Ci19Ci0KLU5vZGUqIHRvTm9kZShK
U1ZhbHVlKiB2YWwpCi17Ci0gICAgaWYgKCF2YWwgfHwgIXZhbC0+aXNPYmplY3QoJkRPTU5vZGU6
OmluZm8pKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NTm9k
ZSo+KHZhbCktPmltcGwoKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vKiBTb3VyY2Ug
Zm9yIERPTUV2ZW50VGFyZ2V0Tm9kZVRhYmxlCi1AYmVnaW4gRE9NRXZlbnRUYXJnZXROb2RlVGFi
bGUgNTAKLW9uYWJvcnQgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkFib3J0ICAgICAgICAg
ICAgICAgIERvbnREZWxldGUKLW9uYmx1ciAgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkJs
dXIgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uY2hhbmdlICAgICAgRE9NRXZlbnRUYXJn
ZXROb2RlOjpPbkNoYW5nZSAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uY2xpY2sgICAgICAg
RE9NRXZlbnRUYXJnZXROb2RlOjpPbkNsaWNrICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9u
Y29udGV4dG1lbnUgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkNvbnRleHRNZW51ICAgICAgICAgIERv
bnREZWxldGUKLW9uZGJsY2xpY2sgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkRibENsaWNrICAg
ICAgICAgICAgIERvbnREZWxldGUKLW9uYmVmb3JlY3V0ICAgRE9NRXZlbnRUYXJnZXROb2RlOjpP
bkJlZm9yZUN1dCAgICAgICAgICAgIERvbnREZWxldGUKLW9uY3V0ICAgICAgICAgRE9NRXZlbnRU
YXJnZXROb2RlOjpPbkN1dCAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uYmVmb3JlY29w
eSAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkJlZm9yZUNvcHkgICAgICAgICAgIERvbnREZWxldGUK
LW9uY29weSAgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkNvcHkgICAgICAgICAgICAgICAg
IERvbnREZWxldGUKLW9uYmVmb3JlcGFzdGUgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkJlZm9yZVBh
c3RlICAgICAgICAgIERvbnREZWxldGUKLW9ucGFzdGUgICAgICAgRE9NRXZlbnRUYXJnZXROb2Rl
OjpPblBhc3RlICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uZHJhZyAgICAgICAgRE9NRXZl
bnRUYXJnZXROb2RlOjpPbkRyYWcgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uZHJhZ2Vu
ZCAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkRyYWdFbmQgICAgICAgICAgICAgIERvbnREZWxl
dGUKLW9uZHJhZ2VudGVyICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkRyYWdFbnRlciAgICAgICAg
ICAgIERvbnREZWxldGUKLW9uZHJhZ2xlYXZlICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkRyYWdM
ZWF2ZSAgICAgICAgICAgIERvbnREZWxldGUKLW9uZHJhZ292ZXIgICAgRE9NRXZlbnRUYXJnZXRO
b2RlOjpPbkRyYWdPdmVyICAgICAgICAgICAgIERvbnREZWxldGUKLW9uZHJhZ3N0YXJ0ICAgRE9N
RXZlbnRUYXJnZXROb2RlOjpPbkRyYWdTdGFydCAgICAgICAgICAgIERvbnREZWxldGUKLW9uZHJv
cCAgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkRyb3AgICAgICAgICAgICAgICAgIERvbnRE
ZWxldGUKLW9uZXJyb3IgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkVycm9yICAgICAgICAg
ICAgICAgIERvbnREZWxldGUKLW9uZm9jdXMgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbkZv
Y3VzICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uaW5wdXQgICAgICAgRE9NRXZlbnRUYXJn
ZXROb2RlOjpPbklucHV0ICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9ua2V5ZG93biAgICAg
RE9NRXZlbnRUYXJnZXROb2RlOjpPbktleURvd24gICAgICAgICAgICAgIERvbnREZWxldGUKLW9u
a2V5cHJlc3MgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbktleVByZXNzICAgICAgICAgICAgIERv
bnREZWxldGUKLW9ua2V5dXAgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbktleVVwICAgICAg
ICAgICAgICAgIERvbnREZWxldGUKLW9ubG9hZCAgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpP
bkxvYWQgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9ubW91c2Vkb3duICAgRE9NRXZlbnRU
YXJnZXROb2RlOjpPbk1vdXNlRG93biAgICAgICAgICAgIERvbnREZWxldGUKLW9ubW91c2Vtb3Zl
ICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbk1vdXNlTW92ZSAgICAgICAgICAgIERvbnREZWxldGUK
LW9ubW91c2VvdXQgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbk1vdXNlT3V0ICAgICAgICAgICAg
IERvbnREZWxldGUKLW9ubW91c2VvdmVyICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPbk1vdXNlT3Zl
ciAgICAgICAgICAgIERvbnREZWxldGUKLW9ubW91c2V1cCAgICAgRE9NRXZlbnRUYXJnZXROb2Rl
OjpPbk1vdXNlVXAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9ubW91c2V3aGVlbCAgRE9NRXZl
bnRUYXJnZXROb2RlOjpPbk1vdXNlV2hlZWwgICAgICAgICAgIERvbnREZWxldGUKLW9ucmVzZXQg
ICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPblJlc2V0ICAgICAgICAgICAgICAgIERvbnREZWxl
dGUKLW9ucmVzaXplICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPblJlc2l6ZSAgICAgICAgICAg
ICAgIERvbnREZWxldGUKLW9uc2Nyb2xsICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPblNjcm9s
bCAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uc2VhcmNoICAgICAgRE9NRXZlbnRUYXJnZXRO
b2RlOjpPblNlYXJjaCAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uc2VsZWN0ICAgICAgRE9N
RXZlbnRUYXJnZXROb2RlOjpPblNlbGVjdCAgICAgICAgICAgICAgIERvbnREZWxldGUKLW9uc2Vs
ZWN0c3RhcnQgRE9NRXZlbnRUYXJnZXROb2RlOjpPblNlbGVjdFN0YXJ0ICAgICAgICAgIERvbnRE
ZWxldGUKLW9uc3VibWl0ICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPblN1Ym1pdCAgICAgICAg
ICAgICAgIERvbnREZWxldGUKLW9udW5sb2FkICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpPblVu
bG9hZCAgICAgICAgICAgICAgIERvbnREZWxldGUKLUBlbmQKLSovCi0KLURPTUV2ZW50VGFyZ2V0
Tm9kZTo6RE9NRXZlbnRUYXJnZXROb2RlKEV4ZWNTdGF0ZSogZXhlYywgTm9kZSogbikKLSAgICA6
IEpTTm9kZShleGVjLCBuKQotewotICAgIHNldFByb3RvdHlwZShET01FdmVudFRhcmdldE5vZGVQ
cm90b3R5cGU6OnNlbGYoZXhlYykpOwotfQotCi1ib29sIERPTUV2ZW50VGFyZ2V0Tm9kZTo6Z2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVl
U2xvdDxET01FdmVudFRhcmdldE5vZGUsIERPTU5vZGU+KGV4ZWMsICZET01FdmVudFRhcmdldE5v
ZGVUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotSlNWYWx1ZSogRE9NRXZl
bnRUYXJnZXROb2RlOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2Vu
KSBjb25zdAotewotICAgIHN3aXRjaCAodG9rZW4pIHsKLSAgICAgICAgY2FzZSBPbkFib3J0Ogot
ICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGFib3J0RXZlbnQpOwotICAgICAgICBjYXNl
IE9uQmx1cjoKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihibHVyRXZlbnQpOwotICAg
ICAgICBjYXNlIE9uQ2hhbmdlOgotICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGNoYW5n
ZUV2ZW50KTsKLSAgICAgICAgY2FzZSBPbkNsaWNrOgotICAgICAgICAgICAgcmV0dXJuIGdldExp
c3RlbmVyKGNsaWNrRXZlbnQpOwotICAgICAgICBjYXNlIE9uQ29udGV4dE1lbnU6Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoY29udGV4dG1lbnVFdmVudCk7Ci0gICAgICAgIGNhc2Ug
T25EYmxDbGljazoKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkYmxjbGlja0V2ZW50
KTsKLSAgICAgICAgY2FzZSBPbkVycm9yOgotICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVy
KGVycm9yRXZlbnQpOwotICAgICAgICBjYXNlIE9uRm9jdXM6Ci0gICAgICAgICAgICByZXR1cm4g
Z2V0TGlzdGVuZXIoZm9jdXNFdmVudCk7Ci0gICAgICAgIGNhc2UgT25JbnB1dDoKLSAgICAgICAg
ICAgIHJldHVybiBnZXRMaXN0ZW5lcihpbnB1dEV2ZW50KTsKLSAgICAgICAgY2FzZSBPbktleURv
d246Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoa2V5ZG93bkV2ZW50KTsKLSAgICAg
ICAgY2FzZSBPbktleVByZXNzOgotICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKGtleXBy
ZXNzRXZlbnQpOwotICAgICAgICBjYXNlIE9uS2V5VXA6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
TGlzdGVuZXIoa2V5dXBFdmVudCk7Ci0gICAgICAgIGNhc2UgT25Mb2FkOgotICAgICAgICAgICAg
cmV0dXJuIGdldExpc3RlbmVyKGxvYWRFdmVudCk7Ci0gICAgICAgIGNhc2UgT25Nb3VzZURvd246
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIobW91c2Vkb3duRXZlbnQpOwotICAgICAg
ICBjYXNlIE9uTW91c2VNb3ZlOgotICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKG1vdXNl
bW92ZUV2ZW50KTsKLSAgICAgICAgY2FzZSBPbk1vdXNlT3V0OgotICAgICAgICAgICAgcmV0dXJu
IGdldExpc3RlbmVyKG1vdXNlb3V0RXZlbnQpOwotICAgICAgICBjYXNlIE9uTW91c2VPdmVyOgot
ICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKG1vdXNlb3ZlckV2ZW50KTsKLSAgICAgICAg
Y2FzZSBPbk1vdXNlVXA6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIobW91c2V1cEV2
ZW50KTsgICAgICAKLSAgICAgICAgY2FzZSBPbk1vdXNlV2hlZWw6Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0TGlzdGVuZXIobW91c2V3aGVlbEV2ZW50KTsgICAgICAKLSAgICAgICAgY2FzZSBPbkJl
Zm9yZUN1dDoKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihiZWZvcmVjdXRFdmVudCk7
Ci0gICAgICAgIGNhc2UgT25DdXQ6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoY3V0
RXZlbnQpOwotICAgICAgICBjYXNlIE9uQmVmb3JlQ29weToKLSAgICAgICAgICAgIHJldHVybiBn
ZXRMaXN0ZW5lcihiZWZvcmVjb3B5RXZlbnQpOwotICAgICAgICBjYXNlIE9uQ29weToKLSAgICAg
ICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihjb3B5RXZlbnQpOwotICAgICAgICBjYXNlIE9uQmVm
b3JlUGFzdGU6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoYmVmb3JlcGFzdGVFdmVu
dCk7Ci0gICAgICAgIGNhc2UgT25QYXN0ZToKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5l
cihwYXN0ZUV2ZW50KTsKLSAgICAgICAgY2FzZSBPbkRyYWdFbnRlcjoKLSAgICAgICAgICAgIHJl
dHVybiBnZXRMaXN0ZW5lcihkcmFnZW50ZXJFdmVudCk7Ci0gICAgICAgIGNhc2UgT25EcmFnT3Zl
cjoKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFnb3ZlckV2ZW50KTsKLSAgICAg
ICAgY2FzZSBPbkRyYWdMZWF2ZToKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFn
bGVhdmVFdmVudCk7Ci0gICAgICAgIGNhc2UgT25Ecm9wOgotICAgICAgICAgICAgcmV0dXJuIGdl
dExpc3RlbmVyKGRyb3BFdmVudCk7Ci0gICAgICAgIGNhc2UgT25EcmFnU3RhcnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoZHJhZ3N0YXJ0RXZlbnQpOwotICAgICAgICBjYXNlIE9u
RHJhZzoKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFnRXZlbnQpOwotICAgICAg
ICBjYXNlIE9uRHJhZ0VuZDoKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihkcmFnZW5k
RXZlbnQpOwotICAgICAgICBjYXNlIE9uUmVzZXQ6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlz
dGVuZXIocmVzZXRFdmVudCk7Ci0gICAgICAgIGNhc2UgT25SZXNpemU6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0TGlzdGVuZXIocmVzaXplRXZlbnQpOwotICAgICAgICBjYXNlIE9uU2Nyb2xsOgot
ICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKHNjcm9sbEV2ZW50KTsKLSAgICAgICAgY2Fz
ZSBPblNlYXJjaDoKLSAgICAgICAgICAgIHJldHVybiBnZXRMaXN0ZW5lcihzZWFyY2hFdmVudCk7
Ci0gICAgICAgIGNhc2UgT25TZWxlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIo
c2VsZWN0RXZlbnQpOwotICAgICAgICBjYXNlIE9uU2VsZWN0U3RhcnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2V0TGlzdGVuZXIoc2VsZWN0c3RhcnRFdmVudCk7Ci0gICAgICAgIGNhc2UgT25TdWJt
aXQ6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdGVuZXIoc3VibWl0RXZlbnQpOwotICAgICAg
ICBjYXNlIE9uVW5sb2FkOgotICAgICAgICAgICAgcmV0dXJuIGdldExpc3RlbmVyKHVubG9hZEV2
ZW50KTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLXZvaWQg
RE9NRXZlbnRUYXJnZXROb2RlOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBpbnQgYXR0cikKLXsKLSAgICBsb29rdXBQ
dXQ8RE9NRXZlbnRUYXJnZXROb2RlLCBET01Ob2RlPihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBhdHRyLCAmRE9NRXZlbnRUYXJnZXROb2RlVGFibGUsIHRoaXMpOwotfQotCi12b2lkIERPTUV2
ZW50VGFyZ2V0Tm9kZTo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tl
biwgSlNWYWx1ZSogdmFsdWUsIGludCAvKmF0dHIqLykKLXsKLSAgICBzd2l0Y2ggKHRva2VuKSB7
Ci0gICAgICAgIGNhc2UgT25BYm9ydDoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGFi
b3J0RXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uQmx1
cjoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGJsdXJFdmVudCwgdmFsdWUpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25DaGFuZ2U6Ci0gICAgICAgICAgICBzZXRM
aXN0ZW5lcihleGVjLCBjaGFuZ2VFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgT25DbGljazoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGNsaWNr
RXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uQ29udGV4
dE1lbnU6Ci0gICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBjb250ZXh0bWVudUV2ZW50LCB2
YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPbkRibENsaWNrOgotICAg
ICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgZGJsY2xpY2tFdmVudCwgdmFsdWUpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25FcnJvcjoKLSAgICAgICAgICAgIHNldExpc3Rl
bmVyKGV4ZWMsIGVycm9yRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE9uRm9jdXM6Ci0gICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBmb2N1c0V2ZW50
LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPbklucHV0OgotICAg
ICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgaW5wdXRFdmVudCwgdmFsdWUpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25LZXlEb3duOgotICAgICAgICAgICAgc2V0TGlzdGVu
ZXIoZXhlYywga2V5ZG93bkV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBPbktleVByZXNzOgotICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywga2V5cHJl
c3NFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25LZXlV
cDoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGtleXVwRXZlbnQsIHZhbHVlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uTG9hZDoKLSAgICAgICAgICAgIHNldExp
c3RlbmVyKGV4ZWMsIGxvYWRFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgT25Nb3VzZURvd246Ci0gICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBtb3Vz
ZWRvd25FdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25N
b3VzZU1vdmU6Ci0gICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBtb3VzZW1vdmVFdmVudCwg
dmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25Nb3VzZU91dDoKLSAg
ICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIG1vdXNlb3V0RXZlbnQsIHZhbHVlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uTW91c2VPdmVyOgotICAgICAgICAgICAgc2V0
TGlzdGVuZXIoZXhlYywgbW91c2VvdmVyRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIE9uTW91c2VVcDoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMs
IG1vdXNldXBFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
T25Nb3VzZVdoZWVsOgotICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgbW91c2V3aGVlbEV2
ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPbkJlZm9yZUN1
dDoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGJlZm9yZWN1dEV2ZW50LCB2YWx1ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPbkN1dDoKLSAgICAgICAgICAgIHNl
dExpc3RlbmVyKGV4ZWMsIGN1dEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBPbkJlZm9yZUNvcHk6Ci0gICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBi
ZWZvcmVjb3B5RXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IE9uQ29weToKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGNvcHlFdmVudCwgdmFsdWUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25CZWZvcmVQYXN0ZToKLSAgICAg
ICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGJlZm9yZXBhc3RlRXZlbnQsIHZhbHVlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uUGFzdGU6Ci0gICAgICAgICAgICBzZXRMaXN0
ZW5lcihleGVjLCBwYXN0ZUV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBPbkRyYWdFbnRlcjoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGRyYWdl
bnRlckV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPbkRy
YWdPdmVyOgotICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgZHJhZ292ZXJFdmVudCwgdmFs
dWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25EcmFnTGVhdmU6Ci0gICAg
ICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBkcmFnbGVhdmVFdmVudCwgdmFsdWUpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT25Ecm9wOgotICAgICAgICAgICAgc2V0TGlzdGVu
ZXIoZXhlYywgZHJvcEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBPbkRyYWdTdGFydDoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIGRyYWdzdGFy
dEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPbkRyYWc6
Ci0gICAgICAgICAgICBzZXRMaXN0ZW5lcihleGVjLCBkcmFnRXZlbnQsIHZhbHVlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uRHJhZ0VuZDoKLSAgICAgICAgICAgIHNldExp
c3RlbmVyKGV4ZWMsIGRyYWdlbmRFdmVudCwgdmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgT25SZXNldDoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIHJlc2V0
RXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uUmVzaXpl
OgotICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgcmVzaXplRXZlbnQsIHZhbHVlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uU2Nyb2xsOgotICAgICAgICAgICAgc2V0
TGlzdGVuZXIoZXhlYywgc2Nyb2xsRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE9uU2VhcmNoOgotICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgc2Vh
cmNoRXZlbnQsIHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uU2Vs
ZWN0OgotICAgICAgICAgICAgc2V0TGlzdGVuZXIoZXhlYywgc2VsZWN0RXZlbnQsIHZhbHVlKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9uU2VsZWN0U3RhcnQ6Ci0gICAgICAg
ICAgICBzZXRMaXN0ZW5lcihleGVjLCBzZWxlY3RzdGFydEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPblN1Ym1pdDoKLSAgICAgICAgICAgIHNldExpc3Rl
bmVyKGV4ZWMsIHN1Ym1pdEV2ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBPblVubG9hZDoKLSAgICAgICAgICAgIHNldExpc3RlbmVyKGV4ZWMsIHVubG9hZEV2
ZW50LCB2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgRE9NRXZl
bnRUYXJnZXROb2RlOjpzZXRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0
cmluZyAmZXZlbnRUeXBlLCBKU1ZhbHVlKiBmdW5jKSBjb25zdAotewotICAgIEV2ZW50VGFyZ2V0
Tm9kZUNhc3QoaW1wbCgpKS0+c2V0SFRNTEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXaW5kb3c6
OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5maW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVuZXIoZnVuYywg
dHJ1ZSkpOwotfQotCi1KU1ZhbHVlKiBET01FdmVudFRhcmdldE5vZGU6OmdldExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlKSBjb25zdAotewotICAgIEV2ZW50TGlzdGVuZXIg
Kmxpc3RlbmVyID0gRXZlbnRUYXJnZXROb2RlQ2FzdChpbXBsKCkpLT5nZXRIVE1MRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUpOwotICAgIEpTRXZlbnRMaXN0ZW5lciAqanNMaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PEpTRXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKTsKLSAgICBpZiAoanNMaXN0ZW5lciAm
JiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAgICAgICByZXR1cm4ganNMaXN0ZW5lci0+
bGlzdGVuZXJPYmooKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBqc051bGwoKTsKLX0KLQot
dm9pZCBET01FdmVudFRhcmdldE5vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUq
LCBTY29wZUNoYWluICYpIGNvbnN0Ci17Ci19Ci0KLS8qCi1AYmVnaW4gRE9NRXZlbnRUYXJnZXRO
b2RlUHJvdG90eXBlVGFibGUgNQotIyBmcm9tIHRoZSBFdmVudFRhcmdldCBpbnRlcmZhY2UKLWFk
ZEV2ZW50TGlzdGVuZXIgICAgICAgIERPTUV2ZW50VGFyZ2V0Tm9kZTo6QWRkRXZlbnRMaXN0ZW5l
ciAgIERvbnREZWxldGV8RnVuY3Rpb24gMwotcmVtb3ZlRXZlbnRMaXN0ZW5lciAgICAgRE9NRXZl
bnRUYXJnZXROb2RlOjpSZW1vdmVFdmVudExpc3RlbmVyICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MwotZGlzcGF0Y2hFdmVudCAgICAgICAgICAgRE9NRXZlbnRUYXJnZXROb2RlOjpEaXNwYXRjaEV2
ZW50ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLUBlbmQKLSovCi0KLUtKU19JTVBMRU1FTlRfUFJP
VE9UWVBFX0ZVTkNUSU9OKERPTUV2ZW50VGFyZ2V0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uKQotS0pT
X0lNUExFTUVOVF9QUk9UT1RZUEUoIkRPTUV2ZW50VGFyZ2V0Tm9kZSIsIERPTUV2ZW50VGFyZ2V0
Tm9kZVByb3RvdHlwZSwgRE9NRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlRnVuY3Rpb24pCi0KLUpT
VmFsdWUqIERPTUV2ZW50VGFyZ2V0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uOjpjYWxsQXNGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKQot
ewotICAgIGlmICghdGhpc09iai0+aW5oZXJpdHMoJkRPTUV2ZW50VGFyZ2V0Tm9kZTo6aW5mbykp
Ci0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgRE9NRXhj
ZXB0aW9uVHJhbnNsYXRvciBleGNlcHRpb24oZXhlYyk7Ci0gICAgRE9NRXZlbnRUYXJnZXROb2Rl
KiBET01Ob2RlID0gc3RhdGljX2Nhc3Q8RE9NRXZlbnRUYXJnZXROb2RlKj4odGhpc09iaik7Ci0g
ICAgRXZlbnRUYXJnZXROb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2RlKj4o
RE9NTm9kZS0+aW1wbCgpKTsKLSAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgIGNhc2UgRE9NRXZl
bnRUYXJnZXROb2RlOjpBZGRFdmVudExpc3RlbmVyOiB7Ci0gICAgICAgICAgICBKU0V2ZW50TGlz
dGVuZXIgKmxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+ZmluZE9yQ3Jl
YXRlSlNFdmVudExpc3RlbmVyKGFyZ3NbMV0pOwotICAgICAgICAgICAgaWYgKGxpc3RlbmVyKQot
ICAgICAgICAgICAgICAgIG5vZGUtPmFkZEV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmco
ZXhlYyksIGxpc3RlbmVyLGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERPTUV2ZW50VGFy
Z2V0Tm9kZTo6UmVtb3ZlRXZlbnRMaXN0ZW5lcjogewotICAgICAgICAgICAgSlNFdmVudExpc3Rl
bmVyICpsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmZpbmRKU0V2ZW50
TGlzdGVuZXIoYXJnc1sxXSk7Ci0gICAgICAgICAgICBpZiAobGlzdGVuZXIpIAotICAgICAgICAg
ICAgICAgIG5vZGUtPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyks
IGxpc3RlbmVyLGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7Ci0gICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERPTUV2ZW50VGFyZ2V0Tm9k
ZTo6RGlzcGF0Y2hFdmVudDoKLSAgICAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4obm9kZS0+ZGlz
cGF0Y2hFdmVudCh0b0V2ZW50KGFyZ3NbMF0pLCBleGNlcHRpb24pKTsKLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLyoK
LUBiZWdpbiBET01Ob2RlTGlzdFRhYmxlIDIKLSAgbGVuZ3RoICAgICAgICBET01Ob2RlTGlzdDo6
TGVuZ3RoICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGl0ZW0gICAgICAgICAgRE9NTm9kZUxp
c3Q6Okl0ZW0gICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLUBlbmQKLSovCi0K
LUtKU19JTVBMRU1FTlRfUFJPVE9UWVBFX0ZVTkNUSU9OKERPTU5vZGVMaXN0RnVuYykKLQotY29u
c3QgQ2xhc3NJbmZvIERPTU5vZGVMaXN0OjppbmZvID0geyAiTm9kZUxpc3QiLCAwLCAmRE9NTm9k
ZUxpc3RUYWJsZSwgMCB9OwotCi1ET01Ob2RlTGlzdDo6RE9NTm9kZUxpc3QoRXhlY1N0YXRlKiBl
eGVjLCBOb2RlTGlzdCAqbCkgCi06IG1faW1wbChsKSAKLXsgCi0gICAgc2V0UHJvdG90eXBlKGV4
ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluT2JqZWN0UHJvdG90eXBlKCkpOwotfQot
Ci1ET01Ob2RlTGlzdDo6fkRPTU5vZGVMaXN0KCkKLXsKLSAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZv
cmdldERPTU9iamVjdChtX2ltcGwuZ2V0KCkpOwotfQotCi1KU1ZhbHVlKiBET01Ob2RlTGlzdDo6
Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3QKLXsKLSAg
QVNTRVJUKHRva2VuID09IExlbmd0aCk7Ci0gIHJldHVybiBqc051bWJlcihtX2ltcGwtPmxlbmd0
aCgpKTsKLX0KLQotSlNWYWx1ZSogRE9NTm9kZUxpc3Q6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgRE9NTm9kZUxpc3QgKnRoaXNP
YmogPSBzdGF0aWNfY2FzdDxET01Ob2RlTGlzdCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gIHJldHVy
biB0b0pTKGV4ZWMsIHRoaXNPYmotPm1faW1wbC0+aXRlbShzbG90LmluZGV4KCkpKTsKLX0KLQot
SlNWYWx1ZSogRE9NTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlTbG90JiBzbG90KQotewotICBET01Ob2RlTGlzdCAqdGhpc09iaiA9IHN0YXRpY19j
YXN0PERPTU5vZGVMaXN0Kj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgcmV0dXJuIHRvSlMoZXhlYywg
dGhpc09iai0+bV9pbXBsLT5pdGVtV2l0aE5hbWUocHJvcGVydHlOYW1lKSk7Ci19Ci0KLWJvb2wg
RE9NTm9kZUxpc3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICBjb25zdCBI
YXNoRW50cnkqIGVudHJ5ID0gTG9va3VwOjpmaW5kRW50cnkoJkRPTU5vZGVMaXN0VGFibGUsIHBy
b3BlcnR5TmFtZSk7Ci0KLSAgaWYgKGVudHJ5KSB7Ci0gICAgaWYgKGVudHJ5LT5hdHRyICYgRnVu
Y3Rpb24pCi0gICAgICBzbG90LnNldFN0YXRpY0VudHJ5KHRoaXMsIGVudHJ5LCBzdGF0aWNGdW5j
dGlvbkdldHRlcjxET01Ob2RlTGlzdEZ1bmM+KTsKLSAgICBlbHNlCi0gICAgICBzbG90LnNldFN0
YXRpY0VudHJ5KHRoaXMsIGVudHJ5LCBzdGF0aWNWYWx1ZUdldHRlcjxET01Ob2RlTGlzdD4pOwot
ICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLy8gYXJyYXkgaW5kZXggPwotICBib29sIG9rOwot
ICB1bnNpZ25lZCBpZHggPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKLSAgaWYgKG9rICYm
IGlkeCA8IG1faW1wbC0+bGVuZ3RoKCkpIHsKLSAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMs
IGlkeCwgaW5kZXhHZXR0ZXIpOwotICAgIHJldHVybiB0cnVlOwotICB9IGVsc2UgaWYgKG1faW1w
bC0+aXRlbVdpdGhOYW1lKHByb3BlcnR5TmFtZSkpIHsKLSAgICBzbG90LnNldEN1c3RvbSh0aGlz
LCBuYW1lR2V0dGVyKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHJldHVybiBET01PYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi0v
LyBOZWVkIHRvIHN1cHBvcnQgYm90aCBnZXQgYW5kIGNhbGwsIHNvIHRoYXQgbGlzdFswXSBhbmQg
bGlzdCgwKSB3b3JrLgotSlNWYWx1ZSogRE9NTm9kZUxpc3Q6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBMaXN0ICZhcmdzKQotewotICAgIC8vIERvIG5v
dCB1c2UgdGhpc09iaiBoZXJlLiBTZWUgSlNIVE1MQ29sbGVjdGlvbi4KLSAgICBVU3RyaW5nIHMg
PSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKLSAgICBib29sIG9rOwotICAgIHVuc2lnbmVkIGlu
dCB1ID0gcy50b1VJbnQzMigmb2spOwotICAgIGlmIChvaykKLSAgICAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgbV9pbXBsLT5pdGVtKHUpKTsKLQotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQot
Ci0vLyBOb3QgYSBwcm90b3R5cGUgY2xhc3MgY3VycmVudGx5LCBidXQgc2hvdWxkIHByb2JhYmx5
IGJlIGNvbnZlcnRlZCB0byBvbmUKLUpTVmFsdWUqIERPTU5vZGVMaXN0RnVuYzo6Y2FsbEFzRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCAmYXJn
cykKLXsKLSAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmS0pTOjpET01Ob2RlTGlzdDo6aW5mbykp
Ci0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLSAgTm9kZUxpc3QgJmxp
c3QgPSAqc3RhdGljX2Nhc3Q8RE9NTm9kZUxpc3QqPih0aGlzT2JqKS0+aW1wbCgpOwotCi0gIGlm
IChpZCA9PSBET01Ob2RlTGlzdDo6SXRlbSkKLSAgICByZXR1cm4gdG9KUyhleGVjLCBsaXN0Lml0
ZW0oYXJnc1swXS0+dG9JbnQzMihleGVjKSkpOwotCi0gIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
fQotCiBBdHRyKiB0b0F0dHIoSlNWYWx1ZSogdmFsLCBib29sJiBvaykKIHsKICAgICBpZiAoIXZh
bCB8fCAhdmFsLT5pc09iamVjdCgmSlNBdHRyOjppbmZvKSkgewpAQCAtNzcyLDE1NCArMzI3LDgg
QEAgQXR0ciogdG9BdHRyKEpTVmFsdWUqIHZhbCwgYm9vbCYgb2spCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEF0dHIqPihzdGF0aWNfY2FzdDxET01Ob2RlKj4odmFsKS0+aW1wbCgpKTsKIH0KIAot
RWxlbWVudCogdG9FbGVtZW50KEpTVmFsdWUqIHZhbCkKLXsKLSAgICBpZiAoIXZhbCB8fCAhdmFs
LT5pc09iamVjdCgmSlNFbGVtZW50OjppbmZvKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0VsZW1lbnQqPih2YWwpLT5p
bXBsKCkpOwotfQotCi1Eb2N1bWVudFR5cGUqIHRvRG9jdW1lbnRUeXBlKEpTVmFsdWUqIHZhbCkK
LXsKLSAgICBpZiAoIXZhbCB8fCAhdmFsLT5pc09iamVjdCgmSlNEb2N1bWVudFR5cGU6OmluZm8p
KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBl
Kj4oc3RhdGljX2Nhc3Q8RE9NTm9kZSo+KHZhbCktPmltcGwoKSk7Ci19Ci0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotLyogU291cmNlIGZvciBET01OYW1lZE5vZGVNYXBQcm90b3R5cGVUYWJsZS4g
VXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCi1AYmVnaW4gRE9NTmFtZWROb2Rl
TWFwUHJvdG90eXBlVGFibGUgMTAKLSAgZ2V0TmFtZWRJdGVtICAgICAgICAgIERPTU5hbWVkTm9k
ZU1hcDo6R2V0TmFtZWRJdGVtICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgc2V0
TmFtZWRJdGVtICAgICAgICAgIERPTU5hbWVkTm9kZU1hcDo6U2V0TmFtZWRJdGVtICAgICAgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAgcmVtb3ZlTmFtZWRJdGVtICAgICAgIERPTU5hbWVk
Tm9kZU1hcDo6UmVtb3ZlTmFtZWRJdGVtICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSAg
aXRlbSAgICAgICAgICAgICAgICAgIERPTU5hbWVkTm9kZU1hcDo6SXRlbSAgICAgICAgICAgICAg
ICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLSMgRE9NMgotICBnZXROYW1lZEl0ZW1OUyAgICAg
ICAgRE9NTmFtZWROb2RlTWFwOjpHZXROYW1lZEl0ZW1OUyAgICAgICAgIERvbnREZWxldGV8RnVu
Y3Rpb24gMgotICBzZXROYW1lZEl0ZW1OUyAgICAgICAgRE9NTmFtZWROb2RlTWFwOjpTZXROYW1l
ZEl0ZW1OUyAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotICByZW1vdmVOYW1lZEl0ZW1O
UyAgICAgRE9NTmFtZWROb2RlTWFwOjpSZW1vdmVOYW1lZEl0ZW1OUyAgICAgIERvbnREZWxldGV8
RnVuY3Rpb24gMgotQGVuZAotKi8KLUtKU19ERUZJTkVfUFJPVE9UWVBFKERPTU5hbWVkTm9kZU1h
cFByb3RvdHlwZSkKLUtKU19JTVBMRU1FTlRfUFJPVE9UWVBFX0ZVTkNUSU9OKERPTU5hbWVkTm9k
ZU1hcFByb3RvdHlwZUZ1bmN0aW9uKQotS0pTX0lNUExFTUVOVF9QUk9UT1RZUEUoIk5hbWVkTm9k
ZU1hcCIsIERPTU5hbWVkTm9kZU1hcFByb3RvdHlwZSwgRE9NTmFtZWROb2RlTWFwUHJvdG90eXBl
RnVuY3Rpb24pCi0KLWNvbnN0IENsYXNzSW5mbyBET01OYW1lZE5vZGVNYXA6OmluZm8gPSB7ICJO
YW1lZE5vZGVNYXAiLCAwLCAwLCAwIH07Ci0KLURPTU5hbWVkTm9kZU1hcDo6RE9NTmFtZWROb2Rl
TWFwKEV4ZWNTdGF0ZSogZXhlYywgTmFtZWROb2RlTWFwKiBtKQotICAgIDogbV9pbXBsKG0pIAot
eyAKLSAgICBzZXRQcm90b3R5cGUoRE9NTmFtZWROb2RlTWFwUHJvdG90eXBlOjpzZWxmKGV4ZWMp
KTsKLX0KLQotRE9NTmFtZWROb2RlTWFwOjp+RE9NTmFtZWROb2RlTWFwKCkKLXsKLSAgICBTY3Jp
cHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSk7Ci19Ci0KLUpTVmFs
dWUqIERPTU5hbWVkTm9kZU1hcDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgRE9NTmFtZWROb2RlTWFwKiB0aGlzT2JqID0gc3Rh
dGljX2Nhc3Q8RE9NTmFtZWROb2RlTWFwKj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgcmV0dXJuIGpz
TnVtYmVyKHRoaXNPYmotPm1faW1wbC0+bGVuZ3RoKCkpOwotfQotCi1KU1ZhbHVlKiBET01OYW1l
ZE5vZGVNYXA6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9yaWdpbmFs
T2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCkKLXsKLSAgRE9NTmFtZWROb2RlTWFwKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8RE9N
TmFtZWROb2RlTWFwKj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgcmV0dXJuIHRvSlMoZXhlYywgdGhp
c09iai0+bV9pbXBsLT5pdGVtKHNsb3QuaW5kZXgoKSkpOwotfQotCi1KU1ZhbHVlKiBET01OYW1l
ZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb3JpZ2luYWxP
YmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90KQotewotICBET01OYW1lZE5vZGVNYXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxET01O
YW1lZE5vZGVNYXAqPihzbG90LnNsb3RCYXNlKCkpOwotICByZXR1cm4gdG9KUyhleGVjLCB0aGlz
T2JqLT5tX2ltcGwtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWUpKTsKLX0KLQotYm9vbCBET01O
YW1lZE5vZGVNYXA6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXMsIGxlbmd0aEdldHRlcik7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfSBl
bHNlIHsKLSAgICAvLyBMb29rIGluIHRoZSBwcm90b3R5cGUgKGZvciBmdW5jdGlvbnMpIGJlZm9y
ZSBhc3N1bWluZyBpdCdzIGFuIGl0ZW0ncyBuYW1lCi0gICAgSlNWYWx1ZSogcHJvdG8gPSBwcm90
b3R5cGUoKTsKLSAgICBpZiAocHJvdG8tPmlzT2JqZWN0KCkgJiYgc3RhdGljX2Nhc3Q8SlNPYmpl
Y3QqPihwcm90byktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSkpCi0gICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBuYW1lIG9yIGluZGV4ID8KLSAgICBib29sIG9rOwotICAgIHVu
c2lnbmVkIGlkeCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2spOwotICAgIGlmIChvayAmJiBp
ZHggPCBtX2ltcGwtPmxlbmd0aCgpKSB7Ci0gICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMs
IGlkeCwgaW5kZXhHZXR0ZXIpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYg
KG1faW1wbC0+Z2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZSkpIHsKLSAgICAgIHNsb3Quc2V0Q3Vz
dG9tKHRoaXMsIG5hbWVHZXR0ZXIpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICB9Ci0K
LSAgcmV0dXJuIERPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Ci19Ci0KLUpTVmFsdWUqIERPTU5hbWVkTm9kZU1hcFByb3RvdHlwZUZ1bmN0aW9u
OjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25z
dCBMaXN0ICZhcmdzKQotewotICBpZiAoIXRoaXNPYmotPmluaGVyaXRzKCZLSlM6OkRPTU5hbWVk
Tm9kZU1hcDo6aW5mbykpCi0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsK
LSAgRE9NRXhjZXB0aW9uVHJhbnNsYXRvciBleGNlcHRpb24oZXhlYyk7Ci0gIE5hbWVkTm9kZU1h
cCAmbWFwID0gKnN0YXRpY19jYXN0PERPTU5hbWVkTm9kZU1hcCo+KHRoaXNPYmopLT5pbXBsKCk7
Ci0gIHN3aXRjaCAoaWQpIHsKLSAgICBjYXNlIERPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJdGVt
OgotICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLmdldE5hbWVkSXRlbShhcmdzWzBdLT50b1N0
cmluZyhleGVjKSkpOwotICAgIGNhc2UgRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW06Ci0g
ICAgICByZXR1cm4gdG9KUyhleGVjLCBtYXAuc2V0TmFtZWRJdGVtKHRvTm9kZShhcmdzWzBdKSwg
ZXhjZXB0aW9uKS5nZXQoKSk7Ci0gICAgY2FzZSBET01OYW1lZE5vZGVNYXA6OlJlbW92ZU5hbWVk
SXRlbToKLSAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG1hcC5yZW1vdmVOYW1lZEl0ZW0oYXJnc1sw
XS0+dG9TdHJpbmcoZXhlYyksIGV4Y2VwdGlvbikuZ2V0KCkpOwotICAgIGNhc2UgRE9NTmFtZWRO
b2RlTWFwOjpJdGVtOgotICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLml0ZW0oYXJnc1swXS0+
dG9JbnQzMihleGVjKSkpOwotICAgIGNhc2UgRE9NTmFtZWROb2RlTWFwOjpHZXROYW1lZEl0ZW1O
UzogLy8gRE9NMgotICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLmdldE5hbWVkSXRlbU5TKHZh
bHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIGFyZ3NbMF0pLCBhcmdzWzFdLT50b1N0cmlu
ZyhleGVjKSkpOwotICAgIGNhc2UgRE9NTmFtZWROb2RlTWFwOjpTZXROYW1lZEl0ZW1OUzogLy8g
RE9NMgotICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLnNldE5hbWVkSXRlbU5TKHRvTm9kZShh
cmdzWzBdKSwgZXhjZXB0aW9uKS5nZXQoKSk7Ci0gICAgY2FzZSBET01OYW1lZE5vZGVNYXA6OlJl
bW92ZU5hbWVkSXRlbU5TOiAvLyBET00yCi0gICAgICByZXR1cm4gdG9KUyhleGVjLCBtYXAucmVt
b3ZlTmFtZWRJdGVtTlModmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgYXJnc1swXSks
IGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpLCBleGNlcHRpb24pLmdldCgpKTsKLSAgfQotICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlKiB0
b0pTKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQgKm4pCi17Ci0gIGlmICghbikKLSAgICByZXR1
cm4ganNOdWxsKCk7Ci0KLSAgSlNEb2N1bWVudCogcmV0ID0gMDsKLSAgU2NyaXB0SW50ZXJwcmV0
ZXIqIGludGVycCA9IHN0YXRpY19jYXN0PFNjcmlwdEludGVycHJldGVyKj4oZXhlYy0+ZHluYW1p
Y0ludGVycHJldGVyKCkpOwotCi0gIGlmICgocmV0ID0gc3RhdGljX2Nhc3Q8SlNEb2N1bWVudCo+
KGludGVycC0+Z2V0RE9NT2JqZWN0KG4pKSkpCi0gICAgcmV0dXJuIHJldDsKLQotICBpZiAobi0+
aXNIVE1MRG9jdW1lbnQoKSkKLSAgICByZXQgPSBuZXcgV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQo
ZXhlYywgc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obikpOwotI2lmIEVOQUJMRShTVkcpCi0g
IGVsc2UgaWYgKG4tPmlzU1ZHRG9jdW1lbnQoKSkKLSAgICByZXQgPSBuZXcgV2ViQ29yZTo6SlNT
VkdEb2N1bWVudChleGVjLCBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG4pKTsKLSNlbmRpZgot
ICBlbHNlCi0gICAgcmV0ID0gbmV3IEpTRG9jdW1lbnQoZXhlYywgbik7Ci0KLSAgLy8gTWFrZSBz
dXJlIHRoZSBkb2N1bWVudCBpcyBrZXB0IGFyb3VuZCBieSB0aGUgd2luZG93IG9iamVjdCwgYW5k
IHdvcmtzIHJpZ2h0IHdpdGggdGhlCi0gIC8vIGJhY2svZm9yd2FyZCBjYWNoZS4KLSAgaWYgKG4t
PmZyYW1lKCkpCi0gICAgV2luZG93OjpyZXRyaWV2ZVdpbmRvdyhuLT5mcmFtZSgpKS0+cHV0RGly
ZWN0KCJkb2N1bWVudCIsIHJldCwgRG9udERlbGV0ZXxSZWFkT25seSk7Ci0KLSAgaW50ZXJwLT5w
dXRET01PYmplY3QobiwgcmV0KTsKLQotICByZXR1cm4gcmV0OwotfQotCiBib29sIGNoZWNrTm9k
ZVNlY3VyaXR5KEV4ZWNTdGF0ZSogZXhlYywgTm9kZSogbikKIHsKICAgaWYgKCFuKSAKQEAgLTkz
MCw3NiArMzM5LDYgQEAgYm9vbCBjaGVja05vZGVTZWN1cml0eShFeGVjU3RhdGUqIGV4ZWMsIAog
ICByZXR1cm4gd2luICYmIHdpbi0+aXNTYWZlU2NyaXB0KGV4ZWMpOwogfQogCi1KU1ZhbHVlKiB0
b0pTKEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxOb2RlPiBub2RlKQotewotICBOb2RlKiBu
ID0gbm9kZS5nZXQoKTsKLSAgRE9NTm9kZSogcmV0ID0gMDsKLSAgaWYgKCFuKQotICAgIHJldHVy
biBqc051bGwoKTsKLSAgU2NyaXB0SW50ZXJwcmV0ZXIqIGludGVycCA9IHN0YXRpY19jYXN0PFNj
cmlwdEludGVycHJldGVyKj4oZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCkpOwotICBEb2N1bWVu
dCogZG9jID0gbi0+ZG9jdW1lbnQoKTsKLQotICBpZiAoKHJldCA9IGludGVycC0+Z2V0RE9NTm9k
ZUZvckRvY3VtZW50KGRvYywgbikpKQotICAgIHJldHVybiByZXQ7Ci0KLSAgc3dpdGNoIChuLT5u
b2RlVHlwZSgpKSB7Ci0gICAgY2FzZSBOb2RlOjpFTEVNRU5UX05PREU6Ci0gICAgICBpZiAobi0+
aXNIVE1MRWxlbWVudCgpKQotICAgICAgICByZXQgPSBjcmVhdGVKU0hUTUxXcmFwcGVyKGV4ZWMs
IHN0YXRpY19wb2ludGVyX2Nhc3Q8SFRNTEVsZW1lbnQ+KG5vZGUpKTsKLSNpZiBFTkFCTEUoU1ZH
KQotICAgICAgZWxzZSBpZiAobi0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgIHJldCA9IGNyZWF0
ZUpTU1ZHV3JhcHBlcihleGVjLCBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0VsZW1lbnQ+KG5vZGUp
KTsKLSNlbmRpZgotICAgICAgZWxzZQotICAgICAgICByZXQgPSBuZXcgSlNFbGVtZW50KGV4ZWMs
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIE5vZGU6
OkFUVFJJQlVURV9OT0RFOgotICAgICAgcmV0ID0gbmV3IEpTQXR0cihleGVjLCBzdGF0aWNfY2Fz
dDxBdHRyKj4obikpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb2RlOjpURVhUX05PREU6Ci0g
ICAgICByZXQgPSBuZXcgSlNUZXh0KGV4ZWMsIHN0YXRpY19jYXN0PFRleHQqPihuKSk7Ci0gICAg
ICBicmVhazsKLSAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgIHJldCA9
IG5ldyBKU0NEQVRBU2VjdGlvbihleGVjLCBzdGF0aWNfY2FzdDxDREFUQVNlY3Rpb24qPihuKSk7
Ci0gICAgICBicmVhazsKLSAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgotICAgICAgcmV0ID0g
bmV3IEpTRW50aXR5KGV4ZWMsIHN0YXRpY19jYXN0PEVudGl0eSo+KG4pKTsKLSAgICAgIGJyZWFr
OwotICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgotICAgICAgcmV0
ID0gbmV3IEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uKGV4ZWMsIHN0YXRpY19jYXN0PFByb2Nlc3Np
bmdJbnN0cnVjdGlvbio+KG4pKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTm9kZTo6Q09NTUVO
VF9OT0RFOgotICAgICAgcmV0ID0gbmV3IEpTQ29tbWVudChleGVjLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb21tZW50Kj4obikpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb2RlOjpET0NVTUVO
VF9OT0RFOgotICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBjYWNoZSB0aGUgZG9jdW1lbnQgaXRz
ZWxmIGluIHRoZSBwZXItZG9jdW1lbnQgZGljdGlvbmFyeQotICAgICAgcmV0dXJuIHRvSlMoZXhl
Yywgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihuKSk7Ci0gICAgY2FzZSBOb2RlOjpET0NVTUVOVF9U
WVBFX05PREU6Ci0gICAgICByZXQgPSBuZXcgSlNEb2N1bWVudFR5cGUoZXhlYywgc3RhdGljX2Nh
c3Q8RG9jdW1lbnRUeXBlKj4obikpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb2RlOjpOT1RB
VElPTl9OT0RFOgotICAgICAgcmV0ID0gbmV3IEpTTm90YXRpb24oZXhlYywgc3RhdGljX2Nhc3Q8
Tm90YXRpb24qPihuKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREU6Ci0gICAgICByZXQgPSBuZXcgSlNEb2N1bWVudEZyYWdtZW50KGV4ZWMsIHN0
YXRpY19jYXN0PERvY3VtZW50RnJhZ21lbnQqPihuKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNl
IE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKLSAgICAgIHJldCA9IG5ldyBKU0VudGl0eVJl
ZmVyZW5jZShleGVjLCBzdGF0aWNfY2FzdDxFbnRpdHlSZWZlcmVuY2UqPihuKSk7Ci0gICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0ID0gbmV3IEpTTm9kZShleGVjLCBuKTsKLSAg
fQotCi0gIGludGVycC0+cHV0RE9NTm9kZUZvckRvY3VtZW50KGRvYywgbiwgcmV0KTsKLQotICBy
ZXR1cm4gcmV0OwotfQotCi1KU1ZhbHVlKiB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgTmFtZWROb2Rl
TWFwKiBtKQotewotICAgIHJldHVybiBjYWNoZURPTU9iamVjdDxOYW1lZE5vZGVNYXAsIERPTU5h
bWVkTm9kZU1hcD4oZXhlYywgbSk7Ci19Ci0KIEpTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBFdmVudFRhcmdldCogdGFyZ2V0KQogewogICAgIGlmICghdGFyZ2V0KQpAQCAtMTA0NywxMDkg
KzM4Niw0IEBAIEpTVmFsdWUqIGdldFJ1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGUKICAgICBy
ZXR1cm4gMDsKIH0KIAotSlNWYWx1ZSogdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIE5vZGVMaXN0KiBs
KQotewotICAgIHJldHVybiBjYWNoZURPTU9iamVjdDxOb2RlTGlzdCwgRE9NTm9kZUxpc3Q+KGV4
ZWMsIGwpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNvbnN0IENsYXNzSW5mbyBET01F
eGNlcHRpb25Db25zdHJ1Y3Rvcjo6aW5mbyA9IHsgIkRPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yIiwg
MCwgMCwgMCB9OwotCi0vKiBTb3VyY2UgZm9yIERPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yVGFibGUu
IFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVyYXRlLgotQGJlZ2luIERPTUV4Y2VwdGlv
bkNvbnN0cnVjdG9yVGFibGUgMTUKLSAgSU5ERVhfU0laRV9FUlIgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6SU5ERVhfU0laRV9FUlIgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IERPTVNUUklOR19TSVpFX0VSUiAgICAgICAgICAgIFdlYkNvcmU6OkRPTVNUUklOR19TSVpFX0VS
UiAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICAgICAg
V2ViQ29yZTo6SElFUkFSQ0hZX1JFUVVFU1RfRVJSICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5
Ci0gIFdST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICAgIFdlYkNvcmU6OldST05HX0RPQ1VNRU5U
X0VSUiAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAg
ICAgV2ViQ29yZTo6SU5WQUxJRF9DSEFSQUNURVJfRVJSICAgICAgICBEb250RGVsZXRlfFJlYWRP
bmx5Ci0gIE5PX0RBVEFfQUxMT1dFRF9FUlIgICAgICAgICAgIFdlYkNvcmU6Ok5PX0RBVEFfQUxM
T1dFRF9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSICAgV2ViQ29yZTo6Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSICBEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIE5PVF9GT1VORF9FUlIgICAgICAgICAgICAgICAgIFdlYkNvcmU6Ok5PVF9GT1VO
RF9FUlIgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBOT1RfU1VQUE9SVEVE
X0VSUiAgICAgICAgICAgICBXZWJDb3JlOjpOT1RfU1VQUE9SVEVEX0VSUiAgICBEb250RGVsZXRl
fFJlYWRPbmx5Ci0gIElOVVNFX0FUVFJJQlVURV9FUlIgICAgICAgICAgIFdlYkNvcmU6OklOVVNF
X0FUVFJJQlVURV9FUlIgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9TVEFURV9FUlIg
ICAgICAgICAgICAgV2ViQ29yZTo6SU5WQUxJRF9TVEFURV9FUlIgICAgRG9udERlbGV0ZXxSZWFk
T25seQotICBTWU5UQVhfRVJSICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpTWU5UQVhfRVJS
ICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIElOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
UiAgICAgIFdlYkNvcmU6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiAgICAgRG9udERlbGV0ZXxS
ZWFkT25seQotICBOQU1FU1BBQ0VfRVJSICAgICAgICAgICAgICAgICBXZWJDb3JlOjpOQU1FU1BB
Q0VfRVJSICAgICAgICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgSU5WQUxJRF9BQ0NF
U1NfRVJSICAgICAgICAgICAgV2ViQ29yZTo6SU5WQUxJRF9BQ0NFU1NfRVJSICAgRG9udERlbGV0
ZXxSZWFkT25seQotQGVuZAotKi8KLQotRE9NRXhjZXB0aW9uQ29uc3RydWN0b3I6OkRPTUV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykgCi17IAotICAgIHNldFByb3RvdHlwZShl
eGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbk9iamVjdFByb3RvdHlwZSgpKTsKLX0K
LQotYm9vbCBET01FeGNlcHRpb25Db25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCi17Ci0gIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8RE9NRXhjZXB0aW9uQ29uc3Ry
dWN0b3IsIERPTU9iamVjdD4oZXhlYywgJkRPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yVGFibGUsIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLUpTVmFsdWUqIERPTUV4Y2VwdGlvbkNvbnN0
cnVjdG9yOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3QKLXsK
LSAgLy8gV2UgdXNlIHRoZSB0b2tlbiBhcyB0aGUgdmFsdWUgdG8gcmV0dXJuIGRpcmVjdGx5Ci0g
IHJldHVybiBqc051bWJlcih0b2tlbik7Ci19Ci0KLUpTT2JqZWN0KiBnZXRET01FeGNlcHRpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gIHJldHVybiBjYWNoZUdsb2JhbE9iamVj
dDxET01FeGNlcHRpb25Db25zdHJ1Y3Rvcj4oZXhlYywgIltbRE9NRXhjZXB0aW9uLmNvbnN0cnVj
dG9yXV0iKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jb25zdCBDbGFzc0luZm8gRE9N
TmFtZWROb2Rlc0NvbGxlY3Rpb246OmluZm8gPSB7ICJDb2xsZWN0aW9uIiwgMCwgMCwgMCB9Owot
Ci0vLyBTdWNoIGEgY29sbGVjdGlvbiBpcyB1c3VhbGx5IHZlcnkgc2hvcnQtbGl2ZWQsIGl0IG9u
bHkgZXhpc3RzCi0vLyBmb3IgY29uc3RydWN0cyBsaWtlIGRvY3VtZW50LmZvcm1zLjxuYW1lPlsx
XSwKLS8vIHNvIGl0IHNob3VsZG4ndCBiZSBhIHByb2JsZW0gdGhhdCBpdCdzIHN0b3JpbmcgYWxs
IHRoZSBub2RlcyAod2l0aCB0aGUgc2FtZSBuYW1lKS4gKERhdmlkKQotRE9NTmFtZWROb2Rlc0Nv
bGxlY3Rpb246OkRPTU5hbWVkTm9kZXNDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBub2RlcykKLSAgOiBtX25vZGVzKG5vZGVzKQotewotICAg
IHNldFByb3RvdHlwZShleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbk9iamVjdFBy
b3RvdHlwZSgpKTsKLX0KLQotSlNWYWx1ZSogRE9NTmFtZWROb2Rlc0NvbGxlY3Rpb246Omxlbmd0
aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvcmlnaW5hbE9iamVjdCwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0g
IERPTU5hbWVkTm9kZXNDb2xsZWN0aW9uICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8RE9NTmFtZWRO
b2Rlc0NvbGxlY3Rpb24qPihzbG90LnNsb3RCYXNlKCkpOwotICByZXR1cm4ganNOdW1iZXIodGhp
c09iai0+bV9ub2Rlcy5zaXplKCkpOwotfQotCi1KU1ZhbHVlKiBET01OYW1lZE5vZGVzQ29sbGVj
dGlvbjo6aW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb3JpZ2luYWxPYmpl
Y3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90KQotewotICBET01OYW1lZE5vZGVzQ29sbGVjdGlvbiAqdGhpc09iaiA9IHN0YXRpY19jYXN0
PERPTU5hbWVkTm9kZXNDb2xsZWN0aW9uKj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgcmV0dXJuIHRv
SlMoZXhlYywgdGhpc09iai0+bV9ub2Rlc1tzbG90LmluZGV4KCldLmdldCgpKTsKLX0KLQotYm9v
bCBET01OYW1lZE5vZGVzQ29sbGVjdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkg
ewotICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGxlbmd0aEdldHRlcik7Ci0gICAgcmV0dXJuIHRy
dWU7Ci0gIH0KLQotICAvLyBhcnJheSBpbmRleCA/Ci0gIGJvb2wgb2s7Ci0gIHVuc2lnbmVkIGlk
eCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2spOwotICBpZiAob2sgJiYgaWR4IDwgbV9ub2Rl
cy5zaXplKCkpIHsKLSAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIGlkeCwgaW5kZXhHZXR0
ZXIpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgLy8gRm9yIElFIGNvbXBhdGliaWxpdHks
IHdlIG5lZWQgdG8gYmUgYWJsZSB0byBsb29rIHVwIGVsZW1lbnRzIGluIGEKLSAgLy8gZG9jdW1l
bnQuZm9ybU5hbWUubmFtZSByZXN1bHQgYnkgaWQgYXMgd2VsbCBhcyBiZSBpbmRleC4KLQotICBB
dG9taWNTdHJpbmcgYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lOwotICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9ub2Rlcy5zaXplKCk7IGkrKykgewotICAgIE5vZGUqIG5vZGUg
PSBtX25vZGVzW2ldLmdldCgpOwotICAgIGlmIChub2RlLT5oYXNBdHRyaWJ1dGVzKCkgJiYgbm9k
ZS0+YXR0cmlidXRlcygpLT5pZCgpID09IGF0b21pY1Byb3BlcnR5TmFtZSkgewotICAgICAgc2xv
dC5zZXRDdXN0b21JbmRleCh0aGlzLCBpLCBpbmRleEdldHRlcik7Ci0gICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gRE9NT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKK30gLy8gbmFt
ZXNwYWNlIEtKUwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tLmgJKHJldmlzaW9uIDIxOTQ5KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE0MSAr
MjEsMjMgQEAKICNkZWZpbmUga2pzX2RvbV9oCiAKICNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNs
dWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJranNfYmluZGlu
Zy5oIgotCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgY2xhc3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIEF0dHI7Ci0gICAgY2xhc3MgQ2hhcmFj
dGVyRGF0YTsKLSAgICBjbGFzcyBEb2N1bWVudFR5cGU7Ci0gICAgY2xhc3MgRE9NSW1wbGVtZW50
YXRpb247Ci0gICAgY2xhc3MgRWxlbWVudDsKLSAgICBjbGFzcyBFbnRpdHk7CiAgICAgY2xhc3Mg
RXZlbnRUYXJnZXQ7Ci0gICAgY2xhc3MgRXZlbnRUYXJnZXROb2RlOwotICAgIGNsYXNzIE5hbWVk
Tm9kZU1hcDsKLSAgICBjbGFzcyBOb3RhdGlvbjsKLSAgICBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb247Ci0gICAgY2xhc3MgVGV4dDsKIH0KIAogbmFtZXNwYWNlIEtKUyB7CiAKLSAgS0pTX0RF
RklORV9QUk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUoRE9NRXZlbnRUYXJnZXROb2RlUHJvdG90eXBl
LCBXZWJDb3JlOjpKU05vZGVQcm90b3R5cGUpCi0KLSAgY2xhc3MgRE9NRXZlbnRUYXJnZXROb2Rl
IDogcHVibGljIFdlYkNvcmU6OkpTTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICAgIERPTUV2ZW50VGFy
Z2V0Tm9kZShFeGVjU3RhdGUgKmV4ZWMsIFdlYkNvcmU6Ok5vZGUgKm4pOwotCi0gICAgICB2b2lk
IHNldExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5n
ICZldmVudFR5cGUsIEpTVmFsdWUqIGZ1bmMpIGNvbnN0OwotICAgICAgSlNWYWx1ZSogZ2V0TGlz
dGVuZXIoY29uc3QgV2ViQ29yZTo6QXRvbWljU3RyaW5nICZldmVudFR5cGUpIGNvbnN0OwotICAg
ICAgdmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRsZXJTY29wZShFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW4gJnNjb3BlKSBjb25zdDsKLSAgICAgIAotICAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCk7Ci0gICAgICBKU1ZhbHVlKiBnZXRWYWx1ZVByb3BlcnR5KEV4ZWNT
dGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdDsKLSAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZh
bHVlLCBpbnQgYXR0cik7Ci0gICAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUqIHZhbHVlLCBpbnQpOwotCi0gICAgICBlbnVtIHsgIAot
ICAgICAgICAgIEFkZEV2ZW50TGlzdGVuZXIsIFJlbW92ZUV2ZW50TGlzdGVuZXIsIERpc3BhdGNo
RXZlbnQsCi0gICAgICAgICAgT25BYm9ydCwgT25CbHVyLCBPbkNoYW5nZSwgT25DbGljaywgT25D
b250ZXh0TWVudSwgT25EYmxDbGljaywgT25FcnJvciwKLSAgICAgICAgICBPbkRyYWdFbnRlciwg
T25EcmFnT3ZlciwgT25EcmFnTGVhdmUsIE9uRHJvcCwgT25EcmFnU3RhcnQsIE9uRHJhZywgT25E
cmFnRW5kLAotICAgICAgICAgIE9uQmVmb3JlQ3V0LCBPbkN1dCwgT25CZWZvcmVDb3B5LCBPbkNv
cHksIE9uQmVmb3JlUGFzdGUsIE9uUGFzdGUsIE9uU2VsZWN0U3RhcnQsCi0gICAgICAgICAgT25G
b2N1cywgT25JbnB1dCwgT25LZXlEb3duLCBPbktleVByZXNzLCBPbktleVVwLCBPbkxvYWQsIE9u
TW91c2VEb3duLAotICAgICAgICAgIE9uTW91c2VNb3ZlLCBPbk1vdXNlT3V0LCBPbk1vdXNlT3Zl
ciwgT25Nb3VzZVVwLCBPbk1vdXNlV2hlZWwsIE9uUmVzZXQsCi0gICAgICAgICAgT25SZXNpemUs
IE9uU2Nyb2xsLCBPblNlYXJjaCwgT25TZWxlY3QsIE9uU3VibWl0LCBPblVubG9hZAotICAgICAg
fTsKLSAgfTsKLQotICBXZWJDb3JlOjpFdmVudFRhcmdldE5vZGUqIHRvRXZlbnRUYXJnZXROb2Rl
KEpTVmFsdWUqKTsgLy8gcmV0dXJucyAwIGlmIHBhc3NlZC1pbiB2YWx1ZSBpcyBub3QgYSBFdmVu
dFRhcmdldE5vZGUgb2JqZWN0Ci0gIFdlYkNvcmU6Ok5vZGUqIHRvTm9kZShKU1ZhbHVlKik7IC8v
IHJldHVybnMgMCBpZiBwYXNzZWQtaW4gdmFsdWUgaXMgbm90IGEgRE9NTm9kZSBvYmplY3QKLQot
ICBjbGFzcyBET01Ob2RlTGlzdCA6IHB1YmxpYyBET01PYmplY3QgewotICBwdWJsaWM6Ci0gICAg
RE9NTm9kZUxpc3QoRXhlY1N0YXRlICosIFdlYkNvcmU6Ok5vZGVMaXN0ICpsKTsKLSAgICB+RE9N
Tm9kZUxpc3QoKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNWYWx1ZSAqZ2V0
VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikgY29uc3Q7Ci0gICAgdmly
dHVhbCBKU1ZhbHVlICpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICp0
aGlzT2JqLCBjb25zdCBMaXN0JmFyZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRzQ2Fs
bCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICAvLyBubyBwdXQgLSBhbGwgcmVhZC1vbmx5
Ci0gICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJu
ICZpbmZvOyB9Ci0gICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUgKikgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLSAgICBl
bnVtIHsgTGVuZ3RoLCBJdGVtIH07Ci0gICAgV2ViQ29yZTo6Tm9kZUxpc3QgKmltcGwoKSBjb25z
dCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KLQotICBwcml2YXRlOgotICAgIHN0YXRpYyBKU1Zh
bHVlICppbmRleEdldHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICosIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwotICAgIHN0YXRpYyBKU1ZhbHVlICpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCk7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUxp
c3Q+IG1faW1wbDsKLSAgfTsKLQogICBXZWJDb3JlOjpBdHRyKiB0b0F0dHIoSlNWYWx1ZSosIGJv
b2wmIG9rKTsKIAotICBXZWJDb3JlOjpFbGVtZW50ICp0b0VsZW1lbnQoSlNWYWx1ZSAqKTsgLy8g
cmV0dXJucyAwIGlmIHBhc3NlZC1pbiB2YWx1ZSBpcyBub3QgYSBET01FbGVtZW50IG9iamVjdAot
Ci0gIFdlYkNvcmU6OkRvY3VtZW50VHlwZSAqdG9Eb2N1bWVudFR5cGUoSlNWYWx1ZSAqKTsgLy8g
cmV0dXJucyAwIGlmIHBhc3NlZC1pbiB2YWx1ZSBpcyBub3QgYSBET01Eb2N1bWVudFR5cGUgb2Jq
ZWN0Ci0KLSAgY2xhc3MgRE9NTmFtZWROb2RlTWFwIDogcHVibGljIERPTU9iamVjdCB7Ci0gIHB1
YmxpYzoKLSAgICBET01OYW1lZE5vZGVNYXAoRXhlY1N0YXRlICosIFdlYkNvcmU6Ok5hbWVkTm9k
ZU1hcCAqbSk7Ci0gICAgfkRPTU5hbWVkTm9kZU1hcCgpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICAvLyBubyBwdXQgLSBhbGwgcmVhZC1vbmx5Ci0gICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgdmlydHVh
bCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUgKikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLSAgICBlbnVtIHsgR2V0TmFtZWRJdGVtLCBT
ZXROYW1lZEl0ZW0sIFJlbW92ZU5hbWVkSXRlbSwgSXRlbSwKLSAgICAgICAgICAgR2V0TmFtZWRJ
dGVtTlMsIFNldE5hbWVkSXRlbU5TLCBSZW1vdmVOYW1lZEl0ZW1OUyB9OwotICAgIFdlYkNvcmU6
Ok5hbWVkTm9kZU1hcCAqaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQotICBw
cml2YXRlOgotICAgIHN0YXRpYyBKU1ZhbHVlICpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCAqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KTsKLSAgICBzdGF0aWMgSlNWYWx1ZSAqaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCAqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KTsKLSAg
ICBzdGF0aWMgSlNWYWx1ZSAqbmFtZUdldHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwotCi0gICAgUmVm
UHRyPFdlYkNvcmU6Ok5hbWVkTm9kZU1hcD4gbV9pbXBsOwotICB9OwotCi0gIC8vIENvbnN0cnVj
dG9yIGZvciBET01FeGNlcHRpb24gLSBjb25zdHJ1Y3RvciBzdHVmZiBub3QgaW1wbGVtZW50ZWQg
eWV0Ci0gIGNsYXNzIERPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIERPTU9iamVjdCB7
Ci0gIHB1YmxpYzoKLSAgICBET01FeGNlcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNWYWx1ZSAqZ2V0VmFsdWVQcm9wZXJ0eShF
eGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikgY29uc3Q7Ci0gICAgLy8gbm8gcHV0IC0gYWxsIHJl
YWQtb25seQotICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7
IHJldHVybiAmaW5mbzsgfQotICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLSAgfTsK
LQotICBKU1ZhbHVlKiB0b0pTKEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkRvY3VtZW50Kik7CiAgIGJv
b2wgY2hlY2tOb2RlU2VjdXJpdHkoRXhlY1N0YXRlKiwgV2ViQ29yZTo6Tm9kZSopOwogICBKU1Zh
bHVlKiBnZXRSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSosIFdlYkNvcmU6Ok5vZGUqKTsKLSAgSlNW
YWx1ZSogdG9KUyhFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6Ok5vZGU+KTsKLSAgSlNW
YWx1ZSogdG9KUyhFeGVjU3RhdGUqLCBXZWJDb3JlOjpOYW1lZE5vZGVNYXAqKTsKLSAgSlNWYWx1
ZSogdG9KUyhFeGVjU3RhdGUqLCBXZWJDb3JlOjpOb2RlTGlzdCopOwogICBKU1ZhbHVlKiB0b0pT
KEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkV2ZW50VGFyZ2V0Kik7CiAgIEpTT2JqZWN0KiBnZXROb2Rl
Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7Ci0gIEpTT2JqZWN0KiBnZXRET01FeGNlcHRpb25Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqKTsKLQotICAvLyBJbnRlcm5hbCBjbGFzcywgdXNlZCBmb3IgdGhl
IGNvbGxlY3Rpb24gcmV0dXJuIGJ5IGUuZy4gZG9jdW1lbnQuZm9ybXMubXlpbnB1dAotICAvLyB3
aGVuIG11bHRpcGxlIG5vZGVzIGhhdmUgdGhlIHNhbWUgbmFtZS4KLSAgY2xhc3MgRE9NTmFtZWRO
b2Rlc0NvbGxlY3Rpb24gOiBwdWJsaWMgRE9NT2JqZWN0IHsKLSAgcHVibGljOgotICAgIERPTU5h
bWVkTm9kZXNDb2xsZWN0aW9uKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpOb2RlPiA+JiBub2Rlcyk7Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAg
IHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5m
bzsgfQotICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLXByaXZhdGU6Ci0gICAgc3Rh
dGljIEpTVmFsdWUgKmxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0ICosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwotICAgIHN0YXRpYyBK
U1ZhbHVlICppbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0ICosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwotCi0gICAgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpOb2RlPiA+IG1fbm9kZXM7Ci0gIH07CiAKIH0gLy8gbmFtZXNwYWNlCiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2RvbW5vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19kb21ub2RlLmgJKHJldmlzaW9uIDIxOTQ5KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ranNfZG9tbm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIEtKU19ERUZJTkVfUFJPVE9UWVBFKERPTU5vZGVQcm90b3R5cGUpCiBjbGFzcyBET01Ob2Rl
IDogcHVibGljIERPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RE9NTm9kZSgpOwot
ICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CisKICAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU1ZhbHVlICpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0
ZSosIGludCB0b2tlbikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9ranNfZXZlbnRzLmNwcAkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19ldmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAia2pzX2V2ZW50cy5oIgogCi0jaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNFdmVudC5oIgor
I2luY2x1ZGUgIkpTRXZlbnRUYXJnZXROb2RlLmgiCiAjaW5jbHVkZSAiSlNLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiSlNNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlvbkV2ZW50
LmgiCkBAIC0zMzQsNyArMzM1LDcgQEAgdm9pZCBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNv
ZGUoKSBjbwogCiAgICAgICAgICAgICBKU1ZhbHVlKiB0aGlzT2JqID0gdG9KUyhleGVjLCBvcmln
aW5hbE5vZGUpOwogICAgICAgICAgICAgaWYgKHRoaXNPYmotPmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxET01FdmVudFRhcmdldE5vZGUqPih0aGlzT2JqKS0+cHVz
aEV2ZW50SGFuZGxlclNjb3BlKGV4ZWMsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxKU0V2ZW50VGFyZ2V0Tm9kZSo+KHRoaXNPYmopLT5wdXNoRXZlbnRIYW5kbGVyU2NvcGUo
ZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgICAgIGxpc3RlbmVyQXNGdW5jdGlvbi0+c2V0U2Nv
cGUoc2NvcGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL2tqc19odG1sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tq
c19odG1sLmNwcAkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19o
dG1sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkhUTUxP
cHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJKU05hbWVkTm9kZXND
b2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSlNOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5hbWVOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAt
MTc0LDcgKzE3Niw3IEBAIEpTVmFsdWUgKkpTSFRNTENvbGxlY3Rpb246OmdldE5hbWVkSXRlbXMK
ICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhl
YywgbmFtZWRJdGVtc1swXS5nZXQoKSk7CiAKLSAgICByZXR1cm4gbmV3IERPTU5hbWVkTm9kZXND
b2xsZWN0aW9uKGV4ZWMsIG5hbWVkSXRlbXMpOworICAgIHJldHVybiBuZXcgSlNOYW1lZE5vZGVz
Q29sbGVjdGlvbihleGVjLCBuYW1lZEl0ZW1zKTsKIH0KIAogSlNWYWx1ZSogSlNIVE1MQ29sbGVj
dGlvblByb3RvdHlwZUZ1bmN0aW9uOjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfaHRtbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2h0
bWwuaAkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19odG1sLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJKU0RvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MRWxlbWVudC5oIgorI2lu
Y2x1ZGUgImtqc19kb20uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxD
b2xsZWN0aW9uOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCShyZXZpc2lvbiAy
MTk0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJKU0NTU1J1bGUuaCIKICNpbmNsdWRlICJKU0NTU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5o
IgpAQCAtMjYwOSwxMCArMjYxMCw1IEBAIEpTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiwgRE9NV2lu
ZG93KiBkb20KICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVybiBXaW5kb3c6OnJl
dHJpZXZlKGZyYW1lKTsKIH0KLQotRE9NV2luZG93KiB0b0RPTVdpbmRvdyhKU1ZhbHVlKiB2YWwp
Ci17Ci0gICAgcmV0dXJuIHZhbC0+aXNPYmplY3QoJkpTRE9NV2luZG93OjppbmZvKSA/IHN0YXRp
Y19jYXN0PEpTRE9NV2luZG93Kj4odmFsKS0+aW1wbCgpIDogMDsKLX0KICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5oCShyZXZpc2lvbiAy
MTk0OSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzYsNyArMjc2LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBLSlM6OkpTVmFsdWUqIHRvSlMoS0pTOjpFeGVjU3RhdGUqLCBET01XaW5kb3cqKTsK
LSAgICBET01XaW5kb3cqIHRvRE9NV2luZG93KEtKUzo6SlNWYWx1ZSopOwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRl
cm5hbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwu
bW0JKHJldmlzaW9uIDIxOTQ5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFs
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRXZlbnQuaCIKICNpbXBvcnQgIkZyYW1l
LmgiCisjaW1wb3J0ICJKU05vZGUuaCIKICNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW1wb3J0ICJSYW5nZS5oIgpAQCAtMzYsNyArMzcsNiBAQAogI2ltcG9y
dCAiU1ZHRXhjZXB0aW9uLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAj
aW1wb3J0ICJYUGF0aEV2YWx1YXRvci5oIgotI2ltcG9ydCAia2pzX2RvbS5oIgogI2ltcG9ydCAi
a2pzX3Byb3h5LmgiCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x
MTcsNyArMTE3LDcgQEAgdm9pZCByZW1vdmVET01XcmFwcGVyKERPTU9iamVjdEludGVybmFsKgog
ICAgIEtKUzo6RXhlY1N0YXRlICpleGVjID0gaW50ZXJwcmV0ZXItPmdsb2JhbEV4ZWMoKTsKICAg
ICAKICAgICAvLyBHZXQgKG9yIGNyZWF0ZSkgYSBjYWNoZWQgSlMgb2JqZWN0IGZvciB0aGUgRE9N
IG5vZGUuCi0gICAgS0pTOjpKU09iamVjdCAqc2NyaXB0SW1wID0gc3RhdGljX2Nhc3Q8S0pTOjpK
U09iamVjdCo+KEtKUzo6dG9KUyhleGVjLCBub2RlSW1wbCkpOworICAgIEtKUzo6SlNPYmplY3Qg
KnNjcmlwdEltcCA9IHN0YXRpY19jYXN0PEtKUzo6SlNPYmplY3QqPihXZWJDb3JlOjp0b0pTKGV4
ZWMsIG5vZGVJbXBsKSk7CiAKICAgICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0KiByb290T2Jq
ZWN0ID0gZnJhbWUtPmJpbmRpbmdSb290T2JqZWN0KCk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01VdGlsaXR5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01VdGlsaXR5Lm1tCShyZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01VdGlsaXR5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw5IEBACiAjaW1wb3J0
ICJKU0V2ZW50LmgiCiAjaW1wb3J0ICJKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2ltcG9y
dCAiSlNNZWRpYUxpc3QuaCIKKyNpbXBvcnQgIkpTTmFtZWROb2RlTWFwLmgiCiAjaW1wb3J0ICJK
U05vZGVJdGVyYXRvci5oIgorI2ltcG9ydCAiSlNOb2RlTGlzdC5oIgogI2ltcG9ydCAiSlNSYW5n
ZS5oIgogI2ltcG9ydCAiSlNTdHlsZVNoZWV0LmgiCiAjaW1wb3J0ICJKU1RyZWVXYWxrZXIuaCIK
QEAgLTc2LDYgKzc4LDggQEAgc3RhdGljIGlubGluZSBpZCBjcmVhdGVET01XcmFwcGVyKEtKUzo6
SgogICAgIFdSQVAoQ291bnRlcikKICAgICBXUkFQKEhUTUxPcHRpb25zQ29sbGVjdGlvbikKICAg
ICBXUkFQKE1lZGlhTGlzdCkKKyAgICBXUkFQKE5hbWVkTm9kZU1hcCkKKyAgICBXUkFQKE5vZGVM
aXN0KQogICAgIFdSQVAoUmFuZ2UpCiAgICAgV1JBUChTdHlsZVNoZWV0KQogICAgIFdSQVAoWFBh
dGhFeHByZXNzaW9uKQpAQCAtODgsOSArOTIsNyBAQCBzdGF0aWMgaW5saW5lIGlkIGNyZWF0ZURP
TVdyYXBwZXIoS0pTOjpKCiAgICAgICAgICAgICByZXR1cm4gW29iamNfZ2V0Q2xhc3MoIkRPTSIg
I2NsYXNzTmFtZSkgX3dyYXAjI2NsYXNzTmFtZTpzdGF0aWNfY2FzdDxET00jI2NsYXNzTmFtZSo+
KG9iamVjdCktPmltcGwoKV07CiAKICAgICBXUkFQKEV2ZW50KQotICAgIFdSQVAoTmFtZWROb2Rl
TWFwKQogICAgIFdSQVAoTm9kZSkKLSAgICBXUkFQKE5vZGVMaXN0KQogICAgIFdSQVAoUkdCQ29s
b3IpCiAgICAgV1JBUChSZWN0KQogICAgIFdSQVAoU3R5bGVTaGVldExpc3QpCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIxOTQ5
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHN1YiBVc2VzTWFudWFsVG9KU0ltcGxlbWVudGF0
aW9uCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVybiAxIGlmICR0eXBlIGVx
ICJTVkdQYXRoU2VnIiBvciAkdHlwZSBlcSAiU3R5bGVTaGVldCIgb3IgJHR5cGUgZXEgIkNTU1J1
bGUiIG9yICR0eXBlIGVxICJDU1NWYWx1ZSI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIk5v
ZGUiIG9yICR0eXBlIGVxICJEb2N1bWVudCIgb3IgJHR5cGUgZXEgIlNWR1BhdGhTZWciIG9yICR0
eXBlIGVxICJTdHlsZVNoZWV0IiBvciAkdHlwZSBlcSAiQ1NTUnVsZSIgb3IgJHR5cGUgZXEgIkNT
U1ZhbHVlIjsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogCiAgICAgIyBDdXN0b20gY2FsbCBmdW5jdGlvbnMKICAgICBpZiAoJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9KSB7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBLSlM6OkpTVmFsdWUqIGNhbGxBc0Z1bmN0aW9u
KEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCosIGNvbnN0IEtKUzo6TGlzdCYgYXJncyk7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIEtKUzo6SlNW
YWx1ZSogY2FsbEFzRnVuY3Rpb24oS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTT2JqZWN0KiwgY29u
c3QgS0pTOjpMaXN0Jik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
aXJ0dWFsIGJvb2wgaW1wbGVtZW50c0NhbGwoKSBjb25zdDtcblxuIik7CiAgICAgfQogCkBAIC00
NzYsMTUgKzQ3NiwxNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIE5hbWUgZ2V0dGVyCiAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSB8
fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNPdmVycmlkaW5nTmFtZUdldHRl
ciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcml2YXRlOlxuIik7CisgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgY2FuR2V0SXRlbXNGb3JO
YW1lKEtKUzo6RXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqLCBjb25zdCBBdG9taWNTdHJpbmcm
KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBLSlM6OkpT
VmFsdWUqIG5hbWVHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTT2JqZWN0KiwgY29uc3Qg
S0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOwotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGNhbkdldEl0ZW1zRm9yTmFt
ZShLSlM6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiwgY29uc3QgQXRvbWljU3RyaW5nJik7
XG4iKQogICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKIAotICAg
IGlmICghJGhhc1BhcmVudCkgeworICAgIGlmICghJGhhc1BhcmVudCB8fCAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZVRvSlMifSkgewogICAgICAgICBpZiAoJHBvZFR5
cGUpIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJLSlM6OkpTVmFsdWUqIHRv
SlMoS0pTOjpFeGVjU3RhdGUqLCBKU1NWR1BPRFR5cGVXcmFwcGVyPCRwb2RUeXBlPiopO1xuIik7
CisgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOb2RlIikgeworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIktKUzo6SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0
ZSosIFBhc3NSZWZQdHI8Tm9kZT4pO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiS0pTOjpKU1ZhbHVlKiB0b0pTKEtKUzo6RXhlY1N0YXRl
KiwgJHBhc3NUeXBlKTtcbiIpOwogICAgICAgICB9CkBAIC03ODksMTAgKzc5MSwxMSBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkbnVtQXR0cmlidXRlcyBuZSAwKSB7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7Ci0gICAgICAgICMgRklYTUU6IFdlIG5lZWQgdG8gcHJvdmlkZSBzY2FsYWJsZSBob29rcy9h
dHRyaWJ1dGVzIGZvciB0aGlzIGtpbmQgb2YgZXh0ZW5zaW9uCi0gICAgICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKGdldE92ZXJyaWRlUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcbiIpOworCisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTmFtZWROb2RlTWFw
IikgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSogcHJvdG8g
PSBwcm90b3R5cGUoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKHByb3RvLT5pc09iamVjdCgpICYmIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4ocHJvdG8pLT5o
YXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgIH0KIAogICAg
ICAgICBteSAkaGFzTmFtZUdldHRlckdlbmVyYXRpb24gPSBzdWIgewpAQCAtODMwLDggKzgzMyw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90
In0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIGRpZEdl
dCA9IGN1c3RvbUdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGRpZEdldClc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChjdXN0b21H
ZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSlcbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwog
ICAgICAgICB9CiAKQEAgLTg2Nyw2ICs4NjksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIFdLX3Vj
Zmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+Y29u
dGVudERvY3VtZW50KCkpID8gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUsICAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JG5hbWUoKSIpIC4g
IiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJE
b2N1bWVudC5oIn0gPSAxOworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20u
aCJ9ID0gMTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5
cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlKTsKICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3Ik
Ly87CkBAIC0xMDY1LDYgKzEwNjgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
U1ZHQ2hlY2tTZWN1cml0eURvY3VtZW50In0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgaWYgKCFjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPmdldFNW
R0RvY3VtZW50KCIgLiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9ID8gImVjIiA6ICIi
KSAuIikpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbXkg
JHBhcmFtSW5kZXggPSAwOwpAQCAtMTE0NSw3ICsxMTQ5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICB9CiAKLSAg
ICBpZiAoISRoYXNQYXJlbnQgYW5kICFVc2VzTWFudWFsVG9KU0ltcGxlbWVudGF0aW9uKCRpbXBs
Q2xhc3NOYW1lKSkgeworICAgIGlmICgoISRoYXNQYXJlbnQgb3IgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVUb0pTIn0pIGFuZCAhVXNlc01hbnVhbFRvSlNJbXBsZW1l
bnRhdGlvbigkaW1wbENsYXNzTmFtZSkpIHsKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIktKUzo6SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNT
dGF0ZSogZXhlYywgSlNTVkdQT0RUeXBlV3JhcHBlcjwkcG9kVHlwZT4qIG9iailcbiIpOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMTMzMCwxMyArMTMzNCw4IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUK
ICAgICAgICAgcmV0dXJuICIkdmFsdWUtPnRvU3RyaW5nKGV4ZWMpIjsKICAgICB9CiAKLSAgICBp
ZiAoJHR5cGUgZXEgIk5vZGUiKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9
ID0gMTsKLSAgICAgICAgcmV0dXJuICJ0b05vZGUoJHZhbHVlKSI7Ci0gICAgfQotCiAgICAgaWYg
KCR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3sia2pzX2Rv
bS5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50VGFyZ2V0Tm9kZS5oIn0g
PSAxOwogICAgICAgICByZXR1cm4gInRvRXZlbnRUYXJnZXROb2RlKCR2YWx1ZSkiOwogICAgIH0K
IApAQCAtMTM0NSwyNiArMTM0NCwxMSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgIHJl
dHVybiAidG9BdHRyKCR2YWx1ZSR7bWF5YmVPa1BhcmFtfSkiOwogICAgIH0KIAotICAgIGlmICgk
dHlwZSBlcSAiRG9jdW1lbnRUeXBlIikgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9t
LmgifSA9IDE7Ci0gICAgICAgIHJldHVybiAidG9Eb2N1bWVudFR5cGUoJHZhbHVlKSI7Ci0gICAg
fQotCi0gICAgaWYgKCR0eXBlIGVxICJFbGVtZW50IikgewotICAgICAgICAkaW1wbEluY2x1ZGVz
eyJranNfZG9tLmgifSA9IDE7Ci0gICAgICAgIHJldHVybiAidG9FbGVtZW50KCR2YWx1ZSkiOwot
ICAgIH0KLQogICAgIGlmICgkdHlwZSBlcSAiTm9kZUZpbHRlciIpIHsKICAgICAgICAgJGltcGxJ
bmNsdWRlc3sia2pzX3RyYXZlcnNhbC5oIn0gPSAxOwogICAgICAgICByZXR1cm4gInRvTm9kZUZp
bHRlcigkdmFsdWUpIjsKICAgICB9CiAKLSAgICBpZiAoJHR5cGUgZXEgIkRPTVdpbmRvdyIpIHsK
LSAgICAgICAgJGltcGxJbmNsdWRlc3sia2pzX3dpbmRvdy5oIn0gPSAxOwotICAgICAgICByZXR1
cm4gInRvRE9NV2luZG93KCR2YWx1ZSkiOwotICAgIH0KLQogICAgIGlmICgkdHlwZSBlcSAiU1ZH
UmVjdCIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siRmxvYXRSZWN0LmgifSA9IDE7CiAgICAg
fQpAQCAtMTQ1MSw0MCArMTQzNSwxNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgifSA9IDE7CiAgICAgfQog
Ci0gICAgaWYgKCR0eXBlIGVxICJET01JbXBsZW1lbnRhdGlvbiIpIHsKLSAgICAgICAgJGltcGxJ
bmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUlt
cGxlbWVudGF0aW9uLmgifSA9IDE7Ci0gICAgfSBlbHNpZiAoJHR5cGUgZXEgIkF0dHIiIG9yCi0g
ICAgICAgICAgICAgJHR5cGUgZXEgIkNEQVRBU2VjdGlvbiIgb3IKLSAgICAgICAgICAgICAkdHlw
ZSBlcSAiQ29tbWVudCIgb3IKLSAgICAgICAgICAgICAkdHlwZSBlcSAiRG9jdW1lbnQiIG9yCi0g
ICAgICAgICAgICAgJHR5cGUgZXEgIkRvY3VtZW50RnJhZ21lbnQiIG9yCi0gICAgICAgICAgICAg
JHR5cGUgZXEgIkRvY3VtZW50VHlwZSIgb3IKLSAgICAgICAgICAgICAkdHlwZSBlcSAiRWxlbWVu
dCIgb3IKLSAgICAgICAgICAgICAkdHlwZSBlcSAiRW50aXR5UmVmZXJlbmNlIiBvcgotICAgICAg
ICAgICAgICR0eXBlIGVxICJIVE1MRG9jdW1lbnQiIG9yCi0gICAgICAgICAgICAgJHR5cGUgZXEg
Ik5vZGUiIG9yCi0gICAgICAgICAgICAgJHR5cGUgZXEgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbiIg
b3IKLSAgICAgICAgICAgICAkdHlwZSBlcSAiVGV4dCIpIHsKLSAgICAgICAgJGltcGxJbmNsdWRl
c3sia2pzX2RvbS5oIn0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJDb21tZW50LmgifSA9
IDE7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkNEQVRBU2VjdGlvbi5oIn0gPSAxOwotICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJOb2RlLmgifSA9IDE7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkVs
ZW1lbnQuaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siRG9jdW1lbnRUeXBlLmgifSA9
IDE7Ci0gICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IikgewotICAgICAgICAkaW1w
bEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7CisgICAgaWYgKCR0eXBlIGVxICJFdmVudFRhcmdl
dCIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siRXZlbnRUYXJnZXROb2RlLmgifSA9IDE7Cisg
ICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRUYXJnZXROb2RlLmgifSA9IDE7CisgICAgICAg
ICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkdHlwZSBlcSAi
RXZlbnQiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7Imtqc19ldmVudHMuaCJ9ID0gMTsKICAg
ICAgICAgJGltcGxJbmNsdWRlc3siRXZlbnQuaCJ9ID0gMTsKICAgICB9IGVsc2lmICgkdHlwZSBl
cSAiTm9kZUxpc3QiKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7Imtqc19kb20uaCJ9ID0gMTsK
LSAgICAgICAgJGltcGxJbmNsdWRlc3siTm9kZUxpc3QuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJ
bmNsdWRlc3siSlMkdHlwZS5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyIkdHlwZS5o
In0gPSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJOYW1lTm9kZUxpc3QuaCJ9ID0gMTsKLSAg
ICB9IGVsc2lmICgkdHlwZSBlcSAiTmFtZWROb2RlTWFwIikgewotICAgICAgICAkaW1wbEluY2x1
ZGVzeyJranNfZG9tLmgifSA9IDE7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7Ik5hbWVkTm9kZU1h
cC5oIn0gPSAxOwogICAgIH0gZWxzaWYgKCR0eXBlIGVxICJSZWN0IikgewogICAgICAgICAkaW1w
bEluY2x1ZGVzeyJSZWN0SW1wbC5oIn0gPSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNf
Y3NzLmgifSA9IDE7CkBAIC0xNDk1LDkgKzE0NTYsNiBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAg
ICAgICAgICRpbXBsSW5jbHVkZXN7Imtqc193aW5kb3cuaCJ9ID0gMTsKICAgICB9IGVsc2lmICgk
dHlwZSBlcSAiRE9NT2JqZWN0IikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIn0gPSAxOwotICAgIH0gZWxzaWYgKCR0eXBlIGVxICJIVE1MRm9y
bUVsZW1lbnQiKSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7Imtqc19odG1sLmgifSA9IDE7Ci0g
ICAgICAgICRpbXBsSW5jbHVkZXN7IkhUTUxGb3JtRWxlbWVudC5oIn0gPSAxOwogICAgIH0gZWxz
aWYgKCR0eXBlID1+IC9TVkdQYXRoU2VnLykgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0
eXBlLmgifSA9IDE7CiAgICAgICAgICRqb2luZWROYW1lID0gJHR5cGU7CkBAIC0xNzc1LDcgKzE3
MzMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBwdXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuKSwgRG9udERlbGV0ZXxSZWFkT25seXxEb250RW51
bSk7CiAgICAgfQotICAgIHZpcnR1YWwgSlNWYWx1ZSogY2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYgYXJncyk7CisgICAgdmlydHVh
bCBKU1ZhbHVlKiBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IExp
c3QmKTsKIHByaXZhdGU6CiAgICAgaW50IGlkOwogfTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21h
Yy9XZWJDb3JlQVhPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dl
YkNvcmVBWE9iamVjdC5tbQkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMv
V2ViQ29yZUFYT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaW1w
b3J0ICJFdmVudE5hbWVzLmgiCiAjaW1wb3J0ICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IkZvbnREYXRhLmgiCi0jaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWUuaCIK
KyNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQg
IkhUTUxBcmVhRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTENvbGxlY3Rpb24uaCIKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbXBvcnQgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW1wb3J0ICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW1wb3J0ICJOb2RlTGlzdC5o
IgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJl
bmRlckxpc3RNYXJrZXIuaCIKSW5kZXg6IFdlYkNvcmUvZG9tL0F0dHIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0F0dHIuaWRsCShyZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNvcmUvZG9t
L0F0dHIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0y
MCw3ICsyMCw3IEBACiAKIG1vZHVsZSBjb3JlIHsKIAotICAgIGludGVyZmFjZSBbTGVnYWN5UGFy
ZW50PUtKUzo6RE9NRXZlbnRUYXJnZXROb2RlLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBBdHRyIDog
RXZlbnRUYXJnZXROb2RlIHsKKyAgICBpbnRlcmZhY2UgW0dlbmVyYXRlQ29uc3RydWN0b3JdIEF0
dHIgOiBFdmVudFRhcmdldE5vZGUgewogCiAgICAgICAgIC8vIERPTSBMZXZlbCAxCiAKSW5kZXg6
IFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuaWRsCShyZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0xOSw3ICsxOSw3IEBACiAKIG1vZHVsZSBjb3JlIHsKIAotICAgIGludGVyZmFjZSBbTGVnYWN5
UGFyZW50PUtKUzo6RE9NRXZlbnRUYXJnZXROb2RlLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBDaGFy
YWN0ZXJEYXRhIDogRXZlbnRUYXJnZXROb2RlIHsKKyAgICBpbnRlcmZhY2UgW0dlbmVyYXRlQ29u
c3RydWN0b3JdIENoYXJhY3RlckRhdGEgOiBFdmVudFRhcmdldE5vZGUgewogCiAgICAgICAgIGF0
dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBkYXRhCiAgICAgICAg
ICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lv
biAyMTk0OSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdl
YmtpdC5vcmc+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjAsNyArMjAsNyBAQAogCiBtb2R1bGUgY29yZSB7
CiAKLSAgICBpbnRlcmZhY2UgW0xlZ2FjeVBhcmVudD1LSlM6OkRPTUV2ZW50VGFyZ2V0Tm9kZSwg
R2VuZXJhdGVDb25zdHJ1Y3RvciwgQ3VzdG9tTWFya0Z1bmN0aW9uXSBEb2N1bWVudCA6IEV2ZW50
VGFyZ2V0Tm9kZSB7CisgICAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNvbnN0cnVjdG9yLCBHZW5lcmF0
ZVRvSlMsIEN1c3RvbU1hcmtGdW5jdGlvbl0gRG9jdW1lbnQgOiBFdmVudFRhcmdldE5vZGUgewog
CiAgICAgICAgIC8vIERPTSBMZXZlbCAxIENvcmUKIApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5pZGwJKHJldmlzaW9uIDIxOTQ5KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xOSw3
ICsxOSw3IEBACiAKIG1vZHVsZSBjb3JlIHsKIAotICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50
PUtKUzo6RE9NRXZlbnRUYXJnZXROb2RlLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBEb2N1bWVudEZy
YWdtZW50IDogRXZlbnRUYXJnZXROb2RlIHsKKyAgICBpbnRlcmZhY2UgW0dlbmVyYXRlQ29uc3Ry
dWN0b3JdIERvY3VtZW50RnJhZ21lbnQgOiBFdmVudFRhcmdldE5vZGUgewogICAgIH07CiAKIH0K
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnRUeXBlLmlkbAkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudFR5cGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTksNyArMTksNyBAQAogCiBtb2R1bGUgY29yZSB7CiAKLSAgICBpbnRlcmZhY2Ug
W0dlbmVyYXRlQ29uc3RydWN0b3JdIERvY3VtZW50VHlwZSA6IE5vZGUgeworICAgIGludGVyZmFj
ZSBbR2VuZXJhdGVDb25zdHJ1Y3RvciwgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXJdIERvY3VtZW50
VHlwZSA6IE5vZGUgewogCiAgICAgICAgIC8vIERPTSBMZXZlbCAxCiAKSW5kZXg6IFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShy
ZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMCw3ICsyMCw3IEBACiAKIG1vZHVsZSBj
b3JlIHsKIAotICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6RE9NRXZlbnRUYXJnZXRO
b2RlLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBFbGVtZW50IDogRXZlbnRUYXJnZXROb2RlIHsKKyAg
ICBpbnRlcmZhY2UgW0dlbmVyYXRlQ29uc3RydWN0b3IsIEdlbmVyYXRlTmF0aXZlQ29udmVydGVy
XSBFbGVtZW50IDogRXZlbnRUYXJnZXROb2RlIHsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMSBD
b3JlCiAKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3Jl
L2RvbS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDcgKzIwLDcgQEAKIAogbW9kdWxlIGNvcmUgewog
Ci0gICAgaW50ZXJmYWNlIE5hbWVkTm9kZU1hcCB7CisgICAgaW50ZXJmYWNlIFtHZW5lcmF0ZUNv
bnN0cnVjdG9yLCBIYXNJbmRleEdldHRlciwgSGFzTmFtZUdldHRlcl0gTmFtZWROb2RlTWFwIHsK
IAogICAgICAgICBOb2RlIGdldE5hbWVkSXRlbShpbiBET01TdHJpbmcgbmFtZSk7CiAKQEAgLTM2
LDcgKzM3LDcgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgICAgIC8vIEludHJvZHVjZWQgaW4gRE9N
IExldmVsIDI6CiAKLSAgICAgICAgW09sZFN0eWxlT2JqQ10gTm9kZSBnZXROYW1lZEl0ZW1OUyhp
biBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCAKKyAgICAgICAgW09sZFN0eWxlT2JqQ10gTm9kZSBn
ZXROYW1lZEl0ZW1OUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBuYW1l
c3BhY2VVUkksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IERPTVN0cmluZyBsb2NhbE5hbWUpCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIGltcGxlbWVu
dGF0aW9uIGRvZXMgdGFrZSBhbiBleGNlcHRpb25jb2RlIHBhcmFtZXRlci4KICAgICAgICAgICAg
IC8qcmFpc2VzKERPTUV4Y2VwdGlvbikqLzsKQEAgLTQ0LDcgKzQ1LDcgQEAgbW9kdWxlIGNvcmUg
ewogICAgICAgICBOb2RlIHNldE5hbWVkSXRlbU5TKGluIE5vZGUgbm9kZSkKICAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIFtPbGRTdHlsZU9iakNdIE5vZGUgcmVt
b3ZlTmFtZWRJdGVtTlMoaW4gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSwgCisgICAgICAgIFtPbGRT
dHlsZU9iakNdIE5vZGUgcmVtb3ZlTmFtZWRJdGVtTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgbG9jYWxOYW1lKQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuaWRsCShyZXZpc2lvbiAyMTk0OSkKKysrIFdlYkNv
cmUvZG9tL05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0yMCw3ICsyMCw3IEBACiAKIG1vZHVsZSBjb3JlIHsKIAotICAgIGludGVyZmFjZSBbTGVn
YWN5UGFyZW50PUtKUzo6RE9NTm9kZSwgR2VuZXJhdGVDb25zdHJ1Y3RvciwgT2JqQ0N1c3RvbUlu
dGVybmFsSW1wbF0gTm9kZSB7ICAgICAgICAKKyAgICBpbnRlcmZhY2UgW0xlZ2FjeVBhcmVudD1L
SlM6OkRPTU5vZGUsIEdlbmVyYXRlQ29uc3RydWN0b3IsIEdlbmVyYXRlTmF0aXZlQ29udmVydGVy
LCBHZW5lcmF0ZVRvSlMsIE9iakNDdXN0b21JbnRlcm5hbEltcGxdIE5vZGUgeyAgICAgICAgCiAg
ICAgICAgIC8vIE5vZGVUeXBlCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAgICAgRUxF
TUVOVF9OT0RFICAgICAgICAgICAgICAgICAgID0gMTsKICAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgICAgICBBVFRSSUJVVEVfTk9ERSAgICAgICAgICAgICAgICAgPSAyOwpJbmRleDogV2Vi
Q29yZS9kb20vTm9kZUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVMaXN0
LmlkbAkocmV2aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVl
bCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTks
NyArMjAsNyBAQAogCiBtb2R1bGUgY29yZSB7CiAKLSAgICBpbnRlcmZhY2UgTm9kZUxpc3Qgewor
ICAgIGludGVyZmFjZSBbR2VuZXJhdGVDb25zdHJ1Y3RvciwgSGFzSW5kZXhHZXR0ZXIsIEhhc05h
bWVHZXR0ZXIsIEN1c3RvbUNhbGxdIE5vZGVMaXN0IHsKIAogICAgICAgICBOb2RlIGl0ZW0oaW4g
W0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2
aXNpb24gMjE5NDkpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgIC8vIFlvdSBjYW4ndCBj
YWNoZSB0aGUgV2luZG93IG9iamVjdCBpbiB0aGUgZ2xvYmFsIG9iamVjdCBiZWNhdXNlIGl0ICpp
cyogdGhlIGdsb2JhbCBvYmplY3QuCiAgICAgLy8gRm9yIHRoZSBzYW1lIHJlYXNvbiwgdGhlcmUn
cyBubyBuZWVkIHRvLgotICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6V2luZG93LCBE
b05vdENhY2hlXSBET01XaW5kb3cgeworICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6
V2luZG93LCBEb05vdENhY2hlLCBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwgQ3VzdG9tR2V0T3du
UHJvcGVydHlTbG90XSBET01XaW5kb3cgewogICAgICAgICAvLyBET00gTGV2ZWwgMiBBYnN0cmFj
dFZpZXcgSW50ZXJmYWNlCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBEb2N1bWVudCBkb2N1
bWVudDsKIApAQCAtNzIsOCArNzIsOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmli
dXRlIERvY3VtZW50RnJhZ21lbnRDb25zdHJ1Y3RvciBEb2N1bWVudEZyYWdtZW50OwogICAgICAg
ICBhdHRyaWJ1dGUgRG9jdW1lbnRDb25zdHJ1Y3RvciBEb2N1bWVudDsKICAgICAgICAgYXR0cmli
dXRlIE5vZGVDb25zdHJ1Y3RvciBOb2RlOwotLy8gICAgICAgIGF0dHJpYnV0ZSBOb2RlTGlzdENv
bnN0cnVjdG9yIE5vZGVMaXN0OwotLy8gICAgICAgIGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXBDb25z
dHJ1Y3RvciBOYW1lZE5vZGVNYXA7CisgICAgICAgIGF0dHJpYnV0ZSBOb2RlTGlzdENvbnN0cnVj
dG9yIE5vZGVMaXN0OworICAgICAgICBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwQ29uc3RydWN0b3Ig
TmFtZWROb2RlTWFwOwogICAgICAgICBhdHRyaWJ1dGUgQ2hhcmFjdGVyRGF0YUNvbnN0cnVjdG9y
IENoYXJhY3RlckRhdGE7CiAgICAgICAgIGF0dHJpYnV0ZSBBdHRyQ29uc3RydWN0b3IgQXR0cjsK
ICAgICAgICAgYXR0cmlidXRlIEVsZW1lbnRDb25zdHJ1Y3RvciBFbGVtZW50OwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjE5NDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAwNy0wNi0wMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSB0ZXN0cyBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5NzMK
KyAgICAgICAgQXV0b2dlbmVyYXRlIG1vc3Qgb2YgdGhlIHJlc3Qgb2Yga2pzX2RvbS5oL2NwcAor
CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2RvbS9wcm90b3R5cGUtY2hhaW4tZXhwZWN0ZWQudHh0OgorCiAy
MDA3LTA1LTMxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1jaGFpbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBl
LWNoYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjE5NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9wcm90b3R5cGUtY2hhaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3
ICsxMCw3IEBAIE5PVEU6IFRoaXMgdGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgaWYgeW8KIAogW29i
amVjdCBOb2RlUHJvdG90eXBlXQogCi1bb2JqZWN0IERPTUV2ZW50VGFyZ2V0Tm9kZVByb3RvdHlw
ZV0KK1tvYmplY3QgSlNFdmVudFRhcmdldE5vZGVQcm90b3R5cGVdCiAKIFtvYmplY3QgRG9jdW1l
bnRQcm90b3R5cGVdCiAKQEAgLTI0LDcgKzI0LDcgQEAgTk9URTogVGhpcyB0ZXN0IHdpbGwgc3Rh
cnQgZmFpbGluZyBpZiB5bwogCiBbb2JqZWN0IE5vZGVQcm90b3R5cGVdCiAKLVtvYmplY3QgRE9N
RXZlbnRUYXJnZXROb2RlUHJvdG90eXBlXQorW29iamVjdCBKU0V2ZW50VGFyZ2V0Tm9kZVByb3Rv
dHlwZV0KIAogW29iamVjdCBFbGVtZW50UHJvdG90eXBlXQogCkBAIC00MCw3ICs0MCw3IEBAIE5P
VEU6IFRoaXMgdGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgaWYgeW8KIAogW29iamVjdCBOb2RlUHJv
dG90eXBlXQogCi1bb2JqZWN0IERPTUV2ZW50VGFyZ2V0Tm9kZVByb3RvdHlwZV0KK1tvYmplY3Qg
SlNFdmVudFRhcmdldE5vZGVQcm90b3R5cGVdCiAKIFtvYmplY3QgRWxlbWVudFByb3RvdHlwZV0K
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMTk0OSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTY3OCw2ICs2NzgsMTUgQEAgd2luZG93Lk11dGF0aW9uRXZlbnQuQURESVRJ
T04gW251bWJlcl0KIHdpbmRvdy5NdXRhdGlvbkV2ZW50Lk1PRElGSUNBVElPTiBbbnVtYmVyXQog
d2luZG93Lk11dGF0aW9uRXZlbnQuUkVNT1ZBTCBbbnVtYmVyXQogd2luZG93Lk11dGF0aW9uRXZl
bnQucHJvdG90eXBlIFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5FdmVudC5wcm90b3R5cGVdCit3
aW5kb3cuTmFtZWROb2RlTWFwIFtvYmplY3QgTmFtZWROb2RlTWFwQ29uc3RydWN0b3JdCit3aW5k
b3cuTmFtZWROb2RlTWFwLnByb3RvdHlwZSBbb2JqZWN0IE5hbWVkTm9kZU1hcFByb3RvdHlwZV0K
K3dpbmRvdy5OYW1lZE5vZGVNYXAucHJvdG90eXBlLmdldE5hbWVkSXRlbSBbZnVuY3Rpb25dCit3
aW5kb3cuTmFtZWROb2RlTWFwLnByb3RvdHlwZS5nZXROYW1lZEl0ZW1OUyBbZnVuY3Rpb25dCit3
aW5kb3cuTmFtZWROb2RlTWFwLnByb3RvdHlwZS5pdGVtIFtmdW5jdGlvbl0KK3dpbmRvdy5OYW1l
ZE5vZGVNYXAucHJvdG90eXBlLnJlbW92ZU5hbWVkSXRlbSBbZnVuY3Rpb25dCit3aW5kb3cuTmFt
ZWROb2RlTWFwLnByb3RvdHlwZS5yZW1vdmVOYW1lZEl0ZW1OUyBbZnVuY3Rpb25dCit3aW5kb3cu
TmFtZWROb2RlTWFwLnByb3RvdHlwZS5zZXROYW1lZEl0ZW0gW2Z1bmN0aW9uXQord2luZG93Lk5h
bWVkTm9kZU1hcC5wcm90b3R5cGUuc2V0TmFtZWRJdGVtTlMgW2Z1bmN0aW9uXQogd2luZG93Lk5v
ZGUgW29iamVjdCBOb2RlQ29uc3RydWN0b3JdCiB3aW5kb3cuTm9kZS5BVFRSSUJVVEVfTk9ERSBb
bnVtYmVyXQogd2luZG93Lk5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFIFtudW1iZXJdCkBAIC03NTIs
NiArNzYxLDkgQEAgd2luZG93Lk5vZGVGaWx0ZXIucHJvdG90eXBlLlNIT1dfRU5USVRZXwogd2lu
ZG93Lk5vZGVGaWx0ZXIucHJvdG90eXBlLlNIT1dfTk9UQVRJT04gW251bWJlcl0KIHdpbmRvdy5O
b2RlRmlsdGVyLnByb3RvdHlwZS5TSE9XX1BST0NFU1NJTkdfSU5TVFJVQ1RJT04gW251bWJlcl0K
IHdpbmRvdy5Ob2RlRmlsdGVyLnByb3RvdHlwZS5TSE9XX1RFWFQgW251bWJlcl0KK3dpbmRvdy5O
b2RlTGlzdCBbb2JqZWN0IE5vZGVMaXN0Q29uc3RydWN0b3JdCit3aW5kb3cuTm9kZUxpc3QucHJv
dG90eXBlIFtvYmplY3QgTm9kZUxpc3RQcm90b3R5cGVdCit3aW5kb3cuTm9kZUxpc3QucHJvdG90
eXBlLml0ZW0gW2Z1bmN0aW9uXQogd2luZG93Lk5vdGF0aW9uIFtvYmplY3QgTm90YXRpb25Db25z
dHJ1Y3Rvcl0KIHdpbmRvdy5Ob3RhdGlvbi5wcm90b3R5cGUgW3ByaW50ZWQgYWJvdmUgYXMgd2lu
ZG93Lk5vZGUucHJvdG90eXBlXQogd2luZG93Lk9wdGlvbiBbb2JqZWN0IE9iamVjdF0K
</data>
<flag name="review"
          id="6129"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>