<?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>115891</bug_id>
          
          <creation_ts>2013-05-09 22:41:00 -0700</creation_ts>
          <short_desc>Unify plug-in information dictionaries</short_desc>
          <delta_ts>2013-05-14 14:53:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>116018</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>887233</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-09 22:41:00 -0700</bug_when>
    <thetext>Unify plug-in information dictionaries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887238</commentid>
    <comment_count>1</comment_count>
      <attachid>201320</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-09 22:53:15 -0700</bug_when>
    <thetext>Created attachment 201320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887239</commentid>
    <comment_count>2</comment_count>
      <attachid>201321</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-09 22:56:23 -0700</bug_when>
    <thetext>Created attachment 201321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887240</commentid>
    <comment_count>3</comment_count>
      <attachid>201321</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-09 23:04:48 -0700</bug_when>
    <thetext>Comment on attachment 201321
Patch

Attachment 201321 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/450058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887241</commentid>
    <comment_count>4</comment_count>
      <attachid>201321</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-09 23:05:10 -0700</bug_when>
    <thetext>Comment on attachment 201321
Patch

Attachment 201321 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/450057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887472</commentid>
    <comment_count>5</comment_count>
      <attachid>201321</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-10 11:58:09 -0700</bug_when>
    <thetext>Comment on attachment 201321
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=201321&amp;action=review

&gt; Source/WebKit2/Shared/Plugins/Netscape/PluginInformation.cpp:99
&gt; +void pluginModuleInformation(const PluginModuleInfo&amp; plugin, ImmutableDictionary::MapType&amp; map)

Should be called get (or just return the map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887595</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-10 13:45:25 -0700</bug_when>
    <thetext>Committed r149904: &lt;http://trac.webkit.org/changeset/149904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889037</commentid>
    <comment_count>7</comment_count>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2013-05-14 14:53:09 -0700</bug_when>
    <thetext>This patch broke compilation of ports not enabling NETSCAPE_PLUGIN_API due to the use of PluginInfoStore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201320</attachid>
            <date>2013-05-09 22:53:15 -0700</date>
            <delta_ts>2013-05-09 22:56:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115891-20130509225218.patch</filename>
            <type>text/plain</type>
            <size>63322</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDEzLTA1LTA5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pZnkgcGx1Zy1pbiBpbmZvcm1hdGlv
biBkaWN0aW9uYXJpZXMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzODUyMDgwPgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB1bmlmaWVzIHRo
ZSBwbHVnLWluIGluZm9ybWF0aW9uIGRpY3Rpb25hcmllcyB2ZW5kZWQgYnkgV0tDb250ZXh0Q29w
eVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyCisgICAgICAgIGFuZCBXS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0lucyB3aXRoIHRob3NlIGZyb20gdGhlIFdLUGFnZUxvYWRlckNs
aWVudCBhbmQgV0tQYWdlVUlDbGllbnQuCisKKyAgICAgICAgQWxsIHRoZSBvbGQga2V5cyB3aWxs
IGNvbnRpbnVlIHRvIHdvcmssIGJ1dCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBu
ZXcga2V5cyBkZWZpbmVkIGluIAorICAgICAgICBXS1BsdWdpbkluZm9ybWF0aW9uLmgKKworICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgICogU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uaDogQWRkZWQuCisgICAgICAg
IEV4cG9ydCBuZXcga2V5cyBhcyBTUEkuCisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkpOgorICAgICAgICAoV2ViS2l0
OjpwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkpOgorICAgICAgICAoV2ViS2l0Ojpw
bHVnaW5JbmZvcm1hdGlvblBhdGhLZXkpOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5JbmZvcm1h
dGlvbkRpc3BsYXlOYW1lS2V5KToKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25E
ZWZhdWx0TG9hZFBvbGljeUtleSk6CisgICAgICAgIChXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9u
VXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkpOgorICAgICAg
ICAoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvbkhhc1NhbmRib3hQcm9maWxlS2V5KToKKyAgICAg
ICAgKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSk6CisgICAgICAgIChXZWJL
aXQ6OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkpOgorICAgICAgICAoV2ViS2l0OjpwbHVn
aW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkpOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5JbmZvcm1h
dGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KToKKyAgICAgICAgKFdlYktpdDo6cGx1Z2lu
SW5mb3JtYXRpb25QbHVnaW5VUkxLZXkpOgorICAgICAgICBBZGQgbmV3IGtleXMuCisKKyAgICAg
ICAgKFdlYktpdDo6cGx1Z2luTW9kdWxlSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkpOgorICAgICAgICBBZGQgY3JlYXRpb24g
ZnVuY3Rpb25zIHRvIHNpbXBsaWZ5IG11bHRpcGxlIHNpdGVzLgorCisgICAgICAgICogU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpbkluZm9ybWF0aW9uTWFjLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6cGxhdGZvcm1QbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbik6CisgICAgICAg
IEFkZCBwbGF0Zm9ybSBzcGVjaWZpYyBkYXRhIHRvIHRoZSBkaWN0aW9uYXJ5LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRQbHVnaW5J
bmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkpOgorICAgICAgICAoV0tQYWdlR2V0UGx1Z2lu
SW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KToKKyAgICAgICAgKFdLUGFnZUdldFBsdWdpbklu
Zm9ybWF0aW9uRGlzcGxheU5hbWVLZXkpOgorICAgICAgICAoV0tQYWdlR2V0UGx1Z2luSW5mb3Jt
YXRpb25GcmFtZVVSTEtleSk6CisgICAgICAgIChXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvbk1J
TUVUeXBlS2V5KToKKyAgICAgICAgKFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtl
eSk6CisgICAgICAgIChXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmli
dXRlVVJMS2V5KToKKyAgICAgICAgKFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJM
S2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgIERlcHJl
Y2F0ZSB0aGUgb2xkIGtleXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRDb3B5UGx1Z0luSW5mb0ZvckJ1bmRs
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJ
bnMpOgorICAgICAgICBTaW1wbGlmeSBieSB1c2luZyB0aGUgbmV3IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeSBmdW5jdGlvbnMuCisKKyAgICAgICAgKFdLUGx1Z0luSW5mb1BhdGhL
ZXkpOgorICAgICAgICAoV0tQbHVnSW5JbmZvQnVuZGxlSWRlbnRpZmllcktleSk6CisgICAgICAg
IChXS1BsdWdJbkluZm9WZXJzaW9uS2V5KToKKyAgICAgICAgKFdLUGx1Z0luSW5mb0xvYWRQb2xp
Y3lLZXkpOgorICAgICAgICAoV0tQbHVnSW5JbmZvVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lv
bklzS25vd25BdmFpbGFibGVLZXkpOgorICAgICAgICAoV0tQbHVnSW5JbmZvSXNTYW5kYm94ZWRL
ZXkpOgorICAgICAgICBEZXByZWNhdGUgdGhlIG9sZCBrZXlzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVu
dDo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRl
ckNsaWVudDo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJMb2FkZXJDbGllbnQ6OnBsdWdpbkxvYWRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuaDoKKyAgICAgICAgT3B0
aW1pemUgZm9yIHRoZSBtb3N0IHJlY2VudCBjYWxsYmFjayB0eXBlIHdoaWNoIHRha2VzIGEgZGlj
dGlvbmFyeSwKKyAgICAgICAgYW5kIHB1bGwgb3V0IHRoZSBuZWNlc3NhcnkgYml0cyBmcm9tIGl0
IGZvciBkZXByZWNhdGVkIGNhbGxiYWNrcyBhcyBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2lu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2lu
VmVyc2lvbik6CisgICAgICAgIFVzZSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnko
KSBjb25zaXN0ZW50bHksIHRvIGdldCBjb25zaXN0ZW50IHJlc3VsdHMgZm9yIGNhbGxiYWNrcy4K
KworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
QWRkIG5ldyBmaWxlcy4KKwogMjAxMy0wNS0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0tQbHVnaW5JbmZvcm1hdGlvbi5oIgorCisjaW5jbHVkZSAi
UGx1Z2luSW5mb3JtYXRpb24uaCIKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tTdHJpbmdS
ZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKQoreworICAgIHN0YXRp
YyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uQnVu
ZGxlSWRlbnRpZmllcktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9
CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkKK3sK
KyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZv
cm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiB0b0FQSShr
ZXkpOworfQorCitXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgpCit7Cisg
ICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3Jt
YXRpb25QYXRoS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKwor
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCkKK3sKKyAgICBz
dGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlv
bkRpc3BsYXlOYW1lS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30K
KworV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCkK
K3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5J
bmZvcm1hdGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
dG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBh
c3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkKK3sKKyAgICBzdGF0aWMg
V2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblVwZGF0
ZVBhc3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1h
dGlvbkhhc1NhbmRib3hQcm9maWxlS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkg
PSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkhhc1NhbmRib3hQcm9maWxlS2V5
KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYg
V0tQbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5n
KiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQ
bHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBr
ZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVn
aW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKQoreworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9
IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpKS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5m
b3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpCit7CisgICAgc3RhdGljIFdlYlN0
cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFn
ZUF0dHJpYnV0ZVVSTEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9
CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKQoreworICAg
IHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0
aW9uUGx1Z2luVVJMS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3Jt
YXRpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Bs
dWdpbkluZm9ybWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV0tQbHVnaW5JbmZvcm1hdGlvbl9oCisjZGVmaW5lIFdLUGx1Z2luSW5m
b3JtYXRpb25faAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBQbHVnLWluIG1vZHVsZSBpbmZvcm1h
dGlvbiBrZXlzICovCisKKy8qIFZhbHVlIHR5cGU6IFdLU3RyaW5nUmVmICovCitXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKTsKKwor
LyogVmFsdWUgdHlwZTogV0tTdHJpbmdSZWYgKi8KK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1Bs
dWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpOworCisvKiBWYWx1ZSB0eXBlOiBXS1N0
cmluZ1JlZiAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QYXRo
S2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLU3RyaW5nUmVmICovCitXS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCk7CisKKy8qIFZhbHVlIHR5
cGU6IFdLVUludDY0UmVmICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1h
dGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLQm9vbGVhblJl
ZiAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0
TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpOworCisvKiBWYWx1ZSB0eXBl
OiBXS0Jvb2xlYW5SZWYgKi8KK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0
aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKTsKKworCisvKiBQbHVnLWluIGxvYWQgc3BlY2lmaWMg
aW5mb3JtYXRpb24ga2V5cyAqLworCisvKiBWYWx1ZSB0eXBlOiBXS1VSTFJlZiAqLworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSgpOworCisvKiBW
YWx1ZSB0eXBlOiBXS1N0cmluZ1JlZiAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2lu
SW5mb3JtYXRpb25NSU1FVHlwZUtleSgpOworCisvKiBWYWx1ZSB0eXBlOiBXS1VSTFJlZiAqLwor
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCk7CisK
Ky8qIFZhbHVlIHR5cGU6IFdLVVJMUmVmICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVn
aW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCk7CisKKy8qIFZhbHVlIHR5
cGU6IFdLVVJMUmVmICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlv
blBsdWdpblVSTEtleSgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLyogV0tQbHVnaW5JbmZvcm1hdGlvbl9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9y
bWF0aW9uLmgiCisKKyNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJQbHVn
aW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViTnVt
YmVyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTdHJp
bmcgcGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkKK3sKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXIiKTsKK30KKwor
U3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpCit7CisgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uIik7Cit9CisKK1N0
cmluZyBwbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIlBsdWdpbkluZm9ybWF0aW9uUGF0aCIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRp
b25EaXNwbGF5TmFtZUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5m
b3JtYXRpb25EaXNwbGF5TmFtZSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25EZWZh
dWx0TG9hZFBvbGljeUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5m
b3JtYXRpb25EZWZhdWx0TG9hZFBvbGljeSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRp
b25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpCit7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJs
b2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3Jt
YXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
UGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZSIpOworfQorCitTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25GcmFtZVVSTEtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1
Z2luSW5mb3JtYXRpb25GcmFtZVVSTCIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25N
SU1FVHlwZUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRp
b25NSU1FVHlwZSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkK
K3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkwiKTsK
K30KKworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXko
KQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3Bh
Z2VBdHRyaWJ1dGVVUkwiKTsKK30KKworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJM
S2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvblBsdWdp
blVSTCIpOworfQorCit2b2lkIHBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbiwgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSYgbWFwKQorewor
ICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRl
KHBsdWdpbi5wYXRoKSk7CisgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1l
S2V5KCksIFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbi5pbmZvLm5hbWUpKTsKKyAgICBtYXAuc2V0
KHBsdWdpbkluZm9ybWF0aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKSwgV2ViVUludDY0OjpjcmVh
dGUodG9XS1BsdWdpbkxvYWRQb2xpY3koUGx1Z2luSW5mb1N0b3JlOjpwb2xpY3lGb3JQbHVnaW4o
cGx1Z2luKSkpKTsKKworICAgIHBsYXRmb3JtUGx1Z2luTW9kdWxlSW5mb3JtYXRpb24ocGx1Z2lu
LCBtYXApOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdp
bkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCit7
CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CisgICAgcGx1Z2luTW9kdWxl
SW5mb3JtYXRpb24ocGx1Z2luLCBtYXApOworCisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25h
cnk6OmFkb3B0KG1hcCk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3Jl
YXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBs
dWdpbiwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNwYWdl
QXR0cmlidXRlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZykKK3sKKyAg
ICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKKyAgICBwbHVnaW5Nb2R1bGVJbmZv
cm1hdGlvbihwbHVnaW4sIG1hcCk7CisKKyAgICBpZiAoIWZyYW1lVVJMU3RyaW5nLmlzRW1wdHko
KSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCksIFdlYlVS
TDo6Y3JlYXRlKGZyYW1lVVJMU3RyaW5nKSk7CisgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
CisgICAgICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpLCBXZWJTdHJp
bmc6OmNyZWF0ZShtaW1lVHlwZSkpOworICAgIGlmICghcGFnZVVSTFN0cmluZy5pc0VtcHR5KCkp
CisgICAgICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCksIFdlYlVSTDo6
Y3JlYXRlKHBhZ2VVUkxTdHJpbmcpKTsKKyAgICBpZiAoIXBsdWdpbnNwYWdlQXR0cmlidXRlVVJM
U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvblBsdWdp
bnNwYWdlQXR0cmlidXRlVVJMS2V5KCksIFdlYlVSTDo6Y3JlYXRlKHBsdWdpbnNwYWdlQXR0cmli
dXRlVVJMU3RyaW5nKSk7CisgICAgaWYgKCFwbHVnaW5VUkxTdHJpbmcuaXNFbXB0eSgpKQorICAg
ICAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCksIFdlYlVSTDo6Y3Jl
YXRlKHBsdWdpblVSTFN0cmluZykpOworCisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6
OmFkb3B0KG1hcCk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRl
UGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKK3sK
KyAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKKworICAgIGlmICghZnJhbWVV
UkxTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uRnJh
bWVVUkxLZXkoKSwgV2ViVVJMOjpjcmVhdGUoZnJhbWVVUkxTdHJpbmcpKTsKKyAgICBpZiAoIW1p
bWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvbk1JTUVU
eXBlS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRlKG1pbWVUeXBlKSk7CisgICAgaWYgKCFwYWdlVVJM
U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvblBhZ2VV
UkxLZXkoKSwgV2ViVVJMOjpjcmVhdGUocGFnZVVSTFN0cmluZykpOworCisgICAgcmV0dXJuIElt
bXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQor
dm9pZCBwbGF0Zm9ybVBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mLCBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlJikKK3sKK30KKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGx1Z2luSW5mb3JtYXRpb25faAorI2RlZmluZSBQbHVnaW5JbmZvcm1hdGlvbl9oCisKKyNp
bmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOworCisvLyBQ
bHVnLWluIG1vZHVsZSBpbmZvcm1hdGlvbiBrZXlzCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25C
dW5kbGVJZGVudGlmaWVyS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJz
aW9uS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCk7CitTdHJpbmcgcGx1
Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFtZUtleSgpOworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9u
RGVmYXVsdExvYWRQb2xpY3lLZXkoKTsKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBh
c3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCk7CitTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpOworCisvLyBQbHVnLWluIGxvYWQgc3Bl
Y2lmaWMgaW5mb3JtYXRpb24ga2V5cworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uRnJhbWVVUkxL
ZXkoKTsKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCk7CitTdHJpbmcgcGx1
Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QbHVn
aW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpOworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2lu
VVJMS2V5KCk7CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2lu
SW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKK1Bhc3NSZWZQ
dHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5
KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1
Z2luVVJMU3RyaW5nKTsKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CisKKwor
dm9pZCBwbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSYpOwordm9pZCBwbGF0Zm9ybVBsdWdpbk1vZHVsZUlu
Zm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBJbW11dGFibGVEaWN0aW9uYXJ5OjpN
YXBUeXBlJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGx1Z2luSW5m
b3JtYXRpb25faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL1BsdWdpbkluZm9ybWF0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5JbmZvcm1hdGlvbk1hYy5tbQkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9Q
bHVnaW5JbmZvcm1hdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbHVnaW5JbmZvcm1hdGlv
bi5oIgorCisjaW1wb3J0ICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW1wb3J0ICJQbHVnaW5TYW5k
Ym94UHJvZmlsZS5oIgorI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXZWJO
dW1iZXIuaCIKKyNpbXBvcnQgIldlYlN0cmluZy5oIgorI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHBsYXRmb3JtUGx1Z2luTW9k
dWxlSW5mb3JtYXRpb24oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBJbW11dGFibGVE
aWN0aW9uYXJ5OjpNYXBUeXBlJiBtYXApCit7CisgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlv
bkJ1bmRsZUlkZW50aWZpZXJLZXkoKSwgV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luLmJ1bmRsZUlk
ZW50aWZpZXIpKTsKKyAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktl
eSgpLCBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW4udmVyc2lvblN0cmluZykpOworICAgIG1hcC5z
ZXQocGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2
YWlsYWJsZUtleSgpLCBXZWJCb29sZWFuOjpjcmVhdGUoV0tJc1BsdWdpblVwZGF0ZUF2YWlsYWJs
ZShuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKHBsdWdpbi5idW5kbGVJZGVudGlmaWVyKSkpKTsK
KyAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKSwgV2Vi
Qm9vbGVhbjo6Y3JlYXRlKHBsdWdpbkhhc1NhbmRib3hQcm9maWxlKHBsdWdpbi5idW5kbGVJZGVu
dGlmaWVyKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNDk4NjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNp
bmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRp
b24uaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0yNzQsMzggKzI3NSw2NSBA
QCB2b2lkIFdlYkxvYWRlckNsaWVudDo6d2lsbEdvVG9CYWNrRm9yd2FyCiAgICAgICAgIG1fY2xp
ZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0b0FQSShwYWdlKSwgdG9BUEkoaXRlbSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9h
ZGVyQ2xpZW50OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKFdlYlBhZ2VQcm94eSogcGFnZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQorU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uRnJhbWVV
UkxLZXkoKTsKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCk7CitTdHJpbmcg
cGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25Q
bHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpOworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1
Z2luVVJMS2V5KCk7CisKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJL
ZXkoKTsKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKTsKKwordm9p
ZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oV2ViUGFnZVByb3h5
KiBwYWdlLCBJbW11dGFibGVEaWN0aW9uYXJ5KiBwbHVnaW5JbmZvcm1hdGlvbikKIHsKICAgICBp
ZiAobV9jbGllbnQuZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbl9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwKQotICAgICAgICBtX2NsaWVudC5kaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xp
ZW50LmNsaWVudEluZm8pOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAoCisgICAgICAgICAgICB0b0FQSShwYWdlKSwKKyAg
ICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5J
bmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwKKyAgICAgICAgICAgIG1fY2xpZW50LmNsaWVudElu
Zm8pOwogCiAgICAgaWYgKG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMSkKLSAgICAgICAgbV9jbGllbnQucGx1Z2luRGlkRmFpbF9kZXByZWNhdGVkRm9yVXNlV2l0
aFYxKHRvQVBJKHBhZ2UpLCBrV0tFcnJvckNvZGVDYW5ub3RMb2FkUGx1Z0luLCB0b0FQSShtaW1l
VHlwZS5pbXBsKCkpLCAwLCAwLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLQotICAgIGlmIChtX2Ns
aWVudC5wbHVnaW5EaWRGYWlsKSB7Ci0gICAgICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5
PiBwbHVnaW5JbmZvcm1hdGlvbiA9IFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KFN0cmluZygpLCBTdHJpbmcoKSwgU3RyaW5nKCksIGZyYW1lVVJMU3RyaW5nLCBtaW1l
VHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpKTsKLSAgICAgICAgbV9jbGll
bnQucGx1Z2luRGlkRmFpbCh0b0FQSShwYWdlKSwga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJ
biwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
LSAgICB9CisgICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMSgKKyAgICAgICAgICAgIHRvQVBJKHBhZ2UpLAorICAgICAgICAgICAga1dLRXJyb3JDb2Rl
Q2Fubm90TG9hZFBsdWdJbiwKKyAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5n
ZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwKKyAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisKKyAgICBpZiAobV9jbGllbnQucGx1Z2luRGlkRmFpbCkKKyAgICAgICAgbV9jbGllbnQucGx1
Z2luRGlkRmFpbCgKKyAgICAgICAgICAgIHRvQVBJKHBhZ2UpLAorICAgICAgICAgICAga1dLRXJy
b3JDb2RlQ2Fubm90TG9hZFBsdWdJbiwKKyAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0
aW9uKSwKKyAgICAgICAgICAgIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkxv
YWRlckNsaWVudDo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpbkJ1bmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luQnVuZGxlVmVyc2lvbiwgY29uc3QgU3RyaW5n
JiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQordm9pZCBXZWJM
b2FkZXJDbGllbnQ6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdlYlBhZ2VQcm94eSog
cGFnZSwgSW1tdXRhYmxlRGljdGlvbmFyeSogcGx1Z2luSW5mb3JtYXRpb24pCiB7CiAgICAgaWYg
KG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAg
bV9jbGllbnQucGx1Z2luRGlkRmFpbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKHBhZ2Up
LCBrV0tFcnJvckNvZGVJbnNlY3VyZVBsdWdJblZlcnNpb24sIHRvQVBJKG1pbWVUeXBlLmltcGwo
KSksIHRvQVBJKHBsdWdpbkJ1bmRsZUlkZW50aWZpZXIuaW1wbCgpKSwgdG9BUEkocGx1Z2luQnVu
ZGxlVmVyc2lvbi5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLQotICAgIGlmIChtX2Ns
aWVudC5wbHVnaW5EaWRGYWlsKSB7Ci0gICAgICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5
PiBwbHVnaW5JbmZvcm1hdGlvbiA9IFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KHBsdWdpbkJ1bmRsZUlkZW50aWZpZXIsIHBsdWdpbkJ1bmRsZVZlcnNpb24sIFN0cmlu
ZygpLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBT
dHJpbmcoKSk7Ci0gICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWwodG9BUEkocGFnZSksIGtX
S0Vycm9yQ29kZUluc2VjdXJlUGx1Z0luVmVyc2lvbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24u
Z2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLSAgICB9CisgICAgICAgIG1fY2xpZW50LnBs
dWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSgKKyAgICAgICAgICAgIHRvQVBJKHBh
Z2UpLAorICAgICAgICAgICAga1dLRXJyb3JDb2RlSW5zZWN1cmVQbHVnSW5WZXJzaW9uLAorICAg
ICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxXZWJTdHJpbmc+KHBsdWdpbklu
Zm9ybWF0aW9uTUlNRVR5cGVLZXkoKSkpLAorICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3Jt
YXRpb24tPmdldDxXZWJTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktl
eSgpKSksCisgICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PFdlYlN0cmlu
Zz4ocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkpKSwKKyAgICAgICAgICAgIG1f
Y2xpZW50LmNsaWVudEluZm8pOworCisgICAgaWYgKG1fY2xpZW50LnBsdWdpbkRpZEZhaWwpCisg
ICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWwoCisgICAgICAgICAgICB0b0FQSShwYWdlKSwK
KyAgICAgICAgICAgIGtXS0Vycm9yQ29kZUluc2VjdXJlUGx1Z0luVmVyc2lvbiwKKyAgICAgICAg
ICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uKSwKKyAgICAgICAgICAgIG1fY2xpZW50LmNsaWVu
dEluZm8pOwogfQogCi1QbHVnaW5Nb2R1bGVMb2FkUG9saWN5IFdlYkxvYWRlckNsaWVudDo6cGx1
Z2luTG9hZFBvbGljeShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgcGx1Z2luQnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBwbHVnaW5CdW5kbGVWZXJzaW9uLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHBhZ2VVUkxTdHJpbmcsIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdp
bkxvYWRQb2xpY3kpCitQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IFdlYkxvYWRlckNsaWVudDo6cGx1
Z2luTG9hZFBvbGljeShXZWJQYWdlUHJveHkqIHBhZ2UsIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kg
Y3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIEltbXV0YWJsZURpY3Rpb25hcnkqIHBsdWdpbkluZm9y
bWF0aW9uKQogewogICAgIGlmICghbV9jbGllbnQucGx1Z2luTG9hZFBvbGljeSkKICAgICAgICAg
cmV0dXJuIGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5OwogCi0gICAgUmVmUHRyPEltbXV0YWJsZURp
Y3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uID0gV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1h
dGlvbkRpY3Rpb25hcnkocGx1Z2luQnVuZGxlSWRlbnRpZmllciwgcGx1Z2luQnVuZGxlVmVyc2lv
biwgZGlzcGxheU5hbWUsIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcoKSwgcGFnZVVSTFN0cmluZywg
U3RyaW5nKCksIFN0cmluZygpKTsKLSAgICByZXR1cm4gdG9QbHVnaW5Nb2R1bGVMb2FkUG9saWN5
KG1fY2xpZW50LnBsdWdpbkxvYWRQb2xpY3kodG9BUEkocGFnZSksIHRvV0tQbHVnaW5Mb2FkUG9s
aWN5KGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5KSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0
KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKSk7CisgICAgcmV0dXJuIHRvUGx1Z2luTW9kdWxlTG9h
ZFBvbGljeShtX2NsaWVudC5wbHVnaW5Mb2FkUG9saWN5KHRvQVBJKHBhZ2UpLCB0b1dLUGx1Z2lu
TG9hZFBvbGljeShjdXJyZW50UGx1Z2luTG9hZFBvbGljeSksIHRvQVBJKHBsdWdpbkluZm9ybWF0
aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIEFQSU9iamVjdDsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFz
cyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CitjbGFzcyBJbW11dGFibGVEaWN0aW9u
YXJ5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC04OSwxMCArOTAsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlUHJveHkqLCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKik7CiAgICAgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2Vi
UGFnZVByb3h5KiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSosIEFQSU9iamVjdCopOwogCi0gICAg
UGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwbHVnaW5Mb2FkUG9saWN5KFdlYlBhZ2VQcm94eSosIGNv
bnN0IFN0cmluZyYgcGx1Z2luQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBwbHVnaW5C
dW5kbGVWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBjb25zdCBTdHJpbmcmIGZy
YW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIFBsdWdpbk1vZHVsZUxv
YWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3kpOwotICAgIHZvaWQgZGlkRmFpbFRvSW5p
dGlhbGl6ZVBsdWdpbihXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwot
ICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5KiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5CdW5kbGVJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHBsdWdpbkJ1bmRsZVZlcnNpb24sIGNvbnN0IFN0cmluZyYgZnJhbWVV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7Ci0KKyAgICBQbHVnaW5Nb2R1
bGVMb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xpY3koV2ViUGFnZVByb3h5KiwgUGx1Z2luTW9kdWxl
TG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgSW1tdXRhYmxlRGljdGlvbmFyeSop
OworICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXZWJQYWdlUHJveHkqLCBJbW11
dGFibGVEaWN0aW9uYXJ5Kik7CisgICAgdm9pZCBkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lv
bihXZWJQYWdlUHJveHkqLCBJbW11dGFibGVEaWN0aW9uYXJ5Kik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAxNDk4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1
ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVk
ZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKQEAgLTEzOTEsOCAr
MTM5Miw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmkKICAgICBN
RVNTQUdFX0NIRUNLX1VSTCh1cmxTdHJpbmcpOwogCiAgICAgbmV3TWltZVR5cGUgPSBtaW1lVHlw
ZS5sb3dlcigpOwotCiAgICAgcGx1Z2luTG9hZFBvbGljeSA9IFBsdWdpbk1vZHVsZUxvYWROb3Jt
YWxseTsKKyAgICAKICAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtV
UkwoKSwgdXJsU3RyaW5nKSk7CiAgICAgaWYgKCFwbHVnaW4ucGF0aCkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTQwMCw4ICsxNDAxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29u
c3QgU3RyaQogICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBQbHVnaW5JbmZvU3RvcmU6OnBvbGljeUZv
clBsdWdpbihwbHVnaW4pOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFBsdWdpbk1vZHVsZUxv
YWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDxQbHVnaW5Nb2R1
bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9saWN5KTsKLSAgICBwbHVnaW5Mb2FkUG9saWN5ID0g
bV9sb2FkZXJDbGllbnQucGx1Z2luTG9hZFBvbGljeSh0aGlzLCBwbHVnaW4uYnVuZGxlSWRlbnRp
ZmllciwgcGx1Z2luLnZlcnNpb25TdHJpbmcsIHBsdWdpbi5pbmZvLm5hbWUsIGZyYW1lVVJMU3Ry
aW5nLCBwYWdlVVJMU3RyaW5nLCBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSk7CisgICAgUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5m
b3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJhbWVVUkxTdHJpbmcsIFN0cmluZygpLCBwYWdl
VVJMU3RyaW5nLCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBt
X2xvYWRlckNsaWVudC5wbHVnaW5Mb2FkUG9saWN5KHRoaXMsIHN0YXRpY19jYXN0PFBsdWdpbk1v
ZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQb2xpY3kpLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQo
KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZVVSTFN0cmluZyk7CiAgICAgVU5VU0VE
X1BBUkFNKHBhZ2VVUkxTdHJpbmcpOwpAQCAtMjcwMCw2OSArMjcwMSw2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb25uZWN0aW9uV2lsbENsb3NlKEMKICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+
c3RvcmFnZU1hbmFnZXIoKS5zZXRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKG1fcGFnZUlELCAwKTsKIH0KIAotU3RyaW5nIFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3Jt
YXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkKLXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQ
bHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXIiKTsKLX0KLQotU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6cGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkKLXsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb24iKTsKLX0KLQotU3Ry
aW5nIFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFtZUtleSgpCi17Ci0g
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFtZSIpOwot
fQotCi1TdHJpbmcgV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkK
LXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMIik7
Ci19Ci0KLVN0cmluZyBXZWJQYWdlUHJveHk6OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXko
KQotewotICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGUi
KTsKLX0KLQotU3RyaW5nIFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5
KCkKLXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkwi
KTsKLX0KLQotU3RyaW5nIFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFn
ZUF0dHJpYnV0ZVVSTEtleSgpCi17Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5m
b3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTCIpOwotfQotCi1TdHJpbmcgV2ViUGFnZVBy
b3h5OjpwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpCi17Ci0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkwiKTsKLX0KLQotUGFzc1JlZlB0cjxJ
bW11dGFibGVEaWN0aW9uYXJ5PiBXZWJQYWdlUHJveHk6OnBsdWdpbkluZm9ybWF0aW9uRGljdGlv
bmFyeShjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxl
VmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHBsdWdpblVSTFN0cmluZykKLXsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQ
SU9iamVjdD4+IHBsdWdpbkluZm9NYXA7Ci0gICAgaWYgKCFidW5kbGVJZGVudGlmaWVyLmlzRW1w
dHkoKSkKLSAgICAgICAgcGx1Z2luSW5mb01hcC5zZXQoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZv
cm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKSwgV2ViU3RyaW5nOjpjcmVhdGUoYnVuZGxlSWRl
bnRpZmllcikpOwotICAgIGlmICghYnVuZGxlVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAgIHBs
dWdpbkluZm9NYXAuc2V0KFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJz
aW9uS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRlKGJ1bmRsZVZlcnNpb24pKTsKLSAgICBpZiAoIWRp
c3BsYXlOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcGx1Z2luSW5mb01hcC5zZXQoV2ViUGFnZVBy
b3h5OjpwbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRl
KGRpc3BsYXlOYW1lKSk7Ci0gICAgaWYgKCFmcmFtZVVSTFN0cmluZy5pc0VtcHR5KCkpCi0gICAg
ICAgIHBsdWdpbkluZm9NYXAuc2V0KFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25GcmFt
ZVVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShmcmFtZVVSTFN0cmluZykpOwotICAgIGlmICghbWlt
ZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBwbHVnaW5JbmZvTWFwLnNldChXZWJQYWdlUHJveHk6
OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKSwgV2ViU3RyaW5nOjpjcmVhdGUobWltZVR5
cGUpKTsKLSAgICBpZiAoIXBhZ2VVUkxTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICBwbHVnaW5J
bmZvTWFwLnNldChXZWJQYWdlUHJveHk6OnBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpLCBX
ZWJVUkw6OmNyZWF0ZShwYWdlVVJMU3RyaW5nKSk7Ci0gICAgaWYgKCFwbHVnaW5zcGFnZUF0dHJp
YnV0ZVVSTFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHBsdWdpbkluZm9NYXAuc2V0KFdlYlBh
Z2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpLCBX
ZWJVUkw6OmNyZWF0ZShwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZykpOwotICAgIGlmICgh
cGx1Z2luVVJMU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcGx1Z2luSW5mb01hcC5zZXQoV2Vi
UGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpLCBXZWJVUkw6OmNyZWF0
ZShwbHVnaW5VUkxTdHJpbmcpKTsKLQotICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5Ojph
ZG9wdChwbHVnaW5JbmZvTWFwKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxl
UGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKIHsKICAg
ICBNRVNTQUdFX0NIRUNLX1VSTChwbHVnaW5VUkxTdHJpbmcpOwpAQCAtMjc3MCwxNyArMjcwOCwx
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAgICAgTUVTU0FH
RV9DSEVDS19VUkwoZnJhbWVVUkxTdHJpbmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHBhZ2VV
UkxTdHJpbmcpOwogCi0gICAgU3RyaW5nIHBsdWdpbkJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgU3Ry
aW5nIHBsdWdpbkJ1bmRsZVZlcnNpb247Ci0gICAgU3RyaW5nIHBsdWdpbk5hbWU7Ci0gICAgU3Ry
aW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7CisgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25h
cnk+IHBsdWdpbkluZm9ybWF0aW9uOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQor
ICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIFBsdWdpbk1vZHVsZUluZm8g
cGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVn
aW4obmV3TWltZVR5cGUsIEtVUkwoS1VSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgcGx1Z2luQnVuZGxlSWRlbnRpZmllciA9IHBsdWdpbi5idW5kbGVJZGVu
dGlmaWVyOwotICAgIHBsdWdpbkJ1bmRsZVZlcnNpb24gPSBwbHVnaW4udmVyc2lvblN0cmluZzsK
LSNlbmRpZgotICAgIHBsdWdpbk5hbWUgPSBwbHVnaW4uaW5mby5uYW1lOworICAgIHBsdWdpbklu
Zm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJh
bWVVUkxTdHJpbmcsIG1pbWVUeXBlLCBwYWdlVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0
ZVVSTFN0cmluZywgcGx1Z2luVVJMU3RyaW5nKTsKICNlbmRpZgogCiAgICAgV0tQbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiA9IGtXS1BsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uUGx1Z2luTWlzc2luZzsKQEAgLTI4MDksNyArMjc0MSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHQKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgbV91aUNsaWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWQodGhpcywgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIG1pbWVUeXBlLCBw
bHVnaW5CdW5kbGVJZGVudGlmaWVyLCBwbHVnaW5CdW5kbGVWZXJzaW9uLCBwbHVnaW5OYW1lLCBw
bHVnaW5VUkxTdHJpbmcsIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBmcmFtZVVSTFN0
cmluZywgcGFnZVVSTFN0cmluZyk7CisgICAgbV91aUNsaWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWQodGhpcywgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIHBsdWdpbkluZm9y
bWF0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvb2xiYXJzQXJlVmlz
aWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkKQEAgLTQyMDIsMjYgKzQxMzQsMjIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVBhZ2VDb3VudCh1bgogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpCiB7
Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbih0aGlzLCBtaW1l
VHlwZSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpOworICAgIG1fbG9hZGVyQ2xpZW50
LmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4odGhpcywgY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25E
aWN0aW9uYXJ5KG1pbWVUeXBlLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykuZ2V0KCkp
OwogfQogCi0vLyBGSVhNRTogRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKIHsKLSAgICBTdHJpbmcgcGx1
Z2luQnVuZGxlSWRlbnRpZmllcjsKLSAgICBTdHJpbmcgcGx1Z2luQnVuZGxlVmVyc2lvbjsKLSAg
ICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZTsKKyAgICBSZWZQdHI8SW1tdXRhYmxlRGlj
dGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb247CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBl
OwogICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBs
dWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIEtVUkwoS1VSTCgpLCBwbHVn
aW5VUkxTdHJpbmcpKTsKLQotICAgIHBsdWdpbkJ1bmRsZUlkZW50aWZpZXIgPSBwbHVnaW4uYnVu
ZGxlSWRlbnRpZmllcjsKLSAgICBwbHVnaW5CdW5kbGVWZXJzaW9uID0gcGx1Z2luLnZlcnNpb25T
dHJpbmc7CisgICAgcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRp
Y3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcs
IFN0cmluZygpLCBTdHJpbmcoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5VUkxT
dHJpbmcpOwogI2VuZGlmCiAKLSAgICBtX2xvYWRlckNsaWVudC5kaWRCbG9ja0luc2VjdXJlUGx1
Z2luVmVyc2lvbih0aGlzLCBuZXdNaW1lVHlwZSwgcGx1Z2luQnVuZGxlSWRlbnRpZmllciwgcGx1
Z2luQnVuZGxlVmVyc2lvbiwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpOworICAgIG1f
bG9hZGVyQ2xpZW50LmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKHRoaXMsIHBsdWdpbklu
Zm9ybWF0aW9uLmdldCgpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jp
em9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzcwLDE2ICs3NzAsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb25uZWN0aW9uV2lsbE9wZW4oQ29yZUlQQzo6Q29ubmVjdGlvbiop
OwogICAgIHZvaWQgY29ubmVjdGlvbldpbGxDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAK
LSAgICBzdGF0aWMgU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgp
OwotICAgIHN0YXRpYyBTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCk7
Ci0gICAgc3RhdGljIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCk7Ci0g
ICAgc3RhdGljIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCk7Ci0gICAgc3Rh
dGljIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCk7Ci0gICAgc3RhdGljIFN0
cmluZyBwbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBs
dWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKTsKLSAgICBzdGF0aWMg
U3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCk7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNv
bnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBidW5kbGVWZXJzaW9u
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cGx1Z2luVVJMU3RyaW5nKTsKLQogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdyb3VwKiwgdWludDY0X3Qg
cGFnZUlEKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3Bw
CShyZXZpc2lvbiAxNDk4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNp
bmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIlBsdWdp
bkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViTnVtYmVyLmgiCkBA
IC0xNzUsMjAgKzE3NiwzMyBAQCB2b2lkIFdlYlVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxl
bWVuCiAgICAgbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRv
QVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYlVJQ2xpZW50Ojp1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBXS1BsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpbkJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgcGx1Z2luQnVuZGxlVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VB
dHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcGFnZVVSTFN0cmluZykKK3ZvaWQgV2ViVUlDbGllbnQ6OnVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkqIHBhZ2UsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIEltbXV0YWJsZURpY3Rpb25hcnkqIHBs
dWdpbkluZm9ybWF0aW9uKQogewogICAgIGlmIChwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiA9
PSBrV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvblBsdWdpbk1pc3NpbmcpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50Lm1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjApCi0gICAgICAgICAgICBtX2NsaWVudC5taXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkp
LCB0b0FQSShwbHVnaW5VUkxTdHJpbmcuaW1wbCgpKSwgdG9BUEkocGx1Z2luc3BhZ2VBdHRyaWJ1
dGVVUkxTdHJpbmcuaW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBt
X2NsaWVudC5taXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
KAorICAgICAgICAgICAgICAgIHRvQVBJKHBhZ2UpLAorICAgICAgICAgICAgICAgIHRvQVBJKHBs
dWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBl
S2V5KCkpKSwKKyAgICAgICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PFdl
YlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKSkpLAorICAgICAgICAgICAg
ICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1h
dGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCkpKSwKKyAgICAgICAgICAgICAgICBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKICAgICB9CiAKICAgICBpZiAobV9jbGllbnQudW5hdmFpbGFibGVQ
bHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpCi0gICAgICAgIG1fY2xp
ZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYx
KHRvQVBJKHBhZ2UpLCBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgdG9BUEkobWltZVR5cGUu
aW1wbCgpKSwgdG9BUEkocGx1Z2luVVJMU3RyaW5nLmltcGwoKSksIHRvQVBJKHBsdWdpbnNwYWdl
QXR0cmlidXRlVVJMU3RyaW5nLmltcGwoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwotCi0gICAg
aWYgKG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCkgewotICAgICAgICBS
ZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb24gPSBXZWJQYWdlUHJv
eHk6OnBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW5CdW5kbGVJZGVudGlmaWVyLCBw
bHVnaW5CdW5kbGVWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZnJhbWVVUkxTdHJpbmcsIG1pbWVUeXBl
LCBwYWdlVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgcGx1Z2luVVJM
U3RyaW5nKTsKLSAgICAgICAgbV9jbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2Vk
KHRvQVBJKHBhZ2UpLCBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgdG9BUEkocGx1Z2luSW5m
b3JtYXRpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLSAgICB9CisgICAgICAgIG1f
Y2xpZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0
aFYxKAorICAgICAgICAgICAgdG9BUEkocGFnZSksCisgICAgICAgICAgICBwbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiwKKyAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8
V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwKKyAgICAgICAgICAg
IHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlv
blBsdWdpblVSTEtleSgpKSksCisgICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+
Z2V0PFdlYlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtl
eSgpKSksCisgICAgICAgICAgICBtX2NsaWVudC5jbGllbnRJbmZvKTsKKworICAgIGlmIChtX2Ns
aWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQpCisgICAgICAgIG1fY2xpZW50LnVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCgKKyAgICAgICAgICAgIHRvQVBJKHBhZ2UpLAor
ICAgICAgICAgICAgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sCisgICAgICAgICAgICB0b0FQ
SShwbHVnaW5JbmZvcm1hdGlvbiksCisgICAgICAgICAgICBtX2NsaWVudC5jbGllbnRJbmZvKTsK
IH0KIAogYm9vbCBXZWJVSUNsaWVudDo6aW1wbGVtZW50c0RpZE5vdEhhbmRsZUtleUV2ZW50KCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCShyZXZpc2lv
biAxNDk4NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
QVBJT2JqZWN0OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OworY2xh
c3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBj
bGFzcyBOYXRpdmVXZWJXaGVlbEV2ZW50OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U3RhdHVzVGV4
dChXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBX
ZWJFdmVudDo6TW9kaWZpZXJzLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIHVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkqLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpbkJ1bmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luQnVuZGxlVmVyc2lvbiwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CisgICAgdm9pZCB1bmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5KiwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbiwgSW1tdXRhYmxlRGljdGlvbmFyeSopOwogICAgIAogICAgIGJvb2wgaW1wbGVtZW50
c0RpZE5vdEhhbmRsZUtleUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVLZXlF
dmVudChXZWJQYWdlUHJveHkqLCBjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTQ5
ODYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlByaW50SW5mby5oIgogI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUGx1Z2luSW5mb3JtYXRpb24uaCIKICNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC04MjYsNiArODI3LDI4IEBAIHZvaWQgV0tQYWdlU2V0
TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdygKICAgICB0b0ltcGwocGFnZVJlZiktPnNldE1heVN0
YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSk7CiB9CiAKKwordm9pZCBXS1BhZ2VT
ZXRPdmVycmlkZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldE92ZXJyaWRlUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChlbmFibGVkKTsKK30KKworYm9vbCBXS1BhZ2VHZXRPdmVycmlkZVByaXZhdGVC
cm93c2luZ0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChw
YWdlUmVmKS0+b3ZlcnJpZGVQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cit9CisKK3ZvaWQgV0tQ
YWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdLUGFnZVJlZiBwYWdlLCBXS0NvbnRleHRNZW51SXRl
bVJlZiBpdGVtKQoreworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHRvSW1wbChwYWdl
KS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoKih0b0ltcGwoaXRlbSktPmRhdGEoKSkpOworI2Vu
ZGlmCit9CisKKworCisvLyAtLSBERVBSRUNBVEVEIC0tCisKIHZvaWQgV0tQYWdlU2V0SW52YWxp
ZE1lc3NhZ2VGdW5jdGlvbihXS1BhZ2VJbnZhbGlkTWVzc2FnZUZ1bmN0aW9uKQogewogICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlvbiB3aGVuIGRvaW5nIHNvIHdvbid0IGJyZWFrIFdl
YktpdCBuaWdodGxpZXMuCkBAIC04MzMsNjUgKzg1Niw0MyBAQCB2b2lkIFdLUGFnZVNldEludmFs
aWRNZXNzYWdlRnVuY3Rpb24oV0tQCiAKIFdLU3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZm9y
bWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpCiB7Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5
ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkJ1bmRs
ZUlkZW50aWZpZXJLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSShrZXkpOworICAg
IHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpOwogfQogCiBX
S1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKQog
ewotICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYlBhZ2VQ
cm94eTo6cGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRs
ZVZlcnNpb25LZXkoKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2luSW5mb3JtYXRp
b25EaXNwbGF5TmFtZUtleSgpCiB7Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3Ry
aW5nOjpjcmVhdGUoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5
KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVn
aW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tQYWdl
R2V0UGx1Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSgpCiB7Ci0gICAgc3RhdGljIFdlYlN0cmlu
Zyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlv
bkZyYW1lVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICBy
ZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCk7CiB9CiAKIFdLU3RyaW5nUmVm
IFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKQogewotICAgIHN0YXRpYyBX
ZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5m
b3JtYXRpb25NSU1FVHlwZUtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKGtleSk7
CisgICAgcmV0dXJuIFdLUGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpOwogfQogCiBXS1N0
cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKQogewotICAgIHN0
YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYlBhZ2VQcm94eTo6cGx1
Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEko
a2V5KTsKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKTsKIH0KIAog
V0tTdHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0
ZVVSTEtleSgpCiB7Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVh
dGUoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJM
S2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQ
bHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCk7CiB9CiAKIFdLU3Ry
aW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkKIHsKLSAgICBz
dGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShXZWJQYWdlUHJveHk6OnBs
dWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9B
UEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpOwog
fQogCi12b2lkIFdLUGFnZVNldE92ZXJyaWRlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXS1BhZ2VS
ZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVkKQotewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0T3Zl
cnJpZGVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwotfQotCi1ib29sIFdLUGFnZUdl
dE92ZXJyaWRlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZikKLXsKLSAg
ICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5vdmVycmlkZVByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKLX0KKy8vIC0tIERFUFJFQ0FURUQgLS0KIAotdm9pZCBXS1BhZ2VTZWxlY3RDb250ZXh0TWVu
dUl0ZW0oV0tQYWdlUmVmIHBhZ2UsIFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW0pCi17Ci0jaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgdG9JbXBsKHBhZ2UpLT5jb250ZXh0TWVudUl0ZW1T
ZWxlY3RlZCgqKHRvSW1wbChpdGVtKS0+ZGF0YSgpKSk7Ci0jZW5kaWYKLX0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDE0OTg2MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NTMxLDYgKzUzMSwxMiBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFuZChXS1Bh
CiAKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShXS1Bh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9k
eSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNlbGVjdENvbnRleHRNZW51SXRlbShXS1BhZ2VS
ZWYgcGFnZSwgV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbSk7CisKKworCisvKiBERVBSRUNBVEVE
IC0gIFBsZWFzZSB1c2UgY29uc3RhbnRzIGZyb20gV0tQbHVnaW5JbmZvcm1hdGlvbiBpbnN0ZWFk
LiAqLworCiAvKiBWYWx1ZSB0eXBlOiBXS1N0cmluZ1JlZiAqLwogV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpOwogCkBA
IC01NTUsOSArNTYxLDYgQEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbklu
ZgogLyogVmFsdWUgdHlwZTogV0tVUkxSZWYgKi8KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1Bh
Z2VHZXRQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpOwogCi1XS19FWFBPUlQgdm9pZCBX
S1BhZ2VTZWxlY3RDb250ZXh0TWVudUl0ZW0oV0tQYWdlUmVmIHBhZ2UsIFdLQ29udGV4dE1lbnVJ
dGVtUmVmIGl0ZW0pOwotCi0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMuaAkocmV2aXNpb24gMTQ5ODYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDEzIEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmUKIAog
V0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXIpOwogCitXS19F
WFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVnSW5JbmZvRm9yQnVuZGxlSWRl
bnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgcGx1Z0luQnVuZGxlSWRl
bnRpZmllcik7CisKK3R5cGVkZWYgdm9pZCAoXldLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQ
bHVnSW5zQmxvY2spKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
Q29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5zQmxvY2sgYmxvY2spOworCisKKy8qIERF
UFJFQ0FURUQgLSAgUGxlYXNlIHVzZSBjb25zdGFudHMgZnJvbSBXS1BsdWdpbkluZm9ybWF0aW9u
IGluc3RlYWQuICovCiAKIC8qIFZhbHVlIHR5cGU6IFdLU3RyaW5nUmVmICovCiBXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvUGF0aEtleSgpOwpAQCAtNTYsMTEgKzYzLDYgQEAgV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z0luSW5mb1VwZGF0ZQogLyogVmFsdWUgdHlwZTogV0tC
b29sZWFuUmVmICovCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvSXNTYW5kYm94
ZWRLZXkoKTsKIAotV0tfRVhQT1JUIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UGx1Z0lu
SW5mb0ZvckJ1bmRsZUlkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVm
IHBsdWdJbkJ1bmRsZUlkZW50aWZpZXIpOwotCi10eXBlZGVmIHZvaWQgKF5XS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0luc0Jsb2NrKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmKTsKLVdL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5zKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0luc0Jsb2NrIGJs
b2NrKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMubW0JKHJldmlzaW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjks
MTEgQEAKICNpbXBvcnQgIkltbXV0YWJsZUFycmF5LmgiCiAjaW1wb3J0ICJJbW11dGFibGVEaWN0
aW9uYXJ5LmgiCiAjaW1wb3J0ICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbXBvcnQgIlBsdWdpbklu
Zm9ybWF0aW9uLmgiCiAjaW1wb3J0ICJQbHVnaW5TYW5kYm94UHJvZmlsZS5oIgogI2ltcG9ydCAi
U3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKyNpbXBvcnQgIldLUGx1
Z2luSW5mb3JtYXRpb24uaCIKICNpbXBvcnQgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2ltcG9ydCAi
V0tTdHJpbmdDRi5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgpAQCAtNTcsNjMgKzU5LDEzIEBA
IGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0sKICAgICByZXR1cm4gV0tJ
c1BsdWdpblVwZGF0ZUF2YWlsYWJsZSgoTlNTdHJpbmcgKilhZG9wdENGKFdLU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpKS5n
ZXQoKSk7CiB9CiAKLQotV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvUGF0aEtleSgpCi17Ci0gICAg
c3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygi
V0tQbHVnSW5JbmZvUGF0aCIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKLX0K
LQotV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvQnVuZGxlSWRlbnRpZmllcktleSgpCi17Ci0gICAg
c3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygi
V0tQbHVnSW5JbmZvQnVuZGxlSWRlbnRpZmllciIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9B
UEkoa2V5KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvVmVyc2lvbktleSgpCi17Ci0g
ICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmlu
ZygiV0tQbHVnSW5JbmZvVmVyc2lvbiIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5
KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvTG9hZFBvbGljeUtleSgpCi17Ci0gICAg
c3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygi
V0tQbHVnSW5JbmZvTG9hZFBvbGljeSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5
KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVy
c2lvbklzS25vd25BdmFpbGFibGVLZXkoKQotewotICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9
IFdlYlN0cmluZzo6Y3JlYXRlRnJvbVVURjhTdHJpbmcoIldLUGx1Z0luSW5mb1VwZGF0ZVBhc3RM
YXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlIikubGVha1JlZigpOwotICAgIHJldHVy
biB0b0FQSShrZXkpOwotfQotCi1XS1N0cmluZ1JlZiBXS1BsdWdJbkluZm9Jc1NhbmRib3hlZEtl
eSgpCi17Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGVGcm9t
VVRGOFN0cmluZygiV0tQbHVnSW5JbmZvSXNTYW5kYm94ZWQiKS5sZWFrUmVmKCk7Ci0gICAgcmV0
dXJuIHRvQVBJKGtleSk7Ci19Ci0KLXN0YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25h
cnk+IGNyZWF0ZUluZm9EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIGluZm8pCi17
Ci0gICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7Ci0gICAgbWFwLnNldCh0b1dU
RlN0cmluZyhXS1BsdWdJbkluZm9QYXRoS2V5KCkpLCBXZWJTdHJpbmc6OmNyZWF0ZShpbmZvLnBh
dGgpKTsKLSAgICBtYXAuc2V0KHRvV1RGU3RyaW5nKFdLUGx1Z0luSW5mb0J1bmRsZUlkZW50aWZp
ZXJLZXkoKSksIFdlYlN0cmluZzo6Y3JlYXRlKGluZm8uYnVuZGxlSWRlbnRpZmllcikpOwotICAg
IG1hcC5zZXQodG9XVEZTdHJpbmcoV0tQbHVnSW5JbmZvVmVyc2lvbktleSgpKSwgV2ViU3RyaW5n
OjpjcmVhdGUoaW5mby52ZXJzaW9uU3RyaW5nKSk7Ci0gICAgbWFwLnNldCh0b1dURlN0cmluZyhX
S1BsdWdJbkluZm9Mb2FkUG9saWN5S2V5KCkpLCBXZWJVSW50NjQ6OmNyZWF0ZSh0b1dLUGx1Z2lu
TG9hZFBvbGljeShQbHVnaW5JbmZvU3RvcmU6OnBvbGljeUZvclBsdWdpbihpbmZvKSkpKTsKLSAg
ICBtYXAuc2V0KHRvV1RGU3RyaW5nKFdLUGx1Z0luSW5mb1VwZGF0ZVBhc3RMYXN0QmxvY2tlZFZl
cnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkpLCBXZWJCb29sZWFuOjpjcmVhdGUoV0tJc1BsdWdp
blVwZGF0ZUF2YWlsYWJsZShuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGluZm8uYnVuZGxlSWRl
bnRpZmllcikpKSk7Ci0gICAgbWFwLnNldCh0b1dURlN0cmluZyhXS1BsdWdJbkluZm9Jc1NhbmRi
b3hlZEtleSgpKSwgV2ViQm9vbGVhbjo6Y3JlYXRlKHBsdWdpbkhhc1NhbmRib3hQcm9maWxlKGlu
Zm8uYnVuZGxlSWRlbnRpZmllcikpKTsKLQotICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5
OjphZG9wdChtYXApOwotfQotCiBXS0RpY3Rpb25hcnlSZWYgV0tDb250ZXh0Q29weVBsdWdJbklu
Zm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1Jl
ZiBwbHVnSW5CdW5kbGVJZGVudGlmaWVyUmVmKQogewogICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1
Z2luID0gdG9JbXBsKGNvbnRleHRSZWYpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luV2l0
aEJ1bmRsZUlkZW50aWZpZXIodG9XVEZTdHJpbmcocGx1Z0luQnVuZGxlSWRlbnRpZmllclJlZikp
OwogICAgIGlmIChwbHVnaW4ucGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gZGljdGlvbmFyeSA9IGNyZWF0ZUluZm9EaWN0
aW9uYXJ5KHBsdWdpbik7CisgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGRpY3Rpb25h
cnkgPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luKTsKICAgICByZXR1
cm4gdG9BUEkoZGljdGlvbmFyeS5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIApAQCAtMTIzLDcg
Kzc1LDcgQEAgdm9pZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucwogCiAgICAg
VmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBwbHVnaW5JbmZvRGljdGlvbmFyaWVzOwogICAgIGZv
ciAoY29uc3QgYXV0byYgcGx1Z2luOiBwbHVnaW5zKQotICAgICAgICBwbHVnaW5JbmZvRGljdGlv
bmFyaWVzLmFwcGVuZChjcmVhdGVJbmZvRGljdGlvbmFyeShwbHVnaW4pKTsKKyAgICAgICAgcGx1
Z2luSW5mb0RpY3Rpb25hcmllcy5hcHBlbmQoY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9u
YXJ5KHBsdWdpbikpOwogCiAgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBhcnJheSA9IEltbXV0
YWJsZUFycmF5OjphZG9wdChwbHVnaW5JbmZvRGljdGlvbmFyaWVzKTsKIApAQCAtMTM0LDMgKzg2
LDM2IEBAIHZvaWQgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMKICAgICAgICAg
dG9JbXBsKGNvbnRleHRSZWYpLT5kZXJlZigpOwogICAgIH0pOwogfQorCisKKy8qIERFUFJFQ0FU
RUQgLSAgUGxlYXNlIHVzZSBjb25zdGFudHMgZnJvbSBXS1BsdWdpbkluZm9ybWF0aW9uIGluc3Rl
YWQuICovCisKK1dLU3RyaW5nUmVmIFdLUGx1Z0luSW5mb1BhdGhLZXkoKQoreworICAgIHJldHVy
biBXS1BsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgpOworfQorCitXS1N0cmluZ1JlZiBXS1BsdWdJ
bkluZm9CdW5kbGVJZGVudGlmaWVyS2V5KCkKK3sKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1h
dGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZv
VmVyc2lvbktleSgpCit7CisgICAgcmV0dXJuIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJz
aW9uS2V5KCk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUGx1Z0luSW5mb0xvYWRQb2xpY3lLZXkoKQor
eworICAgIHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKTsK
K30KKworV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lv
bklzS25vd25BdmFpbGFibGVLZXkoKQoreworICAgIHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9u
VXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkoKTsKK30KKwor
V0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvSXNTYW5kYm94ZWRLZXkoKQoreworICAgIHJldHVybiBX
S1BsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKTsKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTcyLDcgKzU3MiwxMiBAQAogCQk3NjJCNzQ4RDEy
MEJDNzVDMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAv
KiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTc4MDFDMDk5MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0
UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc4MDFDMDk1MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsK
IAkJNzgwMUMwOUExNDIyOTBDNDAwRkFGOUFGIC8qIFdlYkhpdFRlc3RSZXN1bHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc4MDFDMDk2MTQyMjkwQzQw
MEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmggKi87IH07CisJCTdDMTM1QUE4MTczQjBCQ0Ew
MDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1Bs
dWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsKKwkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8q
IFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0
aW9uLmggKi87IH07CisJCTdDMTM1QUFDMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1h
dGlvbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMTM1QUFBMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAqLzsg
fTsKIAkJN0MzODc0MzQxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzODc0MzMxNzJGNTYxNTAw
MUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwICovOyB9OworCQk3QzNGOEM5MDE3M0FGNTJEMDA3QjdG
MzkgLyogUGx1Z2luSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9y
bWF0aW9uLmNwcCAqLzsgfTsKKwkJN0MzRjhDOTExNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbklu
Zm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzNGOEM4RjE3M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgfTsK
IAkJN0M2RDM3RkMxNzJGNTU1RjAwOUQyODQ3IC8qIFBhZ2VCYW5uZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzZEMzdGQTE3MkY1NTVGMDA5
RDI4NDcgLyogUGFnZUJhbm5lck1hYy5tbSAqLzsgfTsKIAkJN0NCMTZGRUYxNzI0QkEyMzAwN0Ew
QTk1IC8qIGNvbS5hcHBsZS5pc3QuZHMuYXBwbGVjb25uZWN0LndlYnBsdWdpbi5zYiBpbiBDb3B5
IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0IxNkZFMjE3MjRCOUI1MDA3QTBBOTUgLyogY29tLmFwcGxlLmlzdC5kcy5hcHBsZWNv
bm5lY3Qud2VicGx1Z2luLnNiICovOyB9OwogCQk3Q0IxNkZGMDE3MjRCQTI0MDA3QTBBOTUgLyog
Y29tLmFwcGxlLlF1aWNrVGltZSBQbHVnaW4ucGx1Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5k
Ym94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjE2RkUz
MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20uYXBwbGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4uc2Ig
Ki87IH07CkBAIC0yMDQ4LDcgKzIwNTMsMTIgQEAKIAkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5
IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLUHJlZmVyZW5jZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc4MDFDMDk1MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkhpdFRlc3RSZXN1bHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3ODAxQzA5NjE0MjI5MEM0MDBGQUY5QUYgLyogV2Vi
SGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIaXRU
ZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTM1QUE2MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZv
cm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BsdWdpbkluZm9y
bWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMTM1QUFBMTczQjBDRkYw
MDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzM4NzQzMzE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQmFubmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8q
IFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0MzRjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDNkQzN0ZBMTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVy
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZUJhbm5l
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCMTZGRTIxNzI0QjlCNTAw
N0EwQTk1IC8qIGNvbS5hcHBsZS5pc3QuZHMuYXBwbGVjb25uZWN0LndlYnBsdWdpbi5zYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuaXN0LmRzLmFwcGxlY29ubmVjdC53ZWJwbHVn
aW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjE2RkUzMTcyNEI5QjUwMDdB
MEE5NSAvKiBjb20uYXBwbGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4uc2IgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gImNvbS5hcHBsZS5RdWlja1RpbWUgUGx1Z2luLnBsdWdpbi5zYiI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDQ1LDYgKzMwNTUsOCBAQAogCQkJCTFBNEE5Qzk4
MTJCODIxQzAwMDhGRTk4NCAvKiBtYWMgKi8sCiAJCQkJMUE0QTlDNTMxMkI4MTZDRjAwOEZFOTg0
IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCAqLywKIAkJCQkxQTRBOUM1NDEyQjgxNkNGMDA4
RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCAqLywKKwkJCQk3QzNGOEM4RTE3M0FGNTJE
MDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uY3BwICovLAorCQkJCTdDM0Y4QzhGMTczQUY1
MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBO
ZXRzY2FwZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMDUzLDYgKzMwNjUsNyBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTRBOUM5OTEyQjgy
MUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gKi8sCisJCQkJN0MxMzVB
QUExNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tICovLAogCQkJKTsK
IAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDk1Niw2ICs0
OTY5LDggQEAKIAkJCQlCQzJEMDIxODEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVz
LmggKi8sCiAJCQkJOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1By
aXZhdGUuaCAqLywKIAkJCQlBNUVGRDM4QjE2QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJp
bGl0eVR5cGVzLmggKi8sCisJCQkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2lu
SW5mb3JtYXRpb24uY3BwICovLAorCQkJCTdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1Bs
dWdpbkluZm9ybWF0aW9uLmggKi8sCiAJCQkJMzc5NDg0MDYxNTBDNEI5NjAwRTUyQ0U5IC8qIFdL
UmVuZGVyTGF5ZXIuY3BwICovLAogCQkJCTM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1Jl
bmRlckxheWVyLmggKi8sCiAJCQkJMzc2MDg4MjAxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVy
T2JqZWN0LmNwcCAqLywKQEAgLTU1ODEsNiArNTU5Niw3IEBACiAJCQkJN0NGNDdGRkYxNzI3NkFF
MzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0NGNDdGRjcxNzI3NUI3MTAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzNEM0EzQzIxMzM5NjBCMDAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzNGOEM5MTE3M0FGNTJEMDA3QjdGMzkgLyogUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcw
OUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzM0QzQTNCQjEzMzk2MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEM0EzQ0IxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzQ1LDYgKzU3
NjEsNyBAQAogCQkJCTMxMkMwQzRBMTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEOEJBMjE3MzFBMzYzMDAxNDFEQTQgLyog
TG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjAyMTI0RkYw
MjcwMDY4RjIwQSAvKiBXS051bWJlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0MxMzVBQTkxNzNC
MEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDODU3RkU2MTJCODQzRDgwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMURGRThGMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdENzExMkI1NkRDMDBFQzhD
MjMgLyogV0tQYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTY2MDMsNiArNjYyMCw3IEBACiAJCQkJ
NTFBN0YyRjUxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE2MEJGRTExMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmcubWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUEyNEI1RjIxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0MzRjhDOTAxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9y
bWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjMyOTAyMTYyQzg2NzMwMEQ4MkY3QSAv
KiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIzMjhGRTE2MkM4NjZB
MDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzRUVE
MEUxNjFBNTM1NDAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTY2NjAsNiArNjY3OCw3IEBACiAJCQkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8q
IFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDJBREYw
OTE2MzYyREQ1MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQUFGMDYxNTEyQjAxMTMxMDA4RTQ5RTIgLyogUERGVmlld0NvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2lu
SW5mb3JtYXRpb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y1MDVFODEyNDMwNDdCMDA1
OTU1QUUgLyogUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
Q0M0M0FCQTEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNkZCN0QyMTFFNjUxRTIwMERCMTM3MSAvKiBQbHVnaW4uY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC02ODczLDYgKzY4OTIsNyBAQAogCQkJCTFBOEM3MjhDMTczODQ3N0Mw
MDBBNjU1NCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM4NTdGODYxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODU3RjdFMTJCODJDRUUwMEVERUIyRSAvKiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdD
MTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDOTYzRDZCMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4
dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA2QzYwOTUxMjRDMTQ0QjAwMDE2
ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201321</attachid>
            <date>2013-05-09 22:56:23 -0700</date>
            <delta_ts>2013-05-10 11:58:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115891-20130509225526.patch</filename>
            <type>text/plain</type>
            <size>63010</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBACisyMDEzLTA1LTA5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pZnkgcGx1Zy1pbiBpbmZvcm1hdGlv
biBkaWN0aW9uYXJpZXMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzODUyMDgwPgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1ODkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB1bmlmaWVzIHRo
ZSBwbHVnLWluIGluZm9ybWF0aW9uIGRpY3Rpb25hcmllcyB2ZW5kZWQgYnkgV0tDb250ZXh0Q29w
eVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyCisgICAgICAgIGFuZCBXS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0lucyB3aXRoIHRob3NlIGZyb20gdGhlIFdLUGFnZUxvYWRlckNs
aWVudCBhbmQgV0tQYWdlVUlDbGllbnQuCisKKyAgICAgICAgQWxsIHRoZSBvbGQga2V5cyB3aWxs
IGNvbnRpbnVlIHRvIHdvcmssIGJ1dCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBu
ZXcga2V5cyBkZWZpbmVkIGluIAorICAgICAgICBXS1BsdWdpbkluZm9ybWF0aW9uLmgKKworICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgICogU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uaDogQWRkZWQuCisgICAgICAg
IEV4cG9ydCBuZXcga2V5cyBhcyBTUEkuCisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkpOgorICAgICAgICAoV2ViS2l0
OjpwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkpOgorICAgICAgICAoV2ViS2l0Ojpw
bHVnaW5JbmZvcm1hdGlvblBhdGhLZXkpOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5JbmZvcm1h
dGlvbkRpc3BsYXlOYW1lS2V5KToKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25E
ZWZhdWx0TG9hZFBvbGljeUtleSk6CisgICAgICAgIChXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9u
VXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkpOgorICAgICAg
ICAoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvbkhhc1NhbmRib3hQcm9maWxlS2V5KToKKyAgICAg
ICAgKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSk6CisgICAgICAgIChXZWJL
aXQ6OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkpOgorICAgICAgICAoV2ViS2l0OjpwbHVn
aW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkpOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5JbmZvcm1h
dGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KToKKyAgICAgICAgKFdlYktpdDo6cGx1Z2lu
SW5mb3JtYXRpb25QbHVnaW5VUkxLZXkpOgorICAgICAgICBBZGQgbmV3IGtleXMuCisKKyAgICAg
ICAgKFdlYktpdDo6cGx1Z2luTW9kdWxlSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkpOgorICAgICAgICBBZGQgY3JlYXRpb24g
ZnVuY3Rpb25zIHRvIHNpbXBsaWZ5IG11bHRpcGxlIHNpdGVzLgorCisgICAgICAgICogU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpbkluZm9ybWF0aW9uTWFjLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6cGxhdGZvcm1QbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbik6CisgICAgICAg
IEFkZCBwbGF0Zm9ybSBzcGVjaWZpYyBkYXRhIHRvIHRoZSBkaWN0aW9uYXJ5LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRQbHVnaW5J
bmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkpOgorICAgICAgICAoV0tQYWdlR2V0UGx1Z2lu
SW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KToKKyAgICAgICAgKFdLUGFnZUdldFBsdWdpbklu
Zm9ybWF0aW9uRGlzcGxheU5hbWVLZXkpOgorICAgICAgICAoV0tQYWdlR2V0UGx1Z2luSW5mb3Jt
YXRpb25GcmFtZVVSTEtleSk6CisgICAgICAgIChXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvbk1J
TUVUeXBlS2V5KToKKyAgICAgICAgKFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtl
eSk6CisgICAgICAgIChXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmli
dXRlVVJMS2V5KToKKyAgICAgICAgKFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJM
S2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgIERlcHJl
Y2F0ZSB0aGUgb2xkIGtleXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29u
dGV4dFByaXZhdGVNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4
dFByaXZhdGVNYWMubW06CisgICAgICAgIChXS0NvbnRleHRDb3B5UGx1Z0luSW5mb0ZvckJ1bmRs
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJ
bnMpOgorICAgICAgICBTaW1wbGlmeSBieSB1c2luZyB0aGUgbmV3IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeSBmdW5jdGlvbnMuCisKKyAgICAgICAgKFdLUGx1Z0luSW5mb1BhdGhL
ZXkpOgorICAgICAgICAoV0tQbHVnSW5JbmZvQnVuZGxlSWRlbnRpZmllcktleSk6CisgICAgICAg
IChXS1BsdWdJbkluZm9WZXJzaW9uS2V5KToKKyAgICAgICAgKFdLUGx1Z0luSW5mb0xvYWRQb2xp
Y3lLZXkpOgorICAgICAgICAoV0tQbHVnSW5JbmZvVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lv
bklzS25vd25BdmFpbGFibGVLZXkpOgorICAgICAgICAoV0tQbHVnSW5JbmZvSXNTYW5kYm94ZWRL
ZXkpOgorICAgICAgICBEZXByZWNhdGUgdGhlIG9sZCBrZXlzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVu
dDo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRl
ckNsaWVudDo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJMb2FkZXJDbGllbnQ6OnBsdWdpbkxvYWRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJVSUNsaWVudDo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuaDoKKyAgICAgICAgT3B0
aW1pemUgZm9yIHRoZSBtb3N0IHJlY2VudCBjYWxsYmFjayB0eXBlIHdoaWNoIHRha2VzIGEgZGlj
dGlvbmFyeSwKKyAgICAgICAgYW5kIHB1bGwgb3V0IHRoZSBuZWNlc3NhcnkgYml0cyBmcm9tIGl0
IGZvciBkZXByZWNhdGVkIGNhbGxiYWNrcyBhcyBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2lu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2lu
VmVyc2lvbik6CisgICAgICAgIFVzZSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnko
KSBjb25zaXN0ZW50bHksIHRvIGdldCBjb25zaXN0ZW50IHJlc3VsdHMgZm9yIGNhbGxiYWNrcy4K
KworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
QWRkIG5ldyBmaWxlcy4KKwogMjAxMy0wNS0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0tQbHVnaW5JbmZvcm1hdGlvbi5oIgorCisjaW5jbHVkZSAi
UGx1Z2luSW5mb3JtYXRpb24uaCIKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tTdHJpbmdS
ZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKQoreworICAgIHN0YXRp
YyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uQnVu
ZGxlSWRlbnRpZmllcktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9
CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkKK3sK
KyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZv
cm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiB0b0FQSShr
ZXkpOworfQorCitXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgpCit7Cisg
ICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3Jt
YXRpb25QYXRoS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKwor
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCkKK3sKKyAgICBz
dGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlv
bkRpc3BsYXlOYW1lS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30K
KworV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCkK
K3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5J
bmZvcm1hdGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4g
dG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBh
c3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkKK3sKKyAgICBzdGF0aWMg
V2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblVwZGF0
ZVBhc3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1h
dGlvbkhhc1NhbmRib3hQcm9maWxlS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkg
PSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkhhc1NhbmRib3hQcm9maWxlS2V5
KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYg
V0tQbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5n
KiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQ
bHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBr
ZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVn
aW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKQoreworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9
IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpKS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5m
b3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpCit7CisgICAgc3RhdGljIFdlYlN0
cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFn
ZUF0dHJpYnV0ZVVSTEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9
CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKQoreworICAg
IHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0
aW9uUGx1Z2luVVJMS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3Jt
YXRpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Bs
dWdpbkluZm9ybWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV0tQbHVnaW5JbmZvcm1hdGlvbl9oCisjZGVmaW5lIFdLUGx1Z2luSW5m
b3JtYXRpb25faAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBQbHVnLWluIG1vZHVsZSBpbmZvcm1h
dGlvbiBrZXlzICovCisKKy8qIFZhbHVlIHR5cGU6IFdLU3RyaW5nUmVmICovCitXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKTsKKwor
LyogVmFsdWUgdHlwZTogV0tTdHJpbmdSZWYgKi8KK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1Bs
dWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpOworCisvKiBWYWx1ZSB0eXBlOiBXS1N0
cmluZ1JlZiAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QYXRo
S2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLU3RyaW5nUmVmICovCitXS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCk7CisKKy8qIFZhbHVlIHR5
cGU6IFdLVUludDY0UmVmICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1h
dGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLQm9vbGVhblJl
ZiAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0
TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpOworCisvKiBWYWx1ZSB0eXBl
OiBXS0Jvb2xlYW5SZWYgKi8KK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0
aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKTsKKworCisvKiBQbHVnLWluIGxvYWQgc3BlY2lmaWMg
aW5mb3JtYXRpb24ga2V5cyAqLworCisvKiBWYWx1ZSB0eXBlOiBXS1VSTFJlZiAqLworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSgpOworCisvKiBW
YWx1ZSB0eXBlOiBXS1N0cmluZ1JlZiAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2lu
SW5mb3JtYXRpb25NSU1FVHlwZUtleSgpOworCisvKiBWYWx1ZSB0eXBlOiBXS1VSTFJlZiAqLwor
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCk7CisK
Ky8qIFZhbHVlIHR5cGU6IFdLVVJMUmVmICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVn
aW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCk7CisKKy8qIFZhbHVlIHR5
cGU6IFdLVVJMUmVmICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlv
blBsdWdpblVSTEtleSgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLyogV0tQbHVnaW5JbmZvcm1hdGlvbl9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24u
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9y
bWF0aW9uLmgiCisKKyNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKKyNpbmNsdWRlICJQbHVn
aW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViTnVt
YmVyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTdHJp
bmcgcGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkKK3sKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXIiKTsKK30KKwor
U3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpCit7CisgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uIik7Cit9CisKK1N0
cmluZyBwbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKQoreworICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIlBsdWdpbkluZm9ybWF0aW9uUGF0aCIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRp
b25EaXNwbGF5TmFtZUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5m
b3JtYXRpb25EaXNwbGF5TmFtZSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25EZWZh
dWx0TG9hZFBvbGljeUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5m
b3JtYXRpb25EZWZhdWx0TG9hZFBvbGljeSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRp
b25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpCit7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJs
b2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3Jt
YXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
UGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZSIpOworfQorCitTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25GcmFtZVVSTEtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1
Z2luSW5mb3JtYXRpb25GcmFtZVVSTCIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25N
SU1FVHlwZUtleSgpCit7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRp
b25NSU1FVHlwZSIpOworfQorCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkK
K3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkwiKTsK
K30KKworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXko
KQoreworICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3Bh
Z2VBdHRyaWJ1dGVVUkwiKTsKK30KKworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJM
S2V5KCkKK3sKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvblBsdWdp
blVSTCIpOworfQorCit2b2lkIHBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbiwgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSYgbWFwKQorewor
ICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRl
KHBsdWdpbi5wYXRoKSk7CisgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1l
S2V5KCksIFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbi5pbmZvLm5hbWUpKTsKKyAgICBtYXAuc2V0
KHBsdWdpbkluZm9ybWF0aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKSwgV2ViVUludDY0OjpjcmVh
dGUodG9XS1BsdWdpbkxvYWRQb2xpY3koUGx1Z2luSW5mb1N0b3JlOjpwb2xpY3lGb3JQbHVnaW4o
cGx1Z2luKSkpKTsKKworICAgIHBsYXRmb3JtUGx1Z2luTW9kdWxlSW5mb3JtYXRpb24ocGx1Z2lu
LCBtYXApOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdp
bkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCit7
CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CisgICAgcGx1Z2luTW9kdWxl
SW5mb3JtYXRpb24ocGx1Z2luLCBtYXApOworCisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25h
cnk6OmFkb3B0KG1hcCk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3Jl
YXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBs
dWdpbiwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNwYWdl
QXR0cmlidXRlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZykKK3sKKyAg
ICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKKyAgICBwbHVnaW5Nb2R1bGVJbmZv
cm1hdGlvbihwbHVnaW4sIG1hcCk7CisKKyAgICBpZiAoIWZyYW1lVVJMU3RyaW5nLmlzRW1wdHko
KSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCksIFdlYlVS
TDo6Y3JlYXRlKGZyYW1lVVJMU3RyaW5nKSk7CisgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
CisgICAgICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpLCBXZWJTdHJp
bmc6OmNyZWF0ZShtaW1lVHlwZSkpOworICAgIGlmICghcGFnZVVSTFN0cmluZy5pc0VtcHR5KCkp
CisgICAgICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCksIFdlYlVSTDo6
Y3JlYXRlKHBhZ2VVUkxTdHJpbmcpKTsKKyAgICBpZiAoIXBsdWdpbnNwYWdlQXR0cmlidXRlVVJM
U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvblBsdWdp
bnNwYWdlQXR0cmlidXRlVVJMS2V5KCksIFdlYlVSTDo6Y3JlYXRlKHBsdWdpbnNwYWdlQXR0cmli
dXRlVVJMU3RyaW5nKSk7CisgICAgaWYgKCFwbHVnaW5VUkxTdHJpbmcuaXNFbXB0eSgpKQorICAg
ICAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCksIFdlYlVSTDo6Y3Jl
YXRlKHBsdWdpblVSTFN0cmluZykpOworCisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6
OmFkb3B0KG1hcCk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRl
UGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKK3sK
KyAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKKworICAgIGlmICghZnJhbWVV
UkxTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uRnJh
bWVVUkxLZXkoKSwgV2ViVVJMOjpjcmVhdGUoZnJhbWVVUkxTdHJpbmcpKTsKKyAgICBpZiAoIW1p
bWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvbk1JTUVU
eXBlS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRlKG1pbWVUeXBlKSk7CisgICAgaWYgKCFwYWdlVVJM
U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvblBhZ2VV
UkxLZXkoKSwgV2ViVVJMOjpjcmVhdGUocGFnZVVSTFN0cmluZykpOworCisgICAgcmV0dXJuIElt
bXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQor
dm9pZCBwbGF0Zm9ybVBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mLCBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlJikKK3sKK30KKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgUGx1Z2luSW5mb3JtYXRpb25faAorI2RlZmluZSBQbHVnaW5JbmZvcm1hdGlvbl9oCisKKyNp
bmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOworCisvLyBQ
bHVnLWluIG1vZHVsZSBpbmZvcm1hdGlvbiBrZXlzCitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25C
dW5kbGVJZGVudGlmaWVyS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJz
aW9uS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCk7CitTdHJpbmcgcGx1
Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFtZUtleSgpOworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9u
RGVmYXVsdExvYWRQb2xpY3lLZXkoKTsKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBh
c3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCk7CitTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpOworCisvLyBQbHVnLWluIGxvYWQgc3Bl
Y2lmaWMgaW5mb3JtYXRpb24ga2V5cworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uRnJhbWVVUkxL
ZXkoKTsKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCk7CitTdHJpbmcgcGx1
Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCk7CitTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QbHVn
aW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpOworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2lu
VVJMS2V5KCk7CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2lu
SW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKK1Bhc3NSZWZQ
dHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5
KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1
Z2luVVJMU3RyaW5nKTsKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CisKKwor
dm9pZCBwbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSYpOwordm9pZCBwbGF0Zm9ybVBsdWdpbk1vZHVsZUlu
Zm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBJbW11dGFibGVEaWN0aW9uYXJ5OjpN
YXBUeXBlJik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGx1Z2luSW5m
b3JtYXRpb25faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL1BsdWdpbkluZm9ybWF0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5JbmZvcm1hdGlvbk1hYy5tbQkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9Q
bHVnaW5JbmZvcm1hdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbHVnaW5JbmZvcm1hdGlv
bi5oIgorCisjaW1wb3J0ICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW1wb3J0ICJQbHVnaW5TYW5k
Ym94UHJvZmlsZS5oIgorI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXZWJO
dW1iZXIuaCIKKyNpbXBvcnQgIldlYlN0cmluZy5oIgorI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHBsYXRmb3JtUGx1Z2luTW9k
dWxlSW5mb3JtYXRpb24oY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBJbW11dGFibGVE
aWN0aW9uYXJ5OjpNYXBUeXBlJiBtYXApCit7CisgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlv
bkJ1bmRsZUlkZW50aWZpZXJLZXkoKSwgV2ViU3RyaW5nOjpjcmVhdGUocGx1Z2luLmJ1bmRsZUlk
ZW50aWZpZXIpKTsKKyAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktl
eSgpLCBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW4udmVyc2lvblN0cmluZykpOworICAgIG1hcC5z
ZXQocGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2
YWlsYWJsZUtleSgpLCBXZWJCb29sZWFuOjpjcmVhdGUoV0tJc1BsdWdpblVwZGF0ZUF2YWlsYWJs
ZShuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKHBsdWdpbi5idW5kbGVJZGVudGlmaWVyKSkpKTsK
KyAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKSwgV2Vi
Qm9vbGVhbjo6Y3JlYXRlKHBsdWdpbkhhc1NhbmRib3hQcm9maWxlKHBsdWdpbi5idW5kbGVJZGVu
dGlmaWVyKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNDk4NjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNp
bmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRp
b24uaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0yNzQsMzggKzI3NSw1NiBA
QCB2b2lkIFdlYkxvYWRlckNsaWVudDo6d2lsbEdvVG9CYWNrRm9yd2FyCiAgICAgICAgIG1fY2xp
ZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0b0FQSShwYWdlKSwgdG9BUEkoaXRlbSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9h
ZGVyQ2xpZW50OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKFdlYlBhZ2VQcm94eSogcGFnZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZhaWxU
b0luaXRpYWxpemVQbHVnaW4oV2ViUGFnZVByb3h5KiBwYWdlLCBJbW11dGFibGVEaWN0aW9uYXJ5
KiBwbHVnaW5JbmZvcm1hdGlvbikKIHsKICAgICBpZiAobV9jbGllbnQuZGlkRmFpbFRvSW5pdGlh
bGl6ZVBsdWdpbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQotICAgICAgICBtX2NsaWVudC5kaWRG
YWlsVG9Jbml0aWFsaXplUGx1Z2luX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkocGFnZSks
IHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICBt
X2NsaWVudC5kaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAo
CisgICAgICAgICAgICB0b0FQSShwYWdlKSwKKyAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9y
bWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwK
KyAgICAgICAgICAgIG1fY2xpZW50LmNsaWVudEluZm8pOwogCiAgICAgaWYgKG1fY2xpZW50LnBs
dWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAgbV9jbGllbnQucGx1
Z2luRGlkRmFpbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKHBhZ2UpLCBrV0tFcnJvckNv
ZGVDYW5ub3RMb2FkUGx1Z0luLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCAwLCAwLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKLQotICAgIGlmIChtX2NsaWVudC5wbHVnaW5EaWRGYWlsKSB7Ci0gICAg
ICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBwbHVnaW5JbmZvcm1hdGlvbiA9IFdlYlBh
Z2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KFN0cmluZygpLCBTdHJpbmcoKSwg
U3RyaW5nKCksIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5n
KCksIFN0cmluZygpKTsKLSAgICAgICAgbV9jbGllbnQucGx1Z2luRGlkRmFpbCh0b0FQSShwYWdl
KSwga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24u
Z2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLSAgICB9CisgICAgICAgIG1fY2xpZW50LnBs
dWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSgKKyAgICAgICAgICAgIHRvQVBJKHBh
Z2UpLAorICAgICAgICAgICAga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJbiwKKyAgICAgICAg
ICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1h
dGlvbk1JTUVUeXBlS2V5KCkpKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgbV9jbGllbnQuY2xpZW50SW5mbyk7CisKKyAgICBpZiAobV9jbGllbnQucGx1Z2lu
RGlkRmFpbCkKKyAgICAgICAgbV9jbGllbnQucGx1Z2luRGlkRmFpbCgKKyAgICAgICAgICAgIHRv
QVBJKHBhZ2UpLAorICAgICAgICAgICAga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJbiwKKyAg
ICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uKSwKKyAgICAgICAgICAgIG1fY2xpZW50
LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkQmxvY2tJbnNlY3Vy
ZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHBsdWdpbkJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGx1
Z2luQnVuZGxlVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3Ry
aW5nJiBwYWdlVVJMU3RyaW5nKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEJsb2NrSW5zZWN1
cmVQbHVnaW5WZXJzaW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgSW1tdXRhYmxlRGljdGlvbmFyeSog
cGx1Z2luSW5mb3JtYXRpb24pCiB7CiAgICAgaWYgKG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAgbV9jbGllbnQucGx1Z2luRGlkRmFpbF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKHBhZ2UpLCBrV0tFcnJvckNvZGVJbnNlY3VyZVBsdWdJ
blZlcnNpb24sIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIHRvQVBJKHBsdWdpbkJ1bmRsZUlkZW50
aWZpZXIuaW1wbCgpKSwgdG9BUEkocGx1Z2luQnVuZGxlVmVyc2lvbi5pbXBsKCkpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKLQotICAgIGlmIChtX2NsaWVudC5wbHVnaW5EaWRGYWlsKSB7Ci0gICAg
ICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBwbHVnaW5JbmZvcm1hdGlvbiA9IFdlYlBh
Z2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbkJ1bmRsZUlkZW50aWZp
ZXIsIHBsdWdpbkJ1bmRsZVZlcnNpb24sIFN0cmluZygpLCBmcmFtZVVSTFN0cmluZywgbWltZVR5
cGUsIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBTdHJpbmcoKSk7Ci0gICAgICAgIG1fY2xpZW50
LnBsdWdpbkRpZEZhaWwodG9BUEkocGFnZSksIGtXS0Vycm9yQ29kZUluc2VjdXJlUGx1Z0luVmVy
c2lvbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKLSAgICB9CisgICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMSgKKyAgICAgICAgICAgIHRvQVBJKHBhZ2UpLAorICAgICAgICAgICAga1dLRXJyb3JD
b2RlSW5zZWN1cmVQbHVnSW5WZXJzaW9uLAorICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3Jt
YXRpb24tPmdldDxXZWJTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKSkpLAor
ICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxXZWJTdHJpbmc+KHBsdWdp
bkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpKSksCisgICAgICAgICAgICB0b0FQSShw
bHVnaW5JbmZvcm1hdGlvbi0+Z2V0PFdlYlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVW
ZXJzaW9uS2V5KCkpKSwKKyAgICAgICAgICAgIG1fY2xpZW50LmNsaWVudEluZm8pOworCisgICAg
aWYgKG1fY2xpZW50LnBsdWdpbkRpZEZhaWwpCisgICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZh
aWwoCisgICAgICAgICAgICB0b0FQSShwYWdlKSwKKyAgICAgICAgICAgIGtXS0Vycm9yQ29kZUlu
c2VjdXJlUGx1Z0luVmVyc2lvbiwKKyAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9u
KSwKKyAgICAgICAgICAgIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi1QbHVnaW5Nb2R1bGVM
b2FkUG9saWN5IFdlYkxvYWRlckNsaWVudDo6cGx1Z2luTG9hZFBvbGljeShXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgcGx1Z2luQnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBwbHVnaW5CdW5kbGVWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIFBsdWdp
bk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3kpCitQbHVnaW5Nb2R1bGVM
b2FkUG9saWN5IFdlYkxvYWRlckNsaWVudDo6cGx1Z2luTG9hZFBvbGljeShXZWJQYWdlUHJveHkq
IHBhZ2UsIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIElt
bXV0YWJsZURpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uKQogewogICAgIGlmICghbV9jbGll
bnQucGx1Z2luTG9hZFBvbGljeSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRQbHVnaW5Mb2FkUG9s
aWN5OwogCi0gICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9u
ID0gV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luQnVuZGxl
SWRlbnRpZmllciwgcGx1Z2luQnVuZGxlVmVyc2lvbiwgZGlzcGxheU5hbWUsIGZyYW1lVVJMU3Ry
aW5nLCBTdHJpbmcoKSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpKTsKLSAgICBy
ZXR1cm4gdG9QbHVnaW5Nb2R1bGVMb2FkUG9saWN5KG1fY2xpZW50LnBsdWdpbkxvYWRQb2xpY3ko
dG9BUEkocGFnZSksIHRvV0tQbHVnaW5Mb2FkUG9saWN5KGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5
KSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKSk7
CisgICAgcmV0dXJuIHRvUGx1Z2luTW9kdWxlTG9hZFBvbGljeShtX2NsaWVudC5wbHVnaW5Mb2Fk
UG9saWN5KHRvQVBJKHBhZ2UpLCB0b1dLUGx1Z2luTG9hZFBvbGljeShjdXJyZW50UGx1Z2luTG9h
ZFBvbGljeSksIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEFQSU9iamVjdDsKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXI7CitjbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC04
OSwxMCArOTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJQYWdlUHJveHkqLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CiAgICAgdm9pZCB3
aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViUGFnZVByb3h5KiwgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSosIEFQSU9iamVjdCopOwogCi0gICAgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBwbHVn
aW5Mb2FkUG9saWN5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgcGx1Z2luQnVuZGxlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBwbHVnaW5CdW5kbGVWZXJzaW9uLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHBhZ2VVUkxTdHJpbmcsIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQ
b2xpY3kpOwotICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXZWJQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpOwotICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBs
dWdpblZlcnNpb24oV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBwbHVnaW5CdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBsdWdpbkJ1bmRs
ZVZlcnNpb24sIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTFN0cmluZyk7Ci0KKyAgICBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xp
Y3koV2ViUGFnZVByb3h5KiwgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9h
ZFBvbGljeSwgSW1tdXRhYmxlRGljdGlvbmFyeSopOworICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlh
bGl6ZVBsdWdpbihXZWJQYWdlUHJveHkqLCBJbW11dGFibGVEaWN0aW9uYXJ5Kik7CisgICAgdm9p
ZCBkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXZWJQYWdlUHJveHkqLCBJbW11dGFibGVE
aWN0aW9uYXJ5Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNDk4NjEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAj
aW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXIuaCIKQEAgLTEzOTEsOCArMTM5Miw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpmaW5kUGx1Z2luKGNvbnN0IFN0cmkKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmxTdHJpbmcp
OwogCiAgICAgbmV3TWltZVR5cGUgPSBtaW1lVHlwZS5sb3dlcigpOwotCiAgICAgcGx1Z2luTG9h
ZFBvbGljeSA9IFBsdWdpbk1vZHVsZUxvYWROb3JtYWxseTsKKyAgICAKICAgICBQbHVnaW5Nb2R1
bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5m
aW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSk7CiAgICAgaWYg
KCFwbHVnaW4ucGF0aCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQwMCw4ICsxNDAxLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaQogICAgIHBsdWdpbkxvYWRQb2xp
Y3kgPSBQbHVnaW5JbmZvU3RvcmU6OnBvbGljeUZvclBsdWdpbihwbHVnaW4pOwogCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQ
b2xpY3kgPSBzdGF0aWNfY2FzdDxQbHVnaW5Nb2R1bGVMb2FkUG9saWN5PihwbHVnaW5Mb2FkUG9s
aWN5KTsKLSAgICBwbHVnaW5Mb2FkUG9saWN5ID0gbV9sb2FkZXJDbGllbnQucGx1Z2luTG9hZFBv
bGljeSh0aGlzLCBwbHVnaW4uYnVuZGxlSWRlbnRpZmllciwgcGx1Z2luLnZlcnNpb25TdHJpbmcs
IHBsdWdpbi5pbmZvLm5hbWUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nLCBjdXJyZW50
UGx1Z2luTG9hZFBvbGljeSk7CisgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBsdWdp
bkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwg
ZnJhbWVVUkxTdHJpbmcsIFN0cmluZygpLCBwYWdlVVJMU3RyaW5nLCBTdHJpbmcoKSwgU3RyaW5n
KCkpOworICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBtX2xvYWRlckNsaWVudC5wbHVnaW5Mb2FkUG9s
aWN5KHRoaXMsIHN0YXRpY19jYXN0PFBsdWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdpbkxvYWRQ
b2xpY3kpLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShmcmFtZVVSTFN0cmluZyk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VVUkxTdHJpbmcpOwpAQCAt
MjcwMCw2OSArMjcwMSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25uZWN0aW9uV2lsbENsb3Nl
KEMKICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+c3RvcmFnZU1hbmFnZXIoKS5zZXRBbGxvd2Vk
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKG1fcGFnZUlELCAwKTsKIH0KIAotU3Ry
aW5nIFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkK
LXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50
aWZpZXIiKTsKLX0KLQotU3RyaW5nIFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25CdW5k
bGVWZXJzaW9uS2V5KCkKLXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1h
dGlvbkJ1bmRsZVZlcnNpb24iKTsKLX0KLQotU3RyaW5nIFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5m
b3JtYXRpb25EaXNwbGF5TmFtZUtleSgpCi17Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1
Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFtZSIpOwotfQotCi1TdHJpbmcgV2ViUGFnZVByb3h5Ojpw
bHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkKLXsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJQbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMIik7Ci19Ci0KLVN0cmluZyBXZWJQYWdlUHJveHk6
OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKQotewotICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIlBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGUiKTsKLX0KLQotU3RyaW5nIFdlYlBhZ2VQcm94
eTo6cGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkKLXsKLSAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkwiKTsKLX0KLQotU3RyaW5nIFdlYlBhZ2VQcm94
eTo6cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpCi17Ci0gICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0
ZVVSTCIpOwotfQotCi1TdHJpbmcgV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvblBsdWdp
blVSTEtleSgpCi17Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25Q
bHVnaW5VUkwiKTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJQYWdl
UHJveHk6OnBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIGJ1bmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgYnVuZGxlVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNw
YWdlQXR0cmlidXRlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZykKLXsK
LSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4+IHBsdWdpbkluZm9NYXA7Ci0g
ICAgaWYgKCFidW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKSkKLSAgICAgICAgcGx1Z2luSW5mb01h
cC5zZXQoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXko
KSwgV2ViU3RyaW5nOjpjcmVhdGUoYnVuZGxlSWRlbnRpZmllcikpOwotICAgIGlmICghYnVuZGxl
VmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAgIHBsdWdpbkluZm9NYXAuc2V0KFdlYlBhZ2VQcm94
eTo6cGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRl
KGJ1bmRsZVZlcnNpb24pKTsKLSAgICBpZiAoIWRpc3BsYXlOYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgcGx1Z2luSW5mb01hcC5zZXQoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkRpc3Bs
YXlOYW1lS2V5KCksIFdlYlN0cmluZzo6Y3JlYXRlKGRpc3BsYXlOYW1lKSk7Ci0gICAgaWYgKCFm
cmFtZVVSTFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHBsdWdpbkluZm9NYXAuc2V0KFdlYlBh
Z2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShm
cmFtZVVSTFN0cmluZykpOwotICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICBw
bHVnaW5JbmZvTWFwLnNldChXZWJQYWdlUHJveHk6OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVL
ZXkoKSwgV2ViU3RyaW5nOjpjcmVhdGUobWltZVR5cGUpKTsKLSAgICBpZiAoIXBhZ2VVUkxTdHJp
bmcuaXNFbXB0eSgpKQotICAgICAgICBwbHVnaW5JbmZvTWFwLnNldChXZWJQYWdlUHJveHk6OnBs
dWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShwYWdlVVJMU3RyaW5n
KSk7Ci0gICAgaWYgKCFwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZy5pc0VtcHR5KCkpCi0g
ICAgICAgIHBsdWdpbkluZm9NYXAuc2V0KFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25Q
bHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShwbHVnaW5zcGFnZUF0
dHJpYnV0ZVVSTFN0cmluZykpOwotICAgIGlmICghcGx1Z2luVVJMU3RyaW5nLmlzRW1wdHkoKSkK
LSAgICAgICAgcGx1Z2luSW5mb01hcC5zZXQoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlv
blBsdWdpblVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShwbHVnaW5VUkxTdHJpbmcpKTsKLQotICAg
IHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChwbHVnaW5JbmZvTWFwKTsKLX0KLQog
dm9pZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJf
dCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3Bh
Z2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGFnZVVSTFN0cmluZykKIHsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwbHVnaW5V
UkxTdHJpbmcpOwpAQCAtMjc3MCwxNyArMjcwOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5h
dmFpbGFibGVQbHVnaW5CdXR0CiAgICAgTUVTU0FHRV9DSEVDS19VUkwoZnJhbWVVUkxTdHJpbmcp
OwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHBhZ2VVUkxTdHJpbmcpOwogCi0gICAgU3RyaW5nIHBs
dWdpbkJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgU3RyaW5nIHBsdWdpbkJ1bmRsZVZlcnNpb247Ci0g
ICAgU3RyaW5nIHBsdWdpbk5hbWU7Ci0gICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7
CisgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uOwogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1p
bWVUeXBlOwogICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0
KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIEtVUkwoS1VSTCgp
LCBwbHVnaW5VUkxTdHJpbmcpKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcGx1Z2luQnVuZGxl
SWRlbnRpZmllciA9IHBsdWdpbi5idW5kbGVJZGVudGlmaWVyOwotICAgIHBsdWdpbkJ1bmRsZVZl
cnNpb24gPSBwbHVnaW4udmVyc2lvblN0cmluZzsKLSNlbmRpZgotICAgIHBsdWdpbk5hbWUgPSBw
bHVnaW4uaW5mby5uYW1lOworICAgIHBsdWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5m
b3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJhbWVVUkxTdHJpbmcsIG1pbWVUeXBlLCBwYWdl
VVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgcGx1Z2luVVJMU3RyaW5n
KTsKICNlbmRpZgogCiAgICAgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbiA9IGtXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uUGx1Z2luTWlz
c2luZzsKQEAgLTI4MDksNyArMjc0MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmF2YWlsYWJs
ZVBsdWdpbkJ1dHQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAg
bV91aUNsaWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodGhpcywgcGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24sIG1pbWVUeXBlLCBwbHVnaW5CdW5kbGVJZGVudGlmaWVyLCBwbHVn
aW5CdW5kbGVWZXJzaW9uLCBwbHVnaW5OYW1lLCBwbHVnaW5VUkxTdHJpbmcsIHBsdWdpbnNwYWdl
QXR0cmlidXRlVVJMU3RyaW5nLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZyk7CisgICAg
bV91aUNsaWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodGhpcywgcGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24sIHBsdWdpbkluZm9ybWF0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFRvb2xiYXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJs
ZSkKQEAgLTQyMDIsMjYgKzQxMzQsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVBh
Z2VDb3VudCh1bgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdp
bihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcpCiB7Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkRmFp
bFRvSW5pdGlhbGl6ZVBsdWdpbih0aGlzLCBtaW1lVHlwZSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VV
UkxTdHJpbmcpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4o
dGhpcywgY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KG1pbWVUeXBlLCBmcmFtZVVS
TFN0cmluZywgcGFnZVVSTFN0cmluZykuZ2V0KCkpOwogfQogCi0vLyBGSVhNRTogRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBs
dWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5V
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTFN0cmluZykKIHsKLSAgICBTdHJpbmcgcGx1Z2luQnVuZGxlSWRlbnRpZmllcjsKLSAgICBT
dHJpbmcgcGx1Z2luQnVuZGxlVmVyc2lvbjsKLSAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1l
VHlwZTsKKyAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb247
CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAg
IFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1
Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4o
bmV3TWltZVR5cGUsIEtVUkwoS1VSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKLQotICAgIHBsdWdp
bkJ1bmRsZUlkZW50aWZpZXIgPSBwbHVnaW4uYnVuZGxlSWRlbnRpZmllcjsKLSAgICBwbHVnaW5C
dW5kbGVWZXJzaW9uID0gcGx1Z2luLnZlcnNpb25TdHJpbmc7CisgICAgcGx1Z2luSW5mb3JtYXRp
b24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0
cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBTdHJpbmcoKSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCiAKLSAgICBtX2xv
YWRlckNsaWVudC5kaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbih0aGlzLCBuZXdNaW1lVHlw
ZSwgcGx1Z2luQnVuZGxlSWRlbnRpZmllciwgcGx1Z2luQnVuZGxlVmVyc2lvbiwgZnJhbWVVUkxT
dHJpbmcsIHBhZ2VVUkxTdHJpbmcpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZEJsb2NrSW5zZWN1
cmVQbHVnaW5WZXJzaW9uKHRoaXMsIHBsdWdpbkluZm9ybWF0aW9uLmdldCgpKTsKIH0KIAogYm9v
bCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE0
OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcwLDE2ICs3NzAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0aW9u
V2lsbE9wZW4oQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogICAgIHZvaWQgY29ubmVjdGlvbldpbGxD
bG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIHBsdWdpbklu
Zm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpOwotICAgIHN0YXRpYyBTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCk7Ci0gICAgc3RhdGljIFN0cmluZyBwbHVnaW5J
bmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCk7Ci0gICAgc3RhdGljIFN0cmluZyBwbHVnaW5JbmZv
cm1hdGlvbkZyYW1lVVJMS2V5KCk7Ci0gICAgc3RhdGljIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlv
bk1JTUVUeXBlS2V5KCk7Ci0gICAgc3RhdGljIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvblBhZ2VV
UkxLZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VB
dHRyaWJ1dGVVUkxLZXkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1
Z2luVVJMS2V5KCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4g
cGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBidW5kbGVWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRy
aWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nKTsKLQogcHJpdmF0
ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1By
b3h5PiwgV2ViUGFnZUdyb3VwKiwgdWludDY0X3QgcGFnZUlEKTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCShyZXZpc2lvbiAxNDk4NjEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1
ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViTnVtYmVyLmgiCkBAIC0xNzUsMjAgKzE3NiwzMyBAQCB2b2lkIFdl
YlVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVuCiAgICAgbV9jbGllbnQubW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQodG9BUEkocGFnZSksIHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQuZ2V0KCkp
LCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8p
OwogfQogCi12b2lkIFdlYlVJQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQo
V2ViUGFnZVByb3h5KiBwYWdlLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHBsdWdpbkJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luQnVuZGxlVmVyc2lv
biwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKK3ZvaWQg
V2ViVUlDbGllbnQ6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkq
IHBhZ2UsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24sIEltbXV0YWJsZURpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uKQogewogICAgIGlm
IChwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiA9PSBrV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvblBsdWdpbk1pc3NpbmcpIHsKICAgICAgICAgaWYgKG1fY2xpZW50Lm1pc3NpbmdQbHVnaW5C
dXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICBtX2NsaWVu
dC5taXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJ
KHBhZ2UpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCB0b0FQSShwbHVnaW5VUkxTdHJpbmcuaW1w
bCgpKSwgdG9BUEkocGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcuaW1wbCgpKSwgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5taXNzaW5nUGx1Z2luQnV0dG9u
Q2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKAorICAgICAgICAgICAgICAgIHRvQVBJKHBh
Z2UpLAorICAgICAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3Ry
aW5nPihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwKKyAgICAgICAgICAgICAgICB0
b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PFdlYlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25Q
bHVnaW5VUkxLZXkoKSkpLAorICAgICAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9u
LT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJM
S2V5KCkpKSwKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5jbGllbnRJbmZvKTsKICAgICB9CiAK
ICAgICBpZiAobV9jbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEpCi0gICAgICAgIG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKHBhZ2UpLCBwbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiwgdG9BUEkobWltZVR5cGUuaW1wbCgpKSwgdG9BUEkocGx1Z2luVVJMU3Ry
aW5nLmltcGwoKSksIHRvQVBJKHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLmltcGwoKSks
IG1fY2xpZW50LmNsaWVudEluZm8pOwotCi0gICAgaWYgKG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZCkgewotICAgICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4g
cGx1Z2luSW5mb3JtYXRpb24gPSBXZWJQYWdlUHJveHk6OnBsdWdpbkluZm9ybWF0aW9uRGljdGlv
bmFyeShwbHVnaW5CdW5kbGVJZGVudGlmaWVyLCBwbHVnaW5CdW5kbGVWZXJzaW9uLCBkaXNwbGF5
TmFtZSwgZnJhbWVVUkxTdHJpbmcsIG1pbWVUeXBlLCBwYWdlVVJMU3RyaW5nLCBwbHVnaW5zcGFn
ZUF0dHJpYnV0ZVVSTFN0cmluZywgcGx1Z2luVVJMU3RyaW5nKTsKLSAgICAgICAgbV9jbGllbnQu
dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHRvQVBJKHBhZ2UpLCBwbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24uZ2V0KCkpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKLSAgICB9CisgICAgICAgIG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKAorICAgICAgICAgICAgdG9BUEkocGFn
ZSksCisgICAgICAgICAgICBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwKKyAgICAgICAgICAg
IHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlv
bk1JTUVUeXBlS2V5KCkpKSwKKyAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5n
ZXQ8V2ViU3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpKSksCisgICAgICAg
ICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PFdlYlN0cmluZz4ocGx1Z2luSW5mb3Jt
YXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpKSksCisgICAgICAgICAgICBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKworICAgIGlmIChtX2NsaWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWQpCisgICAgICAgIG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZCgKKyAgICAgICAgICAgIHRvQVBJKHBhZ2UpLAorICAgICAgICAgICAgcGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24sCisgICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbiksCisgICAg
ICAgICAgICBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogYm9vbCBXZWJVSUNsaWVudDo6aW1w
bGVtZW50c0RpZE5vdEhhbmRsZUtleUV2ZW50KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJVSUNsaWVudC5oCShyZXZpc2lvbiAxNDk4NjEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKIGNs
YXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBOYXRpdmVXZWJXaGVlbEV2ZW50Owog
Y2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CkBAIC03MSw3ICs3Miw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0U3RhdHVzVGV4dChXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmLCBXZWJFdmVudDo6TW9kaWZpZXJzLCBBUElPYmpl
Y3QqKTsKLSAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJv
eHkqLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHBsdWdpbkJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGx1
Z2luQnVuZGxlVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgY29uc3QgU3RyaW5n
JiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVS
TFN0cmluZyk7CisgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViUGFn
ZVByb3h5KiwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgSW1tdXRhYmxlRGljdGlvbmFy
eSopOwogICAgIAogICAgIGJvb2wgaW1wbGVtZW50c0RpZE5vdEhhbmRsZUtleUV2ZW50KCkgY29u
c3Q7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVLZXlFdmVudChXZWJQYWdlUHJveHkqLCBjb25zdCBO
YXRpdmVXZWJLZXlib2FyZEV2ZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTQ5ODYxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIlByaW50SW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIldLUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3Qu
aCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC04
MjYsNiArODI3LDI4IEBAIHZvaWQgV0tQYWdlU2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdygK
ICAgICB0b0ltcGwocGFnZVJlZiktPnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3Rh
cnRNZWRpYSk7CiB9CiAKKwordm9pZCBXS1BhZ2VTZXRPdmVycmlkZVByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoV0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocGFn
ZVJlZiktPnNldE92ZXJyaWRlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwor
Ym9vbCBXS1BhZ2VHZXRPdmVycmlkZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoV0tQYWdlUmVmIHBh
Z2VSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+b3ZlcnJpZGVQcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7Cit9CisKK3ZvaWQgV0tQYWdlU2VsZWN0Q29udGV4dE1lbnVJdGVtKFdL
UGFnZVJlZiBwYWdlLCBXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtKQoreworI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQorICAgIHRvSW1wbChwYWdlKS0+Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQo
Kih0b0ltcGwoaXRlbSktPmRhdGEoKSkpOworI2VuZGlmCit9CisKKworCisvLyAtLSBERVBSRUNB
VEVEIC0tCisKIHZvaWQgV0tQYWdlU2V0SW52YWxpZE1lc3NhZ2VGdW5jdGlvbihXS1BhZ2VJbnZh
bGlkTWVzc2FnZUZ1bmN0aW9uKQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlv
biB3aGVuIGRvaW5nIHNvIHdvbid0IGJyZWFrIFdlYktpdCBuaWdodGxpZXMuCkBAIC04MzMsNjUg
Kzg1Niw0MyBAQCB2b2lkIFdLUGFnZVNldEludmFsaWRNZXNzYWdlRnVuY3Rpb24oV0tQCiAKIFdL
U3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgp
CiB7Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2ViUGFn
ZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKSkubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSShrZXkpOworICAgIHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9u
QnVuZGxlSWRlbnRpZmllcktleSgpOwogfQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5J
bmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKQogewotICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtl
eSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25CdW5k
bGVWZXJzaW9uS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICBy
ZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKTsKIH0KIAogV0tTdHJp
bmdSZWYgV0tQYWdlR2V0UGx1Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFtZUtleSgpCiB7Ci0gICAg
c3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2ViUGFnZVByb3h5Ojpw
bHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4g
dG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25L
ZXkoKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2luSW5mb3JtYXRpb25GcmFtZVVS
TEtleSgpCiB7Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUo
V2ViUGFnZVByb3h5OjpwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkpLmxlYWtSZWYoKTsK
LSAgICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvbkZy
YW1lVVJMS2V5KCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZm9ybWF0aW9u
TUlNRVR5cGVLZXkoKQogewotICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6
Y3JlYXRlKFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpKS5sZWFr
UmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKGtleSk7CisgICAgcmV0dXJuIFdLUGx1Z2luSW5mb3Jt
YXRpb25NSU1FVHlwZUtleSgpOwogfQogCiBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZv
cm1hdGlvblBhZ2VVUkxLZXkoKQogewotICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0
cmluZzo6Y3JlYXRlKFdlYlBhZ2VQcm94eTo6cGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkp
LmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVnaW5J
bmZvcm1hdGlvblBhZ2VVUkxLZXkoKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tQYWdlR2V0UGx1Z2lu
SW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpCiB7Ci0gICAgc3RhdGljIFdl
YlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2ViUGFnZVByb3h5OjpwbHVnaW5JbmZv
cm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1
cm4gdG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdl
QXR0cmlidXRlVVJMS2V5KCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZm9y
bWF0aW9uUGx1Z2luVVJMS2V5KCkKIHsKLSAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJT
dHJpbmc6OmNyZWF0ZShXZWJQYWdlUHJveHk6OnBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5
KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKKyAgICByZXR1cm4gV0tQbHVn
aW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpOwogfQogCi12b2lkIFdLUGFnZVNldE92ZXJyaWRl
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXS1BhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVkKQot
ewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0T3ZlcnJpZGVQcml2YXRlQnJvd3NpbmdFbmFibGVk
KGVuYWJsZWQpOwotfQotCi1ib29sIFdLUGFnZUdldE92ZXJyaWRlUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChXS1BhZ2VSZWYgcGFnZVJlZikKLXsKLSAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5v
dmVycmlkZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLX0KKy8vIC0tIERFUFJFQ0FURUQgLS0K
IAotdm9pZCBXS1BhZ2VTZWxlY3RDb250ZXh0TWVudUl0ZW0oV0tQYWdlUmVmIHBhZ2UsIFdLQ29u
dGV4dE1lbnVJdGVtUmVmIGl0ZW0pCi17Ci0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
dG9JbXBsKHBhZ2UpLT5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCgqKHRvSW1wbChpdGVtKS0+ZGF0
YSgpKSk7Ci0jZW5kaWYKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmgJKHJldmlzaW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDYgKzUzMSwxMiBAQCBXS19FWFBPUlQg
dm9pZCBXS1BhZ2VFeGVjdXRlQ29tbWFuZChXS1BhCiAKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVBv
c3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLUGFn
ZVNlbGVjdENvbnRleHRNZW51SXRlbShXS1BhZ2VSZWYgcGFnZSwgV0tDb250ZXh0TWVudUl0ZW1S
ZWYgaXRlbSk7CisKKworCisvKiBERVBSRUNBVEVEIC0gIFBsZWFzZSB1c2UgY29uc3RhbnRzIGZy
b20gV0tQbHVnaW5JbmZvcm1hdGlvbiBpbnN0ZWFkLiAqLworCiAvKiBWYWx1ZSB0eXBlOiBXS1N0
cmluZ1JlZiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZm9ybWF0
aW9uQnVuZGxlSWRlbnRpZmllcktleSgpOwogCkBAIC01NTUsOSArNTYxLDYgQEAgV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLUGFnZUdldFBsdWdpbkluZgogLyogVmFsdWUgdHlwZTogV0tVUkxSZWYg
Ki8KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BhZ2VHZXRQbHVnaW5JbmZvcm1hdGlvblBsdWdp
blVSTEtleSgpOwogCi1XS19FWFBPUlQgdm9pZCBXS1BhZ2VTZWxlY3RDb250ZXh0TWVudUl0ZW0o
V0tQYWdlUmVmIHBhZ2UsIFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW0pOwotCi0KICNpZmRlZiBf
X2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAkocmV2aXNpb24gMTQ5
ODYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEzIEBAIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmUKIAogV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0SXNQ
bHVnSW5VcGRhdGVBdmFpbGFibGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHBs
dWdJbkJ1bmRsZUlkZW50aWZpZXIpOwogCitXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQ29u
dGV4dENvcHlQbHVnSW5JbmZvRm9yQnVuZGxlSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tTdHJpbmdSZWYgcGx1Z0luQnVuZGxlSWRlbnRpZmllcik7CisKK3R5cGVkZWYgdm9pZCAo
XldLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5zQmxvY2spKFdLQXJyYXlSZWYsIFdL
RXJyb3JSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBs
dWdJbnMoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQ
bHVnSW5zQmxvY2sgYmxvY2spOworCisKKy8qIERFUFJFQ0FURUQgLSAgUGxlYXNlIHVzZSBjb25z
dGFudHMgZnJvbSBXS1BsdWdpbkluZm9ybWF0aW9uIGluc3RlYWQuICovCiAKIC8qIFZhbHVlIHR5
cGU6IFdLU3RyaW5nUmVmICovCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvUGF0
aEtleSgpOwpAQCAtNTYsMTEgKzYzLDYgQEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z0lu
SW5mb1VwZGF0ZQogLyogVmFsdWUgdHlwZTogV0tCb29sZWFuUmVmICovCiBXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tQbHVnSW5JbmZvSXNTYW5kYm94ZWRLZXkoKTsKIAotV0tfRVhQT1JUIFdLRGlj
dGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UGx1Z0luSW5mb0ZvckJ1bmRsZUlkZW50aWZpZXIoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXIpOwot
Ci10eXBlZGVmIHZvaWQgKF5XS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0luc0Jsb2Nr
KShXS0FycmF5UmVmLCBXS0Vycm9yUmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldElu
Zm9Gb3JJbnN0YWxsZWRQbHVnSW5zKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0luc0Jsb2NrIGJsb2NrKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tD
b250ZXh0UHJpdmF0ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0JKHJldmlzaW9uIDE0OTg2MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksMTEgQEAKICNpbXBvcnQgIkltbXV0YWJsZUFy
cmF5LmgiCiAjaW1wb3J0ICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW1wb3J0ICJQbHVnaW5J
bmZvU3RvcmUuaCIKKyNpbXBvcnQgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW1wb3J0ICJQbHVn
aW5TYW5kYm94UHJvZmlsZS5oIgogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJXS0FQSUNhc3QuaCIKKyNpbXBvcnQgIldLUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbXBvcnQg
IldLU2hhcmVkQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAiV2Vi
Q29udGV4dC5oIgpAQCAtNTcsNjMgKzU5LDEzIEBAIGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRh
dGVBdmFpbGFibGUoV0sKICAgICByZXR1cm4gV0tJc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSgoTlNT
dHJpbmcgKilhZG9wdENGKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpKS5nZXQoKSk7CiB9CiAKLQotV0tTdHJpbmdSZWYg
V0tQbHVnSW5JbmZvUGF0aEtleSgpCi17Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2Vi
U3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygiV0tQbHVnSW5JbmZvUGF0aCIpLmxlYWtSZWYo
KTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZv
QnVuZGxlSWRlbnRpZmllcktleSgpCi17Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2Vi
U3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygiV0tQbHVnSW5JbmZvQnVuZGxlSWRlbnRpZmll
ciIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKLX0KLQotV0tTdHJpbmdSZWYg
V0tQbHVnSW5JbmZvVmVyc2lvbktleSgpCi17Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0g
V2ViU3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygiV0tQbHVnSW5JbmZvVmVyc2lvbiIpLmxl
YWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQbHVn
SW5JbmZvTG9hZFBvbGljeUtleSgpCi17Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2Vi
U3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygiV0tQbHVnSW5JbmZvTG9hZFBvbGljeSIpLmxl
YWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoa2V5KTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQbHVn
SW5JbmZvVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkoKQot
ewotICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlRnJvbVVURjhT
dHJpbmcoIldLUGx1Z0luSW5mb1VwZGF0ZVBhc3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZh
aWxhYmxlIikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSShrZXkpOwotfQotCi1XS1N0cmlu
Z1JlZiBXS1BsdWdJbkluZm9Jc1NhbmRib3hlZEtleSgpCi17Ci0gICAgc3RhdGljIFdlYlN0cmlu
Zyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGVGcm9tVVRGOFN0cmluZygiV0tQbHVnSW5JbmZvSXNT
YW5kYm94ZWQiKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKGtleSk7Ci19Ci0KLXN0YXRp
YyBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZUluZm9EaWN0aW9uYXJ5KGNv
bnN0IFBsdWdpbk1vZHVsZUluZm8mIGluZm8pCi17Ci0gICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6
TWFwVHlwZSBtYXA7Ci0gICAgbWFwLnNldCh0b1dURlN0cmluZyhXS1BsdWdJbkluZm9QYXRoS2V5
KCkpLCBXZWJTdHJpbmc6OmNyZWF0ZShpbmZvLnBhdGgpKTsKLSAgICBtYXAuc2V0KHRvV1RGU3Ry
aW5nKFdLUGx1Z0luSW5mb0J1bmRsZUlkZW50aWZpZXJLZXkoKSksIFdlYlN0cmluZzo6Y3JlYXRl
KGluZm8uYnVuZGxlSWRlbnRpZmllcikpOwotICAgIG1hcC5zZXQodG9XVEZTdHJpbmcoV0tQbHVn
SW5JbmZvVmVyc2lvbktleSgpKSwgV2ViU3RyaW5nOjpjcmVhdGUoaW5mby52ZXJzaW9uU3RyaW5n
KSk7Ci0gICAgbWFwLnNldCh0b1dURlN0cmluZyhXS1BsdWdJbkluZm9Mb2FkUG9saWN5S2V5KCkp
LCBXZWJVSW50NjQ6OmNyZWF0ZSh0b1dLUGx1Z2luTG9hZFBvbGljeShQbHVnaW5JbmZvU3RvcmU6
OnBvbGljeUZvclBsdWdpbihpbmZvKSkpKTsKLSAgICBtYXAuc2V0KHRvV1RGU3RyaW5nKFdLUGx1
Z0luSW5mb1VwZGF0ZVBhc3RMYXN0QmxvY2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkp
LCBXZWJCb29sZWFuOjpjcmVhdGUoV0tJc1BsdWdpblVwZGF0ZUF2YWlsYWJsZShuc1N0cmluZ0Zy
b21XZWJDb3JlU3RyaW5nKGluZm8uYnVuZGxlSWRlbnRpZmllcikpKSk7Ci0gICAgbWFwLnNldCh0
b1dURlN0cmluZyhXS1BsdWdJbkluZm9Jc1NhbmRib3hlZEtleSgpKSwgV2ViQm9vbGVhbjo6Y3Jl
YXRlKHBsdWdpbkhhc1NhbmRib3hQcm9maWxlKGluZm8uYnVuZGxlSWRlbnRpZmllcikpKTsKLQot
ICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtYXApOwotfQotCiBXS0RpY3Rp
b25hcnlSZWYgV0tDb250ZXh0Q29weVBsdWdJbkluZm9Gb3JCdW5kbGVJZGVudGlmaWVyKFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBwbHVnSW5CdW5kbGVJZGVudGlmaWVyUmVm
KQogewogICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gdG9JbXBsKGNvbnRleHRSZWYpLT5w
bHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luV2l0aEJ1bmRsZUlkZW50aWZpZXIodG9XVEZTdHJp
bmcocGx1Z0luQnVuZGxlSWRlbnRpZmllclJlZikpOwogICAgIGlmIChwbHVnaW4ucGF0aC5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFy
eT4gZGljdGlvbmFyeSA9IGNyZWF0ZUluZm9EaWN0aW9uYXJ5KHBsdWdpbik7CisgICAgUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlv
bkRpY3Rpb25hcnkocGx1Z2luKTsKICAgICByZXR1cm4gdG9BUEkoZGljdGlvbmFyeS5yZWxlYXNl
KCkubGVha1JlZigpKTsKIH0KIApAQCAtMTIzLDcgKzc1LDcgQEAgdm9pZCBXS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0lucwogCiAgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBw
bHVnaW5JbmZvRGljdGlvbmFyaWVzOwogICAgIGZvciAoY29uc3QgYXV0byYgcGx1Z2luOiBwbHVn
aW5zKQotICAgICAgICBwbHVnaW5JbmZvRGljdGlvbmFyaWVzLmFwcGVuZChjcmVhdGVJbmZvRGlj
dGlvbmFyeShwbHVnaW4pKTsKKyAgICAgICAgcGx1Z2luSW5mb0RpY3Rpb25hcmllcy5hcHBlbmQo
Y3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbikpOwogCiAgICAgUmVmUHRy
PEltbXV0YWJsZUFycmF5PiBhcnJheSA9IEltbXV0YWJsZUFycmF5OjphZG9wdChwbHVnaW5JbmZv
RGljdGlvbmFyaWVzKTsKIApAQCAtMTM0LDMgKzg2LDM2IEBAIHZvaWQgV0tDb250ZXh0R2V0SW5m
b0Zvckluc3RhbGxlZFBsdWdJbnMKICAgICAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5kZXJlZigp
OwogICAgIH0pOwogfQorCisKKy8qIERFUFJFQ0FURUQgLSAgUGxlYXNlIHVzZSBjb25zdGFudHMg
ZnJvbSBXS1BsdWdpbkluZm9ybWF0aW9uIGluc3RlYWQuICovCisKK1dLU3RyaW5nUmVmIFdLUGx1
Z0luSW5mb1BhdGhLZXkoKQoreworICAgIHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9uUGF0aEtl
eSgpOworfQorCitXS1N0cmluZ1JlZiBXS1BsdWdJbkluZm9CdW5kbGVJZGVudGlmaWVyS2V5KCkK
K3sKKyAgICByZXR1cm4gV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKTsK
K30KKworV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvVmVyc2lvbktleSgpCit7CisgICAgcmV0dXJu
IFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCk7Cit9CisKK1dLU3RyaW5nUmVm
IFdLUGx1Z0luSW5mb0xvYWRQb2xpY3lLZXkoKQoreworICAgIHJldHVybiBXS1BsdWdpbkluZm9y
bWF0aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVnSW5J
bmZvVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkoKQorewor
ICAgIHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9uVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lv
bklzS25vd25BdmFpbGFibGVLZXkoKTsKK30KKworV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvSXNT
YW5kYm94ZWRLZXkoKQoreworICAgIHJldHVybiBXS1BsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJv
eFByb2ZpbGVLZXkoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0OTg2MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTcyLDcgKzU3MiwxMiBAQAogCQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkgLyogV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc4MDFDMDk5
MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc4MDFDMDk1MTQyMjkwQzQwMEZBRjlBRiAv
KiBXZWJIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJNzgwMUMwOUExNDIyOTBDNDAwRkFGOUFG
IC8qIFdlYkhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc4MDFDMDk2MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0
LmggKi87IH07CisJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsK
KwkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IH07CisJCTdDMTM1QUFDMTcz
QjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUFBMTczQjBDRkYwMDU4NkFFMiAv
KiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAqLzsgfTsKIAkJN0MzODc0MzQxNzJGNTYxNTAwMUJE
ODhBIC8qIFBhZ2VCYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MzODc0MzMxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwICov
OyB9OworCQk3QzNGOEM5MDE3M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEUx
NzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsKKwkJN0MzRjhD
OTExNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNGOEM4RjE3M0FGNTJEMDA3QjdGMzkg
LyogUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgfTsKIAkJN0M2RDM3RkMxNzJGNTU1RjAwOUQyODQ3
IC8qIFBhZ2VCYW5uZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzZEMzdGQTE3MkY1NTVGMDA5RDI4NDcgLyogUGFnZUJhbm5lck1hYy5tbSAq
LzsgfTsKIAkJN0NCMTZGRUYxNzI0QkEyMzAwN0EwQTk1IC8qIGNvbS5hcHBsZS5pc3QuZHMuYXBw
bGVjb25uZWN0LndlYnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9maWxlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxNkZFMjE3MjRCOUI1MDA3QTBB
OTUgLyogY29tLmFwcGxlLmlzdC5kcy5hcHBsZWNvbm5lY3Qud2VicGx1Z2luLnNiICovOyB9Owog
CQk3Q0IxNkZGMDE3MjRCQTI0MDA3QTBBOTUgLyogY29tLmFwcGxlLlF1aWNrVGltZSBQbHVnaW4u
cGx1Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjE2RkUzMTcyNEI5QjUwMDdBMEE5NSAvKiBjb20uYXBw
bGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4uc2IgKi87IH07CkBAIC0yMDQ4LDcgKzIwNTMsMTIg
QEAKIAkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc4MDFDMDk1MTQyMjkwQzQwMEZBRjlBRiAv
KiBXZWJIaXRUZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkhpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
ODAxQzA5NjE0MjI5MEM0MDBGQUY5QUYgLyogV2ViSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2lu
SW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzEzNUFBNzE3
M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdDMTM1QUFBMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlv
bk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbklu
Zm9ybWF0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM4NzQzMzE3
MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlQmFubmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MzRjhDOEUxNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzRjhDOEYxNzNBRjUyRDAwN0I3RjM5IC8q
IFBsdWdpbkluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
dWdpbkluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNkQzN0ZB
MTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZUJhbm5lck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0NCMTZGRTIxNzI0QjlCNTAwN0EwQTk1IC8qIGNvbS5hcHBsZS5pc3QuZHMu
YXBwbGVjb25uZWN0LndlYnBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBw
bGUuaXN0LmRzLmFwcGxlY29ubmVjdC53ZWJwbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDQjE2RkUzMTcyNEI5QjUwMDdBMEE5NSAvKiBjb20uYXBwbGUuUXVpY2tUaW1l
IFBsdWdpbi5wbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gImNvbS5hcHBsZS5RdWlj
a1RpbWUgUGx1Z2luLnBsdWdpbi5zYiI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MDQ1LDYgKzMwNTUsOCBAQAogCQkJCTFBNEE5Qzk4MTJCODIxQzAwMDhGRTk4NCAvKiBtYWMgKi8s
CiAJCQkJMUE0QTlDNTMxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNw
cCAqLywKIAkJCQkxQTRBOUM1NDEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuaCAqLywKKwkJCQk3QzNGOEM4RTE3M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRp
b24uY3BwICovLAorCQkJCTdDM0Y4QzhGMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1h
dGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBOZXRzY2FwZTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0zMDUzLDYgKzMwNjUsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQkxQTRBOUM5OTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVn
aW5Nb2R1bGVNYWMubW0gKi8sCisJCQkJN0MxMzVBQUExNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdp
bkluZm9ybWF0aW9uTWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNDk1Niw2ICs0OTY5LDggQEAKIAkJCQlCQzJEMDIxODEyQUM0
MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8sCiAJCQkJOTNCREVCMDAxNzFERDdB
RjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLywKIAkJCQlBNUVGRDM4QjE2
QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi8sCisJCQkJN0MxMzVB
QTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovLAorCQkJCTdD
MTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi8sCiAJCQkJ
Mzc5NDg0MDYxNTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwICovLAogCQkJCTM3
OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmggKi8sCiAJCQkJMzc2MDg4
MjAxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmNwcCAqLywKQEAgLTU1ODEsNiAr
NTU5Niw3IEBACiAJCQkJN0NGNDdGRkYxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJh
bm5lck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGNDdGRjcxNzI3NUI3MTAwOEFDQjkxIC8q
IFdLQnVuZGxlUGFnZUJhbm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEM0EzQzIxMzM5NjBC
MDAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QzNGOEM5MTE3M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNCQjEzMzk2MDYyMDA3MDlCRTQg
LyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEM0Ez
Q0IxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC01NzQ1LDYgKzU3NjEsNyBAQAogCQkJCTMxMkMwQzRBMTQ2RERD
OEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTFEOEJBMjE3MzFBMzYzMDAxNDFEQTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNDA3NjAyMTI0RkYwMjcwMDY4RjIwQSAvKiBXS051bWJlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODU3RkU2MTJCODQzRDgwMEVERUIyRSAv
KiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMURGRThGMTJC
MzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0Q1OTdENzExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmggaW4gSGVhZGVycyAq
LywKQEAgLTY2MDMsNiArNjYyMCw3IEBACiAJCQkJNTFBN0YyRjUxMjVCRjhENDAwOEFFQjFEIC8q
IExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2MEJGRTExMzM4MURGOTAwOTE4OTk5
IC8qIExvZ2dpbmcubWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyNEI1RjIxMUY1MzFFODAw
QzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzRjhDOTAx
NzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBMjMyOTAyMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTIzMjhGRTE2MkM4NjZBMDBEODJGN0EgLyogTWVzc2FnZUVuY29kZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzRUVEMEUxNjFBNTM1NDAwQUVCNEY1IC8qIE1lc3Nh
Z2VSZWNlaXZlck1hcC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY2NjAsNiArNjY3OCw3IEBACiAJ
CQkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDJBREYwOTE2MzYyREQ1MDAxOTdFNDcgLyogUERGUGx1
Z2luVGV4dEFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFGMDYxNTEyQjAxMTMx
MDA4RTQ5RTIgLyogUERGVmlld0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk3QzEz
NUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlCQ0Y1MDVFODEyNDMwNDdCMDA1OTU1QUUgLyogUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0M0M0FCQTEyN0I5NURDMDAzMTdGMTYgLyog
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNkZCN0QyMTFF
NjUxRTIwMERCMTM3MSAvKiBQbHVnaW4uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02ODczLDYgKzY4
OTIsNyBAQAogCQkJCTFBOEM3MjhDMTczODQ3N0MwMDBBNjU1NCAvKiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdGODYxMkI4MkQwQjAwRURF
QjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDODU3RjdFMTJCODJDRUUwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBX
S1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTYzRDZCMTEzREQx
OTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNTM1NjlDMTI5
MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzA2QzYwOTUxMjRDMTQ0QjAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="222651"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="222652"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>