<?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>167558</bug_id>
          
          <creation_ts>2017-01-29 01:25:11 -0800</creation_ts>
          <short_desc>AX: enable search predication for iOS</short_desc>
          <delta_ts>2017-01-31 00:09:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1271104</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-01-29 01:25:11 -0800</bug_when>
    <thetext>The searching mechanism we use on macOS should be available on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271105</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-01-29 01:25:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/30251367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271365</commentid>
    <comment_count>2</comment_count>
      <attachid>300132</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-01-30 12:20:58 -0800</bug_when>
    <thetext>Created attachment 300132
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271366</commentid>
    <comment_count>3</comment_count>
      <attachid>300133</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-01-30 12:21:48 -0800</bug_when>
    <thetext>Created attachment 300133
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271367</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-30 12:22:51 -0800</bug_when>
    <thetext>Attachment 300133 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.mm:74:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:51:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h:34:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Tools/DumpRenderTree/mac/AccessibilityCommonMac.h:49:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Tools/DumpRenderTree/mac/AccessibilityCommonMac.mm:72:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 5 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271370</commentid>
    <comment_count>5</comment_count>
      <attachid>300134</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-01-30 12:24:56 -0800</bug_when>
    <thetext>Created attachment 300134
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271607</commentid>
    <comment_count>6</comment_count>
      <attachid>300134</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-31 00:09:13 -0800</bug_when>
    <thetext>Comment on attachment 300134
patch

Clearing flags on attachment: 300134

Committed r211411: &lt;http://trac.webkit.org/changeset/211411&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271608</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-31 00:09:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300132</attachid>
            <date>2017-01-30 12:20:58 -0800</date>
            <delta_ts>2017-01-30 12:21:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35531</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTM4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAxLTMwICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGVuYWJsZSBzZWFy
Y2ggcHJlZGljYXRpb24gZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY3NTU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDI1MTM2Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRo
ZSBjb2RlIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eSBzZWFyY2hpbmcgaW50byBhIHNoYXJlZCBw
bGFjZSBzbyBpdCBjYW4gYmUgdXNlZCBieSBpT1MuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJp
bGl0eS9pb3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Rmlu
ZE1hdGNoaW5nT2JqZWN0czpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06CisgICAgICAgIChjb252ZXJ0
VG9OU0FycmF5KToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXApOgor
ICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyk6CisgICAgICAgIChhY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlN
YXApOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQ
cmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKGNvbnZl
cnRUb05TQXJyYXkpOiBEZWxldGVkLgorCiAyMDE3LTAxLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGVsZW1lbnRzIHNob3VsZCBub3Qg
cnViYmVyLWJhbmQgaW4gV0syLCBub3IgcmVtYWluIGF0IG5lZ2F0aXZlIG9mZnNldHMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyMTEzMjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg4Nyw2ICsxODg3LDE0IEBACiAg
ICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNBcnJheTxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciAqPiAqKWFjY2Vzc2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOihOU0RpY3Rpb25hcnkg
KilwYXJhbWV0ZXJzCit7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNyaXRlcmlh
ID0gYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZShwYXJhbWV0ZXJzKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKKyAgICBtX29iamVjdC0+ZmluZE1hdGNo
aW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOworICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KHJlc3VsdHMpOworfQorCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlFbGVtZW50RGlkQmVjb21l
Rm9jdXNlZAogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAkocmV2aXNpb24gMjEx
MzI4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDExIEBACiAK
ICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFjY2Vzc2li
aWxpdHlPYmplY3Q7CitzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhOwogY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBQYXRoOwpAQCAtNjcsNiArNzAsOSBA
QAogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzOwogLSAoTlNB
cnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7CiAKK2V4dGVybiBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
Rm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25h
cnkgKik7CitleHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKwogQGVu
ZAogCiAjZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0JKHJldmlzaW9uIDIxMTMy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMTY4IEBACiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKy8v
IFNlYXJjaCBLZXlzCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSBAIkFYQW55VHlwZVNlYXJjaEtl
eSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxT
ZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJj
aEtleSBAIkFYQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5QmxvY2txdW90ZVNlYXJjaEtleSBAIkFYQmxvY2txdW90ZVNlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5IEAiQVhCb2xkRm9udFNlYXJjaEtleSIKKyNlbmRp
ZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleQorI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXkgQCJBWEJ1dHRvblNlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5IEAiQVhDaGVja0JveFNlYXJjaEtleSIKKyNlbmRp
ZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXkKKyNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSBAIkFYQ29udHJvbFNlYXJjaEtleSIKKyNlbmRp
ZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXkKKyNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSBAIkFYRGlmZmVyZW50VHlw
ZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VT
ZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSBAIkFY
Rm9udENoYW5nZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZv
bnRDb2xvckNoYW5nZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JD
aGFuZ2VTZWFyY2hLZXkgQCJBWEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSIKKyNlbmRpZgorCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUZyYW1lU2VhcmNoS2V5IEAiQVhGcmFtZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
R3JhcGhpY1NlYXJjaEtleSBAIkFYR3JhcGhpY1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsMVNlYXJjaEtleSIK
KyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXkK
KyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSBAIkFYSGVhZGlu
Z0xldmVsMlNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDNTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1Nl
YXJjaEtleSBAIkFYSGVhZGluZ0xldmVsM1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSIKKyNl
bmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSBAIkFYSGVhZGluZ0xl
dmVsNVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdM
ZXZlbDZTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJj
aEtleSBAIkFYSGVhZGluZ0xldmVsNlNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSBAIkFYSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtl
eSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSBAIkFYSGVhZGluZ1NlYXJjaEtl
eSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5
CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5IEAiQVhIaWdobGln
aHRlZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUl0YWxpY0Zv
bnRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSBA
IkFYSXRhbGljRm9udFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUxhbmRtYXJrU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNo
S2V5IEAiQVhMYW5kbWFya1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eUxpbmtTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSBA
IkFYTGlua1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpc3RT
ZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSBAIkFYTGlzdFNl
YXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFy
Y2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleSBAIkFYTGl2
ZVJlZ2lvblNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eU1pc3Nw
ZWxsZWRXb3JkU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRXb3Jk
U2VhcmNoS2V5IEAiQVhNaXNzcGVsbGVkV29yZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
T3V0bGluZVNlYXJjaEtleSBAIkFYT3V0bGluZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlQbGFpblRleHRTZWFyY2hLZXkgQCJBWFBsYWluVGV4dFNlYXJjaEtleSIKKyNlbmRpZgorCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSBAIkFYUmFkaW9Hcm91cFNlYXJjaEtleSIKKyNl
bmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5CisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5IEAiQVhTYW1lVHlwZVNlYXJjaEtleSIK
KyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleSBAIkFYU3RhdGljVGV4dFNl
YXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2Vh
cmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5IEAiQVhT
dHlsZUNoYW5nZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRh
YmxlU2FtZUxldmVsU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxl
dmVsU2VhcmNoS2V5IEAiQVhUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eVRhYmxlU2VhcmNoS2V5IEAiQVhUYWJsZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlU
ZXh0RmllbGRTZWFyY2hLZXkgQCJBWFRleHRGaWVsZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlVbmRlcmxpbmVTZWFyY2hLZXkgQCJBWFVuZGVybGluZVNlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXkKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSBAIkFYVW52aXNpdGVkTGlua1Nl
YXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2Vh
cmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5IEAiQVhW
aXNpdGVkTGlua1NlYXJjaEtleSIKKyNlbmRpZgorCisvLyBTZWFyY2gKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5SW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUltbWVkaWF0ZURlc2NlbmRhbnRzT25seSBAIkFYSW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5Igor
I2VuZGlmCisKIHN0YXRpYyBOU0FycmF5ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYg
cGFpcnMsIE5TU3RyaW5nICpzdWJzY3JpcHRLZXksIE5TU3RyaW5nICpzdXBlcnNjcmlwdEtleSkK
IHsKICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6cGFpcnMuc2l6ZSgpXTsKQEAgLTgxLDYgKzI0MywyNSBAQAogICAgIHJldHVybiBh
cnJheTsKIH0KIAorCitOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9yKQoreworICAgIE5T
TXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2
ZWN0b3Iuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogdmVjdG9yKSB7Cisg
ICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gY2hpbGQtPndy
YXBwZXIoKTsKKyAgICAgICAgQVNTRVJUKHdyYXBwZXIpOworICAgICAgICBpZiAod3JhcHBlcikg
eworICAgICAgICAgICAgLy8gd2Ugd2FudCB0byByZXR1cm4gdGhlIGF0dGFjaG1lbnQgdmlldyBp
bnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdHRhY2htZW50LgorICAgICAg
ICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMgaW4gdGhlIEFYIGhp
ZXJhcmNoeQorICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBl
ciBhdHRhY2htZW50Vmlld10pCisgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbd3Jh
cHBlciBhdHRhY2htZW50Vmlld11dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IFthcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IFtbYXJyYXkgY29weV0gYXV0b3JlbGVhc2VdOworfQorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlCiAKIC0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0
eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmplY3QKQEAgLTQ1NSw2ICs2MzYsMTI3
IEBACiAgICAgfQogfQogCisjcHJhZ21hIG1hcmsgU2VhcmNoIGhlbHBlcnMKKwordHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgQWNjZXNzaWJpbGl0eVNlYXJjaEtleT4gQWNjZXNzaWJpbGl0eVNlYXJj
aEtleU1hcDsKKworc3RydWN0IFNlYXJjaEtleUVudHJ5IHsKKyAgICBTdHJpbmcga2V5OworICAg
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgdmFsdWU7Cit9OworCitzdGF0aWMgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleU1hcCogY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpCit7CisgICAg
Y29uc3QgU2VhcmNoS2V5RW50cnkgc2VhcmNoS2V5c1tdID0geworICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUFueVR5cGVTZWFyY2hLZXksIEFueVR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LCBCbG9ja3F1b3RlU2Ft
ZUxldmVsU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNl
YXJjaEtleSwgQmxvY2txdW90ZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUJvbGRGb250U2VhcmNoS2V5LCBCb2xkRm9udFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSwgQnV0dG9uU2VhcmNoS2V5IH0sCisgICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXksIENoZWNrQm94U2VhcmNoS2V5IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSwgQ29udHJvbFNlYXJjaEtl
eSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXksIERp
ZmZlcmVudFR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q2hh
bmdlU2VhcmNoS2V5LCBGb250Q2hhbmdlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5LCBGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleSwgRnJhbWVTZWFyY2hL
ZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5LCBHcmFwaGlj
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNlYXJj
aEtleSwgSGVhZGluZ0xldmVsMVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwz
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNFNlYXJj
aEtleSwgSGVhZGluZ0xldmVsNFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw2
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZlbFNl
YXJjaEtleSwgSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUhlYWRpbmdTZWFyY2hLZXksIEhlYWRpbmdTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIaWdobGlnaHRlZFNlYXJjaEtleSwgSGlnaGxpZ2h0ZWRTZWFyY2hLZXkg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5LCBJdGFsaWNG
b250U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hL
ZXksIExhbmRtYXJrU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlua1Nl
YXJjaEtleSwgTGlua1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpc3RT
ZWFyY2hLZXksIExpc3RTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXZl
UmVnaW9uU2VhcmNoS2V5LCBMaXZlUmVnaW9uU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXksIE1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVNlYXJjaEtleSwgT3V0bGluZVNl
YXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSwg
UGxhaW5UZXh0U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91
cFNlYXJjaEtleSwgUmFkaW9Hcm91cFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eVNhbWVUeXBlU2VhcmNoS2V5LCBTYW1lVHlwZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXksIFN0YXRpY1RleHRTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwgU3R5bGVDaGFu
Z2VTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNl
YXJjaEtleSwgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlUYWJsZVNlYXJjaEtleSwgVGFibGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXksIFRleHRGaWVsZFNlYXJjaEtleSB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSwgVW5kZXJsaW5lU2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSwgVW52
aXNpdGVkTGlua1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRM
aW5rU2VhcmNoS2V5LCBWaXNpdGVkTGlua1NlYXJjaEtleSB9CisgICAgfTsKKyAgICAKKyAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleU1hcDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgoc2VhcmNoS2V5cyk7IGkrKykKKyAgICAgICAgc2VhcmNoS2V5TWFwLT5zZXQoc2VhcmNoS2V5
c1tpXS5rZXksIHNlYXJjaEtleXNbaV0udmFsdWUpOworICAgIAorICAgIHJldHVybiBzZWFyY2hL
ZXlNYXA7Cit9CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJjaEtleTsKKyAgICAKKyAgICBz
dGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gY3Jl
YXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOworICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXkgc2VhcmNoS2V5ID0gc2VhcmNoS2V5TWFwLT5nZXQodmFsdWUpOyAgICAKKyAgICByZXR1cm4g
c2VhcmNoS2V5ID8gc2VhcmNoS2V5IDogQW55VHlwZVNlYXJjaEtleTsKK30KKworQWNjZXNzaWJp
bGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFBy
ZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlKQoreworICAgIE5TU3RyaW5nICpkaXJlY3Rpb25QYXJhbWV0ZXIgPSBb
cGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWERpcmVjdGlvbiJdOworICAg
IE5TTnVtYmVyICppbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5SW1tZWRpYXRlRGVzY2Vu
ZGFudHNPbmx5XTsKKyAgICBOU051bWJlciAqcmVzdWx0c0xpbWl0UGFyYW1ldGVyID0gW3BhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKKyAgICBO
U1N0cmluZyAqc2VhcmNoVGV4dFBhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9i
amVjdEZvcktleTpAIkFYU2VhcmNoVGV4dCJdOworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSAqc3RhcnRFbGVtZW50UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKKyAgICBOU051bWJlciAqdmlzaWJs
ZU9ubHlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJB
WFZpc2libGVPbmx5Il07CisgICAgaWQgc2VhcmNoS2V5UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXTsKKyAgICAKKyAgICBBY2Nl
c3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFNlYXJjaERpcmVjdGlvbk5leHQ7
CisgICAgaWYgKFtkaXJlY3Rpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKKyAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBhcmFtZXRlciBpc0VxdWFsVG9T
dHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IFNlYXJjaERpcmVjdGlvbk5leHQgOiBTZWFyY2hE
aXJlY3Rpb25QcmV2aW91czsKKyAgICAKKyAgICBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25s
eSA9IGZhbHNlOworICAgIGlmIChbaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFyYW1ldGVyIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIGltbWVkaWF0ZURlc2NlbmRh
bnRzT25seSA9IFtpbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgYm9vbFZhbHVlXTsK
KyAgICAKKyAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQgPSAwOworICAgIGlmIChbcmVzdWx0c0xp
bWl0UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJl
c3VsdHNMaW1pdCA9IFtyZXN1bHRzTGltaXRQYXJhbWV0ZXIgdW5zaWduZWRJbnRWYWx1ZV07Cisg
ICAgCisgICAgU3RyaW5nIHNlYXJjaFRleHQ7CisgICAgaWYgKFtzZWFyY2hUZXh0UGFyYW1ldGVy
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHNlYXJjaFRleHQgPSBz
ZWFyY2hUZXh0UGFyYW1ldGVyOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0
RWxlbWVudCA9IG51bGxwdHI7CisgICAgaWYgKFtzdGFydEVsZW1lbnRQYXJhbWV0ZXIgaXNLaW5k
T2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGNsYXNzXV0pCisgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IFtzdGFydEVsZW1lbnRQYXJhbWV0ZXIgYWNjZXNzaWJpbGl0eU9i
amVjdF07CisgICAgCisgICAgYm9vbCB2aXNpYmxlT25seSA9IGZhbHNlOworICAgIGlmIChbdmlz
aWJsZU9ubHlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAg
ICAgdmlzaWJsZU9ubHkgPSBbdmlzaWJsZU9ubHlQYXJhbWV0ZXIgYm9vbFZhbHVlXTsKKyAgICAK
KyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3JpdGVyaWEgPSBBY2Nlc3NpYmlsaXR5
U2VhcmNoQ3JpdGVyaWEoc3RhcnRFbGVtZW50LCBkaXJlY3Rpb24sIHNlYXJjaFRleHQsIHJlc3Vs
dHNMaW1pdCwgdmlzaWJsZU9ubHksIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7CisgICAgCisg
ICAgaWYgKFtzZWFyY2hLZXlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy5hcHBlbmQoYWNjZXNzaWJpbGl0eVNlYXJj
aEtleUZvclN0cmluZyhzZWFyY2hLZXlQYXJhbWV0ZXIpKTsKKyAgICBlbHNlIGlmIChbc2VhcmNo
S2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAgICAgICBz
aXplX3Qgc2VhcmNoS2V5Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFtzZWFyY2hLZXlQYXJh
bWV0ZXIgY291bnRdKTsKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNlYXJjaEtleUNvdW50KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzZWFyY2hLZXlDb3VudDsgKytpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqc2VhcmNoS2V5
ID0gW3NlYXJjaEtleVBhcmFtZXRlciBvYmplY3RBdEluZGV4OmldOworICAgICAgICAgICAgaWYg
KFtzZWFyY2hLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAg
ICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnVuY2hlY2tlZEFwcGVuZChhY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5Rm9yU3RyaW5nKHNlYXJjaEtleSkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHJldHVybiBjcml0ZXJpYTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklM
SVRZKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlz
aW9uIDIxMTMyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsMTAgKzI4
Miw2IEBACiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFSSUFSb3dDb3VudEF0dHJpYnV0ZSBAIkFY
QVJJQVJvd0NvdW50IgogI2VuZGlmCiAKLS8vIFNlYXJjaAotI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlJbW1lZGlhdGVEZXNjZW5kYW50c09ubHkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5IEAiQVhJbW1lZGlhdGVEZXNjZW5kYW50c09ubHkiCi0jZW5kaWYK
IAogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Q291bnRGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhVSUVsZW1l
bnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZSIKQEAgLTI5NSwxNjMgKzI5MSw2IEBACiAjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVk
QXR0cmlidXRlIEAiQVhVSUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlIgogI2VuZGlmCiAKLS8v
IFNlYXJjaCBLZXlzCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSBAIkFYQW55VHlwZVNlYXJjaEtl
eSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxT
ZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJj
aEtleSBAIkFYQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5QmxvY2txdW90ZVNlYXJjaEtleSBAIkFYQmxvY2txdW90ZVNlYXJjaEtleSIKLSNlbmRpZgot
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5IEAiQVhCb2xkRm9udFNlYXJjaEtleSIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXkgQCJBWEJ1dHRvblNlYXJjaEtleSIKLSNlbmRpZgot
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5IEAiQVhDaGVja0JveFNlYXJjaEtleSIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXkKLSNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSBAIkFYQ29udHJvbFNlYXJjaEtleSIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXkKLSNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSBAIkFYRGlmZmVyZW50VHlw
ZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VT
ZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSBAIkFY
Rm9udENoYW5nZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZv
bnRDb2xvckNoYW5nZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JD
aGFuZ2VTZWFyY2hLZXkgQCJBWEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSIKLSNlbmRpZgotCi0j
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUZyYW1lU2VhcmNoS2V5IEAiQVhGcmFtZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
R3JhcGhpY1NlYXJjaEtleSBAIkFYR3JhcGhpY1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsMVNlYXJjaEtleSIK
LSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXkK
LSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSBAIkFYSGVhZGlu
Z0xldmVsMlNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDNTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1Nl
YXJjaEtleSBAIkFYSGVhZGluZ0xldmVsM1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSIKLSNl
bmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSBAIkFYSGVhZGluZ0xl
dmVsNVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdM
ZXZlbDZTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJj
aEtleSBAIkFYSGVhZGluZ0xldmVsNlNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSBAIkFYSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtl
eSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSBAIkFYSGVhZGluZ1NlYXJjaEtl
eSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5
Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5IEAiQVhIaWdobGln
aHRlZFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUl0YWxpY0Zv
bnRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSBA
IkFYSXRhbGljRm9udFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUxhbmRtYXJrU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNo
S2V5IEAiQVhMYW5kbWFya1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eUxpbmtTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSBA
IkFYTGlua1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpc3RT
ZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSBAIkFYTGlzdFNl
YXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFy
Y2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleSBAIkFYTGl2
ZVJlZ2lvblNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eU1pc3Nw
ZWxsZWRXb3JkU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRXb3Jk
U2VhcmNoS2V5IEAiQVhNaXNzcGVsbGVkV29yZFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
T3V0bGluZVNlYXJjaEtleSBAIkFYT3V0bGluZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlQbGFpblRleHRTZWFyY2hLZXkgQCJBWFBsYWluVGV4dFNlYXJjaEtleSIKLSNlbmRpZgotCi0j
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSBAIkFYUmFkaW9Hcm91cFNlYXJjaEtleSIKLSNl
bmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5Ci0jZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5IEAiQVhTYW1lVHlwZVNlYXJjaEtleSIK
LSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleSBAIkFYU3RhdGljVGV4dFNl
YXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2Vh
cmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5IEAiQVhT
dHlsZUNoYW5nZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRh
YmxlU2FtZUxldmVsU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxl
dmVsU2VhcmNoS2V5IEAiQVhUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eVRhYmxlU2VhcmNoS2V5IEAiQVhUYWJsZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlU
ZXh0RmllbGRTZWFyY2hLZXkgQCJBWFRleHRGaWVsZFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlVbmRlcmxpbmVTZWFyY2hLZXkgQCJBWFVuZGVybGluZVNlYXJjaEtleSIKLSNlbmRpZgot
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXkKLSNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSBAIkFYVW52aXNpdGVkTGlua1Nl
YXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2Vh
cmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5IEAiQVhW
aXNpdGVkTGlua1NlYXJjaEtleSIKLSNlbmRpZgotCiAvLyBUZXh0IG1hcmtlcnMKICNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUgQCJBWEVuZFRleHRNYXJrZXJGb3JCb3VuZHMiCkBAIC02MzIsMTI5ICs0
NzEsNiBAQAogICAgIHJldHVybiBJbnRSZWN0KHN0YXJ0UG9pbnQueCgpLCBzdGFydFBvaW50Lnko
KSwgZW5kUG9pbnQueCgpIC0gc3RhcnRQb2ludC54KCksIGVuZFBvaW50LnkoKSAtIHN0YXJ0UG9p
bnQueSgpKTsKIH0KIAotI3ByYWdtYSBtYXJrIFNlYXJjaCBoZWxwZXJzCi0KLXR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlNYXA7Ci0KLXN0cnVjdCBTZWFyY2hLZXlFbnRyeSB7Ci0gICAgU3RyaW5nIGtleTsKLSAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHZhbHVlOwotfTsKLQotc3RhdGljIEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlNYXAqIGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKQotewotICAgIGNv
bnN0IFNlYXJjaEtleUVudHJ5IHNlYXJjaEtleXNbXSA9IHsKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlBbnlUeXBlU2VhcmNoS2V5LCBBbnlUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSwgQmxvY2txdW90ZVNhbWVM
ZXZlbFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFy
Y2hLZXksIEJsb2NrcXVvdGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlC
b2xkRm9udFNlYXJjaEtleSwgQm9sZEZvbnRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlCdXR0b25TZWFyY2hLZXksIEJ1dHRvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5LCBDaGVja0JveFNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBEaWZm
ZXJlbnRUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5n
ZVNlYXJjaEtleSwgRm9udENoYW5nZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSwgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEZyYW1lU2VhcmNoS2V5
IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgR3JhcGhpY1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hL
ZXksIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWwyU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgSGVhZGluZ0xldmVsM1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hL
ZXksIEhlYWRpbmdMZXZlbDRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleSwgSGVhZGluZ0xldmVsNlNl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFy
Y2hLZXksIEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlIZWFkaW5nU2VhcmNoS2V5LCBIZWFkaW5nU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXksIEhpZ2hsaWdodGVkU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgSXRhbGljRm9u
dFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5
LCBMYW5kbWFya1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFy
Y2hLZXksIExpbmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0U2Vh
cmNoS2V5LCBMaXN0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJl
Z2lvblNlYXJjaEtleSwgTGl2ZVJlZ2lvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5LCBNaXNzcGVsbGVkV29yZFNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXksIE91dGxpbmVTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXksIFBs
YWluVGV4dFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBT
ZWFyY2hLZXksIFJhZGlvR3JvdXBTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlTYW1lVHlwZVNlYXJjaEtleSwgU2FtZVR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5LCBTdGF0aWNUZXh0U2VhcmNoS2V5IH0sCi0g
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXksIFN0eWxlQ2hhbmdl
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFy
Y2hLZXksIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5VGFibGVTZWFyY2hLZXksIFRhYmxlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5LCBUZXh0RmllbGRTZWFyY2hLZXkgfSwKLSAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVTZWFyY2hLZXksIFVuZGVybGluZVNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIFVudmlz
aXRlZExpbmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlu
a1NlYXJjaEtleSwgVmlzaXRlZExpbmtTZWFyY2hLZXkgfQotICAgIH07Ci0gICAgCi0gICAgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gbmV3IEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlNYXA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHNlYXJjaEtleXMpOyBpKyspCi0gICAgICAgIHNlYXJjaEtleU1hcC0+c2V0KHNlYXJjaEtleXNb
aV0ua2V5LCBzZWFyY2hLZXlzW2ldLnZhbHVlKTsKLSAgICAKLSAgICByZXR1cm4gc2VhcmNoS2V5
TWFwOwotfQotCi1zdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEFueVR5cGVTZWFyY2hLZXk7Ci0gICAgCi0gICAgc3Rh
dGljIGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIHNlYXJjaEtleU1hcCA9IGNyZWF0
ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5IHNlYXJjaEtleSA9IHNlYXJjaEtleU1hcC0+Z2V0KHZhbHVlKTsKLSAgICAKLSAgICBy
ZXR1cm4gc2VhcmNoS2V5ID8gc2VhcmNoS2V5IDogQW55VHlwZVNlYXJjaEtleTsKLX0KLQotc3Rh
dGljIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlv
bmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSkKLXsKLSAgICBOU1N0cmluZyAqZGlyZWN0aW9u
UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhEaXJl
Y3Rpb24iXTsKLSAgICBOU051bWJlciAqaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFyYW1ldGVy
ID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eUlt
bWVkaWF0ZURlc2NlbmRhbnRzT25seV07Ci0gICAgTlNOdW1iZXIgKnJlc3VsdHNMaW1pdFBhcmFt
ZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYUmVzdWx0c0xp
bWl0Il07Ci0gICAgTlNTdHJpbmcgKnNlYXJjaFRleHRQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWFNlYXJjaFRleHQiXTsKLSAgICBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciAqc3RhcnRFbGVtZW50UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKLSAgICBOU051bWJl
ciAqdmlzaWJsZU9ubHlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RG
b3JLZXk6QCJBWFZpc2libGVPbmx5Il07Ci0gICAgaWQgc2VhcmNoS2V5UGFyYW1ldGVyID0gW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXTsKLSAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFNlYXJjaERpcmVj
dGlvbk5leHQ7Ci0gICAgaWYgKFtkaXJlY3Rpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBhcmFtZXRlciBp
c0VxdWFsVG9TdHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IFNlYXJjaERpcmVjdGlvbk5leHQg
OiBTZWFyY2hEaXJlY3Rpb25QcmV2aW91czsKLSAgICAKLSAgICBib29sIGltbWVkaWF0ZURlc2Nl
bmRhbnRzT25seSA9IGZhbHNlOwotICAgIGlmIChbaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFy
YW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIGltbWVkaWF0
ZURlc2NlbmRhbnRzT25seSA9IFtpbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgYm9v
bFZhbHVlXTsKLSAgICAKLSAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQgPSAwOwotICAgIGlmIChb
cmVzdWx0c0xpbWl0UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0g
ICAgICAgIHJlc3VsdHNMaW1pdCA9IFtyZXN1bHRzTGltaXRQYXJhbWV0ZXIgdW5zaWduZWRJbnRW
YWx1ZV07Ci0gICAgCi0gICAgU3RyaW5nIHNlYXJjaFRleHQ7Ci0gICAgaWYgKFtzZWFyY2hUZXh0
UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIHNlYXJj
aFRleHQgPSBzZWFyY2hUZXh0UGFyYW1ldGVyOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHN0YXJ0RWxlbWVudCA9IG51bGxwdHI7Ci0gICAgaWYgKFtzdGFydEVsZW1lbnRQYXJhbWV0
ZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSkK
LSAgICAgICAgc3RhcnRFbGVtZW50ID0gW3N0YXJ0RWxlbWVudFBhcmFtZXRlciBhY2Nlc3NpYmls
aXR5T2JqZWN0XTsKLSAgICAKLSAgICBib29sIHZpc2libGVPbmx5ID0gZmFsc2U7Ci0gICAgaWYg
KFt2aXNpYmxlT25seVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQot
ICAgICAgICB2aXNpYmxlT25seSA9IFt2aXNpYmxlT25seVBhcmFtZXRlciBib29sVmFsdWVdOwot
ICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjcml0ZXJpYSA9IEFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYShzdGFydEVsZW1lbnQsIGRpcmVjdGlvbiwgc2VhcmNoVGV4dCwg
cmVzdWx0c0xpbWl0LCB2aXNpYmxlT25seSwgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KTsKLSAg
ICAKLSAgICBpZiAoW3NlYXJjaEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQotICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLmFwcGVuZChhY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5Rm9yU3RyaW5nKHNlYXJjaEtleVBhcmFtZXRlcikpOwotICAgIGVsc2UgaWYgKFtz
ZWFyY2hLZXlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7Ci0gICAg
ICAgIHNpemVfdCBzZWFyY2hLZXlDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oW3NlYXJjaEtl
eVBhcmFtZXRlciBjb3VudF0pOwotICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2VhcmNoS2V5Q291bnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNlYXJjaEtleUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpzZWFy
Y2hLZXkgPSBbc2VhcmNoS2V5UGFyYW1ldGVyIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgICAg
ICBpZiAoW3NlYXJjaEtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAg
ICAgICAgICAgIGNyaXRlcmlhLnNlYXJjaEtleXMudW5jaGVja2VkQXBwZW5kKGFjY2Vzc2liaWxp
dHlTZWFyY2hLZXlGb3JTdHJpbmcoc2VhcmNoS2V5KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIGNyaXRlcmlhOwotfQotCiAjcHJhZ21hIG1hcmsgU2VsZWN0IHRleHQgaGVs
cGVycwogCiBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSBhY2Nlc3NpYmls
aXR5U2VsZWN0VGV4dENyaXRlcmlhRm9yQ3JpdGVyaWFQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNv
bnN0IE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSkKQEAgLTE5NTAsMjQgKzE2
NjYsNiBAQAogICAgIH0KIH0KIAotc3RhdGljIE5TTXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0Fy
cmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgdmVjdG9yKQotewotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IGNoaWxkIDogdmVjdG9yKSB7Ci0gICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiB3cmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgQVNTRVJUKHdyYXBwZXIpOwot
ICAgICAgICBpZiAod3JhcHBlcikgewotICAgICAgICAgICAgLy8gd2Ugd2FudCB0byByZXR1cm4g
dGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRo
ZSBhdHRhY2htZW50LgotICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9t
ZSBlcnJvcnMgaW4gdGhlIEFYIGhpZXJhcmNoeQotICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0F0
dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpbd3JhcHBlciBhdHRhY2htZW50Vmlld11dOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiBzdGF0aWMgTlNNdXRhYmxlQXJyYXkg
KmNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCiB7
CiAgICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OnZlY3Rvci5zaXplKCldOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMzI4KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MDEtMzAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBB
WDogZW5hYmxlIHNlYXJjaCBwcmVkaWNhdGlvbiBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwMjUxMzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBiYXNpYyBzZWFyY2hpbmcgc21va2UgdGVzdCB0byBlbnN1cmUgZnVuZGFtZW50
YWxzIHdvcmsgb24gaU9TLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9y
L2lvcy1zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLmh0bWw6IEFkZGVk
LgorCiAyMDE3LTAxLTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgog
CiAgICAgICAgIExpZnQgdGVtcGxhdGUgZXNjYXBlIHNlcXVlbmNlIHJlc3RyaWN0aW9ucyBpbiB0
YWdnZWQgdGVtcGxhdGVzCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvaW9zLXNlYXJjaC1wcmVkaWNhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pb3Mtc2VhcmNoLXByZWRpY2F0
ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACitzdGFydAorZmlyc3QgaGVhZGluZyBsZXZlbCAxCisK
K3NlY29uZCBoZWFkaW5nIGxldmVsIDEKKworaGVhZGluZyBsZXZlbCAyCisKK2hlYWRpbmcgbGV2
ZWwgMworCitoZWFkaW5nIGxldmVsIDQKKworaGVhZGluZyBsZXZlbCA1CisKK2hlYWRpbmcgbGV2
ZWwgNgorCitUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBl
bGVtZW50cyBieSBrZXkgb3IgdGV4dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFi
ZWw6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgMicKK1BBU1MgcmVz
dWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6IGhlYWRp
bmcgbGV2ZWwgMycKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRp
b24gaXMgJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgNCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgNScKK1BB
U1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6
IGhlYWRpbmcgbGV2ZWwgNicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvaW9zLXNlYXJjaC1wcmVkaWNhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW9zLXNlYXJjaC1wcmVkaWNhdGUuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW9z
LXNlYXJjaC1wcmVkaWNhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxidXR0b24+c3RhcnQ8L2J1dHRvbj4K
KworPGgxPmZpcnN0IGhlYWRpbmcgbGV2ZWwgMTwvaDE+Cis8aDE+c2Vjb25kIGhlYWRpbmcgbGV2
ZWwgMTwvaDE+Cis8aDI+aGVhZGluZyBsZXZlbCAyPC9oMj4KKzxoMz5oZWFkaW5nIGxldmVsIDM8
L2gzPgorPGg0PmhlYWRpbmcgbGV2ZWwgNDwvaDQ+Cis8aDU+aGVhZGluZyBsZXZlbCA1PC9oNT4K
KzxoNj5oZWFkaW5nIGxldmVsIDY8L2g2PgorCisgICAgCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50
cyBieSBrZXkgb3IgdGV4dC4iKTsKKyAgICAKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmtlZXBXZWJIaXN0b3J5KCk7
CisgICAgICAgIAorICAgICAgICB2YXIgY29udGFpbmVyRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLnJvb3RFbGVtZW50OworICAgICAgICB2YXIgc3RhcnRFbGVtZW50OworICAgICAg
ICB2YXIgcmVzdWx0RWxlbWVudDsKKworICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDEuCisgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1l
bnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYSGVh
ZGluZ0xldmVsMVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5kZXNjcmlwdGlvbiIsICInQVhMYWJlbDogZmlyc3Qg
aGVhZGluZyBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCAy
LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWlu
ZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUs
ICJBWEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24iLCAiJ0FYTGFiZWw6
IGhlYWRpbmcgbGV2ZWwgMiciKTsKKyAgICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwg
My4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVl
LCAiQVhIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmRlc2NyaXB0aW9uIiwgIidBWExhYmVs
OiBoZWFkaW5nIGxldmVsIDMnIik7CisgICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVs
IDQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1
ZSwgIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5kZXNjcmlwdGlvbiIsICInQVhMYWJl
bDogaGVhZGluZyBsZXZlbCA0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZl
bCA1LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250
YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRy
dWUsICJBWEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24iLCAiJ0FYTGFi
ZWw6IGhlYWRpbmcgbGV2ZWwgNSciKTsKKyAgICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2
ZWwgNi4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0
cnVlLCAiQVhIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmRlc2NyaXB0aW9uIiwgIidBWExh
YmVsOiBoZWFkaW5nIGxldmVsIDYnIik7ICAgICAgICAKKyAgICB9CisgICAgCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300133</attachid>
            <date>2017-01-30 12:21:48 -0800</date>
            <delta_ts>2017-01-30 12:24:56 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>60332</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTM4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAxLTMwICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGVuYWJsZSBzZWFy
Y2ggcHJlZGljYXRpb24gZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY3NTU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDI1MTM2Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRo
ZSBjb2RlIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eSBzZWFyY2hpbmcgaW50byBhIHNoYXJlZCBw
bGFjZSBzbyBpdCBjYW4gYmUgdXNlZCBieSBpT1MuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJp
bGl0eS9pb3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Rmlu
ZE1hdGNoaW5nT2JqZWN0czpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06CisgICAgICAgIChjb252ZXJ0
VG9OU0FycmF5KToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXApOgor
ICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyk6CisgICAgICAgIChhY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlN
YXApOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQ
cmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKGNvbnZl
cnRUb05TQXJyYXkpOiBEZWxldGVkLgorCiAyMDE3LTAxLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGVsZW1lbnRzIHNob3VsZCBub3Qg
cnViYmVyLWJhbmQgaW4gV0syLCBub3IgcmVtYWluIGF0IG5lZ2F0aXZlIG9mZnNldHMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyMTEzMjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg4Nyw2ICsxODg3LDE0IEBACiAg
ICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNBcnJheTxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciAqPiAqKWFjY2Vzc2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOihOU0RpY3Rpb25hcnkg
KilwYXJhbWV0ZXJzCit7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNyaXRlcmlh
ID0gYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZShwYXJhbWV0ZXJzKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKKyAgICBtX29iamVjdC0+ZmluZE1hdGNo
aW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOworICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KHJlc3VsdHMpOworfQorCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlFbGVtZW50RGlkQmVjb21l
Rm9jdXNlZAogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAkocmV2aXNpb24gMjEx
MzI4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDExIEBACiAK
ICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFjY2Vzc2li
aWxpdHlPYmplY3Q7CitzdHJ1Y3QgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhOwogY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBQYXRoOwpAQCAtNjcsNiArNzAsOSBA
QAogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlwdFBhaXJzOwogLSAoTlNB
cnJheSAqKWFjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0UGFpcnM7CiAKK2V4dGVybiBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
Rm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShjb25zdCBOU0RpY3Rpb25h
cnkgKik7CitleHRlcm4gTlNBcnJheSAqY29udmVydFRvTlNBcnJheShjb25zdCBXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKKwogQGVu
ZAogCiAjZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0JKHJldmlzaW9uIDIxMTMy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMTY4IEBACiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKy8v
IFNlYXJjaCBLZXlzCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSBAIkFYQW55VHlwZVNlYXJjaEtl
eSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxT
ZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJj
aEtleSBAIkFYQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5QmxvY2txdW90ZVNlYXJjaEtleSBAIkFYQmxvY2txdW90ZVNlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5IEAiQVhCb2xkRm9udFNlYXJjaEtleSIKKyNlbmRp
ZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleQorI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXkgQCJBWEJ1dHRvblNlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5IEAiQVhDaGVja0JveFNlYXJjaEtleSIKKyNlbmRp
ZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXkKKyNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSBAIkFYQ29udHJvbFNlYXJjaEtleSIKKyNlbmRp
ZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXkKKyNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSBAIkFYRGlmZmVyZW50VHlw
ZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VT
ZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSBAIkFY
Rm9udENoYW5nZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZv
bnRDb2xvckNoYW5nZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JD
aGFuZ2VTZWFyY2hLZXkgQCJBWEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSIKKyNlbmRpZgorCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUZyYW1lU2VhcmNoS2V5IEAiQVhGcmFtZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
R3JhcGhpY1NlYXJjaEtleSBAIkFYR3JhcGhpY1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsMVNlYXJjaEtleSIK
KyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXkK
KyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSBAIkFYSGVhZGlu
Z0xldmVsMlNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDNTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1Nl
YXJjaEtleSBAIkFYSGVhZGluZ0xldmVsM1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSIKKyNl
bmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSBAIkFYSGVhZGluZ0xl
dmVsNVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdM
ZXZlbDZTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJj
aEtleSBAIkFYSGVhZGluZ0xldmVsNlNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSBAIkFYSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtl
eSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSBAIkFYSGVhZGluZ1NlYXJjaEtl
eSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5
CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5IEAiQVhIaWdobGln
aHRlZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUl0YWxpY0Zv
bnRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSBA
IkFYSXRhbGljRm9udFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUxhbmRtYXJrU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNo
S2V5IEAiQVhMYW5kbWFya1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eUxpbmtTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSBA
IkFYTGlua1NlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpc3RT
ZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSBAIkFYTGlzdFNl
YXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFy
Y2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleSBAIkFYTGl2
ZVJlZ2lvblNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eU1pc3Nw
ZWxsZWRXb3JkU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRXb3Jk
U2VhcmNoS2V5IEAiQVhNaXNzcGVsbGVkV29yZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
T3V0bGluZVNlYXJjaEtleSBAIkFYT3V0bGluZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlQbGFpblRleHRTZWFyY2hLZXkgQCJBWFBsYWluVGV4dFNlYXJjaEtleSIKKyNlbmRpZgorCisj
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSBAIkFYUmFkaW9Hcm91cFNlYXJjaEtleSIKKyNl
bmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5CisjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5IEAiQVhTYW1lVHlwZVNlYXJjaEtleSIK
KyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleSBAIkFYU3RhdGljVGV4dFNl
YXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2Vh
cmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5IEAiQVhT
dHlsZUNoYW5nZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRh
YmxlU2FtZUxldmVsU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxl
dmVsU2VhcmNoS2V5IEAiQVhUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eVRhYmxlU2VhcmNoS2V5IEAiQVhUYWJsZVNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlU
ZXh0RmllbGRTZWFyY2hLZXkgQCJBWFRleHRGaWVsZFNlYXJjaEtleSIKKyNlbmRpZgorCisjaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlVbmRlcmxpbmVTZWFyY2hLZXkgQCJBWFVuZGVybGluZVNlYXJjaEtleSIKKyNlbmRpZgor
CisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXkKKyNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSBAIkFYVW52aXNpdGVkTGlua1Nl
YXJjaEtleSIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2Vh
cmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5IEAiQVhW
aXNpdGVkTGlua1NlYXJjaEtleSIKKyNlbmRpZgorCisvLyBTZWFyY2gKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5SW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUltbWVkaWF0ZURlc2NlbmRhbnRzT25seSBAIkFYSW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5Igor
I2VuZGlmCisKIHN0YXRpYyBOU0FycmF5ICpjb252ZXJ0TWF0aFBhaXJzVG9OU0FycmF5KGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYg
cGFpcnMsIE5TU3RyaW5nICpzdWJzY3JpcHRLZXksIE5TU3RyaW5nICpzdXBlcnNjcmlwdEtleSkK
IHsKICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6cGFpcnMuc2l6ZSgpXTsKQEAgLTgxLDYgKzI0MywyNSBAQAogICAgIHJldHVybiBh
cnJheTsKIH0KIAorCitOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9yKQoreworICAgIE5T
TXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp2
ZWN0b3Iuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogdmVjdG9yKSB7Cisg
ICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gY2hpbGQtPndy
YXBwZXIoKTsKKyAgICAgICAgQVNTRVJUKHdyYXBwZXIpOworICAgICAgICBpZiAod3JhcHBlcikg
eworICAgICAgICAgICAgLy8gd2Ugd2FudCB0byByZXR1cm4gdGhlIGF0dGFjaG1lbnQgdmlldyBp
bnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhdHRhY2htZW50LgorICAgICAg
ICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9tZSBlcnJvcnMgaW4gdGhlIEFYIGhp
ZXJhcmNoeQorICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBl
ciBhdHRhY2htZW50Vmlld10pCisgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbd3Jh
cHBlciBhdHRhY2htZW50Vmlld11dOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IFthcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IFtbYXJyYXkgY29weV0gYXV0b3JlbGVhc2VdOworfQorCiBAaW1wbGVtZW50YXRpb24gV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlCiAKIC0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0
eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmplY3QKQEAgLTQ1NSw2ICs2MzYsMTI3
IEBACiAgICAgfQogfQogCisjcHJhZ21hIG1hcmsgU2VhcmNoIGhlbHBlcnMKKwordHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgQWNjZXNzaWJpbGl0eVNlYXJjaEtleT4gQWNjZXNzaWJpbGl0eVNlYXJj
aEtleU1hcDsKKworc3RydWN0IFNlYXJjaEtleUVudHJ5IHsKKyAgICBTdHJpbmcga2V5OworICAg
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgdmFsdWU7Cit9OworCitzdGF0aWMgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleU1hcCogY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpCit7CisgICAg
Y29uc3QgU2VhcmNoS2V5RW50cnkgc2VhcmNoS2V5c1tdID0geworICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUFueVR5cGVTZWFyY2hLZXksIEFueVR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5LCBCbG9ja3F1b3RlU2Ft
ZUxldmVsU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNl
YXJjaEtleSwgQmxvY2txdW90ZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUJvbGRGb250U2VhcmNoS2V5LCBCb2xkRm9udFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSwgQnV0dG9uU2VhcmNoS2V5IH0sCisgICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXksIENoZWNrQm94U2VhcmNoS2V5IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSwgQ29udHJvbFNlYXJjaEtl
eSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXksIERp
ZmZlcmVudFR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q2hh
bmdlU2VhcmNoS2V5LCBGb250Q2hhbmdlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5LCBGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleSwgRnJhbWVTZWFyY2hL
ZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5LCBHcmFwaGlj
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNlYXJj
aEtleSwgSGVhZGluZ0xldmVsMVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwz
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNFNlYXJj
aEtleSwgSGVhZGluZ0xldmVsNFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw2
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZlbFNl
YXJjaEtleSwgSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUhlYWRpbmdTZWFyY2hLZXksIEhlYWRpbmdTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIaWdobGlnaHRlZFNlYXJjaEtleSwgSGlnaGxpZ2h0ZWRTZWFyY2hLZXkg
fSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5LCBJdGFsaWNG
b250U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hL
ZXksIExhbmRtYXJrU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlua1Nl
YXJjaEtleSwgTGlua1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpc3RT
ZWFyY2hLZXksIExpc3RTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXZl
UmVnaW9uU2VhcmNoS2V5LCBMaXZlUmVnaW9uU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXksIE1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVNlYXJjaEtleSwgT3V0bGluZVNl
YXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSwg
UGxhaW5UZXh0U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91
cFNlYXJjaEtleSwgUmFkaW9Hcm91cFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eVNhbWVUeXBlU2VhcmNoS2V5LCBTYW1lVHlwZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXksIFN0YXRpY1RleHRTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwgU3R5bGVDaGFu
Z2VTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNl
YXJjaEtleSwgVGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlUYWJsZVNlYXJjaEtleSwgVGFibGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXksIFRleHRGaWVsZFNlYXJjaEtleSB9LAorICAgICAg
ICB7IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSwgVW5kZXJsaW5lU2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSwgVW52
aXNpdGVkTGlua1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRM
aW5rU2VhcmNoS2V5LCBWaXNpdGVkTGlua1NlYXJjaEtleSB9CisgICAgfTsKKyAgICAKKyAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleU1hcDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgoc2VhcmNoS2V5cyk7IGkrKykKKyAgICAgICAgc2VhcmNoS2V5TWFwLT5zZXQoc2VhcmNoS2V5
c1tpXS5rZXksIHNlYXJjaEtleXNbaV0udmFsdWUpOworICAgIAorICAgIHJldHVybiBzZWFyY2hL
ZXlNYXA7Cit9CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJjaEtleTsKKyAgICAKKyAgICBz
dGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gY3Jl
YXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCgpOworICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXkgc2VhcmNoS2V5ID0gc2VhcmNoS2V5TWFwLT5nZXQodmFsdWUpOyAgICAKKyAgICByZXR1cm4g
c2VhcmNoS2V5ID8gc2VhcmNoS2V5IDogQW55VHlwZVNlYXJjaEtleTsKK30KKworQWNjZXNzaWJp
bGl0eVNlYXJjaENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFBy
ZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlKQoreworICAgIE5TU3RyaW5nICpkaXJlY3Rpb25QYXJhbWV0ZXIgPSBb
cGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWERpcmVjdGlvbiJdOworICAg
IE5TTnVtYmVyICppbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5SW1tZWRpYXRlRGVzY2Vu
ZGFudHNPbmx5XTsKKyAgICBOU051bWJlciAqcmVzdWx0c0xpbWl0UGFyYW1ldGVyID0gW3BhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKKyAgICBO
U1N0cmluZyAqc2VhcmNoVGV4dFBhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9i
amVjdEZvcktleTpAIkFYU2VhcmNoVGV4dCJdOworICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZSAqc3RhcnRFbGVtZW50UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKKyAgICBOU051bWJlciAqdmlzaWJs
ZU9ubHlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJB
WFZpc2libGVPbmx5Il07CisgICAgaWQgc2VhcmNoS2V5UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXTsKKyAgICAKKyAgICBBY2Nl
c3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFNlYXJjaERpcmVjdGlvbk5leHQ7
CisgICAgaWYgKFtkaXJlY3Rpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKKyAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBhcmFtZXRlciBpc0VxdWFsVG9T
dHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IFNlYXJjaERpcmVjdGlvbk5leHQgOiBTZWFyY2hE
aXJlY3Rpb25QcmV2aW91czsKKyAgICAKKyAgICBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25s
eSA9IGZhbHNlOworICAgIGlmIChbaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFyYW1ldGVyIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIGltbWVkaWF0ZURlc2NlbmRh
bnRzT25seSA9IFtpbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgYm9vbFZhbHVlXTsK
KyAgICAKKyAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQgPSAwOworICAgIGlmIChbcmVzdWx0c0xp
bWl0UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJl
c3VsdHNMaW1pdCA9IFtyZXN1bHRzTGltaXRQYXJhbWV0ZXIgdW5zaWduZWRJbnRWYWx1ZV07Cisg
ICAgCisgICAgU3RyaW5nIHNlYXJjaFRleHQ7CisgICAgaWYgKFtzZWFyY2hUZXh0UGFyYW1ldGVy
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgIHNlYXJjaFRleHQgPSBz
ZWFyY2hUZXh0UGFyYW1ldGVyOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHN0YXJ0
RWxlbWVudCA9IG51bGxwdHI7CisgICAgaWYgKFtzdGFydEVsZW1lbnRQYXJhbWV0ZXIgaXNLaW5k
T2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIGNsYXNzXV0pCisgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IFtzdGFydEVsZW1lbnRQYXJhbWV0ZXIgYWNjZXNzaWJpbGl0eU9i
amVjdF07CisgICAgCisgICAgYm9vbCB2aXNpYmxlT25seSA9IGZhbHNlOworICAgIGlmIChbdmlz
aWJsZU9ubHlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAg
ICAgdmlzaWJsZU9ubHkgPSBbdmlzaWJsZU9ubHlQYXJhbWV0ZXIgYm9vbFZhbHVlXTsKKyAgICAK
KyAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3JpdGVyaWEgPSBBY2Nlc3NpYmlsaXR5
U2VhcmNoQ3JpdGVyaWEoc3RhcnRFbGVtZW50LCBkaXJlY3Rpb24sIHNlYXJjaFRleHQsIHJlc3Vs
dHNMaW1pdCwgdmlzaWJsZU9ubHksIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7CisgICAgCisg
ICAgaWYgKFtzZWFyY2hLZXlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy5hcHBlbmQoYWNjZXNzaWJpbGl0eVNlYXJj
aEtleUZvclN0cmluZyhzZWFyY2hLZXlQYXJhbWV0ZXIpKTsKKyAgICBlbHNlIGlmIChbc2VhcmNo
S2V5UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgeworICAgICAgICBz
aXplX3Qgc2VhcmNoS2V5Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFtzZWFyY2hLZXlQYXJh
bWV0ZXIgY291bnRdKTsKKyAgICAgICAgY3JpdGVyaWEuc2VhcmNoS2V5cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNlYXJjaEtleUNvdW50KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzZWFyY2hLZXlDb3VudDsgKytpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqc2VhcmNoS2V5
ID0gW3NlYXJjaEtleVBhcmFtZXRlciBvYmplY3RBdEluZGV4OmldOworICAgICAgICAgICAgaWYg
KFtzZWFyY2hLZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAg
ICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnVuY2hlY2tlZEFwcGVuZChhY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5Rm9yU3RyaW5nKHNlYXJjaEtleSkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHJldHVybiBjcml0ZXJpYTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklM
SVRZKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlz
aW9uIDIxMTMyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsMTAgKzI4
Miw2IEBACiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFSSUFSb3dDb3VudEF0dHJpYnV0ZSBAIkFY
QVJJQVJvd0NvdW50IgogI2VuZGlmCiAKLS8vIFNlYXJjaAotI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlJbW1lZGlhdGVEZXNjZW5kYW50c09ubHkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5IEAiQVhJbW1lZGlhdGVEZXNjZW5kYW50c09ubHkiCi0jZW5kaWYK
IAogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0
ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Q291bnRGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhVSUVsZW1l
bnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZSIKQEAgLTI5NSwxNjMgKzI5MSw2IEBACiAjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVk
QXR0cmlidXRlIEAiQVhVSUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlIgogI2VuZGlmCiAKLS8v
IFNlYXJjaCBLZXlzCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSBAIkFYQW55VHlwZVNlYXJjaEtl
eSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxT
ZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJj
aEtleSBAIkFYQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5QmxvY2txdW90ZVNlYXJjaEtleSBAIkFYQmxvY2txdW90ZVNlYXJjaEtleSIKLSNlbmRpZgot
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5IEAiQVhCb2xkRm9udFNlYXJjaEtleSIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXkgQCJBWEJ1dHRvblNlYXJjaEtleSIKLSNlbmRpZgot
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5IEAiQVhDaGVja0JveFNlYXJjaEtleSIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXkKLSNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleSBAIkFYQ29udHJvbFNlYXJjaEtleSIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXkKLSNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSBAIkFYRGlmZmVyZW50VHlw
ZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VT
ZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSBAIkFY
Rm9udENoYW5nZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZv
bnRDb2xvckNoYW5nZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JD
aGFuZ2VTZWFyY2hLZXkgQCJBWEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSIKLSNlbmRpZgotCi0j
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eUZyYW1lU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUZyYW1lU2VhcmNoS2V5IEAiQVhGcmFtZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
R3JhcGhpY1NlYXJjaEtleSBAIkFYR3JhcGhpY1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsMVNlYXJjaEtleSIK
LSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXkK
LSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSBAIkFYSGVhZGlu
Z0xldmVsMlNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDNTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1Nl
YXJjaEtleSBAIkFYSGVhZGluZ0xldmVsM1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSBAIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSIKLSNl
bmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSBAIkFYSGVhZGluZ0xl
dmVsNVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdM
ZXZlbDZTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJj
aEtleSBAIkFYSGVhZGluZ0xldmVsNlNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSBAIkFYSGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtl
eSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSBAIkFYSGVhZGluZ1NlYXJjaEtl
eSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5
Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVkU2VhcmNoS2V5IEAiQVhIaWdobGln
aHRlZFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUl0YWxpY0Zv
bnRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSBA
IkFYSXRhbGljRm9udFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUxhbmRtYXJrU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNo
S2V5IEAiQVhMYW5kbWFya1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eUxpbmtTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSBA
IkFYTGlua1NlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpc3RT
ZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSBAIkFYTGlzdFNl
YXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFy
Y2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleSBAIkFYTGl2
ZVJlZ2lvblNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eU1pc3Nw
ZWxsZWRXb3JkU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRXb3Jk
U2VhcmNoS2V5IEAiQVhNaXNzcGVsbGVkV29yZFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
T3V0bGluZVNlYXJjaEtleSBAIkFYT3V0bGluZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlQbGFpblRleHRTZWFyY2hLZXkgQCJBWFBsYWluVGV4dFNlYXJjaEtleSIKLSNlbmRpZgotCi0j
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSBAIkFYUmFkaW9Hcm91cFNlYXJjaEtleSIKLSNl
bmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5Ci0jZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5IEAiQVhTYW1lVHlwZVNlYXJjaEtleSIK
LSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleSBAIkFYU3RhdGljVGV4dFNl
YXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2Vh
cmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVN0eWxlQ2hhbmdlU2VhcmNoS2V5IEAiQVhT
dHlsZUNoYW5nZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVRh
YmxlU2FtZUxldmVsU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxl
dmVsU2VhcmNoS2V5IEAiQVhUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eVRhYmxlU2VhcmNoS2V5IEAiQVhUYWJsZVNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlU
ZXh0RmllbGRTZWFyY2hLZXkgQCJBWFRleHRGaWVsZFNlYXJjaEtleSIKLSNlbmRpZgotCi0jaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlVbmRlcmxpbmVTZWFyY2hLZXkgQCJBWFVuZGVybGluZVNlYXJjaEtleSIKLSNlbmRpZgot
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXkKLSNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSBAIkFYVW52aXNpdGVkTGlua1Nl
YXJjaEtleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2Vh
cmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5IEAiQVhW
aXNpdGVkTGlua1NlYXJjaEtleSIKLSNlbmRpZgotCiAvLyBUZXh0IG1hcmtlcnMKICNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUgQCJBWEVuZFRleHRNYXJrZXJGb3JCb3VuZHMiCkBAIC02MzIsMTI5ICs0
NzEsNiBAQAogICAgIHJldHVybiBJbnRSZWN0KHN0YXJ0UG9pbnQueCgpLCBzdGFydFBvaW50Lnko
KSwgZW5kUG9pbnQueCgpIC0gc3RhcnRQb2ludC54KCksIGVuZFBvaW50LnkoKSAtIHN0YXJ0UG9p
bnQueSgpKTsKIH0KIAotI3ByYWdtYSBtYXJrIFNlYXJjaCBoZWxwZXJzCi0KLXR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlNYXA7Ci0KLXN0cnVjdCBTZWFyY2hLZXlFbnRyeSB7Ci0gICAgU3RyaW5nIGtleTsKLSAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHZhbHVlOwotfTsKLQotc3RhdGljIEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlNYXAqIGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKQotewotICAgIGNv
bnN0IFNlYXJjaEtleUVudHJ5IHNlYXJjaEtleXNbXSA9IHsKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlBbnlUeXBlU2VhcmNoS2V5LCBBbnlUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSwgQmxvY2txdW90ZVNhbWVM
ZXZlbFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFy
Y2hLZXksIEJsb2NrcXVvdGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlC
b2xkRm9udFNlYXJjaEtleSwgQm9sZEZvbnRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlCdXR0b25TZWFyY2hLZXksIEJ1dHRvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5LCBDaGVja0JveFNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBEaWZm
ZXJlbnRUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5n
ZVNlYXJjaEtleSwgRm9udENoYW5nZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSwgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEZyYW1lU2VhcmNoS2V5
IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgR3JhcGhpY1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hL
ZXksIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWwyU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgSGVhZGluZ0xldmVsM1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hL
ZXksIEhlYWRpbmdMZXZlbDRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleSwgSGVhZGluZ0xldmVsNlNl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFy
Y2hLZXksIEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlIZWFkaW5nU2VhcmNoS2V5LCBIZWFkaW5nU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXksIEhpZ2hsaWdodGVkU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgSXRhbGljRm9u
dFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5
LCBMYW5kbWFya1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFy
Y2hLZXksIExpbmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0U2Vh
cmNoS2V5LCBMaXN0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJl
Z2lvblNlYXJjaEtleSwgTGl2ZVJlZ2lvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5LCBNaXNzcGVsbGVkV29yZFNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eU91dGxpbmVTZWFyY2hLZXksIE91dGxpbmVTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXksIFBs
YWluVGV4dFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBT
ZWFyY2hLZXksIFJhZGlvR3JvdXBTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlTYW1lVHlwZVNlYXJjaEtleSwgU2FtZVR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5LCBTdGF0aWNUZXh0U2VhcmNoS2V5IH0sCi0g
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXksIFN0eWxlQ2hhbmdl
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFy
Y2hLZXksIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5VGFibGVTZWFyY2hLZXksIFRhYmxlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5LCBUZXh0RmllbGRTZWFyY2hLZXkgfSwKLSAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVTZWFyY2hLZXksIFVuZGVybGluZVNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIFVudmlz
aXRlZExpbmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlu
a1NlYXJjaEtleSwgVmlzaXRlZExpbmtTZWFyY2hLZXkgfQotICAgIH07Ci0gICAgCi0gICAgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gbmV3IEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlNYXA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHNlYXJjaEtleXMpOyBpKyspCi0gICAgICAgIHNlYXJjaEtleU1hcC0+c2V0KHNlYXJjaEtleXNb
aV0ua2V5LCBzZWFyY2hLZXlzW2ldLnZhbHVlKTsKLSAgICAKLSAgICByZXR1cm4gc2VhcmNoS2V5
TWFwOwotfQotCi1zdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEFueVR5cGVTZWFyY2hLZXk7Ci0gICAgCi0gICAgc3Rh
dGljIGNvbnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAqIHNlYXJjaEtleU1hcCA9IGNyZWF0
ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5IHNlYXJjaEtleSA9IHNlYXJjaEtleU1hcC0+Z2V0KHZhbHVlKTsKLSAgICAKLSAgICBy
ZXR1cm4gc2VhcmNoS2V5ID8gc2VhcmNoS2V5IDogQW55VHlwZVNlYXJjaEtleTsKLX0KLQotc3Rh
dGljIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVy
aWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlv
bmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSkKLXsKLSAgICBOU1N0cmluZyAqZGlyZWN0aW9u
UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhEaXJl
Y3Rpb24iXTsKLSAgICBOU051bWJlciAqaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFyYW1ldGVy
ID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5Ok5TQWNjZXNzaWJpbGl0eUlt
bWVkaWF0ZURlc2NlbmRhbnRzT25seV07Ci0gICAgTlNOdW1iZXIgKnJlc3VsdHNMaW1pdFBhcmFt
ZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYUmVzdWx0c0xp
bWl0Il07Ci0gICAgTlNTdHJpbmcgKnNlYXJjaFRleHRQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWFNlYXJjaFRleHQiXTsKLSAgICBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciAqc3RhcnRFbGVtZW50UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6
ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKLSAgICBOU051bWJl
ciAqdmlzaWJsZU9ubHlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RG
b3JLZXk6QCJBWFZpc2libGVPbmx5Il07Ci0gICAgaWQgc2VhcmNoS2V5UGFyYW1ldGVyID0gW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXTsKLSAgICAK
LSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFNlYXJjaERpcmVj
dGlvbk5leHQ7Ci0gICAgaWYgKFtkaXJlY3Rpb25QYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGlyZWN0aW9uID0gW2RpcmVjdGlvblBhcmFtZXRlciBp
c0VxdWFsVG9TdHJpbmc6QCJBWERpcmVjdGlvbk5leHQiXSA/IFNlYXJjaERpcmVjdGlvbk5leHQg
OiBTZWFyY2hEaXJlY3Rpb25QcmV2aW91czsKLSAgICAKLSAgICBib29sIGltbWVkaWF0ZURlc2Nl
bmRhbnRzT25seSA9IGZhbHNlOwotICAgIGlmIChbaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5UGFy
YW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIGltbWVkaWF0
ZURlc2NlbmRhbnRzT25seSA9IFtpbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgYm9v
bFZhbHVlXTsKLSAgICAKLSAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQgPSAwOwotICAgIGlmIChb
cmVzdWx0c0xpbWl0UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0g
ICAgICAgIHJlc3VsdHNMaW1pdCA9IFtyZXN1bHRzTGltaXRQYXJhbWV0ZXIgdW5zaWduZWRJbnRW
YWx1ZV07Ci0gICAgCi0gICAgU3RyaW5nIHNlYXJjaFRleHQ7Ci0gICAgaWYgKFtzZWFyY2hUZXh0
UGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIHNlYXJj
aFRleHQgPSBzZWFyY2hUZXh0UGFyYW1ldGVyOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHN0YXJ0RWxlbWVudCA9IG51bGxwdHI7Ci0gICAgaWYgKFtzdGFydEVsZW1lbnRQYXJhbWV0
ZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSkK
LSAgICAgICAgc3RhcnRFbGVtZW50ID0gW3N0YXJ0RWxlbWVudFBhcmFtZXRlciBhY2Nlc3NpYmls
aXR5T2JqZWN0XTsKLSAgICAKLSAgICBib29sIHZpc2libGVPbmx5ID0gZmFsc2U7Ci0gICAgaWYg
KFt2aXNpYmxlT25seVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQot
ICAgICAgICB2aXNpYmxlT25seSA9IFt2aXNpYmxlT25seVBhcmFtZXRlciBib29sVmFsdWVdOwot
ICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSBjcml0ZXJpYSA9IEFjY2Vzc2li
aWxpdHlTZWFyY2hDcml0ZXJpYShzdGFydEVsZW1lbnQsIGRpcmVjdGlvbiwgc2VhcmNoVGV4dCwg
cmVzdWx0c0xpbWl0LCB2aXNpYmxlT25seSwgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KTsKLSAg
ICAKLSAgICBpZiAoW3NlYXJjaEtleVBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKQotICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLmFwcGVuZChhY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5Rm9yU3RyaW5nKHNlYXJjaEtleVBhcmFtZXRlcikpOwotICAgIGVsc2UgaWYgKFtz
ZWFyY2hLZXlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7Ci0gICAg
ICAgIHNpemVfdCBzZWFyY2hLZXlDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oW3NlYXJjaEtl
eVBhcmFtZXRlciBjb3VudF0pOwotICAgICAgICBjcml0ZXJpYS5zZWFyY2hLZXlzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2VhcmNoS2V5Q291bnQpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNlYXJjaEtleUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpzZWFy
Y2hLZXkgPSBbc2VhcmNoS2V5UGFyYW1ldGVyIG9iamVjdEF0SW5kZXg6aV07Ci0gICAgICAgICAg
ICBpZiAoW3NlYXJjaEtleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAg
ICAgICAgICAgIGNyaXRlcmlhLnNlYXJjaEtleXMudW5jaGVja2VkQXBwZW5kKGFjY2Vzc2liaWxp
dHlTZWFyY2hLZXlGb3JTdHJpbmcoc2VhcmNoS2V5KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIGNyaXRlcmlhOwotfQotCiAjcHJhZ21hIG1hcmsgU2VsZWN0IHRleHQgaGVs
cGVycwogCiBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSBhY2Nlc3NpYmls
aXR5U2VsZWN0VGV4dENyaXRlcmlhRm9yQ3JpdGVyaWFQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNv
bnN0IE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSkKQEAgLTE5NTAsMjQgKzE2
NjYsNiBAQAogICAgIH0KIH0KIAotc3RhdGljIE5TTXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0Fy
cmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgdmVjdG9yKQotewotICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTp2ZWN0b3Iuc2l6ZSgpXTsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IGNoaWxkIDogdmVjdG9yKSB7Ci0gICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiB3cmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKLSAgICAgICAgQVNTRVJUKHdyYXBwZXIpOwot
ICAgICAgICBpZiAod3JhcHBlcikgewotICAgICAgICAgICAgLy8gd2Ugd2FudCB0byByZXR1cm4g
dGhlIGF0dGFjaG1lbnQgdmlldyBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRo
ZSBhdHRhY2htZW50LgotICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3ZSBnZXQgcGFsaW5kcm9t
ZSBlcnJvcnMgaW4gdGhlIEFYIGhpZXJhcmNoeQotICAgICAgICAgICAgaWYgKGNoaWxkLT5pc0F0
dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpbd3JhcHBlciBhdHRhY2htZW50Vmlld11dOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiBzdGF0aWMgTlNNdXRhYmxlQXJyYXkg
KmNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCiB7
CiAgICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OnZlY3Rvci5zaXplKCldOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMzI4KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MDEtMzAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBB
WDogZW5hYmxlIHNlYXJjaCBwcmVkaWNhdGlvbiBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzMwMjUxMzY3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBiYXNpYyBzZWFyY2hpbmcgc21va2UgdGVzdCB0byBlbnN1cmUgZnVuZGFtZW50
YWxzIHdvcmsgb24gaU9TLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9y
L2lvcy1zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLmh0bWw6IEFkZGVk
LgorCiAyMDE3LTAxLTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgog
CiAgICAgICAgIExpZnQgdGVtcGxhdGUgZXNjYXBlIHNlcXVlbmNlIHJlc3RyaWN0aW9ucyBpbiB0
YWdnZWQgdGVtcGxhdGVzCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvaW9zLXNlYXJjaC1wcmVkaWNhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pb3Mtc2VhcmNoLXByZWRpY2F0
ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACitzdGFydAorZmlyc3QgaGVhZGluZyBsZXZlbCAxCisK
K3NlY29uZCBoZWFkaW5nIGxldmVsIDEKKworaGVhZGluZyBsZXZlbCAyCisKK2hlYWRpbmcgbGV2
ZWwgMworCitoZWFkaW5nIGxldmVsIDQKKworaGVhZGluZyBsZXZlbCA1CisKK2hlYWRpbmcgbGV2
ZWwgNgorCitUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBl
bGVtZW50cyBieSBrZXkgb3IgdGV4dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFi
ZWw6IGZpcnN0IGhlYWRpbmcgbGV2ZWwgMScKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5k
ZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgMicKK1BBU1MgcmVz
dWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6IGhlYWRp
bmcgbGV2ZWwgMycKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRp
b24gaXMgJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgNCcKK1BBU1MgcmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgNScKK1BB
U1MgcmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24gaXMgJ0FYTGFiZWw6
IGhlYWRpbmcgbGV2ZWwgNicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvaW9zLXNlYXJjaC1wcmVkaWNhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW9zLXNlYXJjaC1wcmVkaWNhdGUuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW9z
LXNlYXJjaC1wcmVkaWNhdGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxidXR0b24+c3RhcnQ8L2J1dHRvbj4K
KworPGgxPmZpcnN0IGhlYWRpbmcgbGV2ZWwgMTwvaDE+Cis8aDE+c2Vjb25kIGhlYWRpbmcgbGV2
ZWwgMTwvaDE+Cis8aDI+aGVhZGluZyBsZXZlbCAyPC9oMj4KKzxoMz5oZWFkaW5nIGxldmVsIDM8
L2gzPgorPGg0PmhlYWRpbmcgbGV2ZWwgNDwvaDQ+Cis8aDU+aGVhZGluZyBsZXZlbCA1PC9oNT4K
KzxoNj5oZWFkaW5nIGxldmVsIDY8L2g2PgorCisgICAgCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50
cyBieSBrZXkgb3IgdGV4dC4iKTsKKyAgICAKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmtlZXBXZWJIaXN0b3J5KCk7
CisgICAgICAgIAorICAgICAgICB2YXIgY29udGFpbmVyRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLnJvb3RFbGVtZW50OworICAgICAgICB2YXIgc3RhcnRFbGVtZW50OworICAgICAg
ICB2YXIgcmVzdWx0RWxlbWVudDsKKworICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDEuCisgICAg
ICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1l
bnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYSGVh
ZGluZ0xldmVsMVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5kZXNjcmlwdGlvbiIsICInQVhMYWJlbDogZmlyc3Qg
aGVhZGluZyBsZXZlbCAxJyIpOworICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCAy
LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWlu
ZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUs
ICJBWEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24iLCAiJ0FYTGFiZWw6
IGhlYWRpbmcgbGV2ZWwgMiciKTsKKyAgICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwg
My4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVl
LCAiQVhIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmRlc2NyaXB0aW9uIiwgIidBWExhYmVs
OiBoZWFkaW5nIGxldmVsIDMnIik7CisgICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVs
IDQuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRh
aW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1
ZSwgIkFYSGVhZGluZ0xldmVsNFNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5kZXNjcmlwdGlvbiIsICInQVhMYWJl
bDogaGVhZGluZyBsZXZlbCA0JyIpOworICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZl
bCA1LgorICAgICAgICBzdGFydEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250
YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRy
dWUsICJBWEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBzaG91
bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24iLCAiJ0FYTGFi
ZWw6IGhlYWRpbmcgbGV2ZWwgNSciKTsKKyAgICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2
ZWwgNi4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0
cnVlLCAiQVhIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApLmRlc2NyaXB0aW9uIiwgIidBWExh
YmVsOiBoZWFkaW5nIGxldmVsIDYnIik7ICAgICAgICAKKyAgICB9CisgICAgCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMzgxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMDEtMzAgIENocmlzIEZsZWl6YWNo
ICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogZW5hYmxlIHNlYXJjaCBwcmVk
aWNhdGlvbiBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjc1NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMjUxMzY3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW06CisgICAgICAgIChzZWFy
Y2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgor
ICAgICAgICAoc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENy
aXRlcmlhKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFBy
ZWRpY2F0ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW06CisgICAgICAgIChXVFI6
OnNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVGb3JTZWFyY2hDcml0ZXJpYSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAgICAgKFdUUjo6c2VhcmNoUHJlZGljYXRlUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxNy0wMS0zMCAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtFRkxdIEF2b2lkIHVzaW5nIGEgdGhpbiBkaXJlY3Rv
cnkgdG8gY3JlYXRlIHRoZSBidWlsdCBwcm9kdWN0IG9uIHRoZSBhcmNoaXZlLWJ1aWx0LXByb2R1
Y3Qgc3RlcC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAyMTEzMjgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTAwLDYgKzEwMCw3IEBACiAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxpdHlTb3J0RGly
ZWN0aW9uOwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNFeHBhbmRlZDsKIC0gKE5TVUludGVnZXIp
YWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVMZXZlbDsKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5
RmluZE1hdGNoaW5nT2JqZWN0czooTlNEaWN0aW9uYXJ5ICopcGFyYW1ldGVyczsKIAogLy8gVGV4
dE1hcmtlciByZWxhdGVkCiAtIChOU0FycmF5ICopdGV4dE1hcmtlclJhbmdlOwpAQCAtMTEyMCwx
MCArMTEyMSwxMyBAQAogICAgIHJldHVybiAwOwogfQogCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0Nv
bnRleHRSZWYgY29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogc3RhcnRFbGVtZW50LCBi
b29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNl
YXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5
KQorQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgKnN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTVmFsdWVSZWYg
c2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBib29s
IGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0g
ICAgcmV0dXJuIDA7CisgICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0g
c2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKGNv
bnRleHQsIHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCAxLCBzZWFyY2hLZXksIHNlYXJj
aFRleHQsIHZpc2libGVPbmx5LCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpOworICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5RmluZE1hdGNoaW5nT2JqZWN0czpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlXTsKKyAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5
IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KFt2YWx1ZSBsYXN0T2JqZWN0XSk7CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTU3RyaW5nUmVmIGFtYmlndWl0eVJlc29sdXRpb24sIEpTVmFsdWVSZWYgc2VhcmNo
U3RyaW5ncywgSlNTdHJpbmdSZWYgcmVwbGFjZW1lbnRTdHJpbmcsIEpTU3RyaW5nUmVmIGFjdGl2
aXR5KQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25N
YWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eUNvbW1vbk1hYy5oCShyZXZpc2lvbiAyMTEzMjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4
IEBACiAjaWZuZGVmIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaAogI2RlZmluZSBBY2Nlc3NpYmls
aXR5Q29tbW9uTWFjX2gKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgorCiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgogCiAvLyBJZiBhbiB1bnN1cHBv
cnRlZCBhdHRyaWJ1dGUgaXMgcGFzc2VkIGluLCBpdCB3aWxsIHJhaXNlIGFuIGFjY2Vzc2liaWxp
dHkgZXhjZXB0aW9uLiBUaGVzZSBhcmUgdXN1YWxseSBjYXVnaHQgYnkgdGhlIEFjY2Vzc2liaWxp
dHkgUnVudGltZSB0byBpbmZvcm0KQEAgLTQ0LDQgKzQ2LDYgQEAKIC0gKEpTU3RyaW5nUmVmKWNy
ZWF0ZUpTU3RyaW5nUmVmOwogQGVuZAogCitleHRlcm4gTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVk
aWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0YXJ0RWxlbWVudCwgYm9vbCBpc0Rp
cmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXks
IEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRl
RGVzY2VuZGFudHNPbmx5KTsKKwogI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaApJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21t
b25NYWMubW0JKHJldmlzaW9uIDIxMTMyOCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCIK
IAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z1JlZkNGLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlv
bnMpCkBAIC00OSw0ICs1MSw1NyBAQAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0
cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7CiB9CiAKK05TRGljdGlvbmFyeSAqc2VhcmNoUHJlZGlj
YXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJl
Y3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBK
U1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVkaWF0ZURl
c2NlbmRhbnRzT25seSkKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVk
QXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CisgICAgCisgICAg
aWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkpCisg
ICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50
LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07CisgICAgCisg
ICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8g
QCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERp
cmVjdGlvbiJdOworICAgIAorICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDpA
KHJlc3VsdHNMaW1pdCkgZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKKyAgICAKKyAgICBpZiAo
c2VhcmNoS2V5KSB7CisgICAgICAgIGlkIHNlYXJjaEtleVBhcmFtZXRlciA9IG5pbDsKKyAgICAg
ICAgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBzZWFyY2hLZXkpKSB7CisgICAgICAgICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VhcmNoS2V5U3RyaW5nKEFkb3B0LCBKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cikpOworICAgICAgICAgICAg
aWYgKHNlYXJjaEtleVN0cmluZykKKyAgICAgICAgICAgICAgICBzZWFyY2hLZXlQYXJhbWV0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtleVN0cmluZy5nZXQoKV07
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNl
YXJjaEtleSkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIHNlYXJjaEtleUFycmF5ID0gSlNW
YWx1ZVRvT2JqZWN0KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cik7CisgICAgICAgICAgICB1
bnNpZ25lZCBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsZW5ndGhQcm9wZXJ0eVN0cmluZyhBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKKyAgICAgICAgICAgIEpT
VmFsdWVSZWYgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHko
Y29udGV4dCwgc2VhcmNoS2V5QXJyYXksIGxlbmd0aFByb3BlcnR5U3RyaW5nLmdldCgpLCBudWxs
cHRyKTsKKyAgICAgICAgICAgIGlmIChzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlICYmIEpTVmFs
dWVJc051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlKSkKKyAgICAgICAg
ICAgICAgICBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSwgbnVsbHB0cikp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2Vh
cmNoS2V5QXJyYXlMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgc2Vh
cmNoS2V5VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBzZWFyY2hL
ZXlBcnJheSwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2VhcmNo
S2V5U3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzZWFyY2hLZXlWYWx1ZSwg
bnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0cmluZykgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoIXNlYXJjaEtleVBhcmFtZXRlcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlYXJjaEtleVBhcmFtZXRlciA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAg
ICAgICAgICAgICAgICAgIFtzZWFyY2hLZXlQYXJhbWV0ZXIgYWRkT2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5U3RyaW5nXV07CisgICAgICAgICAgICAgICAg
ICAgIEpTU3RyaW5nUmVsZWFzZShzZWFyY2hLZXlTdHJpbmcpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc2VhcmNoS2V5UGFyYW1ldGVy
KQorICAgICAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OnNlYXJjaEtl
eVBhcmFtZXRlciBmb3JLZXk6QCJBWFNlYXJjaEtleSJdOworICAgIH0KKyAgICAKKyAgICBpZiAo
c2VhcmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0KSkKKyAgICAgICAgW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJp
bmdSZWY6c2VhcmNoVGV4dF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07CisgICAgCisgICAgW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAodmlzaWJsZU9ubHkpIGZvcktleTpAIkFY
VmlzaWJsZU9ubHkiXTsKKyAgICAKKyAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmpl
Y3Q6QChpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpIGZvcktleTpAIkFYSW1tZWRpYXRlRGVzY2Vu
ZGFudHNPbmx5Il07CisgICAgCisgICAgcmV0dXJuIHBhcmFtZXRlcml6ZWRBdHRyaWJ1dGU7Cit9
CisKKwogQGVuZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDIxMTMyOCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDMsNTggKzIwMyw2IEBACiAgICAgcmV0dXJuIFthbGxFbGVtZW50U3RyaW5nIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAotc3RhdGljIE5TRGljdGlvbmFyeSAqc2VhcmNoUHJlZGlj
YXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJl
Y3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBK
U1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVkaWF0ZURl
c2NlbmRhbnRzT25seSkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVk
QXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07Ci0gICAgCi0gICAg
aWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkpCi0g
ICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDooaWQpc3RhcnRFbGVtZW50
LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07Ci0gICAgCi0g
ICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5leHQpID8g
QCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6QCJBWERp
cmVjdGlvbiJdOwotICAgIAotICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDpA
KHJlc3VsdHNMaW1pdCkgZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKLSAgICAKLSAgICBpZiAo
c2VhcmNoS2V5KSB7Ci0gICAgICAgIGlkIHNlYXJjaEtleVBhcmFtZXRlciA9IG5pbDsKLSAgICAg
ICAgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBzZWFyY2hLZXkpKSB7Ci0gICAgICAgICAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VhcmNoS2V5U3RyaW5nKEFkb3B0LCBKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cikpOwotICAgICAgICAgICAg
aWYgKHNlYXJjaEtleVN0cmluZykKLSAgICAgICAgICAgICAgICBzZWFyY2hLZXlQYXJhbWV0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtleVN0cmluZy5nZXQoKV07
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNl
YXJjaEtleSkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0UmVmIHNlYXJjaEtleUFycmF5ID0gSlNW
YWx1ZVRvT2JqZWN0KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cik7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IDA7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsZW5ndGhQcm9wZXJ0eVN0cmluZyhBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKLSAgICAgICAgICAgIEpT
VmFsdWVSZWYgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHko
Y29udGV4dCwgc2VhcmNoS2V5QXJyYXksIGxlbmd0aFByb3BlcnR5U3RyaW5nLmdldCgpLCBudWxs
cHRyKTsKLSAgICAgICAgICAgIGlmIChzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlICYmIEpTVmFs
dWVJc051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlKSkKLSAgICAgICAg
ICAgICAgICBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSwgbnVsbHB0cikp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2Vh
cmNoS2V5QXJyYXlMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgc2Vh
cmNoS2V5VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBzZWFyY2hL
ZXlBcnJheSwgaSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2VhcmNo
S2V5U3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzZWFyY2hLZXlWYWx1ZSwg
bnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0cmluZykgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoIXNlYXJjaEtleVBhcmFtZXRlcikKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlYXJjaEtleVBhcmFtZXRlciA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAg
ICAgICAgICAgICAgICAgIFtzZWFyY2hLZXlQYXJhbWV0ZXIgYWRkT2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5U3RyaW5nXV07Ci0gICAgICAgICAgICAgICAg
ICAgIEpTU3RyaW5nUmVsZWFzZShzZWFyY2hLZXlTdHJpbmcpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoc2VhcmNoS2V5UGFyYW1ldGVy
KQotICAgICAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OnNlYXJjaEtl
eVBhcmFtZXRlciBmb3JLZXk6QCJBWFNlYXJjaEtleSJdOwotICAgIH0KLSAgICAKLSAgICBpZiAo
c2VhcmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0KSkKLSAgICAgICAgW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJp
bmdSZWY6c2VhcmNoVGV4dF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07Ci0gICAgCi0gICAgW3Bh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAodmlzaWJsZU9ubHkpIGZvcktleTpAIkFY
VmlzaWJsZU9ubHkiXTsKLSAgICAKLSAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmpl
Y3Q6QChpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpIGZvcktleTpAIkFYSW1tZWRpYXRlRGVzY2Vu
ZGFudHNPbmx5Il07Ci0gICAgCi0gICAgcmV0dXJuIHBhcmFtZXRlcml6ZWRBdHRyaWJ1dGU7Ci19
Ci0KIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnNlbGVjdFRleHRQYXJhbWV0ZXJpemVkQXR0cmlidXRl
Rm9yQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIGFtYmlndWl0eVJl
c29sdXRpb24sIEpTVmFsdWVSZWYgc2VhcmNoU3RyaW5ncywgSlNTdHJpbmdSZWYgcmVwbGFjZW1l
bnRTdHJpbmcsIEpTU3RyaW5nUmVmIGFjdGl2aXR5KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQko
cmV2aXNpb24gMjExMzI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKICNpbXBvcnQgIkluamVj
dGVkQnVuZGxlLmgiCkBAIC03Nyw2ICs3OCw3IEBACiAtIChOU1N0cmluZyAqKWFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNFeHBhbmRlZDsKIC0gKE5T
VUludGVnZXIpYWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVMZXZlbDsKKy0gKE5TQXJyYXkgKilhY2Nl
c3NpYmlsaXR5RmluZE1hdGNoaW5nT2JqZWN0czooTlNEaWN0aW9uYXJ5ICopcGFyYW1ldGVyczsK
IAogLy8gVGV4dE1hcmtlciByZWxhdGVkCiAtIChOU0FycmF5ICopdGV4dE1hcmtlclJhbmdlOwpA
QCAtNjUzLDE0ICs2NTUsMTggQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXVuc2lnbmVkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQs
IGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYg
c2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09u
bHkpCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNl
YXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCAqc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hL
ZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRp
YXRlRGVzY2VuZGFudHNPbmx5KQogewogICAgIHJldHVybiAwOwogfQogCi1SZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtl
eSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlh
dGVEZXNjZW5kYW50c09ubHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVsZW1lbnQsIGJvb2wgaXNE
aXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4
dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCiB7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlID0gc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRl
cmlhKGNvbnRleHQsIHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0LCAxLCBzZWFyY2hLZXks
IHNlYXJjaFRleHQsIHZpc2libGVPbmx5LCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpOworICAg
IGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5RmluZE1hdGNoaW5nT2JqZWN0czpw
YXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKyAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW3ZhbHVlIGxhc3RPYmplY3RdKTsKIH0KIAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdFRleHRX
aXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiBhbWJpZ3VpdHlSZXNvbHV0aW9u
LCBKU1ZhbHVlUmVmIHNlYXJjaFN0cmluZ3MsIEpTU3RyaW5nUmVmIHJlcGxhY2VtZW50U3RyaW5n
LCBKU1N0cmluZ1JlZiBhY3Rpdml0eSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLmgJKHJldmlzaW9uIDIxMTMyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjX2gKICNkZWZp
bmUgQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaCIKKwogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KIAogLy8g
SWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3NlZCBpbiwgaXQgd2lsbCByYWlzZSBh
biBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRo
ZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCkBAIC00NCw0ICs0NiwxMCBAQAogLSAo
SlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWY7CiBAZW5kCiAKK25hbWVzcGFjZSBXVFIgewor
ICAgIAorZXh0ZXJuIE5TRGljdGlvbmFyeSAqc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0
dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50ICpzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCB1bnNpZ25l
ZCByZXN1bHRzTGltaXQsIEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hU
ZXh0LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSk7CisK
K307CisKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjX2gKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQkocmV2aXNpb24gMjExMzI4KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgiCiAKKyNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
Zi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZDRi5oPgogCiBAaW1wbGVt
ZW50YXRpb24gTlNTdHJpbmcgKEpTU3RyaW5nUmVmQWRkaXRpb25zKQpAQCAtNDksNCArNTEsNjAg
QEAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNl
bGYpOwogfQogCituYW1lc3BhY2UgV1RSIHsKKworTlNEaWN0aW9uYXJ5ICpzZWFyY2hQcmVkaWNh
dGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVj
dGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpT
U3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVz
Y2VuZGFudHNPbmx5KQoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICAKKyAgICBp
ZiAoc3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKSkKKyAg
ICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OihpZClzdGFydEVsZW1lbnQt
PnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVsZW1lbnQiXTsKKyAgICAKKyAg
ICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6KGlzRGlyZWN0aW9uTmV4dCkgPyBA
IkFYRGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0aW9uUHJldmlvdXMiIGZvcktleTpAIkFYRGly
ZWN0aW9uIl07CisgICAgCisgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAo
cmVzdWx0c0xpbWl0KSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOworICAgIAorICAgIGlmIChz
ZWFyY2hLZXkpIHsKKyAgICAgICAgaWQgc2VhcmNoS2V5UGFyYW1ldGVyID0gbmlsOworICAgICAg
ICBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHNlYXJjaEtleSkpIHsKKyAgICAgICAgICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZWFyY2hLZXlTdHJpbmcoQWRvcHQsIEpTVmFsdWVU
b1N0cmluZ0NvcHkoY29udGV4dCwgc2VhcmNoS2V5LCBudWxscHRyKSk7CisgICAgICAgICAgICBp
ZiAoc2VhcmNoS2V5U3RyaW5nKQorICAgICAgICAgICAgICAgIHNlYXJjaEtleVBhcmFtZXRlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5U3RyaW5nLmdldCgpXTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgc2Vh
cmNoS2V5KSkgeworICAgICAgICAgICAgSlNPYmplY3RSZWYgc2VhcmNoS2V5QXJyYXkgPSBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgc2VhcmNoS2V5LCBudWxscHRyKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHNlYXJjaEtleUFycmF5TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxlbmd0aFByb3BlcnR5U3RyaW5nKEFkb3B0LCBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOworICAgICAgICAgICAgSlNW
YWx1ZVJlZiBzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eShj
b250ZXh0LCBzZWFyY2hLZXlBcnJheSwgbGVuZ3RoUHJvcGVydHlTdHJpbmcuZ2V0KCksIG51bGxw
dHIpOworICAgICAgICAgICAgaWYgKHNlYXJjaEtleUFycmF5TGVuZ3RoVmFsdWUgJiYgSlNWYWx1
ZUlzTnVtYmVyKGNvbnRleHQsIHNlYXJjaEtleUFycmF5TGVuZ3RoVmFsdWUpKQorICAgICAgICAg
ICAgICAgIHNlYXJjaEtleUFycmF5TGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTVmFs
dWVUb051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlLCBudWxscHRyKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWFy
Y2hLZXlBcnJheUxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBzZWFy
Y2hLZXlWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIHNlYXJjaEtl
eUFycmF5LCBpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBKU1N0cmluZ1JlZiBzZWFyY2hL
ZXlTdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHNlYXJjaEtleVZhbHVlLCBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VhcmNoS2V5U3RyaW5nKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghc2VhcmNoS2V5UGFyYW1ldGVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgc2VhcmNoS2V5UGFyYW1ldGVyID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICAg
ICAgICAgICAgICAgICAgW3NlYXJjaEtleVBhcmFtZXRlciBhZGRPYmplY3Q6W05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjpzZWFyY2hLZXlTdHJpbmddXTsKKyAgICAgICAgICAgICAgICAg
ICAgSlNTdHJpbmdSZWxlYXNlKHNlYXJjaEtleVN0cmluZyk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChzZWFyY2hLZXlQYXJhbWV0ZXIp
CisgICAgICAgICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6c2VhcmNoS2V5
UGFyYW1ldGVyIGZvcktleTpAIkFYU2VhcmNoS2V5Il07CisgICAgfQorICAgIAorICAgIGlmIChz
ZWFyY2hUZXh0ICYmIEpTU3RyaW5nR2V0TGVuZ3RoKHNlYXJjaFRleHQpKQorICAgICAgICBbcGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmlu
Z1JlZjpzZWFyY2hUZXh0XSBmb3JLZXk6QCJBWFNlYXJjaFRleHQiXTsKKyAgICAKKyAgICBbcGFy
YW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6QCh2aXNpYmxlT25seSkgZm9yS2V5OkAiQVhW
aXNpYmxlT25seSJdOworICAgIAorICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVj
dDpAKGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkgZm9yS2V5OkAiQVhJbW1lZGlhdGVEZXNjZW5k
YW50c09ubHkiXTsKKyAgICAKKyAgICByZXR1cm4gcGFyYW1ldGVyaXplZEF0dHJpYnV0ZTsKK30K
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdUUgorCiBAZW5kCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDIxMTMyOCkKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyOSw1OCArMjI5LDYgQEAKICAgICByZXR1cm4gW2Fs
bEVsZW1lbnRTdHJpbmcgY3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCi1zdGF0aWMgTlNEaWN0aW9u
YXJ5ICpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVy
aWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgKnN0YXJ0RWxl
bWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1pdCwgSlNWYWx1
ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHks
IGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQotewotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XTsKLSAgICAKLSAgICBpZiAoc3RhcnRFbGVtZW50ICYmIHN0YXJ0RWxlbWVudC0+cGxhdGZv
cm1VSUVsZW1lbnQoKSkKLSAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0
OihpZClzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCkgZm9yS2V5OkAiQVhTdGFydEVs
ZW1lbnQiXTsKLSAgICAKLSAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6KGlz
RGlyZWN0aW9uTmV4dCkgPyBAIkFYRGlyZWN0aW9uTmV4dCIgOiBAIkFYRGlyZWN0aW9uUHJldmlv
dXMiIGZvcktleTpAIkFYRGlyZWN0aW9uIl07Ci0gICAgCi0gICAgW3BhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUgc2V0T2JqZWN0OkAocmVzdWx0c0xpbWl0KSBmb3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJd
OwotICAgIAotICAgIGlmIChzZWFyY2hLZXkpIHsKLSAgICAgICAgaWQgc2VhcmNoS2V5UGFyYW1l
dGVyID0gbmlsOwotICAgICAgICBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHNlYXJjaEtl
eSkpIHsKLSAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzZWFyY2hLZXlTdHJp
bmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgc2VhcmNoS2V5LCBudWxscHRy
KSk7Ci0gICAgICAgICAgICBpZiAoc2VhcmNoS2V5U3RyaW5nKQotICAgICAgICAgICAgICAgIHNl
YXJjaEtleVBhcmFtZXRlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNo
S2V5U3RyaW5nLmdldCgpXTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChKU1ZhbHVlSXNP
YmplY3QoY29udGV4dCwgc2VhcmNoS2V5KSkgewotICAgICAgICAgICAgSlNPYmplY3RSZWYgc2Vh
cmNoS2V5QXJyYXkgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgc2VhcmNoS2V5LCBudWxscHRy
KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNlYXJjaEtleUFycmF5TGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxlbmd0aFByb3Bl
cnR5U3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikp
OwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlID0gSlNP
YmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBzZWFyY2hLZXlBcnJheSwgbGVuZ3RoUHJvcGVydHlT
dHJpbmcuZ2V0KCksIG51bGxwdHIpOwotICAgICAgICAgICAgaWYgKHNlYXJjaEtleUFycmF5TGVu
Z3RoVmFsdWUgJiYgSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIHNlYXJjaEtleUFycmF5TGVuZ3Ro
VmFsdWUpKQotICAgICAgICAgICAgICAgIHNlYXJjaEtleUFycmF5TGVuZ3RoID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0
aFZhbHVlLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzZWFyY2hLZXlBcnJheUxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZiBzZWFyY2hLZXlWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4
KGNvbnRleHQsIHNlYXJjaEtleUFycmF5LCBpLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICBK
U1N0cmluZ1JlZiBzZWFyY2hLZXlTdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IHNlYXJjaEtleVZhbHVlLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2VhcmNoS2V5
U3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc2VhcmNoS2V5UGFyYW1ldGVyKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoS2V5UGFyYW1ldGVyID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5XTsKLSAgICAgICAgICAgICAgICAgICAgW3NlYXJjaEtleVBhcmFtZXRlciBhZGRP
YmplY3Q6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpzZWFyY2hLZXlTdHJpbmddXTsK
LSAgICAgICAgICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHNlYXJjaEtleVN0cmluZyk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChz
ZWFyY2hLZXlQYXJhbWV0ZXIpCi0gICAgICAgICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBz
ZXRPYmplY3Q6c2VhcmNoS2V5UGFyYW1ldGVyIGZvcktleTpAIkFYU2VhcmNoS2V5Il07Ci0gICAg
fQotICAgIAotICAgIGlmIChzZWFyY2hUZXh0ICYmIEpTU3RyaW5nR2V0TGVuZ3RoKHNlYXJjaFRl
eHQpKQotICAgICAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6W05TU3RyaW5n
IHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpzZWFyY2hUZXh0XSBmb3JLZXk6QCJBWFNlYXJjaFRleHQi
XTsKLSAgICAKLSAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6QCh2aXNpYmxl
T25seSkgZm9yS2V5OkAiQVhWaXNpYmxlT25seSJdOwotICAgIAotICAgIFtwYXJhbWV0ZXJpemVk
QXR0cmlidXRlIHNldE9iamVjdDpAKGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkgZm9yS2V5OkAi
QVhJbW1lZGlhdGVEZXNjZW5kYW50c09ubHkiXTsKLSAgICAKLSAgICByZXR1cm4gcGFyYW1ldGVy
aXplZEF0dHJpYnV0ZTsKLX0KLQogc3RhdGljIE5TRGljdGlvbmFyeSAqc2VsZWN0VGV4dFBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVGb3JDcml0ZXJpYShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJp
bmdSZWYgYW1iaWd1aXR5UmVzb2x1dGlvbiwgSlNWYWx1ZVJlZiBzZWFyY2hTdHJpbmdzLCBKU1N0
cmluZ1JlZiByZXBsYWNlbWVudFN0cmluZywgSlNTdHJpbmdSZWYgYWN0aXZpdHkpCiB7CiAgICAg
TlNNdXRhYmxlRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IFtOU011dGFibGVE
aWN0aW9uYXJ5IGRpY3Rpb25hcnldOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIxMTMyOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjksNiArMjI5LDcgQEAKIAkJMjkyMTBFREMxNDRDRDU2RTAwODM1QkI1IC8qIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTIxMEVFMTE0NENERTY3
ODk4MTVFRTUgLyogSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkyMTBFRTExNDVDREU2Nzg5ODE1RUU1IC8qIEpT
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyOTlFMkFBNDFFM0RFRTE0MDA2NURDMzAgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QThGQ0M1MTQ1QjkzQzYwMDkwNDVB
NiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOUE4RkNEMjE0NUVGOEYyMDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI5QThGQ0RGMTQ1RjAzNTgwMDkwNDVBNiAvKiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU5Nyw2ICs1OTgsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMjkyMTBFQUIxNDRDQUNC
MjAwODM1QkI2IC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gKi8sCiAJCQkJODAzNEM2NjEx
NDg3NjM2NDAwQUMzMkU5IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovLAorCQkJ
CTI5OUUyQUE0MUUzREVFMTQwMDY1REMzMCAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmggKi8s
CiAJCQkJMjlBOEZDRTQxNDVGMDQ2NDAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2VNYWMubW0gKi8sCiAJCQkJMjkyMTBFQUIxNDRDQUNCMjAwODM1QkI1IC8qIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW0gKi8sCiAJCQkJQkM4REFENzcxMzE2RDdCOTAwRUM5NkZDIC8q
IEluamVjdGVkQnVuZGxlTWFjLm1tICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300134</attachid>
            <date>2017-01-30 12:24:56 -0800</date>
            <delta_ts>2017-01-31 00:09:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>60387</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTM4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAxLTMwICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGVuYWJsZSBzZWFy
Y2ggcHJlZGljYXRpb24gZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY3NTU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDI1MTM2Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHRo
ZSBjb2RlIHRvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eSBzZWFyY2hpbmcgaW50byBhIHNoYXJlZCBw
bGFjZSBzbyBpdCBjYW4gYmUgdXNlZCBieSBpT1MuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJp
bGl0eS9pb3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5Rmlu
ZE1hdGNoaW5nT2JqZWN0czpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW06CisgICAgICAgIChjb252ZXJ0
VG9OU0FycmF5KToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXApOgor
ICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyk6CisgICAgICAgIChhY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlN
YXApOiBEZWxldGVkLgorICAgICAgICAoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQ
cmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKGNvbnZl
cnRUb05TQXJyYXkpOiBEZWxldGVkLgorCiAyMDE3LTAxLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGVsZW1lbnRzIHNob3VsZCBub3Qg
cnViYmVyLWJhbmQgaW4gV0syLCBub3IgcmVtYWluIGF0IG5lZ2F0aXZlIG9mZnNldHMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAyMTEzMjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg4Nyw2ICsxODg3LDE0IEBACiAg
ICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNBcnJheTxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciAqPiAqKWFjY2Vzc2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOihOU0RpY3Rpb25hcnkg
KilwYXJhbWV0ZXJzCit7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNyaXRlcmlh
ID0gYWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZShwYXJhbWV0ZXJzKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgcmVzdWx0czsKKyAgICBtX29iamVjdC0+ZmluZE1hdGNo
aW5nT2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOworICAgIHJldHVybiBjb252ZXJ0VG9OU0Fy
cmF5KHJlc3VsdHMpOworfQorCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlFbGVtZW50RGlkQmVjb21l
Rm9jdXNlZAogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaAkocmV2aXNpb24gMjEx
MzI4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMiBAQAog
I2lmbmRlZiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2VfaAogI2RlZmluZSBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2VfaAogCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKK3N0cnVjdCBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWE7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgRmxvYXRQb2lu
dDsKIGNsYXNzIFBhdGg7CkBAIC02Nyw2ICs2OSw5IEBACiAtIChOU0FycmF5ICopYWNjZXNzaWJp
bGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7CiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQ
cmVzY3JpcHRQYWlyczsKIAorZXh0ZXJuIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTZWFyY2hDcml0
ZXJpYSBhY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWFGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0
ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlvbmFyeSAqKTsKK2V4dGVybiBOU0FycmF5ICpj
b252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpOworCiBAZW5kCiAKICNlbmRpZiAvLyBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbQkocmV2aXNpb24gMjExMzI4KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxNjggQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gU2VhcmNoIEtleXMKKyNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBbnlU
eXBlU2VhcmNoS2V5IEAiQVhBbnlUeXBlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IEAiQVhCbG9ja3F1b3RlU2FtZUxl
dmVsU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90
ZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5IEAi
QVhCbG9ja3F1b3RlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
Qm9sZEZvbnRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRTZWFyY2hL
ZXkgQCJBWEJvbGRGb250U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5QnV0dG9uU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtl
eSBAIkFYQnV0dG9uU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
Q2hlY2tCb3hTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hL
ZXkgQCJBWENoZWNrQm94U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5Q29udHJvbFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNo
S2V5IEAiQVhDb250cm9sU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEaWZmZXJl
bnRUeXBlU2VhcmNoS2V5IEAiQVhEaWZmZXJlbnRUeXBlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5IEAiQVhGb250Q2hhbmdlU2VhcmNoS2V5IgorI2Vu
ZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5Cisj
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSBAIkFYRm9udENv
bG9yQ2hhbmdlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5RnJh
bWVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXkgQCJBWEZy
YW1lU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1Nl
YXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5IEAiQVhHcmFw
aGljU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xl
dmVsMVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNo
S2V5IEAiQVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IgorI2VuZGlm
CisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleQorI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwz
U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVs
NFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5
IEAiQVhIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFk
aW5nTGV2ZWw1U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IgorI2VuZGlmCisK
KyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleQorI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw2U2Vh
cmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZl
bFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNo
S2V5IEAiQVhIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFk
aW5nU2VhcmNoS2V5IEAiQVhIZWFkaW5nU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
SGlnaGxpZ2h0ZWRTZWFyY2hLZXkgQCJBWEhpZ2hsaWdodGVkU2VhcmNoS2V5IgorI2VuZGlmCisK
KyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleQorI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5IEAiQVhJdGFsaWNGb250U2VhcmNoS2V5Igor
I2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkKKyNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkgQCJBWExhbmRtYXJrU2VhcmNoS2V5
IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleQorI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5IEAiQVhMaW5rU2VhcmNoS2V5IgorI2VuZGlm
CisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlMaXN0U2VhcmNoS2V5IEAiQVhMaXN0U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5IEAiQVhMaXZlUmVnaW9uU2VhcmNoS2V5IgorI2VuZGlm
CisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkKKyNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgQCJBWE1pc3NwZWxsZWRX
b3JkU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVNl
YXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lU2VhcmNoS2V5IEAiQVhPdXRs
aW5lU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0
U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSBAIkFY
UGxhaW5UZXh0U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UmFk
aW9Hcm91cFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNo
S2V5IEAiQVhSYWRpb0dyb3VwU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5U2FtZVR5cGVTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5cGVT
ZWFyY2hLZXkgQCJBWFNhbWVUeXBlU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTdGF0
aWNUZXh0U2VhcmNoS2V5IEAiQVhTdGF0aWNUZXh0U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXkgQCJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5IgorI2Vu
ZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWFRhYmxlU2Ft
ZUxldmVsU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVT
ZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXkgQCJBWFRhYmxl
U2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2Vh
cmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleSBAIkFYVGV4
dEZpZWxkU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VW5kZXJs
aW5lU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSBA
IkFYVW5kZXJsaW5lU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
VW52aXNpdGVkTGlua1NlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0ZWRM
aW5rU2VhcmNoS2V5IEAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IgorI2VuZGlmCisKKyNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkgQCJBWFZpc2l0ZWRMaW5rU2VhcmNoS2V5IgorI2Vu
ZGlmCisKKy8vIFNlYXJjaAorI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlJbW1lZGlhdGVEZXNjZW5k
YW50c09ubHkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5
IEAiQVhJbW1lZGlhdGVEZXNjZW5kYW50c09ubHkiCisjZW5kaWYKKwogc3RhdGljIE5TQXJyYXkg
KmNvbnZlcnRNYXRoUGFpcnNUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJiBwYWlycywgTlNTdHJpbmcgKnN1YnNjcmlw
dEtleSwgTlNTdHJpbmcgKnN1cGVyc2NyaXB0S2V5KQogewogICAgIE5TTXV0YWJsZUFycmF5ICph
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpwYWlycy5zaXplKCldOwpA
QCAtODEsNiArMjQzLDI1IEBACiAgICAgcmV0dXJuIGFycmF5OwogfQogCisKK05TQXJyYXkgKmNv
bnZlcnRUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiB2ZWN0b3IpCit7CisgICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05T
TXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZlY3Rvci5zaXplKCldOworICAgIGZvciAo
Y29uc3QgYXV0byYgY2hpbGQgOiB2ZWN0b3IpIHsKKyAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIgPSBjaGlsZC0+d3JhcHBlcigpOworICAgICAgICBBU1NFUlQo
d3JhcHBlcik7CisgICAgICAgIGlmICh3cmFwcGVyKSB7CisgICAgICAgICAgICAvLyB3ZSB3YW50
IHRvIHJldHVybiB0aGUgYXR0YWNobWVudCB2aWV3IGluc3RlYWQgb2YgdGhlIG9iamVjdCByZXBy
ZXNlbnRpbmcgdGhlIGF0dGFjaG1lbnQuCisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdl
dCBwYWxpbmRyb21lIGVycm9ycyBpbiB0aGUgQVggaGllcmFyY2h5CisgICAgICAgICAgICBpZiAo
Y2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSkKKyAgICAg
ICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Olt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XV07Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDp3cmFwcGVy
XTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gW1thcnJheSBjb3B5XSBhdXRvcmVsZWFz
ZV07Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UKIAogLSAoaWQpaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0OihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KilheE9iamVjdApAQCAtNDU1LDYgKzYzNiwxMjcgQEAKICAgICB9CiB9CiAKKyNwcmFnbWEg
bWFyayBTZWFyY2ggaGVscGVycworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5PiBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwOworCitzdHJ1Y3QgU2VhcmNo
S2V5RW50cnkgeworICAgIFN0cmluZyBrZXk7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSB2
YWx1ZTsKK307CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBjcmVhdGVBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5TWFwKCkKK3sKKyAgICBjb25zdCBTZWFyY2hLZXlFbnRyeSBzZWFy
Y2hLZXlzW10gPSB7CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSwg
QW55VHlwZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVT
YW1lTGV2ZWxTZWFyY2hLZXksIEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKKyAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5LCBCbG9ja3F1b3RlU2VhcmNo
S2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRTZWFyY2hLZXksIEJvbGRG
b250U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uU2VhcmNoS2V5
LCBCdXR0b25TZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFNl
YXJjaEtleSwgQ2hlY2tCb3hTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlD
b250cm9sU2VhcmNoS2V5LCBDb250cm9sU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSwgRGlmZmVyZW50VHlwZVNlYXJjaEtleSB9LAor
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hLZXksIEZvbnRDaGFuZ2VT
ZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JDaGFuZ2VTZWFy
Y2hLZXksIEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUZyYW1lU2VhcmNoS2V5LCBGcmFtZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUdyYXBoaWNTZWFyY2hLZXksIEdyYXBoaWNTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwxU2VhcmNo
S2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSwg
SGVhZGluZ0xldmVsMlNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDNTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDNTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw0U2VhcmNo
S2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSwg
SGVhZGluZ0xldmVsNVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDZTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDZTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5LCBIZWFkaW5nU2FtZUxldmVs
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSwg
SGVhZGluZ1NlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhpZ2hsaWdodGVk
U2VhcmNoS2V5LCBIaWdobGlnaHRlZFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXksIEl0YWxpY0ZvbnRTZWFyY2hLZXkgfSwKKyAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleSwgTGFuZG1hcmtTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5LCBMaW5rU2VhcmNoS2V5IH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSwgTGlzdFNlYXJjaEtleSB9
LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFyY2hLZXksIExpdmVSZWdp
b25TZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNl
YXJjaEtleSwgTWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlPdXRsaW5lU2VhcmNoS2V5LCBPdXRsaW5lU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5LCBQbGFpblRleHRTZWFyY2hLZXkgfSwKKyAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNoS2V5LCBSYWRpb0dyb3VwU2Vh
cmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5cGVTZWFyY2hLZXksIFNh
bWVUeXBlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFNl
YXJjaEtleSwgU3RhdGljVGV4dFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eVN0eWxlQ2hhbmdlU2VhcmNoS2V5LCBTdHlsZUNoYW5nZVNlYXJjaEtleSB9LAorICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eVRhYmxlU2FtZUxldmVsU2VhcmNoS2V5LCBUYWJsZVNhbWVMZXZlbFNl
YXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRhYmxlU2VhcmNoS2V5LCBUYWJs
ZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtl
eSwgVGV4dEZpZWxkU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW5kZXJs
aW5lU2VhcmNoS2V5LCBVbmRlcmxpbmVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXksIFZpc2l0ZWRMaW5r
U2VhcmNoS2V5IH0KKyAgICB9OworICAgIAorICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAq
IHNlYXJjaEtleU1hcCA9IG5ldyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChzZWFyY2hLZXlzKTsgaSsrKQorICAg
ICAgICBzZWFyY2hLZXlNYXAtPnNldChzZWFyY2hLZXlzW2ldLmtleSwgc2VhcmNoS2V5c1tpXS52
YWx1ZSk7CisgICAgCisgICAgcmV0dXJuIHNlYXJjaEtleU1hcDsKK30KKworc3RhdGljIEFjY2Vz
c2liaWxpdHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBBbnlUeXBlU2VhcmNoS2V5OworICAgIAorICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
TWFwKCk7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkgPSBzZWFyY2hLZXlN
YXAtPmdldCh2YWx1ZSk7ICAgIAorICAgIHJldHVybiBzZWFyY2hLZXkgPyBzZWFyY2hLZXkgOiBB
bnlUeXBlU2VhcmNoS2V5OworfQorCitBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgYWNjZXNz
aWJpbGl0eVNlYXJjaENyaXRlcmlhRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZShjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpCit7CisgICAg
TlNTdHJpbmcgKmRpcmVjdGlvblBhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9i
amVjdEZvcktleTpAIkFYRGlyZWN0aW9uIl07CisgICAgTlNOdW1iZXIgKmltbWVkaWF0ZURlc2Nl
bmRhbnRzT25seVBhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktl
eTpOU0FjY2Vzc2liaWxpdHlJbW1lZGlhdGVEZXNjZW5kYW50c09ubHldOworICAgIE5TTnVtYmVy
ICpyZXN1bHRzTGltaXRQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RG
b3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdOworICAgIE5TU3RyaW5nICpzZWFyY2hUZXh0UGFyYW1l
dGVyID0gW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hUZXh0
Il07CisgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlICpzdGFydEVsZW1lbnRQ
YXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0
RWxlbWVudCJdOworICAgIE5TTnVtYmVyICp2aXNpYmxlT25seVBhcmFtZXRlciA9IFtwYXJhbWV0
ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYVmlzaWJsZU9ubHkiXTsKKyAgICBpZCBz
ZWFyY2hLZXlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6
QCJBWFNlYXJjaEtleSJdOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24g
ZGlyZWN0aW9uID0gU2VhcmNoRGlyZWN0aW9uTmV4dDsKKyAgICBpZiAoW2RpcmVjdGlvblBhcmFt
ZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICBkaXJlY3Rpb24g
PSBbZGlyZWN0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0aW9uTmV4dCJd
ID8gU2VhcmNoRGlyZWN0aW9uTmV4dCA6IFNlYXJjaERpcmVjdGlvblByZXZpb3VzOworICAgIAor
ICAgIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5ID0gZmFsc2U7CisgICAgaWYgKFtpbW1l
ZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xh
c3NdXSkKKyAgICAgICAgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5ID0gW2ltbWVkaWF0ZURlc2Nl
bmRhbnRzT25seVBhcmFtZXRlciBib29sVmFsdWVdOworICAgIAorICAgIHVuc2lnbmVkIHJlc3Vs
dHNMaW1pdCA9IDA7CisgICAgaWYgKFtyZXN1bHRzTGltaXRQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmVzdWx0c0xpbWl0ID0gW3Jlc3VsdHNMaW1p
dFBhcmFtZXRlciB1bnNpZ25lZEludFZhbHVlXTsKKyAgICAKKyAgICBTdHJpbmcgc2VhcmNoVGV4
dDsKKyAgICBpZiAoW3NlYXJjaFRleHRQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKKyAgICAgICAgc2VhcmNoVGV4dCA9IHNlYXJjaFRleHRQYXJhbWV0ZXI7CisgICAg
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBp
ZiAoW3N0YXJ0RWxlbWVudFBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UgY2xhc3NdXSkKKyAgICAgICAgc3RhcnRFbGVtZW50ID0gW3N0YXJ0
RWxlbWVudFBhcmFtZXRlciBhY2Nlc3NpYmlsaXR5T2JqZWN0XTsKKyAgICAKKyAgICBib29sIHZp
c2libGVPbmx5ID0gZmFsc2U7CisgICAgaWYgKFt2aXNpYmxlT25seVBhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQorICAgICAgICB2aXNpYmxlT25seSA9IFt2aXNpYmxl
T25seVBhcmFtZXRlciBib29sVmFsdWVdOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYSBjcml0ZXJpYSA9IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYShzdGFydEVsZW1l
bnQsIGRpcmVjdGlvbiwgc2VhcmNoVGV4dCwgcmVzdWx0c0xpbWl0LCB2aXNpYmxlT25seSwgaW1t
ZWRpYXRlRGVzY2VuZGFudHNPbmx5KTsKKyAgICAKKyAgICBpZiAoW3NlYXJjaEtleVBhcmFtZXRl
ciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICBjcml0ZXJpYS5zZWFy
Y2hLZXlzLmFwcGVuZChhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKHNlYXJjaEtleVBh
cmFtZXRlcikpOworICAgIGVsc2UgaWYgKFtzZWFyY2hLZXlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFz
czpbTlNBcnJheSBjbGFzc11dKSB7CisgICAgICAgIHNpemVfdCBzZWFyY2hLZXlDb3VudCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oW3NlYXJjaEtleVBhcmFtZXRlciBjb3VudF0pOworICAgICAgICBj
cml0ZXJpYS5zZWFyY2hLZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2VhcmNoS2V5Q291bnQp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlYXJjaEtleUNvdW50OyArK2kpIHsK
KyAgICAgICAgICAgIE5TU3RyaW5nICpzZWFyY2hLZXkgPSBbc2VhcmNoS2V5UGFyYW1ldGVyIG9i
amVjdEF0SW5kZXg6aV07CisgICAgICAgICAgICBpZiAoW3NlYXJjaEtleSBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgICAgIGNyaXRlcmlhLnNlYXJjaEtleXMu
dW5jaGVja2VkQXBwZW5kKGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoc2VhcmNoS2V5
KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNyaXRlcmlhOworfQorCiBA
ZW5kCiAKICNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjExMzI4KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI4MiwxMCArMjgyLDYgQEAKICNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5QVJJQVJvd0NvdW50QXR0cmlidXRlIEAiQVhBUklBUm93Q291bnQiCiAjZW5kaWYKIAot
Ly8gU2VhcmNoCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUltbWVkaWF0ZURlc2NlbmRhbnRzT25s
eQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlJbW1lZGlhdGVEZXNjZW5kYW50c09ubHkgQCJBWElt
bWVkaWF0ZURlc2NlbmRhbnRzT25seSIKLSNlbmRpZgogCiAjaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eVVJRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQog
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWFVJRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRl
IgpAQCAtMjk1LDE2MyArMjkxLDYgQEAKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
c0ZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWFVJRWxlbWVudHNG
b3JTZWFyY2hQcmVkaWNhdGUiCiAjZW5kaWYKIAotLy8gU2VhcmNoIEtleXMKLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBbnlU
eXBlU2VhcmNoS2V5IEAiQVhBbnlUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IEAiQVhCbG9ja3F1b3RlU2FtZUxl
dmVsU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90
ZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5IEAi
QVhCbG9ja3F1b3RlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
Qm9sZEZvbnRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRTZWFyY2hL
ZXkgQCJBWEJvbGRGb250U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5QnV0dG9uU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtl
eSBAIkFYQnV0dG9uU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
Q2hlY2tCb3hTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hL
ZXkgQCJBWENoZWNrQm94U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5Q29udHJvbFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNo
S2V5IEAiQVhDb250cm9sU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEaWZmZXJl
bnRUeXBlU2VhcmNoS2V5IEAiQVhEaWZmZXJlbnRUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5IEAiQVhGb250Q2hhbmdlU2VhcmNoS2V5IgotI2Vu
ZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5Ci0j
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSBAIkFYRm9udENv
bG9yQ2hhbmdlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5RnJh
bWVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXkgQCJBWEZy
YW1lU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1Nl
YXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5IEAiQVhHcmFw
aGljU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xl
dmVsMVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNo
S2V5IEAiQVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IgotI2VuZGlm
Ci0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleQotI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwz
U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVs
NFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5
IEAiQVhIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFk
aW5nTGV2ZWw1U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleQotI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw2U2Vh
cmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZl
bFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNo
S2V5IEAiQVhIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFk
aW5nU2VhcmNoS2V5IEAiQVhIZWFkaW5nU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
SGlnaGxpZ2h0ZWRTZWFyY2hLZXkgQCJBWEhpZ2hsaWdodGVkU2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5IEAiQVhJdGFsaWNGb250U2VhcmNoS2V5Igot
I2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkKLSNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkgQCJBWExhbmRtYXJrU2VhcmNoS2V5
IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleQotI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5IEAiQVhMaW5rU2VhcmNoS2V5IgotI2VuZGlm
Ci0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlMaXN0U2VhcmNoS2V5IEAiQVhMaXN0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5IEAiQVhMaXZlUmVnaW9uU2VhcmNoS2V5IgotI2VuZGlm
Ci0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkKLSNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgQCJBWE1pc3NwZWxsZWRX
b3JkU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVNl
YXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lU2VhcmNoS2V5IEAiQVhPdXRs
aW5lU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0
U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSBAIkFY
UGxhaW5UZXh0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UmFk
aW9Hcm91cFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNo
S2V5IEAiQVhSYWRpb0dyb3VwU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5U2FtZVR5cGVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5cGVT
ZWFyY2hLZXkgQCJBWFNhbWVUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTdGF0
aWNUZXh0U2VhcmNoS2V5IEAiQVhTdGF0aWNUZXh0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXkgQCJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5IgotI2Vu
ZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWFRhYmxlU2Ft
ZUxldmVsU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVT
ZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXkgQCJBWFRhYmxl
U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2Vh
cmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleSBAIkFYVGV4
dEZpZWxkU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VW5kZXJs
aW5lU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSBA
IkFYVW5kZXJsaW5lU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
VW52aXNpdGVkTGlua1NlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0ZWRM
aW5rU2VhcmNoS2V5IEAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkgQCJBWFZpc2l0ZWRMaW5rU2VhcmNoS2V5IgotI2Vu
ZGlmCi0KIC8vIFRleHQgbWFya2VycwogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlFbmRUZXh0TWFy
a2VyRm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQogI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlFbmRUZXh0TWFya2VyRm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYRW5kVGV4
dE1hcmtlckZvckJvdW5kcyIKQEAgLTYzMiwxMjkgKzQ3MSw2IEBACiAgICAgcmV0dXJuIEludFJl
Y3Qoc3RhcnRQb2ludC54KCksIHN0YXJ0UG9pbnQueSgpLCBlbmRQb2ludC54KCkgLSBzdGFydFBv
aW50LngoKSwgZW5kUG9pbnQueSgpIC0gc3RhcnRQb2ludC55KCkpOwogfQogCi0jcHJhZ21hIG1h
cmsgU2VhcmNoIGhlbHBlcnMKLQotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQWNjZXNzaWJpbGl0
eVNlYXJjaEtleT4gQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcDsKLQotc3RydWN0IFNlYXJjaEtl
eUVudHJ5IHsKLSAgICBTdHJpbmcga2V5OwotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgdmFs
dWU7Ci19OwotCi1zdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogY3JlYXRlQWNjZXNz
aWJpbGl0eVNlYXJjaEtleU1hcCgpCi17Ci0gICAgY29uc3QgU2VhcmNoS2V5RW50cnkgc2VhcmNo
S2V5c1tdID0gewotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXksIEFu
eVR5cGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2Ft
ZUxldmVsU2VhcmNoS2V5LCBCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNlYXJjaEtleSwgQmxvY2txdW90ZVNlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJvbGRGb250U2VhcmNoS2V5LCBCb2xkRm9u
dFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSwg
QnV0dG9uU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFy
Y2hLZXksIENoZWNrQm94U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbFNlYXJjaEtleSwgQ29udHJvbFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXksIERpZmZlcmVudFR5cGVTZWFyY2hLZXkgfSwKLSAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5LCBGb250Q2hhbmdlU2Vh
cmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNo
S2V5LCBGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlGcmFtZVNlYXJjaEtleSwgRnJhbWVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlHcmFwaGljU2VhcmNoS2V5LCBHcmFwaGljU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNlYXJjaEtleSwgSGVhZGluZ0xldmVsMVNlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXksIEhl
YWRpbmdMZXZlbDJTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5n
TGV2ZWwzU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNFNlYXJjaEtleSwgSGVhZGluZ0xldmVsNFNlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXksIEhl
YWRpbmdMZXZlbDVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5n
TGV2ZWw2U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJjaEtleSwgSGVhZGluZ1NhbWVMZXZlbFNl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXksIEhl
YWRpbmdTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIaWdobGlnaHRlZFNl
YXJjaEtleSwgSGlnaGxpZ2h0ZWRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlJdGFsaWNGb250U2VhcmNoS2V5LCBJdGFsaWNGb250U2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXksIExhbmRtYXJrU2VhcmNoS2V5IH0sCi0g
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleSwgTGlua1NlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpc3RTZWFyY2hLZXksIExpc3RTZWFyY2hLZXkgfSwK
LSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5LCBMaXZlUmVnaW9u
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFy
Y2hLZXksIE1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5T3V0bGluZVNlYXJjaEtleSwgT3V0bGluZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSwgUGxhaW5UZXh0U2VhcmNoS2V5IH0sCi0gICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSwgUmFkaW9Hcm91cFNlYXJj
aEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5LCBTYW1l
VHlwZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRTZWFy
Y2hLZXksIFN0YXRpY1RleHRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlT
dHlsZUNoYW5nZVNlYXJjaEtleSwgU3R5bGVDaGFuZ2VTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSwgVGFibGVTYW1lTGV2ZWxTZWFy
Y2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSwgVGFibGVT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXks
IFRleHRGaWVsZFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVuZGVybGlu
ZVNlYXJjaEtleSwgVW5kZXJsaW5lU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSwgVW52aXNpdGVkTGlua1NlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBWaXNpdGVkTGlua1Nl
YXJjaEtleSB9Ci0gICAgfTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBz
ZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcDsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoc2VhcmNoS2V5cyk7IGkrKykKLSAgICAg
ICAgc2VhcmNoS2V5TWFwLT5zZXQoc2VhcmNoS2V5c1tpXS5rZXksIHNlYXJjaEtleXNbaV0udmFs
dWUpOwotICAgIAotICAgIHJldHVybiBzZWFyY2hLZXlNYXA7Ci19Ci0KLXN0YXRpYyBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
QW55VHlwZVNlYXJjaEtleTsKLSAgICAKLSAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1h
cCgpOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgc2VhcmNoS2V5ID0gc2VhcmNo
S2V5TWFwLT5nZXQodmFsdWUpOwotICAgIAotICAgIHJldHVybiBzZWFyY2hLZXkgPyBzZWFyY2hL
ZXkgOiBBbnlUeXBlU2VhcmNoS2V5OwotfQotCi1zdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmli
dXRlKQotewotICAgIE5TU3RyaW5nICpkaXJlY3Rpb25QYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6QCJBWERpcmVjdGlvbiJdOwotICAgIE5TTnVtYmVyICpp
bW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0
ZSBvYmplY3RGb3JLZXk6TlNBY2Nlc3NpYmlsaXR5SW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5XTsK
LSAgICBOU051bWJlciAqcmVzdWx0c0xpbWl0UGFyYW1ldGVyID0gW3BhcmFtZXRlcml6ZWRBdHRy
aWJ1dGUgb2JqZWN0Rm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKLSAgICBOU1N0cmluZyAqc2Vh
cmNoVGV4dFBhcmFtZXRlciA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpA
IkFYU2VhcmNoVGV4dCJdOwotICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICpzdGFy
dEVsZW1lbnRQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmplY3RGb3JLZXk6
QCJBWFN0YXJ0RWxlbWVudCJdOwotICAgIE5TTnVtYmVyICp2aXNpYmxlT25seVBhcmFtZXRlciA9
IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZvcktleTpAIkFYVmlzaWJsZU9ubHkiXTsK
LSAgICBpZCBzZWFyY2hLZXlQYXJhbWV0ZXIgPSBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBvYmpl
Y3RGb3JLZXk6QCJBWFNlYXJjaEtleSJdOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hE
aXJlY3Rpb24gZGlyZWN0aW9uID0gU2VhcmNoRGlyZWN0aW9uTmV4dDsKLSAgICBpZiAoW2RpcmVj
dGlvblBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBk
aXJlY3Rpb24gPSBbZGlyZWN0aW9uUGFyYW1ldGVyIGlzRXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0
aW9uTmV4dCJdID8gU2VhcmNoRGlyZWN0aW9uTmV4dCA6IFNlYXJjaERpcmVjdGlvblByZXZpb3Vz
OwotICAgIAotICAgIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5ID0gZmFsc2U7Ci0gICAg
aWYgKFtpbW1lZGlhdGVEZXNjZW5kYW50c09ubHlQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKLSAgICAgICAgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5ID0gW2ltbWVk
aWF0ZURlc2NlbmRhbnRzT25seVBhcmFtZXRlciBib29sVmFsdWVdOwotICAgIAotICAgIHVuc2ln
bmVkIHJlc3VsdHNMaW1pdCA9IDA7Ci0gICAgaWYgKFtyZXN1bHRzTGltaXRQYXJhbWV0ZXIgaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmVzdWx0c0xpbWl0ID0gW3Jl
c3VsdHNMaW1pdFBhcmFtZXRlciB1bnNpZ25lZEludFZhbHVlXTsKLSAgICAKLSAgICBTdHJpbmcg
c2VhcmNoVGV4dDsKLSAgICBpZiAoW3NlYXJjaFRleHRQYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgc2VhcmNoVGV4dCA9IHNlYXJjaFRleHRQYXJhbWV0
ZXI7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRFbGVtZW50ID0gbnVsbHB0
cjsKLSAgICBpZiAoW3N0YXJ0RWxlbWVudFBhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dKQotICAgICAgICBzdGFydEVsZW1lbnQgPSBb
c3RhcnRFbGVtZW50UGFyYW1ldGVyIGFjY2Vzc2liaWxpdHlPYmplY3RdOwotICAgIAotICAgIGJv
b2wgdmlzaWJsZU9ubHkgPSBmYWxzZTsKLSAgICBpZiAoW3Zpc2libGVPbmx5UGFyYW1ldGVyIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHZpc2libGVPbmx5ID0gW3Zp
c2libGVPbmx5UGFyYW1ldGVyIGJvb2xWYWx1ZV07Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVNl
YXJjaENyaXRlcmlhIGNyaXRlcmlhID0gQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKHN0YXJ0
RWxlbWVudCwgZGlyZWN0aW9uLCBzZWFyY2hUZXh0LCByZXN1bHRzTGltaXQsIHZpc2libGVPbmx5
LCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpOwotICAgIAotICAgIGlmIChbc2VhcmNoS2V5UGFy
YW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIGNyaXRlcmlh
LnNlYXJjaEtleXMuYXBwZW5kKGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoc2VhcmNo
S2V5UGFyYW1ldGVyKSk7Ci0gICAgZWxzZSBpZiAoW3NlYXJjaEtleVBhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pIHsKLSAgICAgICAgc2l6ZV90IHNlYXJjaEtleUNvdW50
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihbc2VhcmNoS2V5UGFyYW1ldGVyIGNvdW50XSk7Ci0gICAg
ICAgIGNyaXRlcmlhLnNlYXJjaEtleXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWFyY2hLZXlD
b3VudCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VhcmNoS2V5Q291bnQ7ICsr
aSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKnNlYXJjaEtleSA9IFtzZWFyY2hLZXlQYXJhbWV0
ZXIgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgICAgIGlmIChbc2VhcmNoS2V5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICAgICAgY3JpdGVyaWEuc2VhcmNo
S2V5cy51bmNoZWNrZWRBcHBlbmQoYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhzZWFy
Y2hLZXkpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gY3JpdGVyaWE7Ci19
Ci0KICNwcmFnbWEgbWFyayBTZWxlY3QgdGV4dCBoZWxwZXJzCiAKIHN0YXRpYyBBY2Nlc3NpYmls
aXR5U2VsZWN0VGV4dENyaXRlcmlhIGFjY2Vzc2liaWxpdHlTZWxlY3RUZXh0Q3JpdGVyaWFGb3JD
cml0ZXJpYVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoY29uc3QgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlKQpAQCAtMTk1MCwyNCArMTY2Niw2IEBACiAgICAgfQogfQogCi1zdGF0
aWMgTlNNdXRhYmxlQXJyYXkqIGNvbnZlcnRUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiB2ZWN0b3IpCi17Ci0gICAgTlNNdXRh
YmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnZlY3Rv
ci5zaXplKCldOwotICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiB2ZWN0b3IpIHsKLSAgICAg
ICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIgPSBjaGlsZC0+d3JhcHBl
cigpOwotICAgICAgICBBU1NFUlQod3JhcHBlcik7Ci0gICAgICAgIGlmICh3cmFwcGVyKSB7Ci0g
ICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHJldHVybiB0aGUgYXR0YWNobWVudCB2aWV3IGluc3Rl
YWQgb2YgdGhlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFjaG1lbnQuCi0gICAgICAgICAg
ICAvLyBvdGhlcndpc2UsIHdlIGdldCBwYWxpbmRyb21lIGVycm9ycyBpbiB0aGUgQVggaGllcmFy
Y2h5Ci0gICAgICAgICAgICBpZiAoY2hpbGQtPmlzQXR0YWNobWVudCgpICYmIFt3cmFwcGVyIGF0
dGFjaG1lbnRWaWV3XSkKLSAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Olt3cmFwcGVy
IGF0dGFjaG1lbnRWaWV3XV07Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDp3cmFwcGVyXTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYXJy
YXk7Ci19Ci0KIHN0YXRpYyBOU011dGFibGVBcnJheSAqY29udmVydFN0cmluZ3NUb05TQXJyYXko
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHZlY3RvcikKIHsKICAgICBOU011dGFibGVBcnJheSAqYXJy
YXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dmVjdG9yLnNpemUoKV07Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMTEzMjgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMS0zMCAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBlbmFibGUgc2VhcmNoIHByZWRpY2F0
aW9uIGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NzU1OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAyNTEzNjc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIHNlYXJjaGlu
ZyBzbW9rZSB0ZXN0IHRvIGVuc3VyZSBmdW5kYW1lbnRhbHMgd29yayBvbiBpT1MuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW9zLXNlYXJjaC1wcmVkaWNhdGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3Iv
aW9zLXNlYXJjaC1wcmVkaWNhdGUuaHRtbDogQWRkZWQuCisKIDIwMTctMDEtMjcgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgTGlmdCB0ZW1wbGF0ZSBl
c2NhcGUgc2VxdWVuY2UgcmVzdHJpY3Rpb25zIGluIHRhZ2dlZCB0ZW1wbGF0ZXMKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pb3Mtc2VhcmNoLXByZWRpY2F0
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9p
b3Mtc2ltdWxhdG9yL2lvcy1zZWFyY2gtcHJlZGljYXRlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW9zLXNlYXJj
aC1wcmVkaWNhdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAK
K3N0YXJ0CitmaXJzdCBoZWFkaW5nIGxldmVsIDEKKworc2Vjb25kIGhlYWRpbmcgbGV2ZWwgMQor
CitoZWFkaW5nIGxldmVsIDIKKworaGVhZGluZyBsZXZlbCAzCisKK2hlYWRpbmcgbGV2ZWwgNAor
CitoZWFkaW5nIGxldmVsIDUKKworaGVhZGluZyBsZXZlbCA2CisKK1RoaXMgdGVzdHMgdGhlIGFi
aWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGJ5IGtleSBvciB0ZXh0Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5kZXNjcmlwdGlvbiBpcyAnQVhMYWJlbDogZmlyc3QgaGVhZGluZyBsZXZlbCAx
JworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5kZXNjcmlwdGlvbiBpcyAnQVhM
YWJlbDogaGVhZGluZyBsZXZlbCAyJworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KS5kZXNjcmlwdGlvbiBpcyAnQVhMYWJlbDogaGVhZGluZyBsZXZlbCAzJworUEFTUyByZXN1bHRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKS5kZXNjcmlwdGlvbiBpcyAnQVhMYWJlbDogaGVhZGluZyBs
ZXZlbCA0JworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5kZXNjcmlwdGlvbiBp
cyAnQVhMYWJlbDogaGVhZGluZyBsZXZlbCA1JworUEFTUyByZXN1bHRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKS5kZXNjcmlwdGlvbiBpcyAnQVhMYWJlbDogaGVhZGluZyBsZXZlbCA2JworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pb3Mtc2VhcmNoLXByZWRpY2F0ZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRv
ci9pb3Mtc2VhcmNoLXByZWRpY2F0ZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pb3Mtc2VhcmNoLXByZWRpY2F0ZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJi
b2R5Ij4KKworPGJ1dHRvbj5zdGFydDwvYnV0dG9uPgorCis8aDE+Zmlyc3QgaGVhZGluZyBsZXZl
bCAxPC9oMT4KKzxoMT5zZWNvbmQgaGVhZGluZyBsZXZlbCAxPC9oMT4KKzxoMj5oZWFkaW5nIGxl
dmVsIDI8L2gyPgorPGgzPmhlYWRpbmcgbGV2ZWwgMzwvaDM+Cis8aDQ+aGVhZGluZyBsZXZlbCA0
PC9oND4KKzxoNT5oZWFkaW5nIGxldmVsIDU8L2g1PgorPGg2PmhlYWRpbmcgbGV2ZWwgNjwvaDY+
CisKKyAgICAKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkg
dG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGJ5IGtleSBvciB0ZXh0LiIpOworICAg
IAorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgd2lu
ZG93LnRlc3RSdW5uZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICAgICAgCisgICAgICAgIHZhciBj
b250YWluZXJFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQ7Cisg
ICAgICAgIHZhciBzdGFydEVsZW1lbnQ7CisgICAgICAgIHZhciByZXN1bHRFbGVtZW50OworCisg
ICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwgMS4KKyAgICAgICAgc3RhcnRFbGVtZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IiwgIiIs
IGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
LmRlc2NyaXB0aW9uIiwgIidBWExhYmVsOiBmaXJzdCBoZWFkaW5nIGxldmVsIDEnIik7CisgICAg
ICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDIuCisgICAgICAgIHN0YXJ0RWxlbWVudCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsK
KyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYSGVhZGluZ0xldmVsMlNlYXJjaEtl
eSIsICIiLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxkQXRJ
bmRleCgwKS5kZXNjcmlwdGlvbiIsICInQVhMYWJlbDogaGVhZGluZyBsZXZlbCAyJyIpOworICAg
ICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCAzLgorICAgICAgICBzdGFydEVsZW1lbnQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7
CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEhlYWRpbmdMZXZlbDNTZWFyY2hL
ZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGlsZEF0
SW5kZXgoMCkuZGVzY3JpcHRpb24iLCAiJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgMyciKTsKKyAg
ICAgICAgCisgICAgICAgIC8vIEhlYWRpbmcgbGV2ZWwgNC4KKyAgICAgICAgc3RhcnRFbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhIZWFkaW5nTGV2ZWw0U2VhcmNo
S2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApLmRlc2NyaXB0aW9uIiwgIidBWExhYmVsOiBoZWFkaW5nIGxldmVsIDQnIik7Cisg
ICAgICAgIAorICAgICAgICAvLyBIZWFkaW5nIGxldmVsIDUuCisgICAgICAgIHN0YXJ0RWxlbWVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYSGVhZGluZ0xldmVsNVNlYXJj
aEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKS5kZXNjcmlwdGlvbiIsICInQVhMYWJlbDogaGVhZGluZyBsZXZlbCA1JyIpOwor
ICAgICAgICAKKyAgICAgICAgLy8gSGVhZGluZyBsZXZlbCA2LgorICAgICAgICBzdGFydEVsZW1l
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
MCk7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEhlYWRpbmdMZXZlbDZTZWFy
Y2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5jaGls
ZEF0SW5kZXgoMCkuZGVzY3JpcHRpb24iLCAiJ0FYTGFiZWw6IGhlYWRpbmcgbGV2ZWwgNiciKTsg
ICAgICAgIAorICAgIH0KKyAgICAKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMTEzODEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
OCBAQAorMjAxNy0wMS0zMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgor
CisgICAgICAgIEFYOiBlbmFibGUgc2VhcmNoIHByZWRpY2F0aW9uIGZvciBpT1MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzU1OAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAyNTEzNjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbToKKyAgICAgICAgKHNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVGb3JTZWFyY2hDcml0ZXJpYSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChzZWFyY2hQcmVkaWNhdGVQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbToKKyAgICAgICAgKFdUUjo6c2VhcmNoUHJlZGljYXRlUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAg
ICAgICAoV1RSOjpzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yU2VhcmNo
Q3JpdGVyaWEpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE3LTAxLTMwICBDYXJsb3Mg
QWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W0VGTF0gQXZvaWQgdXNpbmcgYSB0aGluIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGJ1aWx0IHBy
b2R1Y3Qgb24gdGhlIGFyY2hpdmUtYnVpbHQtcHJvZHVjdCBzdGVwLgpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0J
KHJldmlzaW9uIDIxMTMyOCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAKIC0g
KE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb247CiAtIChCT09MKWFjY2Vzc2li
aWxpdHlJc0V4cGFuZGVkOwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5QmxvY2txdW90ZUxl
dmVsOworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOihOU0Rp
Y3Rpb25hcnkgKilwYXJhbWV0ZXJzOwogCiAvLyBUZXh0TWFya2VyIHJlbGF0ZWQKIC0gKE5TQXJy
YXkgKil0ZXh0TWFya2VyUmFuZ2U7CkBAIC0xMTIwLDEwICsxMTIxLDEzIEBACiAgICAgcmV0dXJu
IDA7CiB9CiAKLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1Zh
bHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25s
eSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0Nv
bnRleHRSZWYgY29udGV4dCwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCAqc3RhcnRFbGVtZW50LCBi
b29sIGlzRGlyZWN0aW9uTmV4dCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNl
YXJjaFRleHQsIGJvb2wgdmlzaWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5
KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsKKyAgICBOU0RpY3Rp
b25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBzZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJp
emVkQXR0cmlidXRlRm9yU2VhcmNoQ3JpdGVyaWEoY29udGV4dCwgc3RhcnRFbGVtZW50LCBpc0Rp
cmVjdGlvbk5leHQsIDEsIHNlYXJjaEtleSwgc2VhcmNoVGV4dCwgdmlzaWJsZU9ubHksIGltbWVk
aWF0ZURlc2NlbmRhbnRzT25seSk7CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlGaW5kTWF0Y2hpbmdPYmplY3RzOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworICAgIGlm
ICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoW3ZhbHVlIGxhc3RP
YmplY3RdKTsKIH0KIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0
VGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgYW1iaWd1
aXR5UmVzb2x1dGlvbiwgSlNWYWx1ZVJlZiBzZWFyY2hTdHJpbmdzLCBKU1N0cmluZ1JlZiByZXBs
YWNlbWVudFN0cmluZywgSlNTdHJpbmdSZWYgYWN0aXZpdHkpCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgJKHJldmlzaW9uIDIx
MTMyOCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKICNpZm5kZWYgQWNjZXNzaWJpbGl0
eUNvbW1vbk1hY19oCiAjZGVmaW5lIEFjY2Vzc2liaWxpdHlDb21tb25NYWNfaAogCisjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pT
U3RyaW5nUmVmLmg+CiAKIC8vIElmIGFuIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZSBpcyBwYXNzZWQg
aW4sIGl0IHdpbGwgcmFpc2UgYW4gYWNjZXNzaWJpbGl0eSBleGNlcHRpb24uIFRoZXNlIGFyZSB1
c3VhbGx5IGNhdWdodCBieSB0aGUgQWNjZXNzaWJpbGl0eSBSdW50aW1lIHRvIGluZm9ybQpAQCAt
NDQsNCArNDYsNiBAQAogLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWY7CiBAZW5kCiAK
K2V4dGVybiBOU0RpY3Rpb25hcnkgKnNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVGb3JTZWFyY2hDcml0ZXJpYShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQg
KnN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIHVuc2lnbmVkIHJlc3VsdHNMaW1p
dCwgSlNWYWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlz
aWJsZU9ubHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KTsKKwogI2VuZGlmIC8vIEFj
Y2Vzc2liaWxpdHlDb21tb25NYWNfaApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlDb21tb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0JKHJldmlzaW9uIDIxMTMyOCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlDb21tb25NYWMuaCIKIAorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRh
aW5QdHIuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZkNGLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBOU1N0
cmluZyAoSlNTdHJpbmdSZWZBZGRpdGlvbnMpCkBAIC00OSw0ICs1MSw1NiBAQAogICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpc2VsZik7CiB9CiAKK05T
RGljdGlvbmFyeSAqc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJj
aENyaXRlcmlhKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpz
dGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQs
IEpTVmFsdWVSZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2li
bGVPbmx5LCBib29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKK3sKKyAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeV07CisgICAgCisgICAgaWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQt
PnBsYXRmb3JtVUlFbGVtZW50KCkpCisgICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNl
dE9iamVjdDooaWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFY
U3RhcnRFbGVtZW50Il07CisgICAgCisgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2Jq
ZWN0Oihpc0RpcmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlv
blByZXZpb3VzIiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOworICAgIAorICAgIFtwYXJhbWV0ZXJp
emVkQXR0cmlidXRlIHNldE9iamVjdDpAKHJlc3VsdHNMaW1pdCkgZm9yS2V5OkAiQVhSZXN1bHRz
TGltaXQiXTsKKyAgICAKKyAgICBpZiAoc2VhcmNoS2V5KSB7CisgICAgICAgIGlkIHNlYXJjaEtl
eVBhcmFtZXRlciA9IG5pbDsKKyAgICAgICAgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBz
ZWFyY2hLZXkpKSB7CisgICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VhcmNo
S2V5U3RyaW5nKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHNlYXJjaEtleSwg
bnVsbHB0cikpOworICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0cmluZykKKyAgICAgICAgICAg
ICAgICBzZWFyY2hLZXlQYXJhbWV0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVm
OnNlYXJjaEtleVN0cmluZy5nZXQoKV07CisgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzT2Jq
ZWN0KGNvbnRleHQsIHNlYXJjaEtleSkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIHNlYXJj
aEtleUFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cik7
CisgICAgICAgICAgICB1bnNpZ25lZCBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IDA7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsZW5ndGhQcm9wZXJ0
eVN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsK
KyAgICAgICAgICAgIEpTVmFsdWVSZWYgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgc2VhcmNoS2V5QXJyYXksIGxlbmd0aFByb3BlcnR5U3Ry
aW5nLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGlmIChzZWFyY2hLZXlBcnJheUxlbmd0
aFZhbHVlICYmIEpTVmFsdWVJc051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0aFZh
bHVlKSkKKyAgICAgICAgICAgICAgICBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgc2VhcmNoS2V5QXJyYXlMZW5ndGhW
YWx1ZSwgbnVsbHB0cikpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2VhcmNoS2V5QXJyYXlMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWYgc2VhcmNoS2V5VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBzZWFyY2hLZXlBcnJheSwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgSlNT
dHJpbmdSZWYgc2VhcmNoS2V5U3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBz
ZWFyY2hLZXlWYWx1ZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0
cmluZykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXNlYXJjaEtleVBhcmFtZXRlcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEtleVBhcmFtZXRlciA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07CisgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hLZXlQYXJhbWV0ZXIgYWRkT2Jq
ZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5U3RyaW5nXV07Cisg
ICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzZWFyY2hLZXlTdHJpbmcpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc2Vh
cmNoS2V5UGFyYW1ldGVyKQorICAgICAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0
T2JqZWN0OnNlYXJjaEtleVBhcmFtZXRlciBmb3JLZXk6QCJBWFNlYXJjaEtleSJdOworICAgIH0K
KyAgICAKKyAgICBpZiAoc2VhcmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0
KSkKKyAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoVGV4dF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07
CisgICAgCisgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAodmlzaWJsZU9u
bHkpIGZvcktleTpAIkFYVmlzaWJsZU9ubHkiXTsKKyAgICAKKyAgICBbcGFyYW1ldGVyaXplZEF0
dHJpYnV0ZSBzZXRPYmplY3Q6QChpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpIGZvcktleTpAIkFY
SW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5Il07CisgICAgCisgICAgcmV0dXJuIHBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGU7Cit9CisKKwogQGVuZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDIxMTMy
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNTggKzIwMyw2IEBACiAgICAgcmV0dXJuIFthbGxF
bGVtZW50U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAotc3RhdGljIE5TRGljdGlvbmFy
eSAqc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlh
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIEpTVmFsdWVS
ZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBi
b29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFy
eV07Ci0gICAgCi0gICAgaWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQtPnBsYXRmb3Jt
VUlFbGVtZW50KCkpCi0gICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDoo
aWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVt
ZW50Il07Ci0gICAgCi0gICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0Rp
cmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3Vz
IiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOwotICAgIAotICAgIFtwYXJhbWV0ZXJpemVkQXR0cmli
dXRlIHNldE9iamVjdDpAKHJlc3VsdHNMaW1pdCkgZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsK
LSAgICAKLSAgICBpZiAoc2VhcmNoS2V5KSB7Ci0gICAgICAgIGlkIHNlYXJjaEtleVBhcmFtZXRl
ciA9IG5pbDsKLSAgICAgICAgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBzZWFyY2hLZXkp
KSB7Ci0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VhcmNoS2V5U3RyaW5n
KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cikp
OwotICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0cmluZykKLSAgICAgICAgICAgICAgICBzZWFy
Y2hLZXlQYXJhbWV0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtl
eVN0cmluZy5nZXQoKV07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoSlNWYWx1ZUlzT2Jq
ZWN0KGNvbnRleHQsIHNlYXJjaEtleSkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0UmVmIHNlYXJj
aEtleUFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cik7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IDA7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsZW5ndGhQcm9wZXJ0
eVN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsK
LSAgICAgICAgICAgIEpTVmFsdWVSZWYgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgc2VhcmNoS2V5QXJyYXksIGxlbmd0aFByb3BlcnR5U3Ry
aW5nLmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlmIChzZWFyY2hLZXlBcnJheUxlbmd0
aFZhbHVlICYmIEpTVmFsdWVJc051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0aFZh
bHVlKSkKLSAgICAgICAgICAgICAgICBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgc2VhcmNoS2V5QXJyYXlMZW5ndGhW
YWx1ZSwgbnVsbHB0cikpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2VhcmNoS2V5QXJyYXlMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWYgc2VhcmNoS2V5VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBzZWFyY2hLZXlBcnJheSwgaSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgSlNT
dHJpbmdSZWYgc2VhcmNoS2V5U3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBz
ZWFyY2hLZXlWYWx1ZSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0
cmluZykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXNlYXJjaEtleVBhcmFtZXRlcikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEtleVBhcmFtZXRlciA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07Ci0gICAgICAgICAgICAgICAgICAgIFtzZWFyY2hLZXlQYXJhbWV0ZXIgYWRkT2Jq
ZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5U3RyaW5nXV07Ci0g
ICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzZWFyY2hLZXlTdHJpbmcpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoc2Vh
cmNoS2V5UGFyYW1ldGVyKQotICAgICAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0
T2JqZWN0OnNlYXJjaEtleVBhcmFtZXRlciBmb3JLZXk6QCJBWFNlYXJjaEtleSJdOwotICAgIH0K
LSAgICAKLSAgICBpZiAoc2VhcmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0
KSkKLSAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoVGV4dF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07
Ci0gICAgCi0gICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAodmlzaWJsZU9u
bHkpIGZvcktleTpAIkFYVmlzaWJsZU9ubHkiXTsKLSAgICAKLSAgICBbcGFyYW1ldGVyaXplZEF0
dHJpYnV0ZSBzZXRPYmplY3Q6QChpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpIGZvcktleTpAIkFY
SW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5Il07Ci0gICAgCi0gICAgcmV0dXJuIHBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGU7Ci19Ci0KIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnNlbGVjdFRleHRQYXJhbWV0
ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5n
UmVmIGFtYmlndWl0eVJlc29sdXRpb24sIEpTVmFsdWVSZWYgc2VhcmNoU3RyaW5ncywgSlNTdHJp
bmdSZWYgcmVwbGFjZW1lbnRTdHJpbmcsIEpTU3RyaW5nUmVmIGFjdGl2aXR5KQogewogICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5XTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudElPUy5tbQkocmV2aXNpb24gMjExMzI4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIK
ICNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCkBAIC03Nyw2ICs3OCw3IEBACiAtIChOU1N0cmlu
ZyAqKWFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNF
eHBhbmRlZDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVMZXZlbDsKKy0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5RmluZE1hdGNoaW5nT2JqZWN0czooTlNEaWN0aW9uYXJ5
ICopcGFyYW1ldGVyczsKIAogLy8gVGV4dE1hcmtlciByZWxhdGVkCiAtIChOU0FycmF5ICopdGV4
dE1hcmtlclJhbmdlOwpAQCAtNjUzLDE0ICs2NTUsMTggQEAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXVuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudENvdW50Rm9yU2Vh
cmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtl
eSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlh
dGVEZXNjZW5kYW50c09ubHkpCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVs
ZW1lbnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCAqc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwgSlNW
YWx1ZVJlZiBzZWFyY2hLZXksIEpTU3RyaW5nUmVmIHNlYXJjaFRleHQsIGJvb2wgdmlzaWJsZU9u
bHksIGJvb2wgaW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5KQogewogICAgIHJldHVybiAwOwogfQog
Ci1SZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1Zh
bHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25s
eSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVs
ZW1lbnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJp
bmdSZWYgc2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5k
YW50c09ubHkpCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgTlNEaWN0aW9uYXJ5ICpwYXJh
bWV0ZXJpemVkQXR0cmlidXRlID0gc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZUZvclNlYXJjaENyaXRlcmlhKGNvbnRleHQsIHN0YXJ0RWxlbWVudCwgaXNEaXJlY3Rpb25OZXh0
LCAxLCBzZWFyY2hLZXksIHNlYXJjaFRleHQsIHZpc2libGVPbmx5LCBpbW1lZGlhdGVEZXNjZW5k
YW50c09ubHkpOworICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5RmluZE1h
dGNoaW5nT2JqZWN0czpwYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKyAgICBpZiAoIVt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW3ZhbHVlIGxhc3RPYmpl
Y3RdKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiBhbWJp
Z3VpdHlSZXNvbHV0aW9uLCBKU1ZhbHVlUmVmIHNlYXJjaFN0cmluZ3MsIEpTU3RyaW5nUmVmIHJl
cGxhY2VtZW50U3RyaW5nLCBKU1N0cmluZ1JlZiBhY3Rpdml0eSkKSW5kZXg6IFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5Q29tbW9uTWFjLmgJKHJldmlzaW9uIDIxMTMyOCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjX2gKICNkZWZpbmUgQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCiAKKyNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKwogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNTdHJp
bmdSZWYuaD4KIAogLy8gSWYgYW4gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIGlzIHBhc3NlZCBpbiwg
aXQgd2lsbCByYWlzZSBhbiBhY2Nlc3NpYmlsaXR5IGV4Y2VwdGlvbi4gVGhlc2UgYXJlIHVzdWFs
bHkgY2F1Z2h0IGJ5IHRoZSBBY2Nlc3NpYmlsaXR5IFJ1bnRpbWUgdG8gaW5mb3JtCkBAIC00NCw0
ICs0NiwxMCBAQAogLSAoSlNTdHJpbmdSZWYpY3JlYXRlSlNTdHJpbmdSZWY7CiBAZW5kCiAKK25h
bWVzcGFjZSBXVFIgeworICAgIAorZXh0ZXJuIE5TRGljdGlvbmFyeSAqc2VhcmNoUHJlZGljYXRl
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4dFJlZiwgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCAqc3RhcnRFbGVtZW50LCBib29sIGlzRGlyZWN0aW9uTmV4dCwg
dW5zaWduZWQgcmVzdWx0c0xpbWl0LCBKU1ZhbHVlUmVmIHNlYXJjaEtleSwgSlNTdHJpbmdSZWYg
c2VhcmNoVGV4dCwgYm9vbCB2aXNpYmxlT25seSwgYm9vbCBpbW1lZGlhdGVEZXNjZW5kYW50c09u
bHkpOworCit9OworCiAjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eUNvbW1vbk1hY19oCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0JKHJldmlzaW9uIDIxMTMyOCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oIgogCisjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWYuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmQ0YuaD4KIAog
QGltcGxlbWVudGF0aW9uIE5TU3RyaW5nIChKU1N0cmluZ1JlZkFkZGl0aW9ucykKQEAgLTQ5LDQg
KzUxLDU5IEBACiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmlu
Z1JlZilzZWxmKTsKIH0KIAorbmFtZXNwYWNlIFdUUiB7CisKK05TRGljdGlvbmFyeSAqc2VhcmNo
UHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlhKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVsZW1lbnQsIGJvb2wg
aXNEaXJlY3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIEpTVmFsdWVSZWYgc2VhcmNo
S2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBib29sIGltbWVk
aWF0ZURlc2NlbmRhbnRzT25seSkKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CisgICAg
CisgICAgaWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50
KCkpCisgICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDooaWQpc3RhcnRF
bGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVtZW50Il07Cisg
ICAgCisgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0RpcmVjdGlvbk5l
eHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3VzIiBmb3JLZXk6
QCJBWERpcmVjdGlvbiJdOworICAgIAorICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9i
amVjdDpAKHJlc3VsdHNMaW1pdCkgZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsKKyAgICAKKyAg
ICBpZiAoc2VhcmNoS2V5KSB7CisgICAgICAgIGlkIHNlYXJjaEtleVBhcmFtZXRlciA9IG5pbDsK
KyAgICAgICAgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBzZWFyY2hLZXkpKSB7CisgICAg
ICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VhcmNoS2V5U3RyaW5nKEFkb3B0LCBK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cikpOworICAgICAg
ICAgICAgaWYgKHNlYXJjaEtleVN0cmluZykKKyAgICAgICAgICAgICAgICBzZWFyY2hLZXlQYXJh
bWV0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtleVN0cmluZy5n
ZXQoKV07CisgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHNlYXJj
aEtleSkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIHNlYXJjaEtleUFycmF5ID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cik7CisgICAgICAgICAgICB1bnNp
Z25lZCBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsZW5ndGhQcm9wZXJ0eVN0cmluZyhBZG9wdCwgSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsKKyAgICAgICAgICAgIEpTVmFs
dWVSZWYgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29u
dGV4dCwgc2VhcmNoS2V5QXJyYXksIGxlbmd0aFByb3BlcnR5U3RyaW5nLmdldCgpLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGlmIChzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlICYmIEpTVmFsdWVJ
c051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0aFZhbHVlKSkKKyAgICAgICAgICAg
ICAgICBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSwgbnVsbHB0cikpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VhcmNo
S2V5QXJyYXlMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgc2VhcmNo
S2V5VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBzZWFyY2hLZXlB
cnJheSwgaSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2VhcmNoS2V5
U3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBzZWFyY2hLZXlWYWx1ZSwgbnVs
bHB0cik7CisgICAgICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0cmluZykgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIXNlYXJjaEtleVBhcmFtZXRlcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlYXJjaEtleVBhcmFtZXRlciA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgICAg
ICAgICAgICAgICAgIFtzZWFyY2hLZXlQYXJhbWV0ZXIgYWRkT2JqZWN0OltOU1N0cmluZyBzdHJp
bmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5U3RyaW5nXV07CisgICAgICAgICAgICAgICAgICAg
IEpTU3RyaW5nUmVsZWFzZShzZWFyY2hLZXlTdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc2VhcmNoS2V5UGFyYW1ldGVyKQor
ICAgICAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OnNlYXJjaEtleVBh
cmFtZXRlciBmb3JLZXk6QCJBWFNlYXJjaEtleSJdOworICAgIH0KKyAgICAKKyAgICBpZiAoc2Vh
cmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0KSkKKyAgICAgICAgW3BhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdS
ZWY6c2VhcmNoVGV4dF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07CisgICAgCisgICAgW3BhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAodmlzaWJsZU9ubHkpIGZvcktleTpAIkFYVmlz
aWJsZU9ubHkiXTsKKyAgICAKKyAgICBbcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBzZXRPYmplY3Q6
QChpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpIGZvcktleTpAIkFYSW1tZWRpYXRlRGVzY2VuZGFu
dHNPbmx5Il07CisgICAgCisgICAgcmV0dXJuIHBhcmFtZXRlcml6ZWRBdHRyaWJ1dGU7Cit9Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXVFIKKwogQGVuZApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAyMTEzMjgpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNTggKzIyOSw2IEBACiAgICAgcmV0dXJuIFthbGxF
bGVtZW50U3RyaW5nIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAotc3RhdGljIE5TRGljdGlvbmFy
eSAqc2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvclNlYXJjaENyaXRlcmlh
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50ICpzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCB1bnNpZ25lZCByZXN1bHRzTGltaXQsIEpTVmFsdWVS
ZWYgc2VhcmNoS2V5LCBKU1N0cmluZ1JlZiBzZWFyY2hUZXh0LCBib29sIHZpc2libGVPbmx5LCBi
b29sIGltbWVkaWF0ZURlc2NlbmRhbnRzT25seSkKLXsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFy
eV07Ci0gICAgCi0gICAgaWYgKHN0YXJ0RWxlbWVudCAmJiBzdGFydEVsZW1lbnQtPnBsYXRmb3Jt
VUlFbGVtZW50KCkpCi0gICAgICAgIFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIHNldE9iamVjdDoo
aWQpc3RhcnRFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpIGZvcktleTpAIkFYU3RhcnRFbGVt
ZW50Il07Ci0gICAgCi0gICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0Oihpc0Rp
cmVjdGlvbk5leHQpID8gQCJBWERpcmVjdGlvbk5leHQiIDogQCJBWERpcmVjdGlvblByZXZpb3Vz
IiBmb3JLZXk6QCJBWERpcmVjdGlvbiJdOwotICAgIAotICAgIFtwYXJhbWV0ZXJpemVkQXR0cmli
dXRlIHNldE9iamVjdDpAKHJlc3VsdHNMaW1pdCkgZm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXTsK
LSAgICAKLSAgICBpZiAoc2VhcmNoS2V5KSB7Ci0gICAgICAgIGlkIHNlYXJjaEtleVBhcmFtZXRl
ciA9IG5pbDsKLSAgICAgICAgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCBzZWFyY2hLZXkp
KSB7Ci0gICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2VhcmNoS2V5U3RyaW5n
KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cikp
OwotICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0cmluZykKLSAgICAgICAgICAgICAgICBzZWFy
Y2hLZXlQYXJhbWV0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOnNlYXJjaEtl
eVN0cmluZy5nZXQoKV07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoSlNWYWx1ZUlzT2Jq
ZWN0KGNvbnRleHQsIHNlYXJjaEtleSkpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0UmVmIHNlYXJj
aEtleUFycmF5ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHNlYXJjaEtleSwgbnVsbHB0cik7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IDA7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBsZW5ndGhQcm9wZXJ0
eVN0cmluZyhBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImxlbmd0aCIpKTsK
LSAgICAgICAgICAgIEpTVmFsdWVSZWYgc2VhcmNoS2V5QXJyYXlMZW5ndGhWYWx1ZSA9IEpTT2Jq
ZWN0R2V0UHJvcGVydHkoY29udGV4dCwgc2VhcmNoS2V5QXJyYXksIGxlbmd0aFByb3BlcnR5U3Ry
aW5nLmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgIGlmIChzZWFyY2hLZXlBcnJheUxlbmd0
aFZhbHVlICYmIEpTVmFsdWVJc051bWJlcihjb250ZXh0LCBzZWFyY2hLZXlBcnJheUxlbmd0aFZh
bHVlKSkKLSAgICAgICAgICAgICAgICBzZWFyY2hLZXlBcnJheUxlbmd0aCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgc2VhcmNoS2V5QXJyYXlMZW5ndGhW
YWx1ZSwgbnVsbHB0cikpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2VhcmNoS2V5QXJyYXlMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWYgc2VhcmNoS2V5VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChj
b250ZXh0LCBzZWFyY2hLZXlBcnJheSwgaSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgSlNT
dHJpbmdSZWYgc2VhcmNoS2V5U3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBz
ZWFyY2hLZXlWYWx1ZSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgaWYgKHNlYXJjaEtleVN0
cmluZykgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXNlYXJjaEtleVBhcmFtZXRlcikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEtleVBhcmFtZXRlciA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07Ci0gICAgICAgICAgICAgICAgICAgIFtzZWFyY2hLZXlQYXJhbWV0ZXIgYWRkT2Jq
ZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoS2V5U3RyaW5nXV07Ci0g
ICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShzZWFyY2hLZXlTdHJpbmcpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoc2Vh
cmNoS2V5UGFyYW1ldGVyKQotICAgICAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0
T2JqZWN0OnNlYXJjaEtleVBhcmFtZXRlciBmb3JLZXk6QCJBWFNlYXJjaEtleSJdOwotICAgIH0K
LSAgICAKLSAgICBpZiAoc2VhcmNoVGV4dCAmJiBKU1N0cmluZ0dldExlbmd0aChzZWFyY2hUZXh0
KSkKLSAgICAgICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OltOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6c2VhcmNoVGV4dF0gZm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07
Ci0gICAgCi0gICAgW3BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgc2V0T2JqZWN0OkAodmlzaWJsZU9u
bHkpIGZvcktleTpAIkFYVmlzaWJsZU9ubHkiXTsKLSAgICAKLSAgICBbcGFyYW1ldGVyaXplZEF0
dHJpYnV0ZSBzZXRPYmplY3Q6QChpbW1lZGlhdGVEZXNjZW5kYW50c09ubHkpIGZvcktleTpAIkFY
SW1tZWRpYXRlRGVzY2VuZGFudHNPbmx5Il07Ci0gICAgCi0gICAgcmV0dXJuIHBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGU7Ci19Ci0KIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnNlbGVjdFRleHRQYXJhbWV0
ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5n
UmVmIGFtYmlndWl0eVJlc29sdXRpb24sIEpTVmFsdWVSZWYgc2VhcmNoU3RyaW5ncywgSlNTdHJp
bmdSZWYgcmVwbGFjZW1lbnRTdHJpbmcsIEpTU3RyaW5nUmVmIGFjdGl2aXR5KQogewogICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgPSBbTlNNdXRhYmxlRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5XTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMTEzMjgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI5
LDYgKzIyOSw3IEBACiAJCTI5MjEwRURDMTQ0Q0Q1NkUwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkyMTBFRTExNDRDREU2Nzg5
ODE1RUU1IC8qIEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5MjEwRUUxMTQ1Q0RFNjc4OTgxNUVFNSAvKiBKU0Fj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjk5RTJBQTQxRTNERUUxNDAwNjVEQzMwIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUE4RkNDNTE0NUI5M0M2MDA5MDQ1QTYg
LyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjlBOEZDRDIxNDVFRjhGMjAwOTA0NUE2IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOUE4RkNERjE0NUYwMzU4MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01OTcsNiArNTk4LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTI5MjEwRUFCMTQ0Q0FDQjIw
MDgzNUJCNiAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovLAogCQkJCTgwMzRDNjYxMTQ4
NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSAqLywKKwkJCQky
OTlFMkFBNDFFM0RFRTE0MDA2NURDMzAgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5oICovLAog
CQkJCTI5QThGQ0U0MTQ1RjA0NjQwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlTWFjLm1tICovLAogCQkJCTI5MjEwRUFCMTQ0Q0FDQjIwMDgzNUJCNSAvKiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tICovLAogCQkJCUJDOERBRDc3MTMxNkQ3QjkwMEVDOTZGQyAvKiBJ
bmplY3RlZEJ1bmRsZU1hYy5tbSAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>