<?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>231267</bug_id>
          
          <creation_ts>2021-10-05 16:46:14 -0700</creation_ts>
          <short_desc>Pull modifier key extraction into TestRunnerShared</short_desc>
          <delta_ts>2021-10-09 14:36:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1800848</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-05 16:46:14 -0700</bug_when>
    <thetext>Pull modifier key extraction into TestRunnerShared to avoid duplicated code in WKTR and DRT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800856</commentid>
    <comment_count>1</comment_count>
      <attachid>440298</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-05 16:51:19 -0700</bug_when>
    <thetext>Created attachment 440298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800867</commentid>
    <comment_count>2</comment_count>
      <attachid>440303</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-05 17:04:15 -0700</bug_when>
    <thetext>Created attachment 440303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800868</commentid>
    <comment_count>3</comment_count>
      <attachid>440298</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-05 17:04:57 -0700</bug_when>
    <thetext>Comment on attachment 440298
Patch

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

&gt; Tools/TestRunnerShared/cocoa/ModifierKeyExtractor.h:33
&gt; +struct KeyMappingEntry {
&gt; +    int macKeyCode;
&gt; +    int macNumpadKeyCode;
&gt; +    unichar character;
&gt; +    NSString* characterName;
&gt; +};

Can this be internal to ModifierKeyExtractor?

&gt; Tools/TestRunnerShared/cocoa/ModifierKeyExtractor.h:43
&gt; +- (id)initWithKey:(NSString *)key modifiers:(int)modifiers keyLocation:(unsigned)keyLocation;

How about:

@interface ModifierKeys : NSObject {
@public
    NSString *eventCharacter;
    unsigned short keyCode;
    NSString *charactersIgnoringModifiers;
    int modifierFlags;
}

+ (ModifierKeys*)modifierKeysWithKey:(NSString *)key modifiers:(int)modifiers keyLocation:(unsigned)keyLocation;

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:633
&gt; +        modifierFlags:modifierKeyExtractor-&gt;modifierFlags

modifierKeyExtractor.modifierFlags here and elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801212</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-06 11:24:42 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 440298 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440298&amp;action=review
&gt; 
&gt; &gt; Tools/TestRunnerShared/cocoa/ModifierKeyExtractor.h:33
&gt; &gt; +struct KeyMappingEntry {
&gt; &gt; +    int macKeyCode;
&gt; &gt; +    int macNumpadKeyCode;
&gt; &gt; +    unichar character;
&gt; &gt; +    NSString* characterName;
&gt; &gt; +};
&gt; 
&gt; Can this be internal to ModifierKeyExtractor?

Oh yes, good catch.

&gt; 
&gt; &gt; Tools/TestRunnerShared/cocoa/ModifierKeyExtractor.h:43
&gt; &gt; +- (id)initWithKey:(NSString *)key modifiers:(int)modifiers keyLocation:(unsigned)keyLocation;
&gt; 
&gt; How about:
&gt; 
&gt; @interface ModifierKeys : NSObject {
&gt; @public
&gt;     NSString *eventCharacter;
&gt;     unsigned short keyCode;
&gt;     NSString *charactersIgnoringModifiers;
&gt;     int modifierFlags;
&gt; }
&gt; 
&gt; + (ModifierKeys*)modifierKeysWithKey:(NSString *)key
&gt; modifiers:(int)modifiers keyLocation:(unsigned)keyLocation;

Okay! Will work on this rename. I suppose I should rename the file too.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:633
&gt; &gt; +        modifierFlags:modifierKeyExtractor-&gt;modifierFlags
&gt; 
&gt; modifierKeyExtractor.modifierFlags here and elsewhere.

Slightly confused by this last piece of feedback. First, modifierKeyExtractor should probably be renamed to modifierKeys, yes? Second are you suggesting that the instance variables should be properties instead? I don&apos;t think that the suggested interface you typed out above makes that change from ivar to property. I might be missing the point of this piece of feedback though. Please help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801231</commentid>
    <comment_count>5</comment_count>
      <attachid>440402</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-06 11:53:33 -0700</bug_when>
    <thetext>Created attachment 440402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801235</commentid>
    <comment_count>6</comment_count>
      <attachid>440404</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-06 11:59:09 -0700</bug_when>
    <thetext>Created attachment 440404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801237</commentid>
    <comment_count>7</comment_count>
      <attachid>440405</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-06 12:03:39 -0700</bug_when>
    <thetext>Created attachment 440405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801277</commentid>
    <comment_count>8</comment_count>
      <attachid>440418</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-06 13:00:19 -0700</bug_when>
    <thetext>Created attachment 440418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801296</commentid>
    <comment_count>9</comment_count>
      <attachid>440418</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-06 13:22:50 -0700</bug_when>
    <thetext>Comment on attachment 440418
Patch

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

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.h:38
&gt; +- (ModifierKeys*)modifierKeysWithKey:(NSString *)key modifiers:(int)modifiers keyLocation:(unsigned)keyLocation;

This needs to be a class method :
+ (ModifierKeys*) ...

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.mm:45
&gt; +- (ModifierKeys*)modifierKeysWithKey:(NSString *)character modifiers:(int)modifiers keyLocation:(unsigned)keyLocation

This should be an init method, then you need the class method that alloc/inits the object then returns it.

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.mm:240
&gt; +    return self;

return [self autorelease];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801298</commentid>
    <comment_count>10</comment_count>
      <attachid>440418</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-06 13:24:02 -0700</bug_when>
    <thetext>Comment on attachment 440418
Patch

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

&gt;&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.mm:45
&gt;&gt; +- (ModifierKeys*)modifierKeysWithKey:(NSString *)character modifiers:(int)modifiers keyLocation:(unsigned)keyLocation
&gt; 
&gt; This should be an init method, then you need the class method that alloc/inits the object then returns it.

And you need a -dealloc to not leak!

&gt;&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.mm:240
&gt;&gt; +    return self;
&gt; 
&gt; return [self autorelease];

For the init method this is fine. The class method will return an autoreleased object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801413</commentid>
    <comment_count>11</comment_count>
      <attachid>440454</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-06 16:31:47 -0700</bug_when>
    <thetext>Created attachment 440454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801868</commentid>
    <comment_count>12</comment_count>
      <attachid>440555</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-07 16:44:24 -0700</bug_when>
    <thetext>Created attachment 440555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802209</commentid>
    <comment_count>13</comment_count>
      <attachid>440555</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-08 13:09:28 -0700</bug_when>
    <thetext>Comment on attachment 440555
Patch

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

&gt; Tools/ChangeLog:18309
&gt; -== Rolled over to ChangeLog-2021-03-18 ==
&gt; +== Rolled over to ChangeLog-2021-03-18 ==

What&apos;s going on here

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.h:32
&gt; +    RetainPtr&lt;NSString&gt; eventCharacter;

public ivars in objc is quite unusual these days (vs. properties), but this is also fine, especially since you&apos;re just using it to replace what was a struct.

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.h:38
&gt; ++ (ModifierKeys*)modifierKeysWithKey:(NSString *)key modifiers:(int)modifiers keyLocation:(unsigned)keyLocation;

`ModifierKeys *`

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.mm:34
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +#import &lt;WebKit/KeyEventCodesIOS.h&gt;
&gt; +#import &lt;WebKit/WebEvent.h&gt;
&gt; +#endif
&gt; +#import &lt;WebKit/WebKitLegacy.h&gt;
&gt; +#include &lt;wtf/Vector.h&gt;

Chaotic ordering (#ifdeffed ones should come in separate paragraph unless they can&apos;t for some reason), and also mixed import/include.

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.mm:40
&gt; +    NSString* characterName;

&quot;star&apos;s on the wrong side&quot;

&gt; Tools/TestRunnerShared/cocoa/ModifierKeys.mm:61
&gt; +    ModifierKeys *modiferKeys = [[ModifierKeys alloc] init];

This LOOKS like a leak if you don&apos;t see the autorelease 500 miles away at the bottom of the function. Autorelease here instead!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802213</commentid>
    <comment_count>14</comment_count>
      <attachid>440662</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2021-10-08 13:17:57 -0700</bug_when>
    <thetext>Created attachment 440662
Patch

This should address all of Tim&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802408</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-09 14:35:28 -0700</bug_when>
    <thetext>Committed r283870 (242747@main): &lt;https://commits.webkit.org/242747@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440662.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802409</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-09 14:36:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/84065856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440298</attachid>
            <date>2021-10-05 16:51:19 -0700</date>
            <delta_ts>2021-10-06 11:53:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code.txt</filename>
            <type>text/plain</type>
            <size>46787</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzU4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIxLTEwLTA1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
RXh0cmFjdG9yIGluIFRlc3RSdW5uZXJTaGFyZWQuIFRoYXQgY29kZSBpcyBub3cgc2hhcmVkIGJl
dHdlZW4gRFJUIGFuZCBXS1RSIAorICAgICAgICBmb3IgdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0
aW9ucyBvZiBrZXlEb3duLiAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIga2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAg
KiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmg6IEFkZGVkLgor
ICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IubW06
IEFkZGVkLgorICAgICAgICAoLVtNb2RpZmllcktleUV4dHJhY3RvciBpbml0V2l0aEtleTptb2Rp
ZmllcnM6a2V5TG9jYXRpb246XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6a2V5RG93bik6CisKIDIwMjEtMTAtMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBUZXN0V2ViS2l0QVBJLlByaXZhdGVDbGlj
a01lYXN1cmVtZW50LkRhZW1vbkJhc2ljRnVuY3Rpb25hbGl0eSBpcyB0aW1pbmcgb3V0CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQAogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAq
LzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tICovOyB9OwogCQk4NDY1RTJDNzBGRkE4REYyMDAzQjgzNDIgLyogUGl4ZWxE
dW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NDY1RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi87
IH07CisJCTkzQjA0MEI4MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjA0MEI3
MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLzsgfTsKIAkJOTND
Nzg4MjYyNTBDNkQzQTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MjQyNTBDNkQzOTAwQzBB
QTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgyRTI1MEM3MTcyMDBD
MEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNDNzg4MjkyNTBDNzEzNDAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsg
fTsKIAkJQTExNThENTgxODkyNzQwQzAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZp
ZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1
OEQ1NjE4OTI3M0VCMDA4OEMxN0IgLyogRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbSAqLzsg
fTsKQEAgLTM0Nyw2ICszNDgsOCBAQAogCQk4NDY1RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4
ZWxEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGl4ZWxEdW1wU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzU0
MzVGMDNENzU1MDIwMDg2MzVDRSAvKiBXZWJLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGgg
PSBXZWJLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk5MzQwOTk1NDA4NTQwQ0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhl
Y3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5M0IwNDBCNjI3MDdDMzBGMDA3NkU5
NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9kaWZpZXJLZXlFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNCMDQwQjcyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9kaWZpZXJLZXlFeHRyYWN0
b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODI0MjUwQzZEMzkwMEMw
QUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0M3ODgyNTI1MEM2RDM5MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZ0ZXN0RnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBKU0Jhc2lj
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2ljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NDAsNiArOTQzLDggQEAKIAkJCQlGNDRBNTMxQzIxQjg5QTQ1MDBEQkI5
OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSAqLywKIAkJCQlGNEMzNTc4OTIwRTg0NDI3
MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovLAogCQkJCUY0QzM1Nzg4MjBF
ODQ0MjcwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJCTkzQjA0
MEI2MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5oICovLAorCQkJCTkz
QjA0MEI3MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLywKIAkJ
CQlGNDAxMEI3QTI0REEyMDBFMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKIAkJCQlGNDAx
MEI3OTI0REEyMDBFMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8sCiAJCQkpOwpAQCAtMTI1
MSw2ICsxMjU2LDcgQEAKIAkJCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUNGQkExMTEy
MjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTlCQjdDNUMxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNCMDQwQjgyNzA3QzMwRjAwNzZFOTYwIC8q
IE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlDRkJBMkUxMjI3
M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkMwRTI0RTEwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1QTE1RjAxNkUxNUNEMDAwRjdDNTYxIC8qIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCShyZXZp
c2lvbiAyODM1ODIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiRHVt
cFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRmlsZURy
YWdnaW5nU291cmNlLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKKyNp
bXBvcnQgIk1vZGlmaWVyS2V5RXh0cmFjdG9yLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGVzdFN1cHBv
cnQuaCIKICNpbXBvcnQgPFdlYktpdC9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
Vmlld1ByaXZhdGUuaD4KQEAgLTgxLDEzICs4Miw2IEBAIGVudW0gTW91c2VCdXR0b24gewogICAg
IE5vTW91c2VCdXR0b24gPSAtMgogfTsKIAotc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7Ci0gICAg
aW50IG1hY0tleUNvZGU7Ci0gICAgaW50IG1hY051bXBhZEtleUNvZGU7Ci0gICAgdW5pY2hhciBj
aGFyYWN0ZXI7Ci0gICAgTlNTdHJpbmcqIGNoYXJhY3Rlck5hbWU7Ci19OwotCiBOU1BvaW50IGxh
c3RNb3VzZVBvc2l0aW9uOwogTlNQb2ludCBsYXN0Q2xpY2tQb3NpdGlvbjsKIGludCBsYXN0Q2xp
Y2tCdXR0b24gPSBOb01vdXNlQnV0dG9uOwpAQCAtOTcyLDIwNCArOTY2LDIzIEBAICsgKHZvaWQp
Y2xlYXJTYXZlZEV2ZW50cwogCiAtICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVy
IHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246
KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsKLSAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIg
PSBjaGFyYWN0ZXI7Ci0gICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7Ci0gICAgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDdCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJyaWdodEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmln
aHRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3
QzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0U7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHg3RDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicGFnZVVwIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVu
Y3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc0OwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7Ci0gICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc5OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
SG9tZUZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MzsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDc3OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJ
bnNlcnRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzI7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7
Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4MUI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM1OwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZp
cnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCi0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4M0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImxlZnRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM4OwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFNzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0E7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJv
bCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDNFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFMjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0M7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4M0Q7Ci0gICAgfQotCi0gICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdp
dGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAi
RjEiLC4uLiwiRjI0IikuCi0gICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9u
LWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PD0gMjQ7IGkrKykgewotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKLSAgICAgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOwotICAgICAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAgICAgIHN3aXRjaCAoaSkgewotICAgICAgICAgICAgICAgIGNhc2UgMToga2V5
Q29kZSA9IDB4N0E7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4
Nzg7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNzog
a2V5Q29kZSA9IDB4NjI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9
IDB4NjQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE0OiBr
ZXlDb2RlID0gMHg2QjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9
IDB4NzE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4K
LSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQotICAgICAgICBrZXlD
b2RlID0gMHgzMDsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAi
XSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzE7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJcciJdKQotICAgICAgICBrZXlDb2RlID0gMHgyNDsKLSAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCi0gICAgICAgIGtleUNvZGUgPSAw
eDRDOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCi0g
ICAgICAgIGtleUNvZGUgPSAweDMzOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiYSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwMDsKLSAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MEI7Ci0g
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCi0gICAgICAgIGtl
eUNvZGUgPSAweDAyOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwRTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MUI7Ci0KLSAgICBL
ZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKLSAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmls
fSwKLSAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDUs
ICcrJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXks
IEAiY2xlYXIifSwKLSAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKLSAgICAgICAgezAs
ICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCi0gICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0s
Ci0gICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCi0gICAgICAgIHsweDFELCAweDUyLCAn
MCcsIG5pbH0sCi0gICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCi0gICAgICAgIHsweDEz
LCAweDU0LCAnMicsIG5pbH0sCi0gICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCi0gICAg
ICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCi0gICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5p
bH0sCi0gICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCi0gICAgICAgIHsweDFBLCAweDU5
LCAnNycsIG5pbH0sCi0gICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCi0gICAgICAgIHsw
eDE5LCAweDVDLCAnOScsIG5pbH0sCi0gICAgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgewotICAgICAgICBOU1N0cmluZyogY3Vy
cmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFi
bGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7Ci0gICAgICAgICAgICBpZiAobG9jYXRp
b24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCi0gICAgICAgICAgICAgICAga2V5Q29kZSA9
IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7Ci0gICAgICAgICAgICBldmVudENo
YXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgPSBldmVudENoYXJhY3RlcjsKLQotICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKLQotICAg
IGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicpIHsK
LSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2
ZW50TW9kaWZpZXJGbGFnU2hpZnQ7Ci0jZWxzZQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IFdl
YkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7Ci0jZW5kaWYKLSAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOwotICAgIH0KLQot
ICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7Ci0KLSAg
ICBpZiAobG9jYXRpb24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCi0gICAgICAgIG1vZGlm
aWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgTW9kaWZpZXJL
ZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3Rv
ciBhbGxvY10gaW5pdFdpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CiAKICAgICBbW1ttYWluRnJhbWUg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVLZXlEb3duCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpO
U01ha2VQb2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpt
b2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlm
aWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJd
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFy
YWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRy
YWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAg
ICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVd
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3It
PmtleUNvZGVdKTsKICNlbHNlCi0gICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpbc2Vs
ZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihX
ZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0
aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsK
KyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2
ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVd
IGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rv
ci0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5h
Z2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJL
ZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTExODMsMTYgKzk5NiwxNiBAQCAtICh2b2lk
KWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2
ZW50VHlwZUtleVVwCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2lu
dCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZs
YWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0
cmFjdG9yLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6
W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051
bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVw
ZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVd
KTsKICNlbHNlCi0gICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRo
S2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2ZW50ID0gYWRv
cHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVw
IHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5
RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9k
aWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6
KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MgaXNSZXBl
YXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2No
YXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmll
cktleUV4dHJhY3Rvci5oCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
Y29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK3N0cnVjdCBLZXlNYXBwaW5nRW50cnkg
eworICAgIGludCBtYWNLZXlDb2RlOworICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOworICAgIHVu
aWNoYXIgY2hhcmFjdGVyOworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOworfTsKKworQGlu
dGVyZmFjZSBNb2RpZmllcktleUV4dHJhY3RvciA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBO
U1N0cmluZyAqZXZlbnRDaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZTsKKyAg
ICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOworICAgIGludCBtb2RpZmll
ckZsYWdzOworfQorCistIChpZClpbml0V2l0aEtleTooTlNTdHJpbmcgKilrZXkgbW9kaWZpZXJz
OihpbnQpbW9kaWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25lZClrZXlMb2NhdGlvbjsKK0BlbmQK
SW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3Iu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktl
eUV4dHJhY3Rvci5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjM1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2RpZmllcktl
eUV4dHJhY3Rvci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYktp
dC9LZXlFdmVudENvZGVzSU9TLmg+CisjZW5kaWYKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXRMZWdh
Y3kuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBNb2RpZmll
cktleUV4dHJhY3RvcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhLZXk6KE5TU3RyaW5nICop
Y2hhcmFjdGVyIG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQp
a2V5TG9jYXRpb24KK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGV2ZW50Q2hhcmFjdGVyID0gW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6Y2hhcmFjdGVyXTsKKyAgICBrZXlDb2RlID0gMDsKKyAgICBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFy
cm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5
OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3RTsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdl
VXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzQ7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAw
eDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRl
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1OworICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNv
ZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNo
YXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlm
dCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHgzNTsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJp
bmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChp
LmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVu
Y3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgeworICAgICAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7CisgICAgICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIDE6IGtl
eUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4Nzg7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
NToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0g
MHg2MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9IDB4NjQ7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEwOiBrZXlD
b2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2Nzsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2Rl
ID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5
OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIwOiBrZXlDb2RlID0g
MHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBG
SVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4KKyAgICBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMDsKKyAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAiXSkKKyAgICAgICAga2V5Q29k
ZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcciJd
KQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtleUNvZGUgPSAweDRDOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCisgICAgICAgIGtleUNvZGUgPSAw
eDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJdKQorICAg
ICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAyOworICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZSJdKQorICAgICAgICBrZXlD
b2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4
MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCI6Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOyJdKQorICAgICAgICBrZXlDb2RlID0g
MHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiwiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4MkI7CisKKyAgICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsK
KyAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDMsICcq
JywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDUsICcrJywgbmlsfSwKKyAgICAgICAgezAsICAg
IDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXksIEAiY2xlYXIifSwKKyAgICAgICAgezB4MkMs
IDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCisg
ICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0sCisgICAgICAgIHsweDE4LCAweDUxLCAnPScs
IG5pbH0sCisgICAgICAgIHsweDFELCAweDUyLCAnMCcsIG5pbH0sCisgICAgICAgIHsweDEyLCAw
eDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsweDEzLCAweDU0LCAnMicsIG5pbH0sCisgICAgICAg
IHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisgICAgICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0s
CisgICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5pbH0sCisgICAgICAgIHsweDE2LCAweDU4LCAn
NicsIG5pbH0sCisgICAgICAgIHsweDFBLCAweDU5LCAnNycsIG5pbH0sCisgICAgICAgIHsweDFD
LCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAgIHsweDE5LCAweDVDLCAnOScsIG5pbH0sCisgICAg
fTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7
ICsraSkgeworICAgICAgICBOU1N0cmluZyogY3VycmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsK
KyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJT
dHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5h
bWVdKSB7CisgICAgICAgICAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9D
QVRJT05fTlVNUEFEKi8pCisgICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY051
bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAga2V5Q29kZSA9
IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IGN1cnJl
bnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOmV2ZW50Q2hhcmFjdGVyXTsKKworICAgIG1vZGlmaWVyRmxhZ3MgPSAwOwor
CisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVy
QXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICda
JykgeworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9
IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKKyNlbHNlCisgICAgICAgIG1vZGlmaWVyRmxhZ3Mg
fD0gV2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKKyNlbmRpZgorICAgICAgICBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAg
fQorCisgICAgbW9kaWZpZXJGbGFncyB8PSBtb2RpZmllcnM7CisKKyAgICBpZiAoa2V5TG9jYXRp
b24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgIG1vZGlmaWVy
RmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgCisgICAgcmV0dXJu
IHNlbGY7Cit9CisKK0BlbmQKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYg
KzEyNiw3IEBACiAJCTgwMzRDNjYyMTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgwMzRDNjYxMTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1h
Yy5tbSAqLzsgfTsKIAkJODA5NzMzOEExNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODA5NzMzODkxNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyLm1tICovOyB9OwogCQk5Mzc2NDE3QTIxMEQ3MzcyMDBBM0RBQUUgLyog
V2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNzY0MTc2MjEwRDczNjAwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVu
bmVyV2luZG93Lm1tICovOyB9OworCQk5M0IwNDBCNTI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZp
ZXJLZXlFeHRyYWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0IwNDBCMzI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3Iu
bW0gKi87IH07CiAJCTkzQzc4ODIzMjUwQzZDMkUwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4
ODFGMjUwQzY5RTQwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTND
Nzg4MzEyNTBDNzE5RjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODMwMjUwQzcxOTkwMEMwQUEyNCAvKiBK
U0Jhc2ljcy5jcHAgKi87IH07CiAJCTkzQzc4ODMyMjUwQzcxQjcwMEMwQUEyNCAvKiBKU0Jhc2lj
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3
ODgzMDI1MEM3MTk5MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwICovOyB9OwpAQCAtMzcwLDYgKzM3
MSw4IEBACiAJCTkzMzhEMUJFMjUwQkQ5REQwMEU4MjdGNiAvKiBEaWN0aW9uYXJ5RnVuY3Rpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpY3Rpb25hcnlGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM3NjQxNzYyMTBENzM2MDAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5u
ZXJXaW5kb3cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJL
aXRUZXN0UnVubmVyV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzc2
NDE3NzIxMEQ3MzYxMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyV2luZG93Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjA0MEIyMjcwN0MwMkQwMDc2RTk2MCAvKiBNb2Rp
ZmllcktleUV4dHJhY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2Rp
ZmllcktleUV4dHJhY3Rvci5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2Rp
ZmllcktleUV4dHJhY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IwNDBC
MzI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNb2RpZmllcktleUV4dHJhY3Rvci5tbTsgcGF0
aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODFGMjUwQzY5RTQwMEMwQUEyNCAvKiBS
ZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFJlZnRlc3RGdW5jdGlvbnMuY3BwOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9SZWZ0ZXN0
RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MjAyNTBD
NjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUmVmdGVzdEZ1bmN0aW9ucy5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJl
ZC9SZWZ0ZXN0RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4
ODJGMjUwQzcxOTkwMEMwQUEyNCAvKiBKU0Jhc2ljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0Jhc2lj
cy5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTU1LDYgKzk1OCw4IEBACiAJCQkJRjQ0QTUzMTYy
MUI4OTlEQTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjRD
MzU3OEIyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKIAkJ
CQlGNEMzNTc4QTIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAq
LywKKwkJCQk5M0IwNDBCMjI3MDdDMDJEMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3Iu
aCAqLywKKwkJCQk5M0IwNDBCMzI3MDdDMDJFMDA3NkU5NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0
b3IubW0gKi8sCiAJCQkJMkUyQTc2NUIyMzcwQzhBMDAwOEY5RkZFIC8qIFBsYXRmb3JtVmlld0hl
bHBlcnMuaCAqLywKIAkJCQkyRTJBNzY1QzIzNzBDOEEwMDA4RjlGRkUgLyogUGxhdGZvcm1WaWV3
SGVscGVycy5tbSAqLywKIAkJCQlGNDAxMEI3RDI0REEyMDQ4MDBBODc2RTIgLyogUG9zZUFzQ2xh
c3MuaCAqLywKQEAgLTEyNDYsNiArMTI1MSw3IEBACiAJCQkJQTE4NTEwM0YxQjlBRTEyOTAwNzQ0
QUVCIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0
NEE1MzE4MjFCODk5RTUwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzFEQThBM0QxRTcyMDVDQzAwRTFERjJGIC8qIElPU0xheW91dFRlc3RD
b21tdW5pY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzQjA0MEI1MjcwN0MwMkUwMDc2
RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzQzc4
ODMyMjUwQzcxQjcwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjczQjU1MTFCQTc4OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYxOEU3MTgxRDZCQzQ1NjAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2Vu
ZGVyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZl
bnRTZW5kZXJQcm94eS5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogI2ltcG9ydCAiRXZlbnRTZW5kZXJQcm94eS5oIgogCiAjaW1wb3J0ICJDb3JlR3JhcGhp
Y3NUZXN0U1BJLmgiCisjaW1wb3J0ICJNb2RpZmllcktleUV4dHJhY3Rvci5oIgogI2ltcG9ydCAi
UGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQg
IlRlc3RDb250cm9sbGVyLmgiCkBAIC0yMzgsMTMgKzIzOSw2IEBAIGVudW0gTW91c2VCdXR0b24g
ewogICAgIE5vTW91c2VCdXR0b24gPSAtMgogfTsKIAotc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7
Ci0gICAgaW50IG1hY0tleUNvZGU7Ci0gICAgaW50IG1hY051bXBhZEtleUNvZGU7Ci0gICAgdW5p
Y2hhciBjaGFyYWN0ZXI7Ci0gICAgTlNTdHJpbmcqIGNoYXJhY3Rlck5hbWU7Ci19OwotCiBzdGF0
aWMgTlNFdmVudFR5cGUgZXZlbnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRv
biwgTW91c2VBY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7CkBAIC02MzIs
MjAzICs2MjYsMTggQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbQog
CiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCiB7Ci0gICAgTlNTdHJp
bmcqIGNoYXJhY3RlciA9IHRvV1RGU3RyaW5nKGtleSk7Ci0KLSAgICBOU1N0cmluZyAqZXZlbnRD
aGFyYWN0ZXIgPSBjaGFyYWN0ZXI7Ci0gICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7Ci0g
ICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHg3QzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
dXBBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0U7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICBrZXlDb2RlID0gMHg3RDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
UGFnZVVwRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc0
OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc5OwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHg3MzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5k
Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc3OwotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4NzI7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRl
bGV0ZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5
OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NTsKLSAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtl
eSBjb2RlIGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzOyAv
LyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDNCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0
U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSAweEZGRTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7
Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAw
eDNEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUi
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAg
ICAgICAga2V5Q29kZSA9IDB4MzU7Ci0gICAgfQotCi0gICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQg
c3RyaW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3Bl
YyAoaS5lLiAiRjEiLC4uLiwiRjI0IikuCi0gICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBh
IGZ1bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgotICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPD0gMjQ7IGkrKykgewotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKLSAgICAgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOwotICAgICAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAgICAgIHN3aXRjaCAoaSkgewotICAgICAgICAgICAgICAgIGNh
c2UgMToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5
Q29kZSA9IDB4Nzg7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4
NjM7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgODog
a2V5Q29kZSA9IDB4NjQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9
IDB4NjU7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNTog
a2V5Q29kZSA9IDB4NzE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUg
PSAweDZBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1v
c3Qga2V5cy4KLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQotICAg
ICAgICBrZXlDb2RlID0gMHgzMDsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAIiAiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzE7Ci0gICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcciJdKQotICAgICAgICBrZXlDb2RlID0gMHgyNDsKLSAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCi0gICAgICAgIGtl
eUNvZGUgPSAweDRDOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
XHg4Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMzOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiYSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwMDsKLSAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKLSAgICAgICAga2V5Q29kZSA9
IDB4MEI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCi0g
ICAgICAgIGtleUNvZGUgPSAweDAyOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwRTsKLSAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MUI7
Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCi0gICAgICAg
IGtleUNvZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiOyJdKQotICAgICAgICBrZXlDb2RlID0gMHgyOTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIiwiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MkI7Ci0KLSAgICBL
ZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKLSAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmls
fSwKLSAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDUs
ICcrJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXks
IEAiY2xlYXIifSwKLSAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKLSAgICAgICAgezAs
ICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCi0gICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0s
Ci0gICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCi0gICAgICAgIHsweDFELCAweDUyLCAn
MCcsIG5pbH0sCi0gICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCi0gICAgICAgIHsweDEz
LCAweDU0LCAnMicsIG5pbH0sCi0gICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCi0gICAg
ICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCi0gICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5p
bH0sCi0gICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCi0gICAgICAgIHsweDFBLCAweDU5
LCAnNycsIG5pbH0sCi0gICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCi0gICAgICAgIHsw
eDE5LCAweDVDLCAnOScsIG5pbH0sCi0gICAgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgewotICAgICAgICBOU1N0cmluZyogY3Vy
cmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFi
bGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7Ci0gICAgICAgICAgICBpZiAoa2V5TG9j
YXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAgICAgICAg
ICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7Ci0gICAgICAg
ICAgICBldmVudENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgPSBldmVudENoYXJhY3RlcjsKLQotICAgIGludCBtb2RpZmllckZsYWdz
ID0gMDsKLQotICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNo
YXJhY3RlckF0SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDow
XSA8PSAnWicpIHsKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFn
U2hpZnQ7Ci0gICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIg
bG93ZXJjYXNlU3RyaW5nXTsKLSAgICB9Ci0KLSAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9k
aWZpZXJGbGFncyhtb2RpZmllcnMpOwotCi0gICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypE
T01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZl
bnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIE1vZGlmaWVyS2V5RXh0cmFjdG9yICptb2Rp
ZmllcktleUV4dHJhY3RvciA9IFtbTW9kaWZpZXJLZXlFeHRyYWN0b3IgYWxsb2NdIGluaXRXaXRo
S2V5OnRvV1RGU3RyaW5nKGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmll
cnMpIGtleUxvY2F0aW9uOmtleUxvY2F0aW9uXTsKIAogICAgIE5TRXZlbnQgKmV2ZW50ID0gW05T
RXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQot
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycwotICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0g
ICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICBsb2NhdGlv
bjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0
cmFjdG9yLT5tb2RpZmllckZsYWdzCisgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JF
dmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVz
dENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVy
XQorICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAg
ICAgICAgY2hhcmFjdGVyczptb2RpZmllcktleUV4dHJhY3Rvci0+ZXZlbnRDaGFyYWN0ZXIKKyAg
ICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5j
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAg
IGtleUNvZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdOwogCiAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5RG93bjpldmVudF07CkBA
IC04MzYsMTQgKzY0NSwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJp
bmdSCiAKICAgICBldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVL
ZXlVcAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleUV4dHJhY3Rvci0+
bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29sdXRl
VGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtV2luZG93KCkgd2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5l
dmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAg
ICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNv
ZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVdOwogCiAgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwo=
</data>
<flag name="commit-queue"
          id="464182"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440303</attachid>
            <date>2021-10-05 17:04:15 -0700</date>
            <delta_ts>2021-10-06 11:53:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code-2.txt</filename>
            <type>text/plain</type>
            <size>46816</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzU4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIxLTEwLTA1ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
RXh0cmFjdG9yIGluIFRlc3RSdW5uZXJTaGFyZWQuIFRoYXQgY29kZSBpcyBub3cgc2hhcmVkIGJl
dHdlZW4gRFJUIGFuZCBXS1RSIAorICAgICAgICBmb3IgdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0
aW9ucyBvZiBrZXlEb3duLiAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIga2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAg
KiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmg6IEFkZGVkLgor
ICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IubW06
IEFkZGVkLgorICAgICAgICAoLVtNb2RpZmllcktleUV4dHJhY3RvciBpbml0V2l0aEtleTptb2Rp
ZmllcnM6a2V5TG9jYXRpb246XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6a2V5RG93bik6CisKIDIwMjEtMTAtMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBUZXN0V2ViS2l0QVBJLlByaXZhdGVDbGlj
a01lYXN1cmVtZW50LkRhZW1vbkJhc2ljRnVuY3Rpb25hbGl0eSBpcyB0aW1pbmcgb3V0CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQAogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAq
LzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tICovOyB9OwogCQk4NDY1RTJDNzBGRkE4REYyMDAzQjgzNDIgLyogUGl4ZWxE
dW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NDY1RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi87
IH07CisJCTkzQjA0MEI4MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjA0MEI3
MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLzsgfTsKIAkJOTND
Nzg4MjYyNTBDNkQzQTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MjQyNTBDNkQzOTAwQzBB
QTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgyRTI1MEM3MTcyMDBD
MEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNDNzg4MjkyNTBDNzEzNDAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsg
fTsKIAkJQTExNThENTgxODkyNzQwQzAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZp
ZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1
OEQ1NjE4OTI3M0VCMDA4OEMxN0IgLyogRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbSAqLzsg
fTsKQEAgLTM0Nyw2ICszNDgsOCBAQAogCQk4NDY1RTJDNjBGRkE4REYyMDAzQjgzNDIgLyogUGl4
ZWxEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGl4ZWxEdW1wU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzU0
MzVGMDNENzU1MDIwMDg2MzVDRSAvKiBXZWJLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGgg
PSBXZWJLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk5MzQwOTk1NDA4NTQwQ0FGMDA3RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhl
Y3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IER1bXBSZW5kZXJUcmVlOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5M0IwNDBCNjI3MDdDMzBGMDA3NkU5
NjAgLyogTW9kaWZpZXJLZXlFeHRyYWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9kaWZpZXJLZXlFeHRyYWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNCMDQwQjcyNzA3QzMwRjAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9kaWZpZXJLZXlFeHRyYWN0
b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODI0MjUwQzZEMzkwMEMw
QUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0M3ODgyNTI1MEM2RDM5MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZ0ZXN0RnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBKU0Jhc2lj
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2ljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NDAsNiArOTQzLDggQEAKIAkJCQlGNDRBNTMxQzIxQjg5QTQ1MDBEQkI5
OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSAqLywKIAkJCQlGNEMzNTc4OTIwRTg0NDI3
MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovLAogCQkJCUY0QzM1Nzg4MjBF
ODQ0MjcwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJCTkzQjA0
MEI2MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5oICovLAorCQkJCTkz
QjA0MEI3MjcwN0MzMEYwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLywKIAkJ
CQlGNDAxMEI3QTI0REEyMDBFMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKIAkJCQlGNDAx
MEI3OTI0REEyMDBFMDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8sCiAJCQkpOwpAQCAtMTI1
MSw2ICsxMjU2LDcgQEAKIAkJCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUNGQkExMTEy
MjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTlCQjdDNUMxQzUwNTI3ODAwMkM1MjVCIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNCMDQwQjgyNzA3QzMwRjAwNzZFOTYwIC8q
IE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlDRkJBMkUxMjI3
M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkMwRTI0RTEwRTJEOTQ1MTAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE1QTE1RjAxNkUxNUNEMDAwRjdDNTYxIC8qIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCShyZXZp
c2lvbiAyODM1ODIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiRHVt
cFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRmlsZURy
YWdnaW5nU291cmNlLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIKKyNp
bXBvcnQgIk1vZGlmaWVyS2V5RXh0cmFjdG9yLmgiCiAjaW1wb3J0ICJXZWJDb3JlVGVzdFN1cHBv
cnQuaCIKICNpbXBvcnQgPFdlYktpdC9ET01Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
Vmlld1ByaXZhdGUuaD4KQEAgLTgxLDEzICs4Miw2IEBAIGVudW0gTW91c2VCdXR0b24gewogICAg
IE5vTW91c2VCdXR0b24gPSAtMgogfTsKIAotc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7Ci0gICAg
aW50IG1hY0tleUNvZGU7Ci0gICAgaW50IG1hY051bXBhZEtleUNvZGU7Ci0gICAgdW5pY2hhciBj
aGFyYWN0ZXI7Ci0gICAgTlNTdHJpbmcqIGNoYXJhY3Rlck5hbWU7Ci19OwotCiBOU1BvaW50IGxh
c3RNb3VzZVBvc2l0aW9uOwogTlNQb2ludCBsYXN0Q2xpY2tQb3NpdGlvbjsKIGludCBsYXN0Q2xp
Y2tCdXR0b24gPSBOb01vdXNlQnV0dG9uOwpAQCAtOTcyLDIwNCArOTY2LDIzIEBAICsgKHZvaWQp
Y2xlYXJTYXZlZEV2ZW50cwogCiAtICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVy
IHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCAqKW1vZGlmaWVycyB3aXRoTG9jYXRpb246
KHVuc2lnbmVkIGxvbmcpbG9jYXRpb24KIHsKLSAgICBOU1N0cmluZyAqZXZlbnRDaGFyYWN0ZXIg
PSBjaGFyYWN0ZXI7Ci0gICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7Ci0gICAgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDdCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJyaWdodEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUmln
aHRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3
QzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0U7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHg3RDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicGFnZVVwIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZVVwRnVu
Y3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc0OwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7Ci0gICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc5OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
SG9tZUZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MzsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDc3OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJ
bnNlcnRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzI7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7
Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4MUI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM1OwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZp
cnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCi0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4M0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImxlZnRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM4OwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFNzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0E7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJv
bCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDNFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFMjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0M7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4M0Q7Ci0gICAgfQotCi0gICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3RyaW5nIHdp
dGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAoaS5lLiAi
RjEiLC4uLiwiRjI0IikuCi0gICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1bmN0aW9u
LWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PD0gMjQ7IGkrKykgewotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKLSAgICAgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOwotICAgICAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAgICAgIHN3aXRjaCAoaSkgewotICAgICAgICAgICAgICAgIGNhc2UgMToga2V5
Q29kZSA9IDB4N0E7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4
Nzg7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNzog
a2V5Q29kZSA9IDB4NjI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9
IDB4NjQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4NjU7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE0OiBr
ZXlDb2RlID0gMHg2QjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNToga2V5Q29kZSA9
IDB4NzE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4K
LSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQotICAgICAgICBrZXlD
b2RlID0gMHgzMDsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAi
XSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzE7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJcciJdKQotICAgICAgICBrZXlDb2RlID0gMHgyNDsKLSAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCi0gICAgICAgIGtleUNvZGUgPSAw
eDRDOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCi0g
ICAgICAgIGtleUNvZGUgPSAweDMzOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiYSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwMDsKLSAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MEI7Ci0g
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCi0gICAgICAgIGtl
eUNvZGUgPSAweDAyOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwRTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MUI7Ci0KLSAgICBL
ZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKLSAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmls
fSwKLSAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDUs
ICcrJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXks
IEAiY2xlYXIifSwKLSAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKLSAgICAgICAgezAs
ICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCi0gICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0s
Ci0gICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCi0gICAgICAgIHsweDFELCAweDUyLCAn
MCcsIG5pbH0sCi0gICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCi0gICAgICAgIHsweDEz
LCAweDU0LCAnMicsIG5pbH0sCi0gICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCi0gICAg
ICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCi0gICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5p
bH0sCi0gICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCi0gICAgICAgIHsweDFBLCAweDU5
LCAnNycsIG5pbH0sCi0gICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCi0gICAgICAgIHsw
eDE5LCAweDVDLCAnOScsIG5pbH0sCi0gICAgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgewotICAgICAgICBOU1N0cmluZyogY3Vy
cmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFi
bGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7Ci0gICAgICAgICAgICBpZiAobG9jYXRp
b24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCi0gICAgICAgICAgICAgICAga2V5Q29kZSA9
IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7Ci0gICAgICAgICAgICBldmVudENo
YXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgPSBldmVudENoYXJhY3RlcjsKLQotICAgIGludCBtb2RpZmllckZsYWdzID0gMDsKLQotICAg
IGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8PSAnWicpIHsK
LSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2
ZW50TW9kaWZpZXJGbGFnU2hpZnQ7Ci0jZWxzZQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IFdl
YkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7Ci0jZW5kaWYKLSAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOwotICAgIH0KLQot
ICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7Ci0KLSAg
ICBpZiAobG9jYXRpb24gPT0gRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQpCi0gICAgICAgIG1vZGlm
aWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgTW9kaWZpZXJL
ZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmllcktleUV4dHJhY3Rv
ciBhbGxvY10gaW5pdFdpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CiAKICAgICBbW1ttYWluRnJhbWUg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBhdXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5
cGU6TlNFdmVudFR5cGVLZXlEb3duCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpO
U01ha2VQb2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpt
b2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlm
aWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJd
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFy
YWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRy
YWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAg
ICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVd
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3It
PmtleUNvZGVdKTsKICNlbHNlCi0gICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpbc2Vs
ZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihX
ZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0
aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsK
KyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2
ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVd
IGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleUV4dHJhY3Rvci0+Y2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllcktleUV4dHJhY3Rv
ci0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5h
Z2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJL
ZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOwogI2VuZGlmCiAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTExODMsMTYgKzk5NiwxNiBAQCAtICh2b2lk
KWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2
ZW50VHlwZUtleVVwCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2lu
dCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZs
YWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5RXh0
cmFjdG9yLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6
W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051
bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVw
ZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmtleUNvZGVd
KTsKICNlbHNlCi0gICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRo
S2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2ZW50ID0gYWRv
cHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVw
IHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5
RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9k
aWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6
KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MgaXNSZXBl
YXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2No
YXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmll
cktleUV4dHJhY3Rvci5oCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
Y29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK3N0cnVjdCBLZXlNYXBwaW5nRW50cnkg
eworICAgIGludCBtYWNLZXlDb2RlOworICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOworICAgIHVu
aWNoYXIgY2hhcmFjdGVyOworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOworfTsKKworQGlu
dGVyZmFjZSBNb2RpZmllcktleUV4dHJhY3RvciA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAgICBO
U1N0cmluZyAqZXZlbnRDaGFyYWN0ZXI7CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZTsKKyAg
ICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOworICAgIGludCBtb2RpZmll
ckZsYWdzOworfQorCistIChpZClpbml0V2l0aEtleTooTlNTdHJpbmcgKilrZXkgbW9kaWZpZXJz
OihpbnQpbW9kaWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25lZClrZXlMb2NhdGlvbjsKK0BlbmQK
SW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlFeHRyYWN0b3Iu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktl
eUV4dHJhY3Rvci5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2RpZmllcktl
eUV4dHJhY3Rvci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYktp
dC9LZXlFdmVudENvZGVzSU9TLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViRXZlbnQuaD4KKyNlbmRp
ZgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdExlZ2FjeS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworQGltcGxlbWVudGF0aW9uIE1vZGlmaWVyS2V5RXh0cmFjdG9yCisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEtleTooTlNTdHJpbmcgKiljaGFyYWN0ZXIgbW9kaWZpZXJzOihpbnQpbW9k
aWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25lZClrZXlMb2NhdGlvbgoreworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpjaGFyYWN0
ZXJdOworICAgIGtleUNvZGUgPSAwOworICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImxlZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJv
d0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QjsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJkb3duQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dG
dW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0g
MHg3OTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsKKyAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
NzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDcyOworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBy
aW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5G
dW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhl
cmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJB
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFu
IGxheW91dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVm
dENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Mzg7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBrZXlDb2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAicmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZF
NDsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2Rl
ID0gMHgzQzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmln
aHRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOworICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4MUI7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAgIH0KKwor
ICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFt
ZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgorICAgIC8v
IElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkg
Y29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAgICAgICAg
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0
aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgICAgICBzd2l0Y2gg
KGkpIHsKKyAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6
IGtleUNvZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4
NzY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2Rl
ID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6
IGtleUNvZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTM6IGtleUNvZGUgPSAw
eDY5OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgMTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTc6IGtl
eUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRG
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3Ig
bW9zdCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisg
ICAgICAgIGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAweDI0Owor
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJceDgiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBrZXlDb2Rl
ID0gMHgwQjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkK
KyAgICAgICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgx
QjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCI7Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBrZXlDb2RlID0gMHgyQjsKKworICAg
IEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBu
aWx9LAorICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0
NSwgJysnLCBuaWx9LAorICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktl
eSwgQCJjbGVhciJ9LAorICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAorICAgICAgICB7
MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmls
fSwKKyAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKKyAgICAgICAgezB4MUQsIDB4NTIs
ICcwJywgbmlsfSwKKyAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKKyAgICAgICAgezB4
MTMsIDB4NTQsICcyJywgbmlsfSwKKyAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKKyAg
ICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKKyAgICAgICAgezB4MTcsIDB4NTcsICc1Jywg
bmlsfSwKKyAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKKyAgICAgICAgezB4MUEsIDB4
NTksICc3JywgbmlsfSwKKyAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKKyAgICAgICAg
ezB4MTksIDB4NUMsICc5JywgbmlsfSwKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0
YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAgIGlmIChrZXlM
b2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgICAg
ICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6ZXZlbnRDaGFyYWN0ZXJd
OworCisgICAgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhd
ID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFj
dGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0Owor
I2Vsc2UKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0
S2V5OworI2VuZGlmCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFy
YWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IG1v
ZGlmaWVyczsKKworICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElP
Tl9OVU1QQUQqLykKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFn
TnVtZXJpY1BhZDsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZApJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAKIAkJODAzNEM2NjIxNDg3NjM2
NDAwQUMzMkU5IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAzNEM2NjExNDg3NjM2NDAwQUMzMkU5
IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQk4MDk3MzM4QTE0ODc0
QTVBMDA4MTU2RDkgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDk3MzM4OTE0ODc0QTVB
MDA4MTU2RDkgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CiAJ
CTkzNzY0MTdBMjEwRDczNzIwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3NjQxNzYyMTBE
NzM2MDAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0gKi87IH07CisJCTkzQjA0
MEI1MjcwN0MwMkUwMDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjA0MEIzMjcwN0MwMkUwMDc2
RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLzsgfTsKIAkJOTNDNzg4MjMyNTBDNkMy
RTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MUYyNTBDNjlFNDAwQzBBQTI0IC8qIFJlZnRl
c3RGdW5jdGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgzMTI1MEM3MTlGMDBDMEFBMjQgLyogSlNC
YXNpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNDNzg4MzAyNTBDNzE5OTAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsgfTsKIAkJOTNDNzg4
MzIyNTBDNzFCNzAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODMwMjUwQzcxOTkwMEMwQUEyNCAvKiBKU0Jh
c2ljcy5jcHAgKi87IH07CkBAIC0zNzAsNiArMzcxLDggQEAKIAkJOTMzOEQxQkUyNTBCRDlERDAw
RTgyN0Y2IC8qIERpY3Rpb25hcnlGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFy
eUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzc2NDE3NjIxMEQ3
MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0MTc3MjEwRDczNjEwMEEzREFBRSAvKiBXZWJL
aXRUZXN0UnVubmVyV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YktpdFRlc3RSdW5uZXJXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNC
MDQwQjIyNzA3QzAyRDAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vZGlmaWVyS2V5RXh0cmFjdG9yLmg7IHBhdGggPSAu
Li9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5RXh0cmFjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjA0MEIzMjcwN0MwMkUwMDc2RTk2MCAvKiBNb2RpZmll
cktleUV4dHJhY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IE1vZGlmaWVyS2V5RXh0cmFjdG9yLm1tOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2Nv
YS9Nb2RpZmllcktleUV4dHJhY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNDNzg4MUYyNTBDNjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVmdGVzdEZ1bmN0aW9ucy5jcHA7IHBhdGgg
PSAuLi9UZXN0UnVubmVyU2hhcmVkL1JlZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0M3ODgyMDI1MEM2OUU0MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZWZ0ZXN0RnVuY3Rpb25z
Lmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL1JlZnRlc3RGdW5jdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNzg4MkYyNTBDNzE5OTAwQzBBQTI0IC8qIEpTQmFz
aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQmFzaWNzLmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hh
cmVkL0JpbmRpbmdzL0pTQmFzaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NTUsNiArOTU4LDggQEAKIAkJCQlGNDRBNTMxNjIxQjg5OURBMDBEQkI5OUMgLyogSW5zdGFuY2VN
ZXRob2RTd2l6emxlci5tbSAqLywKIAkJCQlGNEMzNTc4QjIwRTg0NDQwMDBGQTA3NDggLyogTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovLAogCQkJCUY0QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAv
KiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJCTkzQjA0MEIyMjcwN0MwMkQwMDc2
RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5oICovLAorCQkJCTkzQjA0MEIzMjcwN0MwMkUw
MDc2RTk2MCAvKiBNb2RpZmllcktleUV4dHJhY3Rvci5tbSAqLywKIAkJCQkyRTJBNzY1QjIzNzBD
OEEwMDA4RjlGRkUgLyogUGxhdGZvcm1WaWV3SGVscGVycy5oICovLAogCQkJCTJFMkE3NjVDMjM3
MEM4QTAwMDhGOUZGRSAvKiBQbGF0Zm9ybVZpZXdIZWxwZXJzLm1tICovLAogCQkJCUY0MDEwQjdE
MjREQTIwNDgwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5oICovLApAQCAtMTI0Niw2ICsxMjUxLDcg
QEAKIAkJCQlBMTg1MTAzRjFCOUFFMTI5MDA3NDRBRUIgLyogR2VvbG9jYXRpb25Qcm92aWRlck1v
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0QTUzMTgyMUI4OTlFNTAwREJCOTlDIC8qIElu
c3RhbmNlTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMURBOEEzRDFFNzIw
NUNDMDBFMURGMkYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTNCMDQwQjUyNzA3QzAyRTAwNzZFOTYwIC8qIE1vZGlmaWVyS2V5RXh0cmFjdG9y
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDNzg4MzIyNTBDNzFCNzAwQzBBQTI0IC8qIEpTQmFz
aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzNCNTUxMUJBNzg5NjgwMDRCM0VGNCAvKiBK
U1VJU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcxODFENkJD
NDU2MDAyN0U1NDcgLyogSlNXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCShyZXZpc2lvbiAy
ODM1ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJFdmVudFNlbmRlclBy
b3h5LmgiCiAKICNpbXBvcnQgIkNvcmVHcmFwaGljc1Rlc3RTUEkuaCIKKyNpbXBvcnQgIk1vZGlm
aWVyS2V5RXh0cmFjdG9yLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQg
IlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKQEAgLTIzOCwx
MyArMjM5LDYgQEAgZW51bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9
OwogCi1zdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBp
bnQgbWFjTnVtcGFkS2V5Q29kZTsKLSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmlu
ZyogY2hhcmFjdGVyTmFtZTsKLX07Ci0KIHN0YXRpYyBOU0V2ZW50VHlwZSBldmVudFR5cGVGb3JN
b3VzZUJ1dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9uLCBNb3VzZUFjdGlvbiBhY3Rpb24pCiB7CiAg
ICAgc3dpdGNoIChidXR0b24pIHsKQEAgLTYzMiwyMDMgKzYyNiwxOCBAQCB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtCiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5
RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25l
ZCBrZXlMb2NhdGlvbikKIHsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmco
a2V5KTsKLQotICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1
bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJsZWZ0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0
QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ci
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7
Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHg3RTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiZG93bkFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFy
cm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhv
bWUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDczOwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNFbmRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9
IDB4Nzc7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2Vy
dCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5Owot
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtl
eUNvZGUgPSAweDc1OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJwcmludFNjcmVlbiJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2Ny
ZWVuRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDA7IC8v
IFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0
dGVyQSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVz
c2lhbiBsYXlvdXQuCi0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImxlZnRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0I7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSAweEZGRTE7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM4
OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKLSAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAg
ICAgICAga2V5Q29kZSA9IDB4M0E7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eEZGRTQ7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNFOwotICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4M0M7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InJpZ2h0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKLSAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9
Ci0KLSAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5
IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAg
ICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMg
a2V5IGNvZGUuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAg
ICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIkYldSIsIGldXSkgewotICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFG
dW5jdGlvbktleSArIChpIC0gMSk7Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dp
dGNoIChpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBr
ZXlDb2RlID0gMHg2MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0g
MHg2MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
MTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlD
b2RlID0gMHg2RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4
Njk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOToga2V5
Q29kZSA9IDB4NTA7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAw
eDVBOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJ
WE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAgICBrZXlDb2Rl
ID0gMHgzMTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0p
Ci0gICAgICAgIGtleUNvZGUgPSAweDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiXG4iXSkKLSAgICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4
MzM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDAwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNv
ZGUgPSAweDBFOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgx
YiJdKQotICAgICAgICBrZXlDb2RlID0gMHgxQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIjoiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4Mjk7Ci0gICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCi0gICAgICAgIGtleUNvZGUgPSAw
eDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQotICAg
ICAgICBrZXlDb2RlID0gMHgyQjsKLQotICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewot
ICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyon
LCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAg
MHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywg
MHg0QiwgJy8nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAg
ICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9Jywg
bmlsfSwKLSAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4
NTMsICcxJywgbmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAg
ezB4MTQsIDB4NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwK
LSAgICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2
JywgbmlsfSwKLSAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMs
IDB4NUIsICc4JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsg
KytpKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwot
ICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0
cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFt
ZV0pIHsKLSAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NB
VElPTl9OVU1QQUQqLykKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVt
cGFkS2V5Q29kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0g
dGFibGVbaV0ubWFjS2V5Q29kZTsKLSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVu
dENoYXJhY3RlclN0cmluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFj
dGVyOwotCi0gICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIg
bGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYg
W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgewotICAgICAgICBtb2RpZmll
ckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSAgICAgICAgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOwotICAgIH0KLQot
ICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7Ci0KLSAg
ICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0g
ICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7Cisg
ICAgTW9kaWZpZXJLZXlFeHRyYWN0b3IgKm1vZGlmaWVyS2V5RXh0cmFjdG9yID0gW1tNb2RpZmll
cktleUV4dHJhY3RvciBhbGxvY10gaW5pdFdpdGhLZXk6dG9XVEZTdHJpbmcoa2V5KSBtb2RpZmll
cnM6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246a2V5TG9jYXRpb25d
OwogCiAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZl
bnRUeXBlS2V5RG93bgotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJG
bGFncwotICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2
ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93
KCkgd2luZG93TnVtYmVyXQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFw
aGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFy
YWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNv
ZGU6a2V5Q29kZV07CisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCisgICAgICAg
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPm1vZGlmaWVyRmxhZ3MKKyAgICAg
ICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkp
CisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhp
Y3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5
RXh0cmFjdG9yLT5ldmVudENoYXJhY3RlcgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwor
ICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJhY3Rv
ci0+a2V5Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAg
W1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0
UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKQEAgLTgzNiwxNCArNjQ1LDE0IEBAIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIAogICAgIGV2ZW50ID0gW05TRXZlbnQg
a2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCiAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9k
aWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll
ckZsYWdzOm1vZGlmaWVyS2V5RXh0cmFjdG9yLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVu
dFRpbWUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29u
dHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50
Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0
ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJh
Y3RlcnM6bW9kaWZpZXJLZXlFeHRyYWN0b3ItPmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlFeHRyYWN0
b3ItPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogICAgICAgICAgICAgICAgICAgICAgICAg
aXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdOwor
ICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleUV4dHJhY3Rvci0+a2V5
Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW1ttX3Rl
c3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9u
ZGVyXSBrZXlVcDpldmVudF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440402</attachid>
            <date>2021-10-06 11:53:33 -0700</date>
            <delta_ts>2021-10-06 11:59:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code-3.txt</filename>
            <type>text/plain</type>
            <size>46500</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzY0MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIxLTEwLTA2ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
cyBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVuIERS
VCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgb2Yg
a2V5RG93bi4gCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVy
IGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaDogQWRkZWQuCisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMubW06IEFkZGVkLgorICAgICAgICAoLVtNb2Rp
ZmllcktleXMgbW9kaWZpZXJLZXlzV2l0aEtleTptb2RpZmllcnM6a2V5TG9jYXRpb246XSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisKIDIw
MjEtMTAtMDYgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFN0eWxlIGNoZWNrZXIgc2hvdWxkIGNoZWNrIHNwYWNpbmcgaW5zaWRlIGJyYWNlcyB3aXRo
IGVsZW1lbnRzIGluIHRoZW0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAJ
CTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTgg
LyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyog
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CiAJCTg0NjVFMkM3MEZG
QThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQ
aXhlbER1bXBTdXBwb3J0LmNwcCAqLzsgfTsKKwkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzMkJCOUMyMjcwRTI3M0MwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi87IH07
CiAJCTkzQzc4ODI2MjUwQzZEM0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTNDNzg4MkUyNTBD
NzE3MjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBKU0Jhc2ljcy5j
cHAgKi87IH07CiAJCUExMTU4RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZUJy
b3dzZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNThENTYxODkyNzNFQjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcu
bW0gKi87IH07CkBAIC0zNDUsNiArMzQ2LDggQEAKIAkJODAwNDVBRUIxNDc3MThFNzAwODI5MEE4
IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHBhdGgg
PSBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBtYWMvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzEyNzBFMjczQzAwOTRDQzMz
IC8qIE1vZGlmaWVyS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Rp
ZmllcktleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzIyNzBFMjcz
QzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1vZGlmaWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTMzNTQzNUYwM0Q3NTUwMjAwODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTkzNDA5OTU0MDg1NDBDQUYwMDdGM0JDOCAvKiBEdW1wUmVuZGVyVHJlZSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gRHVtcFJlbmRlclRy
ZWU7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTQwLDYgKzk0Myw4IEBACiAJCQkJRjQ0QTUzMUMyMUI4OUE0NTAwREJCOTlD
IC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjRDMzU3ODkyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKIAkJCQlGNEMzNTc4ODIwRTg0
NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCQk5MzJCQjlD
MTI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8sCisJCQkJOTMyQkI5QzIyNzBF
MjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLywKIAkJCQlGNDAxMEI3QTI0REEyMDBF
MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKIAkJCQlGNDAxMEI3OTI0REEyMDBFMDBBODc2
RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8sCiAJCQkpOwpAQCAtMTI4NCw2ICsxMjg5LDcgQEAKIAkJ
CQlGNEZFRDMyMDIzNTgyMTU4MDAzQzEzOUMgLyogTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMzIwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9s
bGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3RTBDOUIwOEYxMDAxMTQzNjkgLyogT2Jq
Q1BsdWdpbi5tIGluIFNvdXJjZXMgKi8sCisJCQkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjgwMEM5QjA4RjEwMDEx
NDM2OSAvKiBPYmpDUGx1Z2luRnVuY3Rpb24ubSBpbiBTb3VyY2VzICovLAogCQkJCTg0NjVFMkM3
MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQjI4NENEMENGQTgzQzgwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAj
aW1wb3J0ICJEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKICNpbXBv
cnQgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgpAQCAtODEsMTMgKzgyLDYgQEAgZW51
bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5
TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5
Q29kZTsKLSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFt
ZTsKLX07Ci0KIE5TUG9pbnQgbGFzdE1vdXNlUG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bv
c2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRvbiA9IE5vTW91c2VCdXR0b247CkBAIC05NzIsMjA0
ICs5NjYsMjMgQEAgKyAodm9pZCljbGVhclNhdmVkRXZlbnRzCiAKIC0gKHZvaWQpa2V5RG93bjoo
TlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9k
aWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewotICAgIE5TU3Ry
aW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ci
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBB
cnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VEb3duIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5j
dGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJlbmQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRl
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4MzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InByaW50U2NyZWVuIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3Jl
ZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8g
VGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0
ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNz
aWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRDsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJl
IHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkg
dGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkg
ewotICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0g
MSk7Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBr
ZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0g
MHg3NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5
OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29k
ZSA9IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
Njoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNv
ZGUgPSAweDQwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0
RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlz
IHNldCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx0Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUg
PSAweDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAw
OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlD
b2RlID0gMHgxQjsKLQotICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7
MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAot
ICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlND
bGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8n
LCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4
MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAg
ICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywg
bmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4
NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAg
ezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwK
LSAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4
JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0g
ICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwg
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAg
ICAgICAgICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAg
ICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsK
LSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlm
aWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIDw9ICdaJykgewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBt
b2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSNlbHNlCi0gICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKLSNlbmRpZgot
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2Fz
ZVN0cmluZ107Ci0gICAgfQotCi0gICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKTsKLQotICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05V
TVBBRCkKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZDsKKyAgICBhdXRvIG1vZGlmaWVyS2V5cyA9IGFkb3B0TlMoW1tNb2RpZmllcktleXMgYWxs
b2NdIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVy
RmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl0pOwogCiAgICAgW1tbbWFpbkZy
YW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpt
b2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
cgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJl
cGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV0pOwogI2Vs
c2UKLSAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtl
eUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGF1dG8gZXZlbnQg
PSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczptb2Rp
ZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2Rp
ZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50
RmxhZ3MpbW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFn
czowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVy
QXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdc
dCcpXSk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE4MywxNiAr
OTk2LDE2IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlF
dmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll
ckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJd
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFy
YWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBp
c0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVdKTsK
ICNlbHNlCi0gICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5
RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVd
IGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZp
ZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpu
aWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2ZW50ID0gYWRvcHRO
UyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRp
bWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+
ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2Rp
ZmllcktleXMtPm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElu
cHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
IGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0UnVubmVy
U2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmgJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworIEBpbnRlcmZhY2UgTW9kaWZpZXJLZXlzIDogTlNPYmplY3QgeworIEBwdWJs
aWMKKyAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBldmVudENoYXJhY3RlcjsKKyAgICAgdW5zaWdu
ZWQgc2hvcnQga2V5Q29kZTsKKyAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnM7CisgICAgIGludCBtb2RpZmllckZsYWdzOworIH0KKworIC0gKE1vZGlm
aWVyS2V5cyopbW9kaWZpZXJLZXlzV2l0aEtleTooTlNTdHJpbmcgKilrZXkgbW9kaWZpZXJzOihp
bnQpbW9kaWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25lZClrZXlMb2NhdGlvbjsKKyAKK0BlbmQK
SW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCShu
b25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKKworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisjaW1wb3J0IDxXZWJLaXQvS2V5RXZlbnRDb2Rlc0lPUy5oPgorI2ltcG9ydCA8
V2ViS2l0L1dlYkV2ZW50Lmg+CisjZW5kaWYKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXRMZWdhY3ku
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3N0cnVjdCBLZXlNYXBwaW5nRW50cnkgewor
ICAgIGludCBtYWNLZXlDb2RlOworICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOworICAgIHVuaWNo
YXIgY2hhcmFjdGVyOworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOworfTsKKworQGltcGxl
bWVudGF0aW9uIE1vZGlmaWVyS2V5cworCistIChNb2RpZmllcktleXMqKW1vZGlmaWVyS2V5c1dp
dGhLZXk6KE5TU3RyaW5nICopY2hhcmFjdGVyIG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlM
b2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb24KK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGV2ZW50Q2hhcmFj
dGVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpjaGFyYWN0ZXJd
KTsKKyAgICBrZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dG
dW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewor
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHg3RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZG93bkFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
KyAgICAgICAga2V5Q29kZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
UGFnZURvd25GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
Nzk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNFbmRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7
CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7
CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDc1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmlu
dFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJl
IGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBs
YXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRD
b250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eDFCOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAgICB9CisKKyAg
ICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVz
IGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJ
ZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNv
ZGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IkYldSIsIGldXSkgeworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlv
bktleSArIChpIC0gMSk7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChp
KSB7CisgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBr
ZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAg
ICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9
IDB4NjQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBr
ZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2
OTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBrZXlD
b2RlID0gMHg0MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0Rjsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1v
c3Qga2V5cy4KKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAg
ICAgICBrZXlDb2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAIiAiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtl
eUNvZGUgPSAweDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
XHg4Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9
IDB4MEI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisg
ICAgICAgIGtleUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7
CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCisgICAgICAg
IGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiOyJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIiwiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MkI7CisKKyAgICBL
ZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmls
fSwKKyAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDUs
ICcrJywgbmlsfSwKKyAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXks
IEAiY2xlYXIifSwKKyAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKKyAgICAgICAgezAs
ICAgIDB4NEMsIDMsIEAiZW50ZXIiIH0sCisgICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0s
CisgICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCisgICAgICAgIHsweDFELCAweDUyLCAn
MCcsIG5pbH0sCisgICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCisgICAgICAgIHsweDEz
LCAweDU0LCAnMicsIG5pbH0sCisgICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCisgICAg
ICAgIHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCisgICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5p
bH0sCisgICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCisgICAgICAgIHsweDFBLCAweDU5
LCAnNycsIG5pbH0sCisgICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCisgICAgICAgIHsw
eDE5LCAweDVDLCAnOScsIG5pbH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0cmluZyogY3Vy
cmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFi
bGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBpZiAoa2V5TG9j
YXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgICAgICAg
ICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7CisgICAgICAg
ICAgICBldmVudENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6ZXZlbnRDaGFy
YWN0ZXIuZ2V0KCldKTsKKworICAgIG1vZGlmaWVyRmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFy
YWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAn
QScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgeworI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmll
ckZsYWdTaGlmdDsKKyNlbHNlCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFn
TWFza0xlZnRTaGlmdEtleTsKKyNlbmRpZgorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAgfQorCisgICAgbW9kaWZp
ZXJGbGFncyB8PSBtb2RpZmllcnM7CisKKyAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRP
TV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVu
dE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0Bl
bmQKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODM1
ODIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBACiAJCTdD
RkY5QkNCMjUzNEFGMUQwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDNzI1MzRBRjFEMDAwODAwOUYg
LyogVGVzdENvbW1hbmQuY3BwICovOyB9OwogCQk4MDM0QzY2MjE0ODc2MzY0MDBBQzMyRTkgLyog
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MDM0QzY2MTE0ODc2MzY0MDBBQzMyRTkgLyogQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCTgwOTczMzhBMTQ4NzRBNUEwMDgxNTZEOSAv
KiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwOTczMzg5MTQ4NzRBNUEwMDgxNTZEOSAvKiBB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKKwkJOTMyQkI5QzAyNzBF
MjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkJCOUJFMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmll
cktleXMubW0gKi87IH07CiAJCTkzNzY0MTdBMjEwRDczNzIwMEEzREFBRSAvKiBXZWJLaXRUZXN0
UnVubmVyV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM3NjQxNzYyMTBENzM2MDAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cu
bW0gKi87IH07CiAJCTkzQzc4ODIzMjUwQzZDMkUwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4
ODFGMjUwQzY5RTQwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTND
Nzg4MzEyNTBDNzE5RjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODMwMjUwQzcxOTkwMEMwQUEyNCAvKiBK
U0Jhc2ljcy5jcHAgKi87IH07CkBAIC0zNjcsNiArMzY4LDggQEAKIAkJODQxQ0MwMEQxODExODVC
RjAwNDJFOUI2IC8qIE9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gT3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0MUNDMDBF
MTgxMTg1QkYwMDQyRTlCNiAvKiBPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERENzZGQTEw
NDg2QUE3NjAwRDk2QjVFIC8qIFdlYktpdFRlc3RSdW5uZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7
IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXI7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzMkJCOUJEMjcwRTI3MDAwMDk0Q0MzMyAvKiBN
b2RpZmllcktleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9kaWZpZXJL
ZXlzLmg7IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzJCQjlCRTI3MEUyNzAwMDA5NENDMzMgLyog
TW9kaWZpZXJLZXlzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
TW9kaWZpZXJLZXlzLm1tOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmll
cktleXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzhEMUJFMjUwQkQ5REQw
MEU4MjdGNiAvKiBEaWN0aW9uYXJ5RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3Rpb25h
cnlGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3NjQxNzYyMTBE
NzM2MDAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzc2NDE3NzIxMEQ3MzYxMDBBM0RBQUUgLyogV2Vi
S2l0VGVzdFJ1bm5lcldpbmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJLaXRUZXN0UnVubmVyV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NTUsNiArOTU4LDggQEAKIAkJCQlGNDRBNTMxNjIxQjg5OURBMDBEQkI5OUMgLyogSW5zdGFuY2VN
ZXRob2RTd2l6emxlci5tbSAqLywKIAkJCQlGNEMzNTc4QjIwRTg0NDQwMDBGQTA3NDggLyogTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovLAogCQkJCUY0QzM1NzhBMjBFODQ0NDAwMEZBMDc0OCAv
KiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJCTkzMkJCOUJEMjcwRTI3MDAwMDk0
Q0MzMyAvKiBNb2RpZmllcktleXMuaCAqLywKKwkJCQk5MzJCQjlCRTI3MEUyNzAwMDA5NENDMzMg
LyogTW9kaWZpZXJLZXlzLm1tICovLAogCQkJCTJFMkE3NjVCMjM3MEM4QTAwMDhGOUZGRSAvKiBQ
bGF0Zm9ybVZpZXdIZWxwZXJzLmggKi8sCiAJCQkJMkUyQTc2NUMyMzcwQzhBMDAwOEY5RkZFIC8q
IFBsYXRmb3JtVmlld0hlbHBlcnMubW0gKi8sCiAJCQkJRjQwMTBCN0QyNERBMjA0ODAwQTg3NkUy
IC8qIFBvc2VBc0NsYXNzLmggKi8sCkBAIC0xMjQ2LDYgKzEyNTEsNyBAQAogCQkJCUExODUxMDNG
MUI5QUUxMjkwMDc0NEFFQiAvKiBHZW9sb2NhdGlvblByb3ZpZGVyTW9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGNDRBNTMxODIxQjg5OUU1MDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6
emxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxREE4QTNEMUU3MjA1Q0MwMEUxREYyRiAvKiBJ
T1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzJCQjlD
MDI3MEUyNzAwMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTNDNzg4MzIyNTBDNzFCNzAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNzNCNTUxMUJBNzg5NjgwMDRCM0VGNCAvKiBKU1VJU2NyaXB0Q29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjE4RTcxODFENkJDNDU2MDAyN0U1NDcgLyogSlNXcmFwcGVy
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZl
bnRTZW5kZXJQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9FdmVudFNlbmRlclByb3h5Lm1tCShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW1wb3J0ICJFdmVudFNlbmRlclByb3h5LmgiCiAKICNpbXBvcnQgIkNvcmVH
cmFwaGljc1Rlc3RTUEkuaCIKKyNpbXBvcnQgIk1vZGlmaWVyS2V5cy5oIgogI2ltcG9ydCAiUGxh
dGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlRl
c3RDb250cm9sbGVyLmgiCkBAIC0yMzgsMTMgKzIzOSw2IEBAIGVudW0gTW91c2VCdXR0b24gewog
ICAgIE5vTW91c2VCdXR0b24gPSAtMgogfTsKIAotc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7Ci0g
ICAgaW50IG1hY0tleUNvZGU7Ci0gICAgaW50IG1hY051bXBhZEtleUNvZGU7Ci0gICAgdW5pY2hh
ciBjaGFyYWN0ZXI7Ci0gICAgTlNTdHJpbmcqIGNoYXJhY3Rlck5hbWU7Ci19OwotCiBzdGF0aWMg
TlNFdmVudFR5cGUgZXZlbnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRvbiwg
TW91c2VBY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYnV0dG9uKSB7CkBAIC02MzIsMjAz
ICs2MjYsMTggQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbQogCiB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRpb24pCiB7Ci0gICAgTlNTdHJpbmcq
IGNoYXJhY3RlciA9IHRvV1RGU3RyaW5nKGtleSk7Ci0KLSAgICBOU1N0cmluZyAqZXZlbnRDaGFy
YWN0ZXIgPSBjaGFyYWN0ZXI7Ci0gICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IDA7Ci0gICAg
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFycm93Il0pIHsKLSAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TTGVmdEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDdCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHg3QzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBB
cnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktl
eTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0U7Ci0gICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICBrZXlDb2RlID0gMHg3RDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAicGFnZVVwIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFn
ZVVwRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc0Owot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7
Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc5OwotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TSG9tZUZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0g
MHg3MzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZW5kIl0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRW5kRnVuY3Rpb25LZXk7Ci0gICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc3OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNJbnNlcnRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9
IDB4NzI7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0
ZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5Owot
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NTsKLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBj
b2RlIGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzOyAvLyBT
aGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAw
eDNCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0U2hp
ZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eEZGRTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBr
ZXlDb2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTI7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNE
OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAg
ICAga2V5Q29kZSA9IDB4MzU7Ci0gICAgfQotCi0gICAgLy8gQ29tcGFyZSB0aGUgaW5wdXQgc3Ry
aW5nIHdpdGggdGhlIGZ1bmN0aW9uLWtleSBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBET00gc3BlYyAo
aS5lLiAiRjEiLC4uLiwiRjI0IikuCi0gICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIGZ1
bmN0aW9uLWtleSBuYW1lLCBzZXQgaXRzIGtleSBjb2RlLgotICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPD0gMjQ7IGkrKykgewotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJGJXUiLCBpXV0pIHsKLSAgICAgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0YxRnVuY3Rpb25LZXkgKyAoaSAtIDEpOwotICAgICAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKLSAgICAgICAgICAgIHN3aXRjaCAoaSkgewotICAgICAgICAgICAgICAgIGNhc2Ug
MToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjoga2V5Q29k
ZSA9IDB4Nzg7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMzoga2V5Q29kZSA9IDB4NjM7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgNjoga2V5Q29kZSA9IDB4NjE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgNzoga2V5Q29kZSA9IDB4NjI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgODoga2V5
Q29kZSA9IDB4NjQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgOToga2V5Q29kZSA9IDB4
NjU7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAxMjoga2V5Q29kZSA9IDB4NkY7IGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNToga2V5
Q29kZSA9IDB4NzE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTY6IGtleUNvZGUgPSAw
eDZBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxODoga2V5Q29kZSA9IDB4NEY7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qg
a2V5cy4KLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgzMDsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIiAiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzE7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJcciJdKQotICAgICAgICBrZXlDb2RlID0gMHgyNDsKLSAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCi0gICAgICAgIGtleUNv
ZGUgPSAweDRDOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4
Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMzOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiYSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwMDsKLSAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4
MEI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDAyOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiZSJdKQotICAgICAgICBrZXlDb2RlID0gMHgwRTsKLSAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MUI7Ci0g
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCi0gICAgICAgIGtl
eUNvZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
OyJdKQotICAgICAgICBrZXlDb2RlID0gMHgyOTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIiwiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MkI7Ci0KLSAgICBLZXlN
YXBwaW5nRW50cnkgdGFibGVbXSA9IHsKLSAgICAgICAgezB4MkYsIDB4NDEsICcuJywgbmlsfSwK
LSAgICAgICAgezAsICAgIDB4NDMsICcqJywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDUsICcr
JywgbmlsfSwKLSAgICAgICAgezAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25LZXksIEAi
Y2xlYXIifSwKLSAgICAgICAgezB4MkMsIDB4NEIsICcvJywgbmlsfSwKLSAgICAgICAgezAsICAg
IDB4NEMsIDMsIEAiZW50ZXIiIH0sCi0gICAgICAgIHsweDFCLCAweDRFLCAnLScsIG5pbH0sCi0g
ICAgICAgIHsweDE4LCAweDUxLCAnPScsIG5pbH0sCi0gICAgICAgIHsweDFELCAweDUyLCAnMCcs
IG5pbH0sCi0gICAgICAgIHsweDEyLCAweDUzLCAnMScsIG5pbH0sCi0gICAgICAgIHsweDEzLCAw
eDU0LCAnMicsIG5pbH0sCi0gICAgICAgIHsweDE0LCAweDU1LCAnMycsIG5pbH0sCi0gICAgICAg
IHsweDE1LCAweDU2LCAnNCcsIG5pbH0sCi0gICAgICAgIHsweDE3LCAweDU3LCAnNScsIG5pbH0s
Ci0gICAgICAgIHsweDE2LCAweDU4LCAnNicsIG5pbH0sCi0gICAgICAgIHsweDFBLCAweDU5LCAn
NycsIG5pbH0sCi0gICAgICAgIHsweDFDLCAweDVCLCAnOCcsIG5pbH0sCi0gICAgICAgIHsweDE5
LCAweDVDLCAnOScsIG5pbH0sCi0gICAgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgewotICAgICAgICBOU1N0cmluZyogY3VycmVu
dENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomdGFibGVb
aV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7Ci0gICAgICAgICAgICBpZiAoa2V5TG9jYXRp
b24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAgICAgICAgICAg
a2V5Q29kZSA9IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAga2V5Q29kZSA9IHRhYmxlW2ldLm1hY0tleUNvZGU7Ci0gICAgICAgICAg
ICBldmVudENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMgPSBldmVudENoYXJhY3RlcjsKLQotICAgIGludCBtb2RpZmllckZsYWdzID0g
MDsKLQotICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVyIGNoYXJh
Y3RlckF0SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA8
PSAnWicpIHsKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hp
ZnQ7Ci0gICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93
ZXJjYXNlU3RyaW5nXTsKLSAgICB9Ci0KLSAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZp
ZXJGbGFncyhtb2RpZmllcnMpOwotCi0gICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01f
S0VZX0xPQ0FUSU9OX05VTVBBRCovKQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRN
b2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIGF1dG8gbW9kaWZpZXJLZXlzID0gYWRvcHROUyhb
W01vZGlmaWVyS2V5cyBhbGxvY10gbW9kaWZpZXJLZXlzV2l0aEtleTp0b1dURlN0cmluZyhrZXkp
IG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjprZXlM
b2NhdGlvbl0pOwogCiAgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhU
eXBlOk5TRXZlbnRUeXBlS2V5RG93bgotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246
TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJGbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29sdXRl
VGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtV2luZG93KCkgd2luZG93TnVtYmVyXQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGtleUNvZGU6a2V5Q29kZV07CisgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUp
CisgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCisgICAg
ICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgp
KQorICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICBjb250ZXh0OltOU0dyYXBo
aWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgY2hhcmFjdGVyczptb2RpZmllcktl
eXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKQorICAg
ICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVd
OwogCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29u
dHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0g
a2V5RG93bjpldmVudF07CkBAIC04MzYsMTQgKzY0NSwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmtleURvd24oV0tTdHJpbmdSCiAKICAgICBldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0
aFR5cGU6TlNFdmVudFR5cGVLZXlVcAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246
TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2Rp
ZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFt
cDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczptb2RpZmllcktleXMt
PmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAg
ICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlDb2RlXTsKIAogICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50OmV2ZW50XTsKICAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBs
YXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440404</attachid>
            <date>2021-10-06 11:59:09 -0700</date>
            <delta_ts>2021-10-06 12:03:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code-4.txt</filename>
            <type>text/plain</type>
            <size>46531</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzY0MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIxLTEwLTA2ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
cyBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVuIERS
VCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgb2Yg
a2V5RG93bi4gCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVy
IGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaDogQWRkZWQuCisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMubW06IEFkZGVkLgorICAgICAgICAoLVtNb2Rp
ZmllcktleXMgbW9kaWZpZXJLZXlzV2l0aEtleTptb2RpZmllcnM6a2V5TG9jYXRpb246XSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisKIDIw
MjEtMTAtMDYgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFN0eWxlIGNoZWNrZXIgc2hvdWxkIGNoZWNrIHNwYWNpbmcgaW5zaWRlIGJyYWNlcyB3aXRo
IGVsZW1lbnRzIGluIHRoZW0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAJ
CTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTgg
LyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyog
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CiAJCTg0NjVFMkM3MEZG
QThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQ
aXhlbER1bXBTdXBwb3J0LmNwcCAqLzsgfTsKKwkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzMkJCOUMyMjcwRTI3M0MwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi87IH07
CiAJCTkzQzc4ODI2MjUwQzZEM0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTNDNzg4MkUyNTBD
NzE3MjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBKU0Jhc2ljcy5j
cHAgKi87IH07CiAJCUExMTU4RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZUJy
b3dzZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNThENTYxODkyNzNFQjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcu
bW0gKi87IH07CkBAIC0zNDUsNiArMzQ2LDggQEAKIAkJODAwNDVBRUIxNDc3MThFNzAwODI5MEE4
IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHBhdGgg
PSBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBtYWMvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzEyNzBFMjczQzAwOTRDQzMz
IC8qIE1vZGlmaWVyS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Rp
ZmllcktleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzIyNzBFMjcz
QzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1vZGlmaWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTMzNTQzNUYwM0Q3NTUwMjAwODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTkzNDA5OTU0MDg1NDBDQUYwMDdGM0JDOCAvKiBEdW1wUmVuZGVyVHJlZSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gRHVtcFJlbmRlclRy
ZWU7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTQwLDYgKzk0Myw4IEBACiAJCQkJRjQ0QTUzMUMyMUI4OUE0NTAwREJCOTlD
IC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjRDMzU3ODkyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKIAkJCQlGNEMzNTc4ODIwRTg0
NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCQk5MzJCQjlD
MTI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8sCisJCQkJOTMyQkI5QzIyNzBF
MjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLywKIAkJCQlGNDAxMEI3QTI0REEyMDBF
MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKIAkJCQlGNDAxMEI3OTI0REEyMDBFMDBBODc2
RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8sCiAJCQkpOwpAQCAtMTI4NCw2ICsxMjg5LDcgQEAKIAkJ
CQlGNEZFRDMyMDIzNTgyMTU4MDAzQzEzOUMgLyogTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMzIwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9s
bGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3RTBDOUIwOEYxMDAxMTQzNjkgLyogT2Jq
Q1BsdWdpbi5tIGluIFNvdXJjZXMgKi8sCisJCQkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjgwMEM5QjA4RjEwMDEx
NDM2OSAvKiBPYmpDUGx1Z2luRnVuY3Rpb24ubSBpbiBTb3VyY2VzICovLAogCQkJCTg0NjVFMkM3
MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQjI4NENEMENGQTgzQzgwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAj
aW1wb3J0ICJEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKICNpbXBv
cnQgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgpAQCAtODEsMTMgKzgyLDYgQEAgZW51
bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5
TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5
Q29kZTsKLSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFt
ZTsKLX07Ci0KIE5TUG9pbnQgbGFzdE1vdXNlUG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bv
c2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRvbiA9IE5vTW91c2VCdXR0b247CkBAIC05NzIsMjA0
ICs5NjYsMjMgQEAgKyAodm9pZCljbGVhclNhdmVkRXZlbnRzCiAKIC0gKHZvaWQpa2V5RG93bjoo
TlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9k
aWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewotICAgIE5TU3Ry
aW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ci
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBB
cnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VEb3duIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5j
dGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJlbmQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRl
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4MzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InByaW50U2NyZWVuIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3Jl
ZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8g
VGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0
ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNz
aWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRDsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJl
IHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkg
dGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkg
ewotICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0g
MSk7Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBr
ZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0g
MHg3NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5
OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29k
ZSA9IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
Njoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNv
ZGUgPSAweDQwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0
RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlz
IHNldCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx0Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUg
PSAweDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAw
OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlD
b2RlID0gMHgxQjsKLQotICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7
MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAot
ICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlND
bGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8n
LCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4
MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAg
ICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywg
bmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4
NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAg
ezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwK
LSAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4
JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0g
ICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwg
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAg
ICAgICAgICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAg
ICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsK
LSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlm
aWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIDw9ICdaJykgewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBt
b2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSNlbHNlCi0gICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKLSNlbmRpZgot
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2Fz
ZVN0cmluZ107Ci0gICAgfQotCi0gICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKTsKLQotICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05V
TVBBRCkKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZDsKKyAgICBhdXRvIG1vZGlmaWVyS2V5cyA9IGFkb3B0TlMoW1tNb2RpZmllcktleXMgYWxs
b2NdIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVy
RmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl0pOwogCiAgICAgW1tbbWFpbkZy
YW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpt
b2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
cgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJl
cGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV0pOwogI2Vs
c2UKLSAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtl
eUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGF1dG8gZXZlbnQg
PSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczptb2Rp
ZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2Rp
ZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50
RmxhZ3MpbW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFn
czowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVy
QXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdc
dCcpXSk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE4MywxNiAr
OTk2LDE2IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlF
dmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll
ckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJd
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFy
YWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBp
c0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVdKTsK
ICNlbHNlCi0gICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5
RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVd
IGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZp
ZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpu
aWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2ZW50ID0gYWRvcHRO
UyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRp
bWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+
ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2Rp
ZmllcktleXMtPm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElu
cHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
IGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0UnVubmVy
U2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmgJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworIEBpbnRlcmZhY2UgTW9kaWZpZXJLZXlzIDogTlNPYmplY3QgeworIEBwdWJs
aWMKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV2ZW50Q2hhcmFjdGVyOworICAgIHVuc2lnbmVk
IHNob3J0IGtleUNvZGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM7CisgICAgaW50IG1vZGlmaWVyRmxhZ3M7CisgfQorCisgLSAoTW9kaWZpZXJL
ZXlzKiltb2RpZmllcktleXNXaXRoS2V5OihOU1N0cmluZyAqKWtleSBtb2RpZmllcnM6KGludClt
b2RpZmllcnMga2V5TG9jYXRpb246KHVuc2lnbmVkKWtleUxvY2F0aW9uOworIAorQGVuZApJbmRl
eDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMubW0JKG5vbmV4
aXN0ZW50KQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIk1vZGlmaWVyS2V5cy5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyNpbXBvcnQgPFdlYktpdC9LZXlFdmVudENvZGVzSU9TLmg+CisjaW1wb3J0IDxXZWJL
aXQvV2ViRXZlbnQuaD4KKyNlbmRpZgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdExlZ2FjeS5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7CisgICAg
aW50IG1hY0tleUNvZGU7CisgICAgaW50IG1hY051bXBhZEtleUNvZGU7CisgICAgdW5pY2hhciBj
aGFyYWN0ZXI7CisgICAgTlNTdHJpbmcqIGNoYXJhY3Rlck5hbWU7Cit9OworCitAaW1wbGVtZW50
YXRpb24gTW9kaWZpZXJLZXlzCisKKy0gKE1vZGlmaWVyS2V5cyopbW9kaWZpZXJLZXlzV2l0aEtl
eTooTlNTdHJpbmcgKiljaGFyYWN0ZXIgbW9kaWZpZXJzOihpbnQpbW9kaWZpZXJzIGtleUxvY2F0
aW9uOih1bnNpZ25lZClrZXlMb2NhdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Cisg
ICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgZXZlbnRDaGFyYWN0ZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmNoYXJhY3Rlcl0pOwor
ICAgIGtleUNvZGUgPSAwOworICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxl
ZnRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3QjsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDdFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3du
QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlv
bktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBrZXlDb2RlID0gMHg3NDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdl
RG93bkZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3OTsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0Vu
ZEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3NzsKKyAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIGtleUNvZGUgPSAweDcyOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNEZWxldGVGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4
NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2Ny
ZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlv
bktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMg
bm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91
dC4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRy
b2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFMTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Mzg7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlD
b2RlID0gMHgzQTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKKyAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHhGRkUyOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgz
QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQi
XSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHgzRDsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM1OworICAgIH0KKworICAgIC8v
IENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVm
aW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRo
ZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4K
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1
IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5
ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsK
KyAgICAgICAgICAgIGNhc2UgMToga2V5Q29kZSA9IDB4N0E7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IGtleUNv
ZGUgPSAweDYzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDoga2V5Q29kZSA9IDB4NzY7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNzog
a2V5Q29kZSA9IDB4NjI7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2
NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMTA6IGtleUNvZGUgPSAweDZEOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IGtleUNv
ZGUgPSAweDZGOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTM6IGtleUNvZGUgPSAweDY5OyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
MTY6IGtleUNvZGUgPSAweDZBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUg
PSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgMTk6IGtleUNvZGUgPSAweDUwOyBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBr
ZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAg
IGtleUNvZGUgPSAweDMwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiICJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIGtleUNvZGUgPSAweDI0OworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAga2V5Q29k
ZSA9IDB4NEM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJhIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAwOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgw
QjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKKyAgICAg
ICAga2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJlIl0pCisgICAgICAgIGtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBrZXlDb2RlID0gMHgxQjsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKKyAgICAgICAga2V5
Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBrZXlDb2RlID0gMHgyQjsKKworICAgIEtleU1h
cHBpbmdFbnRyeSB0YWJsZVtdID0geworICAgICAgICB7IDB4MkYsIDB4NDEsICcuJywgbmlsIH0s
CisgICAgICAgIHsgMCwgICAgMHg0MywgJyonLCBuaWwgfSwKKyAgICAgICAgeyAwLCAgICAweDQ1
LCAnKycsIG5pbCB9LAorICAgICAgICB7IDAsICAgIDB4NDcsIE5TQ2xlYXJMaW5lRnVuY3Rpb25L
ZXksIEAiY2xlYXIiIH0sCisgICAgICAgIHsgMHgyQywgMHg0QiwgJy8nLCBuaWwgfSwKKyAgICAg
ICAgeyAwLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAorICAgICAgICB7IDB4MUIsIDB4NEUsICct
JywgbmlsIH0sCisgICAgICAgIHsgMHgxOCwgMHg1MSwgJz0nLCBuaWwgfSwKKyAgICAgICAgeyAw
eDFELCAweDUyLCAnMCcsIG5pbCB9LAorICAgICAgICB7IDB4MTIsIDB4NTMsICcxJywgbmlsIH0s
CisgICAgICAgIHsgMHgxMywgMHg1NCwgJzInLCBuaWwgfSwKKyAgICAgICAgeyAweDE0LCAweDU1
LCAnMycsIG5pbCB9LAorICAgICAgICB7IDB4MTUsIDB4NTYsICc0JywgbmlsIH0sCisgICAgICAg
IHsgMHgxNywgMHg1NywgJzUnLCBuaWwgfSwKKyAgICAgICAgeyAweDE2LCAweDU4LCAnNicsIG5p
bCB9LAorICAgICAgICB7IDB4MUEsIDB4NTksICc3JywgbmlsIH0sCisgICAgICAgIHsgMHgxQywg
MHg1QiwgJzgnLCBuaWwgfSwKKyAgICAgICAgeyAweDE5LCAweDVDLCAnOScsIG5pbCB9LAorICAg
IH07CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUp
OyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07
CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVy
U3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJO
YW1lXSkgeworICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xP
Q0FUSU9OX05VTVBBRCovKQorICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNO
dW1wYWRLZXlDb2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGtleUNvZGUg
PSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJy
ZW50Q2hhcmFjdGVyU3RyaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOmV2ZW50Q2hhcmFjdGVyLmdldCgpXSk7CisKKyAgICBtb2Rp
ZmllckZsYWdzID0gMDsKKworICAgIGlmIChbY2hhcmFjdGVyIGxlbmd0aF0gPT0gMSAmJiBbY2hh
cmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPj0gJ0EnICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVy
QXRJbmRleDowXSA8PSAnWicpIHsKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAg
bW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7CisjZWxzZQorICAgICAg
ICBtb2RpZmllckZsYWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7CisjZW5kaWYK
KyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNh
c2VTdHJpbmddOworICAgIH0KKworICAgIG1vZGlmaWVyRmxhZ3MgfD0gbW9kaWZpZXJzOworCisg
ICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQor
ICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOwor
ICAgIAorICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQAogCQk3Q0ZGOUJDQjI1MzRBRjFEMDAwODAwOUYgLyog
VGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NGRjlCQzcyNTM0QUYxRDAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsK
IAkJODAzNEM2NjIxNDg3NjM2NDAwQUMzMkU5IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAzNEM2
NjExNDg3NjM2NDAwQUMzMkU5IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovOyB9
OwogCQk4MDk3MzM4QTE0ODc0QTVBMDA4MTU2RDkgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MDk3MzM4OTE0ODc0QTVBMDA4MTU2RDkgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIubW0gKi87IH07CisJCTkzMkJCOUMwMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktl
eXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJC
QjlCRTI3MEUyNzAwMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLm1tICovOyB9OwogCQk5Mzc2NDE3
QTIxMEQ3MzcyMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzY0MTc2MjEwRDczNjAwMEEz
REFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tICovOyB9OwogCQk5M0M3ODgyMzI1MEM2
QzJFMDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgxRjI1MEM2OUU0MDBDMEFBMjQgLyogUmVm
dGVzdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTkzQzc4ODMxMjUwQzcxOUYwMEMwQUEyNCAvKiBK
U0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0M3ODgzMDI1MEM3MTk5MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwICovOyB9OwpAQCAtMzY3
LDYgKzM2OCw4IEBACiAJCTg0MUNDMDBEMTgxMTg1QkYwMDQyRTlCNiAvKiBPcHRpb25zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NDFDQzAwRTE4MTE4NUJGMDA0MkU5QjYgLyogT3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBXZWJLaXRU
ZXN0UnVubmVyICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBXZWJLaXRUZXN0UnVubmVyOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk5MzJCQjlCRDI3MEUyNzAwMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vZGlmaWVyS2V5cy5oOyBwYXRoID0gLi4vVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTMyQkI5QkUyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1vZGlmaWVyS2V5cy5tbTsgcGF0aCA9IC4u
L1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzM4RDFCRTI1MEJEOUREMDBFODI3RjYgLyogRGljdGlvbmFyeUZ1bmN0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0aW9uYXJ5RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0MTc2MjEwRDczNjAwMEEzREFBRSAvKiBXZWJLaXRUZXN0
UnVubmVyV2luZG93Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTM3NjQxNzcyMTBENzM2MTAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTU1LDYgKzk1OCw4IEBACiAJCQkJRjQ0QTUz
MTYyMUI4OTlEQTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJ
RjRDMzU3OEIyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywK
IAkJCQlGNEMzNTc4QTIwRTg0NDQwMDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5t
bSAqLywKKwkJCQk5MzJCQjlCRDI3MEUyNzAwMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8s
CisJCQkJOTMyQkI5QkUyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLywKIAkJ
CQkyRTJBNzY1QjIzNzBDOEEwMDA4RjlGRkUgLyogUGxhdGZvcm1WaWV3SGVscGVycy5oICovLAog
CQkJCTJFMkE3NjVDMjM3MEM4QTAwMDhGOUZGRSAvKiBQbGF0Zm9ybVZpZXdIZWxwZXJzLm1tICov
LAogCQkJCUY0MDEwQjdEMjREQTIwNDgwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5oICovLApAQCAt
MTI0Niw2ICsxMjUxLDcgQEAKIAkJCQlBMTg1MTAzRjFCOUFFMTI5MDA3NDRBRUIgLyogR2VvbG9j
YXRpb25Qcm92aWRlck1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0QTUzMTgyMUI4OTlF
NTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzMURBOEEzRDFFNzIwNUNDMDBFMURGMkYgLyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTMyQkI5QzAyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlm
aWVyS2V5cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzQzc4ODMyMjUwQzcxQjcwMEMwQUEyNCAv
KiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjczQjU1MTFCQTc4OTY4MDA0QjNF
RjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3
MTgxRDZCQzQ1NjAwMjdFNTQ3IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkocmV2
aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2ltcG9ydCAiRXZlbnRT
ZW5kZXJQcm94eS5oIgogCiAjaW1wb3J0ICJDb3JlR3JhcGhpY3NUZXN0U1BJLmgiCisjaW1wb3J0
ICJNb2RpZmllcktleXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgogI2ltcG9ydCAi
U3RyaW5nRnVuY3Rpb25zLmgiCiAjaW1wb3J0ICJUZXN0Q29udHJvbGxlci5oIgpAQCAtMjM4LDEz
ICsyMzksNiBAQCBlbnVtIE1vdXNlQnV0dG9uIHsKICAgICBOb01vdXNlQnV0dG9uID0gLTIKIH07
CiAKLXN0cnVjdCBLZXlNYXBwaW5nRW50cnkgewotICAgIGludCBtYWNLZXlDb2RlOwotICAgIGlu
dCBtYWNOdW1wYWRLZXlDb2RlOwotICAgIHVuaWNoYXIgY2hhcmFjdGVyOwotICAgIE5TU3RyaW5n
KiBjaGFyYWN0ZXJOYW1lOwotfTsKLQogc3RhdGljIE5TRXZlbnRUeXBlIGV2ZW50VHlwZUZvck1v
dXNlQnV0dG9uQW5kQWN0aW9uKGludCBidXR0b24sIE1vdXNlQWN0aW9uIGFjdGlvbikKIHsKICAg
ICBzd2l0Y2ggKGJ1dHRvbikgewpAQCAtNjMyLDIwMyArNjI2LDE4IEBAIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlE
b3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVk
IGtleUxvY2F0aW9uKQogewotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSB0b1dURlN0cmluZyhr
ZXkpOwotCi0gICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hhcmFjdGVyOwotICAgIHVu
c2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRB
cnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3QjsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0M7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJkb3duQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJy
b3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0Q7Ci0g
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9t
ZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzM7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0g
MHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0
Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDcyOwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InByaW50U2NyZWVuIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3Jl
ZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8g
VGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0
ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNz
aWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4MUI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM1OwotICAgIH0K
LQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkg
bmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgotICAg
IC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBr
ZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKLSAgICAg
ICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1
bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgICAgICBzd2l0
Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDU6IGtl
eUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAw
eDYxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0OyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
MToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTI6IGtleUNv
ZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2
OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcxOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
MTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE5OiBrZXlD
b2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4
NUE7IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRklY
TUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCi0gICAgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzA7Ci0gICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCi0gICAgICAgIGtleUNvZGUg
PSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBrZXlDb2RlID0gMHg0QzsKLSAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQotICAgICAgICBrZXlDb2RlID0gMHgz
MzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKLSAgICAg
ICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBCOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQotICAgICAgICBrZXlDb2RlID0gMHgwMjsKLSAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKLSAgICAgICAga2V5Q29k
ZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFi
Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDFCOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiOiJdKQotICAgICAgICBrZXlDb2RlID0gMHgyOTsKLSAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4
Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIsIl0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDJCOwotCi0gICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7Ci0g
ICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQzLCAnKics
IG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ1LCAnKycsIG5pbH0sCi0gICAgICAgIHswLCAgICAw
eDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIn0sCi0gICAgICAgIHsweDJDLCAw
eDRCLCAnLycsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAotICAg
ICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAotICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBu
aWx9LAotICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBuaWx9LAotICAgICAgICB7MHgxMiwgMHg1
MywgJzEnLCBuaWx9LAotICAgICAgICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAotICAgICAgICB7
MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAotICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAot
ICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAotICAgICAgICB7MHgxNiwgMHg1OCwgJzYn
LCBuaWx9LAotICAgICAgICB7MHgxQSwgMHg1OSwgJzcnLCBuaWx9LAotICAgICAgICB7MHgxQywg
MHg1QiwgJzgnLCBuaWx9LAotICAgICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAotICAgIH07
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyAr
K2kpIHsKLSAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07Ci0g
ICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3Ry
aW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1l
XSkgewotICAgICAgICAgICAgaWYgKGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FU
SU9OX05VTVBBRCovKQotICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1w
YWRLZXlDb2RlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0
YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50
Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0
ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7Ci0KLSAgICBpZiAoW2NoYXJhY3RlciBs
ZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7Ci0gICAgICAgIG1vZGlmaWVy
RmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OwotICAgICAgICBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107Ci0gICAgfQotCi0g
ICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKLQotICAg
IGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKLSAg
ICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKyAg
ICBhdXRvIG1vZGlmaWVyS2V5cyA9IGFkb3B0TlMoW1tNb2RpZmllcktleXMgYWxsb2NdIG1vZGlm
aWVyS2V5c1dpdGhLZXk6dG9XVEZTdHJpbmcoa2V5KSBtb2RpZmllcnM6YnVpbGRNb2RpZmllckZs
YWdzKG1vZGlmaWVycykga2V5TG9jYXRpb246a2V5TG9jYXRpb25dKTsKIAogICAgIE5TRXZlbnQg
KmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVzdGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2
ZW50VGltZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RD
b250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJl
bnRDb250ZXh0XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJh
Y3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwotICAgICAgICAgICAgICAgICAgICAgICAgaXNB
UmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAg
ICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1v
ZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1l
Rm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOltt
X3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051
bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
CisgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQor
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAg
IGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlDb2RlXTsKIAogICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50OmV2ZW50XTsKICAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBs
YXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOwpAQCAtODM2LDE0
ICs2NDUsMTQgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogCiAg
ICAgZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCiAg
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1l
KGN1cnJlbnRFdmVudFRpbWUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJl
cjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5k
b3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29u
dGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6
ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVy
S2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5
Q29kZV07CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5
Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW1ttX3Rl
c3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9u
ZGVyXSBrZXlVcDpldmVudF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440405</attachid>
            <date>2021-10-06 12:03:39 -0700</date>
            <delta_ts>2021-10-06 13:00:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code-5.txt</filename>
            <type>text/plain</type>
            <size>46526</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzY0MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIxLTEwLTA2ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
cyBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVuIERS
VCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgb2Yg
a2V5RG93bi4gCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVy
IGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaDogQWRkZWQuCisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMubW06IEFkZGVkLgorICAgICAgICAoLVtNb2Rp
ZmllcktleXMgbW9kaWZpZXJLZXlzV2l0aEtleTptb2RpZmllcnM6a2V5TG9jYXRpb246XSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisKIDIw
MjEtMTAtMDYgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFN0eWxlIGNoZWNrZXIgc2hvdWxkIGNoZWNrIHNwYWNpbmcgaW5zaWRlIGJyYWNlcyB3aXRo
IGVsZW1lbnRzIGluIHRoZW0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAJ
CTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTgg
LyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyog
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CiAJCTg0NjVFMkM3MEZG
QThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQ
aXhlbER1bXBTdXBwb3J0LmNwcCAqLzsgfTsKKwkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzMkJCOUMyMjcwRTI3M0MwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi87IH07
CiAJCTkzQzc4ODI2MjUwQzZEM0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTNDNzg4MkUyNTBD
NzE3MjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBKU0Jhc2ljcy5j
cHAgKi87IH07CiAJCUExMTU4RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZUJy
b3dzZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNThENTYxODkyNzNFQjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcu
bW0gKi87IH07CkBAIC0zNDUsNiArMzQ2LDggQEAKIAkJODAwNDVBRUIxNDc3MThFNzAwODI5MEE4
IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHBhdGgg
PSBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBtYWMvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzEyNzBFMjczQzAwOTRDQzMz
IC8qIE1vZGlmaWVyS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Rp
ZmllcktleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzIyNzBFMjcz
QzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1vZGlmaWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTMzNTQzNUYwM0Q3NTUwMjAwODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTkzNDA5OTU0MDg1NDBDQUYwMDdGM0JDOCAvKiBEdW1wUmVuZGVyVHJlZSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gRHVtcFJlbmRlclRy
ZWU7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTQwLDYgKzk0Myw4IEBACiAJCQkJRjQ0QTUzMUMyMUI4OUE0NTAwREJCOTlD
IC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjRDMzU3ODkyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKIAkJCQlGNEMzNTc4ODIwRTg0
NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCQk5MzJCQjlD
MTI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8sCisJCQkJOTMyQkI5QzIyNzBF
MjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLywKIAkJCQlGNDAxMEI3QTI0REEyMDBF
MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKIAkJCQlGNDAxMEI3OTI0REEyMDBFMDBBODc2
RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8sCiAJCQkpOwpAQCAtMTI4NCw2ICsxMjg5LDcgQEAKIAkJ
CQlGNEZFRDMyMDIzNTgyMTU4MDAzQzEzOUMgLyogTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMzIwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9s
bGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3RTBDOUIwOEYxMDAxMTQzNjkgLyogT2Jq
Q1BsdWdpbi5tIGluIFNvdXJjZXMgKi8sCisJCQkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjgwMEM5QjA4RjEwMDEx
NDM2OSAvKiBPYmpDUGx1Z2luRnVuY3Rpb24ubSBpbiBTb3VyY2VzICovLAogCQkJCTg0NjVFMkM3
MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQjI4NENEMENGQTgzQzgwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAj
aW1wb3J0ICJEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKICNpbXBv
cnQgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgpAQCAtODEsMTMgKzgyLDYgQEAgZW51
bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5
TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5
Q29kZTsKLSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFt
ZTsKLX07Ci0KIE5TUG9pbnQgbGFzdE1vdXNlUG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bv
c2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRvbiA9IE5vTW91c2VCdXR0b247CkBAIC05NzIsMjA0
ICs5NjYsMjMgQEAgKyAodm9pZCljbGVhclNhdmVkRXZlbnRzCiAKIC0gKHZvaWQpa2V5RG93bjoo
TlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9k
aWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewotICAgIE5TU3Ry
aW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ci
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBB
cnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VEb3duIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5j
dGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJlbmQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRl
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4MzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InByaW50U2NyZWVuIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3Jl
ZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8g
VGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0
ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNz
aWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRDsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJl
IHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkg
dGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkg
ewotICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0g
MSk7Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBr
ZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0g
MHg3NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5
OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29k
ZSA9IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
Njoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNv
ZGUgPSAweDQwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0
RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlz
IHNldCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx0Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUg
PSAweDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAw
OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlD
b2RlID0gMHgxQjsKLQotICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7
MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAot
ICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlND
bGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8n
LCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4
MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAg
ICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywg
bmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4
NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAg
ezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwK
LSAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4
JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0g
ICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwg
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAg
ICAgICAgICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAg
ICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsK
LSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlm
aWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIDw9ICdaJykgewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBt
b2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSNlbHNlCi0gICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKLSNlbmRpZgot
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2Fz
ZVN0cmluZ107Ci0gICAgfQotCi0gICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKTsKLQotICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05V
TVBBRCkKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZDsKKyAgICBhdXRvIG1vZGlmaWVyS2V5cyA9IGFkb3B0TlMoW1tNb2RpZmllcktleXMgYWxs
b2NdIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVy
RmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl0pOwogCiAgICAgW1tbbWFpbkZy
YW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpt
b2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
cgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJl
cGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV0pOwogI2Vs
c2UKLSAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtl
eUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGF1dG8gZXZlbnQg
PSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczptb2Rp
ZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2Rp
ZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50
RmxhZ3MpbW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFn
czowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVy
QXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdc
dCcpXSk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE4MywxNiAr
OTk2LDE2IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlF
dmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll
ckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJd
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFy
YWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBp
c0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVdKTsK
ICNlbHNlCi0gICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5
RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVd
IGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZp
ZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpu
aWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2ZW50ID0gYWRvcHRO
UyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRp
bWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+
ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2Rp
ZmllcktleXMtPm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElu
cHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
IGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0UnVubmVy
U2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmgJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworQGludGVyZmFjZSBNb2RpZmllcktleXMgOiBOU09iamVjdCB7CitAcHVibGlj
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBldmVudENoYXJhY3RlcjsKKyAgICB1bnNpZ25lZCBz
aG9ydCBrZXlDb2RlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOworICAgIGludCBtb2RpZmllckZsYWdzOworfQorCistIChNb2RpZmllcktleXMq
KW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5TU3RyaW5nICopa2V5IG1vZGlmaWVyczooaW50KW1vZGlm
aWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb247CisKK0BlbmQKSW5kZXg6IFRv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCShub25leGlzdGVu
dCkKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisjaW1wb3J0IDxXZWJLaXQvS2V5RXZlbnRDb2Rlc0lPUy5oPgorI2ltcG9ydCA8V2ViS2l0L1dl
YkV2ZW50Lmg+CisjZW5kaWYKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXRMZWdhY3kuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK3N0cnVjdCBLZXlNYXBwaW5nRW50cnkgeworICAgIGludCBt
YWNLZXlDb2RlOworICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOworICAgIHVuaWNoYXIgY2hhcmFj
dGVyOworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOworfTsKKworQGltcGxlbWVudGF0aW9u
IE1vZGlmaWVyS2V5cworCistIChNb2RpZmllcktleXMqKW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5T
U3RyaW5nICopY2hhcmFjdGVyIG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoo
dW5zaWduZWQpa2V5TG9jYXRpb24KK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlm
ICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGV2ZW50Q2hhcmFjdGVyID0gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpjaGFyYWN0ZXJdKTsKKyAgICBr
ZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJy
b3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktl
eTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIGtleUNvZGUgPSAweDdDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
VXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3
RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93
Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdEOworICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInBhZ2VEb3duIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25G
dW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzk7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDczOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5j
dGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4Nzc7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OworICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVs
ZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDc1Owor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7
CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtu
b3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgorICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtl
eUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM4OworICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9
IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0M7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsK
KyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgzNTsKKyAgICB9CisKKyAgICAvLyBDb21w
YXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQg
YnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5w
dXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGld
XSkgeworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChp
IC0gMSk7CisgICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAg
ICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Mjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0g
MHg2MzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4NjA7IGJyZWFrOworICAgICAgICAgICAg
Y2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IGtleUNv
ZGUgPSAweDYyOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgODoga2V5Q29kZSA9IDB4NjQ7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEx
OiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0g
MHg2RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0gMHg2QjsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OiBr
ZXlDb2RlID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0
MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4K
KyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBrZXlD
b2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAi
XSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJcciJdKQorICAgICAgICBrZXlDb2RlID0gMHgyNDsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxuIl0pCisgICAgICAgIGtleUNvZGUgPSAw
eDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCisg
ICAgICAgIGtleUNvZGUgPSAweDMzOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MEI7Cisg
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAgIGtl
eUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MUI7CisgICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCisgICAgICAgIGtleUNvZGUg
PSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOyJdKQor
ICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIiwiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MkI7CisKKyAgICBLZXlNYXBwaW5n
RW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgeyAweDJGLCAweDQxLCAnLicsIG5pbCB9LAorICAg
ICAgICB7IDAsICAgIDB4NDMsICcqJywgbmlsIH0sCisgICAgICAgIHsgMCwgICAgMHg0NSwgJysn
LCBuaWwgfSwKKyAgICAgICAgeyAwLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBA
ImNsZWFyIiB9LAorICAgICAgICB7IDB4MkMsIDB4NEIsICcvJywgbmlsIH0sCisgICAgICAgIHsg
MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgeyAweDFCLCAweDRFLCAnLScsIG5p
bCB9LAorICAgICAgICB7IDB4MTgsIDB4NTEsICc9JywgbmlsIH0sCisgICAgICAgIHsgMHgxRCwg
MHg1MiwgJzAnLCBuaWwgfSwKKyAgICAgICAgeyAweDEyLCAweDUzLCAnMScsIG5pbCB9LAorICAg
ICAgICB7IDB4MTMsIDB4NTQsICcyJywgbmlsIH0sCisgICAgICAgIHsgMHgxNCwgMHg1NSwgJzMn
LCBuaWwgfSwKKyAgICAgICAgeyAweDE1LCAweDU2LCAnNCcsIG5pbCB9LAorICAgICAgICB7IDB4
MTcsIDB4NTcsICc1JywgbmlsIH0sCisgICAgICAgIHsgMHgxNiwgMHg1OCwgJzYnLCBuaWwgfSwK
KyAgICAgICAgeyAweDFBLCAweDU5LCAnNycsIG5pbCB9LAorICAgICAgICB7IDB4MUMsIDB4NUIs
ICc4JywgbmlsIH0sCisgICAgICAgIHsgMHgxOSwgMHg1QywgJzknLCBuaWwgfSwKKyAgICB9Owor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytp
KSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAg
ICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmlu
Z10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0p
IHsKKyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElP
Tl9OVU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFk
S2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFi
bGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENo
YXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpldmVudENoYXJhY3Rlci5nZXQoKV0pOworCisgICAgbW9kaWZpZXJG
bGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3Rl
ciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIG1vZGlm
aWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OworI2Vsc2UKKyAgICAgICAgbW9k
aWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAg
ICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3Ry
aW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdzIHw9IG1vZGlmaWVyczsKKworICAgIGlm
IChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAg
ICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKyAgICAK
KyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjUsNiArMTI1LDcgQEAKIAkJN0NGRjlCQ0IyNTM0QUYxRDAwMDgwMDlGIC8qIFRlc3RD
b21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDRkY5QkM3MjUzNEFGMUQwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgw
MzRDNjYyMTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMzRDNjYxMTQ4
NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJ
ODA5NzMzOEExNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODA5
NzMzODkxNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Lm1tICovOyB9OworCQk5MzJCQjlDMDI3MEUyNzAwMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyQkI5QkUy
NzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLzsgfTsKIAkJOTM3NjQxN0EyMTBE
NzM3MjAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUg
LyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSAqLzsgfTsKIAkJOTNDNzg4MjMyNTBDNkMyRTAw
QzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MUYyNTBDNjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RG
dW5jdGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgzMTI1MEM3MTlGMDBDMEFBMjQgLyogSlNCYXNp
Y3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTND
Nzg4MzAyNTBDNzE5OTAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsgfTsKQEAgLTM2Nyw2ICsz
NjgsOCBAQAogCQk4NDFDQzAwRDE4MTE4NUJGMDA0MkU5QjYgLyogT3B0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODQxQ0MwMEUxODExODVCRjAwNDJFOUI2IC8qIE9wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1
bm5lciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2Vi
S2l0VGVzdFJ1bm5lcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTMy
QkI5QkQyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBNb2RpZmllcktleXMuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFy
ZWQvY29jb2EvTW9kaWZpZXJLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
MkJCOUJFMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNb2RpZmllcktleXMubW07IHBhdGggPSAuLi9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMzOEQxQkUyNTBCRDlERDAwRTgyN0Y2IC8qIERpY3Rpb25hcnlGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFyeUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5l
cldpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktp
dFRlc3RSdW5uZXJXaW5kb3cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0
MTc3MjEwRDczNjEwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1NSw2ICs5NTgsOCBAQAogCQkJCUY0NEE1MzE2MjFC
ODk5REEwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0QzM1
NzhCMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCiAJCQkJ
RjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8s
CisJCQkJOTMyQkI5QkQyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5oICovLAorCQkJ
CTkzMkJCOUJFMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi8sCiAJCQkJMkUy
QTc2NUIyMzcwQzhBMDAwOEY5RkZFIC8qIFBsYXRmb3JtVmlld0hlbHBlcnMuaCAqLywKIAkJCQky
RTJBNzY1QzIzNzBDOEEwMDA4RjlGRkUgLyogUGxhdGZvcm1WaWV3SGVscGVycy5tbSAqLywKIAkJ
CQlGNDAxMEI3RDI0REEyMDQ4MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKQEAgLTEyNDYs
NiArMTI1MSw3IEBACiAJCQkJQTE4NTEwM0YxQjlBRTEyOTAwNzQ0QUVCIC8qIEdlb2xvY2F0aW9u
UHJvdmlkZXJNb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0NEE1MzE4MjFCODk5RTUwMERC
Qjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFE
QThBM0QxRTcyMDVDQzAwRTFERjJGIC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTkzMkJCOUMwMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktl
eXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0M3ODgzMjI1MEM3MUI3MDBDMEFBMjQgLyogSlNC
YXNpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3M0I1NTExQkE3ODk2ODAwNEIzRUY0IC8q
IEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMThFNzE4MUQ2
QkM0NTYwMDI3RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHJldmlzaW9u
IDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHku
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkV2ZW50U2VuZGVy
UHJveHkuaCIKIAogI2ltcG9ydCAiQ29yZUdyYXBoaWNzVGVzdFNQSS5oIgorI2ltcG9ydCAiTW9k
aWZpZXJLZXlzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmlu
Z0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKQEAgLTIzOCwxMyArMjM5
LDYgQEAgZW51bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1z
dHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFj
TnVtcGFkS2V5Q29kZTsKLSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hh
cmFjdGVyTmFtZTsKLX07Ci0KIHN0YXRpYyBOU0V2ZW50VHlwZSBldmVudFR5cGVGb3JNb3VzZUJ1
dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9uLCBNb3VzZUFjdGlvbiBhY3Rpb24pCiB7CiAgICAgc3dp
dGNoIChidXR0b24pIHsKQEAgLTYzMiwyMDMgKzYyNiwxOCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmxlYXBGb3J3YXJkKGludCBtCiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihX
S1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlM
b2NhdGlvbikKIHsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmcoa2V5KTsK
LQotICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25l
ZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJsZWZ0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dG
dW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHg3RTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZG93bkFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVu
Y3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
LSAgICAgICAga2V5Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5T
UGFnZURvd25GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4
Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNFbmRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7
Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDc1OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmlu
dFNjcmVlbiJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVu
Y3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJl
IGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgotICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBs
YXlvdXQuCi0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRD
b250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKLSAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTE7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM4OwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4M0E7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJpZ2h0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7
Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNFOwotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKLSAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9
IDB4M0M7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0
QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9Ci0KLSAg
ICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVz
IGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJ
ZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNv
ZGUuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IkYldSIsIGldXSkgewotICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlv
bktleSArIChpIC0gMSk7Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChp
KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0
OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2Rl
ID0gMHg2MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtl
eUNvZGUgPSAweDY3OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0g
MHg2RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBr
ZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9
IDB4NTA7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBO
byBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIlx0Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgz
MTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXG4iXSkKLSAgICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0g
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtl
eUNvZGUgPSAweDAwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
YiJdKQotICAgICAgICBrZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAw
eDBFOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQot
ICAgICAgICBrZXlDb2RlID0gMHgxQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIjoiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4Mjk7Ci0gICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDI5Owot
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQotICAgICAgICBr
ZXlDb2RlID0gMHgyQjsKLQotICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAg
ICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9
LAotICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0Nywg
TlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0Qiwg
Jy8nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAg
ezB4MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwK
LSAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcx
JywgbmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQs
IDB4NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAg
ICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2Jywgbmls
fSwKLSAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIs
ICc4JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7
Ci0gICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAg
ICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10g
fHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsK
LSAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9O
VU1QQUQqLykKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5
Q29kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVb
aV0ubWFjS2V5Q29kZTsKLSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJh
Y3RlclN0cmluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
TlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwot
Ci0gICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3Ro
XSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykgewotICAgICAgICBtb2RpZmllckZsYWdz
IHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOwotICAgIH0KLQotICAgIG1v
ZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7Ci0KLSAgICBpZiAo
a2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgYXV0
byBtb2RpZmllcktleXMgPSBhZG9wdE5TKFtbTW9kaWZpZXJLZXlzIGFsbG9jXSBtb2RpZmllcktl
eXNXaXRoS2V5OnRvV1RGU3RyaW5nKGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyht
b2RpZmllcnMpIGtleUxvY2F0aW9uOmtleUxvY2F0aW9uXSk7CiAKICAgICBOU0V2ZW50ICpldmVu
dCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlEb3duCi0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQotICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRp
bWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJv
bGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29u
dGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVh
dDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAg
bG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmll
cktleXMtPm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2
ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJd
CisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAg
ICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzLmdldCgpCisgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICBrZXlD
b2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3duOmV2ZW50XTsKQEAgLTgzNiwxNCArNjQ1
LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIAogICAgIGV2
ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleVVwCiAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQotICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCisgICAgICAgICAgICAgICAg
ICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncwogICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJy
ZW50RXZlbnRUaW1lKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21f
dGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVt
YmVyXQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQg
Y3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50
Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleXMt
PmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVd
OworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVd
OwogCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29u
dHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0g
a2V5VXA6ZXZlbnRdOwo=
</data>
<flag name="commit-queue"
          id="464327"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440418</attachid>
            <date>2021-10-06 13:00:19 -0700</date>
            <delta_ts>2021-10-06 16:31:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code-6.txt</filename>
            <type>text/plain</type>
            <size>46550</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzY0MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIxLTEwLTA2ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
cyBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVuIERS
VCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgb2Yg
a2V5RG93bi4gCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVy
IGtleURvd246d2l0aE1vZGlmaWVyczp3aXRoTG9jYXRpb246XSk6CisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaDogQWRkZWQuCisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMubW06IEFkZGVkLgorICAgICAgICAoLVtNb2Rp
ZmllcktleXMgbW9kaWZpZXJLZXlzV2l0aEtleTptb2RpZmllcnM6a2V5TG9jYXRpb246XSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisKIDIw
MjEtMTAtMDYgIFBoaWxpcCBDaGltZW50byAgPHBjaGltZW50b0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFN0eWxlIGNoZWNrZXIgc2hvdWxkIGNoZWNrIHNwYWNpbmcgaW5zaWRlIGJyYWNlcyB3aXRo
IGVsZW1lbnRzIGluIHRoZW0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAJ
CTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTgg
LyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyog
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CiAJCTg0NjVFMkM3MEZG
QThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQ
aXhlbER1bXBTdXBwb3J0LmNwcCAqLzsgfTsKKwkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzMkJCOUMyMjcwRTI3M0MwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi87IH07
CiAJCTkzQzc4ODI2MjUwQzZEM0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTNDNzg4MkUyNTBD
NzE3MjAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBKU0Jhc2ljcy5j
cHAgKi87IH07CiAJCUExMTU4RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZUJy
b3dzZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNThENTYxODkyNzNFQjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcu
bW0gKi87IH07CkBAIC0zNDUsNiArMzQ2LDggQEAKIAkJODAwNDVBRUIxNDc3MThFNzAwODI5MEE4
IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHBhdGgg
PSBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBtYWMvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzEyNzBFMjczQzAwOTRDQzMz
IC8qIE1vZGlmaWVyS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Rp
ZmllcktleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzIyNzBFMjcz
QzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1vZGlmaWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTMzNTQzNUYwM0Q3NTUwMjAwODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTkzNDA5OTU0MDg1NDBDQUYwMDdGM0JDOCAvKiBEdW1wUmVuZGVyVHJlZSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gRHVtcFJlbmRlclRy
ZWU7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzQzc4ODI0MjUwQzZE
MzkwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTQwLDYgKzk0Myw4IEBACiAJCQkJRjQ0QTUzMUMyMUI4OUE0NTAwREJCOTlD
IC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjRDMzU3ODkyMEU4NDQyNzAw
RkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKIAkJCQlGNEMzNTc4ODIwRTg0
NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCQk5MzJCQjlD
MTI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8sCisJCQkJOTMyQkI5QzIyNzBF
MjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLywKIAkJCQlGNDAxMEI3QTI0REEyMDBF
MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKIAkJCQlGNDAxMEI3OTI0REEyMDBFMDBBODc2
RTIgLyogUG9zZUFzQ2xhc3MubW0gKi8sCiAJCQkpOwpAQCAtMTI4NCw2ICsxMjg5LDcgQEAKIAkJ
CQlGNEZFRDMyMDIzNTgyMTU4MDAzQzEzOUMgLyogTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMzIwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9s
bGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3RTBDOUIwOEYxMDAxMTQzNjkgLyogT2Jq
Q1BsdWdpbi5tIGluIFNvdXJjZXMgKi8sCisJCQkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjgwMEM5QjA4RjEwMDEx
NDM2OSAvKiBPYmpDUGx1Z2luRnVuY3Rpb24ubSBpbiBTb3VyY2VzICovLAogCQkJCTg0NjVFMkM3
MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQjI4NENEMENGQTgzQzgwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAj
aW1wb3J0ICJEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVt
cFJlbmRlclRyZWVQYXN0ZWJvYXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKICNpbXBv
cnQgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgpAQCAtODEsMTMgKzgyLDYgQEAgZW51
bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5
TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5
Q29kZTsKLSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFt
ZTsKLX07Ci0KIE5TUG9pbnQgbGFzdE1vdXNlUG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bv
c2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRvbiA9IE5vTW91c2VCdXR0b247CkBAIC05NzIsMjA0
ICs5NjYsMjMgQEAgKyAodm9pZCljbGVhclNhdmVkRXZlbnRzCiAKIC0gKHZvaWQpa2V5RG93bjoo
TlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9k
aWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewotICAgIE5TU3Ry
aW5nICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ci
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBB
cnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VEb3duIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5j
dGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJlbmQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRl
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4MzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InByaW50U2NyZWVuIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3Jl
ZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8g
VGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0
ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNz
aWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
bGVmdENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU3OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
cmlnaHRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRDsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJl
IHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkg
dGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkg
ewotICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0g
MSk7Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBr
ZXlDb2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0g
MHg3NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5
OiBrZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29k
ZSA9IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAx
Njoga2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNv
ZGUgPSAweDQwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0
RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlz
IHNldCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx0Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUg
PSAweDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAw
OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlD
b2RlID0gMHgxQjsKLQotICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7
MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAot
ICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlND
bGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8n
LCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4
MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAg
ICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywg
bmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4
NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAg
ezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwK
LSAgICAgICAgezB4MUEsIDB4NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4
JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0g
ICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwg
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAg
ICAgICAgICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAg
ICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsK
LSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlm
aWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIDw9ICdaJykgewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBt
b2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSNlbHNlCi0gICAgICAg
IG1vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKLSNlbmRpZgot
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2Fz
ZVN0cmluZ107Ci0gICAgfQotCi0gICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxh
Z3MobW9kaWZpZXJzKTsKLQotICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05V
TVBBRCkKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZDsKKyAgICBhdXRvIG1vZGlmaWVyS2V5cyA9IGFkb3B0TlMoW1tNb2RpZmllcktleXMgYWxs
b2NdIG1vZGlmaWVyS2V5c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVy
RmxhZ3MobW9kaWZpZXJzKSBrZXlMb2NhdGlvbjpsb2NhdGlvbl0pOwogCiAgICAgW1tbbWFpbkZy
YW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYXV0byBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdp
dGhUeXBlOk5TRXZlbnRUeXBlS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpt
b2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
cgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJl
cGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV0pOwogI2Vs
c2UKLSAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtl
eUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRp
bWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGlu
dDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGF1dG8gZXZlbnQg
PSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczptb2Rp
ZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKSBtb2RpZmll
cnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzIGlzUmVwZWF0aW5n
Ok5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0
ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdID09ICdcdCcpXSk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpA
QCAtMTE4MywxNiArOTk2LDE2IEBAIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0
ZXIgd2kKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBldmVudCA9IHJldGFpblB0cihb
TlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3
aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNz
Q29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rl
cnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlm
aWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6
a2V5Q29kZV0pOworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMt
PmtleUNvZGVdKTsKICNlbHNlCi0gICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2Nd
IGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJl
bnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50
RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRN
YW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNU
YWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2
ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJF
dmVudEtleVVwIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1v
ZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpIG1vZGlm
aWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRp
bmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJh
Y3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0
SW5kZXg6MF0gPT0gJ1x0JyldKTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmgJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBNb2RpZmllcktl
eXMgOiBOU09iamVjdCB7CitAcHVibGljCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBldmVudENo
YXJhY3RlcjsKKyAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlOworICAgIFJldGFpblB0cjxOU1N0
cmluZz4gY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOworICAgIGludCBtb2RpZmllckZsYWdz
OworfQorCistIChNb2RpZmllcktleXMqKW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5TU3RyaW5nICop
a2V5IG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9j
YXRpb247CisKK0BlbmQKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZp
ZXJLZXlzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9k
aWZpZXJLZXlzLm1tCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29j
b2EvTW9kaWZpZXJLZXlzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0IDxXZWJLaXQvS2V5RXZlbnRDb2Rlc0lP
Uy5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkV2ZW50Lmg+CisjZW5kaWYKKyNpbXBvcnQgPFdlYktp
dC9XZWJLaXRMZWdhY3kuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3N0cnVjdCBLZXlN
YXBwaW5nRW50cnkgeworICAgIGludCBtYWNLZXlDb2RlOworICAgIGludCBtYWNOdW1wYWRLZXlD
b2RlOworICAgIHVuaWNoYXIgY2hhcmFjdGVyOworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1l
OworfTsKKworQGltcGxlbWVudGF0aW9uIE1vZGlmaWVyS2V5cworCistIChNb2RpZmllcktleXMq
KW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5TU3RyaW5nICopY2hhcmFjdGVyIG1vZGlmaWVyczooaW50
KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb24KK3sKKyAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIGV2ZW50Q2hhcmFjdGVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0
cmluZzpjaGFyYWN0ZXJdKTsKKyAgICBrZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29k
ZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJp
Z2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVu
Y3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDdDOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBrZXlDb2RlID0gMHg3RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDdEOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdl
VXAiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsK
KyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4NzQ7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKKyAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAg
ICAga2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rp
b25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDczOworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAg
a2V5Q29kZSA9IDB4Nzc7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImluc2VydCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0
aW9uS2V5OworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hh
cmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHg3MjsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIGtleUNvZGUgPSAweDc1OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUg
PSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2Ny
ZWVuLgorICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxp
Y1NtYWxsTGV0dGVyQSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7Cisg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAi
RiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4
RkZFMzsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNv
ZGUgPSAweDM4OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJs
ZWZ0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsKKyAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTQ7CisgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIGtleUNvZGUgPSAweDNFOwor
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAga2V5Q29kZSA9IDB4M0M7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZF
ODsKKyAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAga2V5Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBrZXlDb2RlID0gMHgz
NTsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVu
Y3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJG
MjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUs
IHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsr
KSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgeworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7CisgICAgICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUgPSAweDdBOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoga2V5Q29kZSA9IDB4Nzg7IGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6
IGtleUNvZGUgPSAweDc2OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNToga2V5Q29kZSA9IDB4
NjA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgODoga2V5Q29kZSA9IDB4NjQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2Rl
ID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDExOiBrZXlDb2RlID0gMHg2NzsgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEz
OiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE0OiBrZXlDb2RlID0g
MHg2QjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDE3OiBrZXlDb2RlID0gMHg0MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBr
ZXlDb2RlID0gMHg0RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1
MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDIwOiBrZXlDb2RlID0gMHg1QTsgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogTm8ga2V5Q29k
ZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4KKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJcdCJdKQorICAgICAgICBrZXlDb2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAIiAiXSkKKyAgICAgICAga2V5Q29kZSA9IDB4MzE7CisgICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcciJdKQorICAgICAgICBrZXlD
b2RlID0gMHgyNDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxu
Il0pCisgICAgICAgIGtleUNvZGUgPSAweDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiXHg4Il0pCisgICAgICAgIGtleUNvZGUgPSAweDMzOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYSJdKQorICAgICAgICBrZXlDb2RlID0g
MHgwMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAg
ICAgICAga2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJkIl0pCisgICAgICAgIGtleUNvZGUgPSAweDAyOworICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZSJdKQorICAgICAgICBrZXlDb2RlID0gMHgwRTsKKyAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4MWIiXSkKKyAgICAgICAg
a2V5Q29kZSA9IDB4MUI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCI6Il0pCisgICAgICAgIGtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiOyJdKQorICAgICAgICBrZXlDb2RlID0gMHgyOTsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiwiXSkKKyAgICAgICAga2V5Q29kZSA9
IDB4MkI7CisKKyAgICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgeyAweDJG
LCAweDQxLCAnLicsIG5pbCB9LAorICAgICAgICB7IDAsICAgIDB4NDMsICcqJywgbmlsIH0sCisg
ICAgICAgIHsgMCwgICAgMHg0NSwgJysnLCBuaWwgfSwKKyAgICAgICAgeyAwLCAgICAweDQ3LCBO
U0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIiB9LAorICAgICAgICB7IDB4MkMsIDB4NEIs
ICcvJywgbmlsIH0sCisgICAgICAgIHsgMCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAg
ICAgeyAweDFCLCAweDRFLCAnLScsIG5pbCB9LAorICAgICAgICB7IDB4MTgsIDB4NTEsICc9Jywg
bmlsIH0sCisgICAgICAgIHsgMHgxRCwgMHg1MiwgJzAnLCBuaWwgfSwKKyAgICAgICAgeyAweDEy
LCAweDUzLCAnMScsIG5pbCB9LAorICAgICAgICB7IDB4MTMsIDB4NTQsICcyJywgbmlsIH0sCisg
ICAgICAgIHsgMHgxNCwgMHg1NSwgJzMnLCBuaWwgfSwKKyAgICAgICAgeyAweDE1LCAweDU2LCAn
NCcsIG5pbCB9LAorICAgICAgICB7IDB4MTcsIDB4NTcsICc1JywgbmlsIH0sCisgICAgICAgIHsg
MHgxNiwgMHg1OCwgJzYnLCBuaWwgfSwKKyAgICAgICAgeyAweDFBLCAweDU5LCAnNycsIG5pbCB9
LAorICAgICAgICB7IDB4MUMsIDB4NUIsICc4JywgbmlsIH0sCisgICAgICAgIHsgMHgxOSwgMHg1
QywgJzknLCBuaWwgfSwKKyAgICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hh
cmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5j
aGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9
PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgICAgICAgICBrZXlD
b2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpldmVudENoYXJhY3Rlci5n
ZXQoKV0pOworCisgICAgbW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBs
ZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBb
Y2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxhZ1No
aWZ0OworI2Vsc2UKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdNYXNrTGVm
dFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9
IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmllckZsYWdz
IHw9IG1vZGlmaWVyczsKKworICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9M
T0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZp
ZXJGbGFnTnVtZXJpY1BhZDsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZApJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4MzU4MikKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAKIAkJN0NGRjlCQ0Iy
NTM0QUYxRDAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkM3MjUzNEFGMUQwMDA4MDA5RiAvKiBUZXN0
Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMzRDNjYyMTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgwMzRDNjYxMTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJODA5NzMzOEExNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODA5NzMzODkxNDg3NEE1QTAwODE1NkQ5IC8qIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovOyB9OworCQk5MzJCQjlDMDI3MEUyNzAwMDA5
NENDMzMgLyogTW9kaWZpZXJLZXlzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMyQkI5QkUyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5t
bSAqLzsgfTsKIAkJOTM3NjQxN0EyMTBENzM3MjAwQTNEQUFFIC8qIFdlYktpdFRlc3RSdW5uZXJX
aW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSAqLzsg
fTsKIAkJOTNDNzg4MjMyNTBDNkMyRTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MUYyNTBD
NjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgzMTI1
MEM3MTlGMDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MzAyNTBDNzE5OTAwQzBBQTI0IC8qIEpTQmFzaWNz
LmNwcCAqLzsgfTsKQEAgLTM2Nyw2ICszNjgsOCBAQAogCQk4NDFDQzAwRDE4MTE4NUJGMDA0MkU5
QjYgLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBP
cHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQxQ0MwMEUxODExODVC
RjAwNDJFOUI2IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4REQ3NkZBMTA0ODZBQTc2
MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJOTMyQkI5QkQyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVy
S2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2RpZmllcktleXMuaDsg
cGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMkJCOUJFMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmll
cktleXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNb2RpZmll
cktleXMubW07IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzOEQxQkUyNTBCRDlERDAwRTgyN0Y2
IC8qIERpY3Rpb25hcnlGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFyeUZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzc2NDE3NjIxMEQ3MzYwMDBB
M0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0MTc3MjEwRDczNjEwMEEzREFBRSAvKiBXZWJLaXRUZXN0
UnVubmVyV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFRl
c3RSdW5uZXJXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1NSw2ICs5
NTgsOCBAQAogCQkJCUY0NEE1MzE2MjFCODk5REEwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyLm1tICovLAogCQkJCUY0QzM1NzhCMjBFODQ0NDAwMEZBMDc0OCAvKiBMYXlvdXRUZXN0
U3BlbGxDaGVja2VyLmggKi8sCiAJCQkJRjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4IC8qIExheW91
dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkJOTMyQkI5QkQyNzBFMjcwMDAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5oICovLAorCQkJCTkzMkJCOUJFMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2Rp
ZmllcktleXMubW0gKi8sCiAJCQkJMkUyQTc2NUIyMzcwQzhBMDAwOEY5RkZFIC8qIFBsYXRmb3Jt
Vmlld0hlbHBlcnMuaCAqLywKIAkJCQkyRTJBNzY1QzIzNzBDOEEwMDA4RjlGRkUgLyogUGxhdGZv
cm1WaWV3SGVscGVycy5tbSAqLywKIAkJCQlGNDAxMEI3RDI0REEyMDQ4MDBBODc2RTIgLyogUG9z
ZUFzQ2xhc3MuaCAqLywKQEAgLTEyNDYsNiArMTI1MSw3IEBACiAJCQkJQTE4NTEwM0YxQjlBRTEy
OTAwNzQ0QUVCIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY0NEE1MzE4MjFCODk5RTUwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzFEQThBM0QxRTcyMDVDQzAwRTFERjJGIC8qIElPU0xheW91
dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzMkJCOUMwMjcwRTI3
MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0M3ODgz
MjI1MEM3MUI3MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3
M0I1NTExQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMThFNzE4MUQ2QkM0NTYwMDI3RTU0NyAvKiBKU1dyYXBwZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRl
clByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50
U2VuZGVyUHJveHkubW0JKHJldmlzaW9uIDI4MzU4MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbXBvcnQgIkV2ZW50U2VuZGVyUHJveHkuaCIKIAogI2ltcG9ydCAiQ29yZUdyYXBoaWNz
VGVzdFNQSS5oIgorI2ltcG9ydCAiTW9kaWZpZXJLZXlzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdl
YlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiVGVzdENvbnRy
b2xsZXIuaCIKQEAgLTIzOCwxMyArMjM5LDYgQEAgZW51bSBNb3VzZUJ1dHRvbiB7CiAgICAgTm9N
b3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKLSAgICBpbnQg
bWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKLSAgICB1bmljaGFyIGNoYXJh
Y3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKLX07Ci0KIHN0YXRpYyBOU0V2ZW50
VHlwZSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9uLCBNb3VzZUFj
dGlvbiBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKQEAgLTYzMiwyMDMgKzYyNiwx
OCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtCiAKIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMg
bW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAgICBOU1N0cmluZyogY2hhcmFj
dGVyID0gdG9XVEZTdHJpbmcoa2V5KTsKLQotICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9
IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAgICBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAg
ICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNSaWdo
dEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdD
OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93Il0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5j
dGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzQ7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNI
b21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDczOwot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
LSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0lu
c2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3MjsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsK
LSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7Ci0gICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5IGNvZGUgZm9y
IFByaW50U2NyZWVuLgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eDA0MzA7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBr
ZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCi0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IDB4RkZFMzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0I7Ci0g
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7
Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDM4OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJsZWZ0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNzsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0E7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDNFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdo
dFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKLSAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0M7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IDB4RkZFODsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0Q7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlD
b2RlID0gMHgzNTsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcgd2l0
aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUuICJG
MSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rpb24t
a2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewotICAgICAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7Ci0gICAgICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiBrZXlD
b2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0gMHg3
ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA3OiBr
ZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2RlID0g
MHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTQ6IGtl
eUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2RlID0g
MHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgot
ICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCi0gICAgICAgIGtleUNv
ZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiICJd
KQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDI0OwotICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKLSAgICAgICAga2V5Q29kZSA9IDB4
NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkKLSAg
ICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAwOwotICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgwQjsKLSAg
ICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKLSAgICAgICAga2V5
Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJl
Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgxQjsKLSAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKLSAgICAgICAga2V5Q29kZSA9
IDB4Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI7Il0pCi0g
ICAgICAgIGtleUNvZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiLCJdKQotICAgICAgICBrZXlDb2RlID0gMHgyQjsKLQotICAgIEtleU1hcHBpbmdF
bnRyeSB0YWJsZVtdID0gewotICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9LAotICAgICAg
ICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NSwgJysnLCBuaWx9
LAotICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciJ9
LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0Qywg
MywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwKLSAgICAgICAg
ezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAgICAgICAgezB4MUQsIDB4NTIsICcwJywgbmlsfSwK
LSAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKLSAgICAgICAgezB4MTMsIDB4NTQsICcy
JywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKLSAgICAgICAgezB4MTUs
IDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAgezB4MTcsIDB4NTcsICc1JywgbmlsfSwKLSAgICAg
ICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKLSAgICAgICAgezB4MUEsIDB4NTksICc3Jywgbmls
fSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKLSAgICAgICAgezB4MTksIDB4NUMs
ICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJS
QVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFj
dGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFy
YWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFi
bGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAw
eDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKLSAgICAgICAgICAgICAgICBrZXlDb2Rl
ID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKLSAgICAgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOwotCi0g
ICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykg
ewotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSAg
ICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBsb3dlcmNhc2VT
dHJpbmddOwotICAgIH0KLQotICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2RpZmllckZsYWdz
KG1vZGlmaWVycyk7Ci0KLSAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9D
QVRJT05fTlVNUEFEKi8pCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVy
RmxhZ051bWVyaWNQYWQ7CisgICAgYXV0byBtb2RpZmllcktleXMgPSBhZG9wdE5TKFtbTW9kaWZp
ZXJLZXlzIGFsbG9jXSBtb2RpZmllcktleXNXaXRoS2V5OnRvV1RGU3RyaW5nKGtleSkgbW9kaWZp
ZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmtleUxvY2F0aW9u
XSk7CiAKICAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNF
dmVudFR5cGVLZXlEb3duCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQ
b2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmll
ckZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9y
RXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHdp
bmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5k
b3coKSB3aW5kb3dOdW1iZXJdCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5
Q29kZTprZXlDb2RlXTsKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAg
ICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgdGlt
ZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisgICAg
ICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250
ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZl
bnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1v
ZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCisgICAgICAgIGlz
QVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV07CiAKICAg
ICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9sbGVy
LT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlEb3du
OmV2ZW50XTsKQEAgLTgzNiwxNCArNjQ1LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5
RG93bihXS1N0cmluZ1IKIAogICAgIGV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpO
U0V2ZW50VHlwZUtleVVwCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQ
b2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmll
ckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5
cy0+bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFic29s
dXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBs
YXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRD
aGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQo
KQogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAg
ICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29k
ZTptb2RpZmllcktleXMtPmtleUNvZGVdOwogCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1X
aW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwo=
</data>
<flag name="review"
          id="464332"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440454</attachid>
            <date>2021-10-06 16:31:47 -0700</date>
            <delta_ts>2021-10-07 16:44:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code7.txt</filename>
            <type>text/plain</type>
            <size>48092</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzY3OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDIxLTEwLTA2ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
cyBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVuIERS
VCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgb2Yg
a2V5RG93bi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIg
a2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5tbTogQWRkZWQuCisgICAgICAgICgtW01vZGlm
aWVyS2V5cyBpbml0XSk6CisgICAgICAgICgtW01vZGlmaWVyS2V5cyBkZWFsbG9jXSk6CisgICAg
ICAgICgrW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5Om1vZGlmaWVyczprZXlMb2Nh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjprZXlE
b3duKToKKwogMjAyMS0xMC0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb3ZlIEZsdXNoSWRlbnRpZmllciBvdXQgb2YgdGhlIERpc3BsYXlMaXN0
IG5hbWVzcGFjZQpAQCAtMTgwODgsNCArMTgxMTEsNCBAQAogICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlQXVkaW9UcmFuc2Zvcm1lcik6CiAgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKIAotPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMjEtMDMtMTggPT0KKz09IFJvbGxl
ZCBvdmVyIHRvIENoYW5nZUxvZy0yMDIxLTAzLTE4ID09ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODM1ODIpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKIAkJN0NGRjlCQzIyNTMz
QkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29t
bWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKIAkJODQ2NUUyQzcwRkZBOERGMjAwM0I4MzQy
IC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQ2NUUyQzYwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBv
cnQuY3BwICovOyB9OworCQk5MzJCQjlDMzI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyQkI5
QzIyNzBFMjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLzsgfTsKIAkJOTNDNzg4MjYy
NTBDNkQzQTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MjQyNTBDNkQzOTAwQzBBQTI0IC8q
IFJlZnRlc3RGdW5jdGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgyRTI1MEM3MTcyMDBDMEFBMjQg
LyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNDNzg4MjkyNTBDNzEzNDAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsgfTsKIAkJ
QTExNThENTgxODkyNzQwQzAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1OEQ1NjE4
OTI3M0VCMDA4OEMxN0IgLyogRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbSAqLzsgfTsKQEAg
LTM0NSw2ICszNDYsOCBAQAogCQk4MDA0NUFFQjE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgcGF0aCA9IG1hYy9BY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ2NUUy
QzYwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5MzJCQjlDMTI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJL
ZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmaWVyS2V5cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzJCQjlDMjI3MEUyNzNDMDA5NENDMzMgLyog
TW9kaWZpZXJLZXlzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TW9kaWZpZXJLZXlzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzM1NDM1RjAz
RDc1NTAyMDA4NjM1Q0UgLyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2Vi
S2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTM0
MDk5NTQwODU0MENBRjAwN0YzQkM4IC8qIER1bXBSZW5kZXJUcmVlICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBEdW1wUmVuZGVyVHJlZTsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTNDNzg4MjQyNTBDNkQzOTAwQzBBQTI0IC8q
IFJlZnRlc3RGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVmdGVzdEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NDAsNiArOTQzLDggQEAKIAkJCQlGNDRBNTMxQzIxQjg5QTQ1MDBEQkI5OUMgLyogSW5zdGFuY2VN
ZXRob2RTd2l6emxlci5tbSAqLywKIAkJCQlGNEMzNTc4OTIwRTg0NDI3MDBGQTA3NDggLyogTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5oICovLAogCQkJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0OCAv
KiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tICovLAorCQkJCTkzMkJCOUMxMjcwRTI3M0MwMDk0
Q0MzMyAvKiBNb2RpZmllcktleXMuaCAqLywKKwkJCQk5MzJCQjlDMjI3MEUyNzNDMDA5NENDMzMg
LyogTW9kaWZpZXJLZXlzLm1tICovLAogCQkJCUY0MDEwQjdBMjREQTIwMEUwMEE4NzZFMiAvKiBQ
b3NlQXNDbGFzcy5oICovLAogCQkJCUY0MDEwQjc5MjREQTIwMEUwMEE4NzZFMiAvKiBQb3NlQXND
bGFzcy5tbSAqLywKIAkJCSk7CkBAIC0xMjg0LDYgKzEyODksNyBAQAogCQkJCUY0RkVEMzIwMjM1
ODIxNTgwMDNDMTM5QyAvKiBOU1Bhc3RlYm9hcmRBZGRpdGlvbnMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0ExOEIzMjBDOUIwMUI0MDAxMTQzNjkgLyogT2JqQ0NvbnRyb2xsZXIubSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjdFMEM5QjA4RjEwMDExNDM2OSAvKiBPYmpDUGx1Z2luLm0gaW4g
U291cmNlcyAqLywKKwkJCQk5MzJCQjlDMzI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCODAwQzlCMDhGMTAwMTE0MzY5IC8qIE9iakNQ
bHVnaW5GdW5jdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ2NUUyQzcwRkZBOERGMjAwM0I4
MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMjg0Q0Qw
Q0ZBODNDODAwN0U1MzNFIC8qIFBpeGVsRHVtcFN1cHBvcnRDRy5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tCShyZXZpc2lvbiAyODM1ODIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCIKICNpbXBvcnQgIkR1bXBS
ZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBh
c3RlYm9hcmQuaCIKKyNpbXBvcnQgIk1vZGlmaWVyS2V5cy5oIgogI2ltcG9ydCAiV2ViQ29yZVRl
c3RTdXBwb3J0LmgiCiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYlZpZXdQcml2YXRlLmg+CkBAIC04MSwxMyArODIsNiBAQCBlbnVtIE1vdXNlQnV0dG9u
IHsKICAgICBOb01vdXNlQnV0dG9uID0gLTIKIH07CiAKLXN0cnVjdCBLZXlNYXBwaW5nRW50cnkg
ewotICAgIGludCBtYWNLZXlDb2RlOwotICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOwotICAgIHVu
aWNoYXIgY2hhcmFjdGVyOwotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOwotfTsKLQogTlNQ
b2ludCBsYXN0TW91c2VQb3NpdGlvbjsKIE5TUG9pbnQgbGFzdENsaWNrUG9zaXRpb247CiBpbnQg
bGFzdENsaWNrQnV0dG9uID0gTm9Nb3VzZUJ1dHRvbjsKQEAgLTk3MiwyMDQgKzk2NiwyMyBAQCAr
ICh2b2lkKWNsZWFyU2F2ZWRFdmVudHMKIAogLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNo
YXJhY3RlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExv
Y2F0aW9uOih1bnNpZ25lZCBsb25nKWxvY2F0aW9uCiB7Ci0gICAgTlNTdHJpbmcgKmV2ZW50Q2hh
cmFjdGVyID0gY2hhcmFjdGVyOwotICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwotICAg
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OwotICAgICAgICBrZXlDb2RlID0gMHg3QjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2gg
PSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4N0M7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVw
QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25L
ZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRD
aGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsK
LSAgICAgICAga2V5Q29kZSA9IDB4N0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1Bh
Z2VVcEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NDsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU0hvbWVGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9
IDB4NzM7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBj
aCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDcyOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxl
dGUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSAweDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsK
LSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4i
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5
OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBr
bm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBr
ZXlDb2RlID0gMHgzOyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0Lgot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDNCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJsZWZ0U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhG
RkUxOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDNBOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdo
dENvbnRyb2wiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwot
ICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7
Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDNEOwotICAgIH0KLQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0
cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMg
KGkuZS4gIkYxIiwuLi4sIkYyNCIpLgotICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBm
dW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDw9IDI0OyBpKyspIHsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNv
ZGUgPSAweDc4OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYz
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6IGtl
eUNvZGUgPSAweDY0OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAw
eDY1OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtl
eUNvZGUgPSAweDcxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0g
MHg2QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0
IGtleXMuCi0gICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAgICAg
ICAga2V5Q29kZSA9IDB4MzA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCIgIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0gICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBrZXlD
b2RlID0gMHg0QzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4
OCJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImEiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUgPSAw
eDBCOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQotICAg
ICAgICBrZXlDb2RlID0gMHgwMjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImUiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDFCOwot
Ci0gICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7Ci0gICAgICAgIHsweDJGLCAweDQxLCAn
LicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCi0gICAgICAgIHswLCAg
ICAweDQ1LCAnKycsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0
aW9uS2V5LCBAImNsZWFyIn0sCi0gICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCi0gICAg
ICAgIHswLCAgICAweDRDLCAzLCBAImVudGVyIiB9LAotICAgICAgICB7MHgxQiwgMHg0RSwgJy0n
LCBuaWx9LAotICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAotICAgICAgICB7MHgxRCwg
MHg1MiwgJzAnLCBuaWx9LAotICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAotICAgICAg
ICB7MHgxMywgMHg1NCwgJzInLCBuaWx9LAotICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9
LAotICAgICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAotICAgICAgICB7MHgxNywgMHg1Nywg
JzUnLCBuaWx9LAotICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAotICAgICAgICB7MHgx
QSwgMHg1OSwgJzcnLCBuaWx9LAotICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAotICAg
ICAgICB7MHgxOSwgMHg1QywgJzknLCBuaWx9LAotICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKLSAgICAgICAgTlNTdHJp
bmcqIGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JnRhYmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07Ci0gICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewotICAgICAgICAgICAgaWYg
KGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICAgICAgICAgIGtl
eUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7
Ci0KLSAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0
ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0g
J1onKSB7Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIG1vZGlmaWVyRmxhZ3Mg
fD0gTlNFdmVudE1vZGlmaWVyRmxhZ1NoaWZ0OwotI2Vsc2UKLSAgICAgICAgbW9kaWZpZXJGbGFn
cyB8PSBXZWJFdmVudEZsYWdNYXNrTGVmdFNoaWZ0S2V5OwotI2VuZGlmCi0gICAgICAgIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKLSAg
ICB9Ci0KLSAgICBtb2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMp
OwotCi0gICAgaWYgKGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAg
ICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIGF1
dG8gbW9kaWZpZXJLZXlzID0gYWRvcHROUyhbTW9kaWZpZXJLZXlzIG1vZGlmaWVyS2V5c1dpdGhL
ZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKSBrZXlM
b2NhdGlvbjpsb2NhdGlvbl0pOwogCiAgICAgW1tbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1l
bnRWaWV3XSBsYXlvdXRdOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBl
dmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5
RG93bgogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVy
RmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpbc2VsZiBjdXJyZW50RXZl
bnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOltbW21haW5GcmFt
ZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczptb2RpZmllcktleXMtPmV2
ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMu
Z2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAg
ICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBr
ZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV0pOwogI2Vsc2UKLSAgICBhdXRvIGV2ZW50ID0g
YWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtl
eURvd24gdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6ZXZlbnRD
aGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBpc1JlcGVhdGlu
ZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFj
dGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSAnXHQnKV0pOworICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQg
YWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6W3Nl
bGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFj
dGVyLmdldCgpIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKSBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJLZXlzLT5tb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJ
bnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDow
XSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CiAj
ZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE4MywxNiArOTk2LDE2IEBA
IC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2kKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBldmVudCA9IHJldGFpblB0cihbTlNFdmVudCBrZXlFdmVudFdpdGhU
eXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5T
TWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1v
ZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZp
ZXJLZXlzLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6
W3NlbGYgY3VycmVudEV2ZW50VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051
bWJlcjpbW1ttYWluRnJhbWUgd2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6
Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOworICAgICAgICAg
ICAgICAgICAgICAgICAga2V5Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVdKTsKICNlbHNlCi0g
ICAgZXZlbnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBl
OldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3Rl
cnM6ZXZlbnRDaGFyYWN0ZXIgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycyBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncyBp
c1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29k
ZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hh
cmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOworICAgIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2
ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpb
c2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRDaGFy
YWN0ZXIuZ2V0KCkgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncylt
b2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0
aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4
OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsK
ICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBUb29scy9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmgJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBNb2RpZmllcktleXMgOiBOU09iamVjdCB7CitAcHVi
bGljCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBldmVudENoYXJhY3RlcjsKKyAgICB1bnNpZ25l
ZCBzaG9ydCBrZXlDb2RlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOworICAgIGludCBtb2RpZmllckZsYWdzOworfQorCisrIChNb2RpZmllcktl
eXMqKW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5TU3RyaW5nICopa2V5IG1vZGlmaWVyczooaW50KW1v
ZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb247CisKK0BlbmQKSW5kZXg6
IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCShub25leGlz
dGVudCkKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaW1wb3J0IDxXZWJLaXQvS2V5RXZlbnRDb2Rlc0lPUy5oPgorI2ltcG9ydCA8V2ViS2l0
L1dlYkV2ZW50Lmg+CisjZW5kaWYKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXRMZWdhY3kuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3N0cnVjdCBLZXlNYXBwaW5nRW50cnkgeworICAgIGlu
dCBtYWNLZXlDb2RlOworICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOworICAgIHVuaWNoYXIgY2hh
cmFjdGVyOworICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOworfTsKKworQGltcGxlbWVudGF0
aW9uIE1vZGlmaWVyS2V5cworCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzdXBlciBkZWFsbG9j
XTsKK30KKworKyAoTW9kaWZpZXJLZXlzICopbW9kaWZpZXJLZXlzV2l0aEtleTooTlNTdHJpbmcg
KiljaGFyYWN0ZXIgbW9kaWZpZXJzOihpbnQpbW9kaWZpZXJzIGtleUxvY2F0aW9uOih1bnNpZ25l
ZClrZXlMb2NhdGlvbgoreworICAgIE1vZGlmaWVyS2V5cyAqbW9kaWZlcktleXMgPSBbW01vZGlm
aWVyS2V5cyBhbGxvY10gaW5pdF07CisKKyAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmNoYXJhY3Rlcl0pOwor
ICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMDsKKyAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNM
ZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAg
IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3QjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3QzsKKyAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJdKSB7CisgICAgICAgIGNvbnN0IHVu
aWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3RTsKKyAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIG1vZGlmZXJL
ZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4N0Q7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OworICAgICAgICBtb2RpZmVy
S2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDc0OworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlRG93biJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIG1v
ZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4Nzk7Cisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgeworICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7CisgICAgICAgIG1vZGlm
ZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NzM7CisgICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OworICAgICAgICBtb2RpZmVyS2V5
cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDc3OworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJpbnNlcnQiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZlcktl
eXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3MjsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7CisgICAgICAgIG1vZGlmZXJL
ZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NzU7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKKyAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKKyAgICAg
ICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgw
OyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4K
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFs
bExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHgwNDMwOworICAgICAg
ICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDM7
IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCisgICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKKyAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Cisg
ICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzQjsKKyAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1v
ZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzODsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eEZGRTc7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+
a2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7
CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29k
ZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJp
Z2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUyOworICAgICAg
ICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDND
OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7CisgICAgICAgIG1vZGlmZXJL
ZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4M0Q7CisgICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAg
ICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDM1OworICAgIH0KKworICAgIC8vIENvbXBh
cmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBi
eSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgorICAgIC8vIElmIHRoZSBpbnB1
dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKKyAgICAgICAgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1d
KSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkg
LSAxKTsKKyAgICAgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICAgICAgc3dpdGNo
IChpKSB7CisgICAgICAgICAgICBjYXNlIDE6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3QTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3ODsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2Mzsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3Njsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2MDsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2MTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2Mjsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2NDsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2NTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDEwOiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NkQ7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMTogbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDY3
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2
RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4
Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDogbW9kaWZlcktleXMtPmtleUNvZGUgPSAw
eDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0g
MHg3MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9
IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzogbW9kaWZlcktleXMtPmtleUNvZGUg
PSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6IG1vZGlmZXJLZXlzLT5rZXlDb2Rl
ID0gMHg0RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5OiBtb2RpZmVyS2V5cy0+a2V5Q29k
ZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAyMDogbW9kaWZlcktleXMtPmtleUNv
ZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlzLgorICAgIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlD
b2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiAi
XSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDMxOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtl
eUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
XG4iXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDRDOworICAgIGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0pCisgICAgICAgIG1vZGlmZXJLZXlz
LT5rZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImEiXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDAwOworICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQorICAgICAgICBtb2RpZmVyS2V5
cy0+a2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJkIl0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgwMjsKKyAgICBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkKKyAgICAgICAgbW9kaWZlcktl
eXMtPmtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiXHgxYiJdKQorICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4MUI7CisgICAg
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCI6Il0pCisgICAgICAgIG1vZGlm
ZXJLZXlzLT5rZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAIjsiXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDI5OworICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQorICAgICAgICBtb2Rp
ZmVyS2V5cy0+a2V5Q29kZSA9IDB4MkI7CisKKyAgICBLZXlNYXBwaW5nRW50cnkgdGFibGVbXSA9
IHsKKyAgICAgICAgeyAweDJGLCAweDQxLCAnLicsIG5pbCB9LAorICAgICAgICB7IDAsICAgIDB4
NDMsICcqJywgbmlsIH0sCisgICAgICAgIHsgMCwgICAgMHg0NSwgJysnLCBuaWwgfSwKKyAgICAg
ICAgeyAwLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNsZWFyIiB9LAorICAg
ICAgICB7IDB4MkMsIDB4NEIsICcvJywgbmlsIH0sCisgICAgICAgIHsgMCwgICAgMHg0QywgMywg
QCJlbnRlciIgfSwKKyAgICAgICAgeyAweDFCLCAweDRFLCAnLScsIG5pbCB9LAorICAgICAgICB7
IDB4MTgsIDB4NTEsICc9JywgbmlsIH0sCisgICAgICAgIHsgMHgxRCwgMHg1MiwgJzAnLCBuaWwg
fSwKKyAgICAgICAgeyAweDEyLCAweDUzLCAnMScsIG5pbCB9LAorICAgICAgICB7IDB4MTMsIDB4
NTQsICcyJywgbmlsIH0sCisgICAgICAgIHsgMHgxNCwgMHg1NSwgJzMnLCBuaWwgfSwKKyAgICAg
ICAgeyAweDE1LCAweDU2LCAnNCcsIG5pbCB9LAorICAgICAgICB7IDB4MTcsIDB4NTcsICc1Jywg
bmlsIH0sCisgICAgICAgIHsgMHgxNiwgMHg1OCwgJzYnLCBuaWwgfSwKKyAgICAgICAgeyAweDFB
LCAweDU5LCAnNycsIG5pbCB9LAorICAgICAgICB7IDB4MUMsIDB4NUIsICc4JywgbmlsIH0sCisg
ICAgICAgIHsgMHgxOSwgMHg1QywgJzknLCBuaWwgfSwKKyAgICB9OworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7CisgICAgICAgIE5T
U3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgICAgICBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKKyAgICAgICAgICAg
IGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKKyAg
ICAgICAgICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IHRhYmxlW2ldLm1hY051bXBhZEtl
eUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbW9kaWZlcktleXMtPmtl
eUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAgICAgICAgbW9kaWZlcktleXMtPmV2
ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgbW9kaWZlcktleXMtPmNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6bW9k
aWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpXSk7CisKKyAgICBtb2RpZmVyS2V5cy0+bW9k
aWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2No
YXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3Rl
ckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAg
IG1vZGlmZXJLZXlzLT5tb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdTaGlmdDsK
KyNlbHNlCisgICAgICAgIG1vZGlmZXJLZXlzLT5tb2RpZmllckZsYWdzIHw9IFdlYkV2ZW50Rmxh
Z01hc2tMZWZ0U2hpZnRLZXk7CisjZW5kaWYKKyAgICAgICAgbW9kaWZlcktleXMtPmNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICB9
CisKKyAgICBtb2RpZmVyS2V5cy0+bW9kaWZpZXJGbGFncyB8PSBtb2RpZmllcnM7CisKKyAgICBp
ZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAg
ICAgIG1vZGlmZXJLZXlzLT5tb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1l
cmljUGFkOworICAgIAorICAgIHJldHVybiBbbW9kaWZlcktleXMgYXV0b3JlbGVhc2VdOworfQor
CitAZW5kCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjgzNTgyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQAog
CQk3Q0ZGOUJDQjI1MzRBRjFEMDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQzcyNTM0QUYxRDAwMDgw
MDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsKIAkJODAzNEM2NjIxNDg3NjM2NDAwQUMzMkU5
IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAzNEM2NjExNDg3NjM2NDAwQUMzMkU5IC8qIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQk4MDk3MzM4QTE0ODc0QTVBMDA4MTU2
RDkgLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDk3MzM4OTE0ODc0QTVBMDA4MTU2RDkg
LyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CisJCTkzMkJCOUMw
MjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJCQjlCRTI3MEUyNzAwMDA5NENDMzMgLyogTW9k
aWZpZXJLZXlzLm1tICovOyB9OwogCQk5Mzc2NDE3QTIxMEQ3MzcyMDBBM0RBQUUgLyogV2ViS2l0
VGVzdFJ1bm5lcldpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNzY0MTc2MjEwRDczNjAwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2lu
ZG93Lm1tICovOyB9OwogCQk5M0M3ODgyMzI1MEM2QzJFMDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0M3ODgxRjI1MEM2OUU0MDBDMEFBMjQgLyogUmVmdGVzdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJ
CTkzQzc4ODMxMjUwQzcxOUYwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M3ODgzMDI1MEM3MTk5MDBDMEFBMjQg
LyogSlNCYXNpY3MuY3BwICovOyB9OwpAQCAtMzY3LDYgKzM2OCw4IEBACiAJCTg0MUNDMDBEMTgx
MTg1QkYwMDQyRTlCNiAvKiBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDFD
QzAwRTE4MTE4NUJGMDA0MkU5QjYgLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThERDc2
RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBXZWJLaXRUZXN0UnVubmVyICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVyOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5MzJCQjlCRDI3MEUyNzAwMDA5NENDMzMg
LyogTW9kaWZpZXJLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vZGlm
aWVyS2V5cy5oOyBwYXRoID0gLi4vVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QkUyNzBFMjcwMDAwOTRDQzMz
IC8qIE1vZGlmaWVyS2V5cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IE1vZGlmaWVyS2V5cy5tbTsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9k
aWZpZXJLZXlzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzM4RDFCRTI1MEJE
OUREMDBFODI3RjYgLyogRGljdGlvbmFyeUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0
aW9uYXJ5RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0MTc2
MjEwRDczNjAwMEEzREFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3NjQxNzcyMTBENzM2MTAwQTNEQUFFIC8q
IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTU1LDYgKzk1OCw4IEBACiAJCQkJRjQ0QTUzMTYyMUI4OTlEQTAwREJCOTlDIC8qIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIubW0gKi8sCiAJCQkJRjRDMzU3OEIyMEU4NDQ0MDAwRkEwNzQ4IC8q
IExheW91dFRlc3RTcGVsbENoZWNrZXIuaCAqLywKIAkJCQlGNEMzNTc4QTIwRTg0NDQwMDBGQTA3
NDggLyogTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCQk5MzJCQjlCRDI3MEUyNzAw
MDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8sCisJCQkJOTMyQkI5QkUyNzBFMjcwMDAwOTRD
QzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLywKIAkJCQkyRTJBNzY1QjIzNzBDOEEwMDA4RjlGRkUg
LyogUGxhdGZvcm1WaWV3SGVscGVycy5oICovLAogCQkJCTJFMkE3NjVDMjM3MEM4QTAwMDhGOUZG
RSAvKiBQbGF0Zm9ybVZpZXdIZWxwZXJzLm1tICovLAogCQkJCUY0MDEwQjdEMjREQTIwNDgwMEE4
NzZFMiAvKiBQb3NlQXNDbGFzcy5oICovLApAQCAtMTI0Niw2ICsxMjUxLDcgQEAKIAkJCQlBMTg1
MTAzRjFCOUFFMTI5MDA3NDRBRUIgLyogR2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjQ0QTUzMTgyMUI4OTlFNTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMURBOEEzRDFFNzIwNUNDMDBFMURGMkYg
LyogSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTMy
QkI5QzAyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTkzQzc4ODMyMjUwQzcxQjcwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjczQjU1MTFCQTc4OTY4MDA0QjNFRjQgLyogSlNVSVNjcmlwdENvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MTgxRDZCQzQ1NjAwMjdFNTQ3IC8qIEpTV3Jh
cHBlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L0V2ZW50U2VuZGVyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkocmV2aXNpb24gMjgzNTgyKQorKysgVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogI2ltcG9ydCAiRXZlbnRTZW5kZXJQcm94eS5oIgogCiAjaW1wb3J0ICJD
b3JlR3JhcGhpY3NUZXN0U1BJLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKICNpbXBvcnQg
IlBsYXRmb3JtV2ViVmlldy5oIgogI2ltcG9ydCAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW1wb3J0
ICJUZXN0Q29udHJvbGxlci5oIgpAQCAtMjM4LDEzICsyMzksNiBAQCBlbnVtIE1vdXNlQnV0dG9u
IHsKICAgICBOb01vdXNlQnV0dG9uID0gLTIKIH07CiAKLXN0cnVjdCBLZXlNYXBwaW5nRW50cnkg
ewotICAgIGludCBtYWNLZXlDb2RlOwotICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOwotICAgIHVu
aWNoYXIgY2hhcmFjdGVyOwotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOwotfTsKLQogc3Rh
dGljIE5TRXZlbnRUeXBlIGV2ZW50VHlwZUZvck1vdXNlQnV0dG9uQW5kQWN0aW9uKGludCBidXR0
b24sIE1vdXNlQWN0aW9uIGFjdGlvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewpAQCAtNjMy
LDIwMyArNjI2LDE4IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG0K
IAogdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQogewotICAgIE5TU3Ry
aW5nKiBjaGFyYWN0ZXIgPSB0b1dURlN0cmluZyhrZXkpOwotCi0gICAgTlNTdHJpbmcgKmV2ZW50
Q2hhcmFjdGVyID0gY2hhcmFjdGVyOwotICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwot
ICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3QjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4N0M7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InVwQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rp
b25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInBhZ2VVcCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U1BhZ2VVcEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3
NDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24i
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5Owot
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaG9tZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0hvbWVGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4NzM7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVu
ZCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hh
ciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNv
ZGUgPSAweDcyOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJk
ZWxldGUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktl
eTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsKLSAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBr
ZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzsg
Ly8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KLSAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVm
dFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKLSAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkU3OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQTsKLSAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250cm9sIl0pIHsK
LSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKLSAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAg
ICAga2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUy
OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVy
czomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQzsKLSAgICB9IGVsc2UgaWYg
KFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0g
MHgzRDsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZXNjYXBl
Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MUI7Ci0gICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgIGtleUNvZGUgPSAweDM1OwotICAgIH0KLQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0
IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNw
ZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIpLgotICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMg
YSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDw9IDI0OyBpKyspIHsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAg
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIDE6IGtleUNvZGUgPSAweDdBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IGtl
eUNvZGUgPSAweDc4OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAw
eDYzOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDc6IGtleUNvZGUgPSAweDYyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6
IGtleUNvZGUgPSAweDY0OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUg
PSAweDY1OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIDEzOiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAxNDoga2V5Q29kZSA9IDB4NkI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTU6
IGtleUNvZGUgPSAweDcxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2Rl
ID0gMHg2QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAyMDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBt
b3N0IGtleXMuCi0gICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAg
ICAgICAga2V5Q29kZSA9IDB4MzA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCIgIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0g
ICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBr
ZXlDb2RlID0gMHg0QzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
Ilx4OCJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImEiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUg
PSAweDBCOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQot
ICAgICAgICBrZXlDb2RlID0gMHgwMjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAImUiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDFiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDFC
OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOiJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgyOTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIjsiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCIsIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDJCOwotCi0gICAg
S2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7Ci0gICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5p
bH0sCi0gICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ1
LCAnKycsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5
LCBAImNsZWFyIn0sCi0gICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCi0gICAgICAgIHsw
LCAgICAweDRDLCAzLCBAImVudGVyIiB9LAotICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9
LAotICAgICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAotICAgICAgICB7MHgxRCwgMHg1Miwg
JzAnLCBuaWx9LAotICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAotICAgICAgICB7MHgx
MywgMHg1NCwgJzInLCBuaWx9LAotICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAotICAg
ICAgICB7MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAotICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBu
aWx9LAotICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAotICAgICAgICB7MHgxQSwgMHg1
OSwgJzcnLCBuaWx9LAotICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAotICAgICAgICB7
MHgxOSwgMHg1QywgJzknLCBuaWx9LAotICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IFdURl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcqIGN1
cnJlbnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRh
YmxlW2ldLmNoYXJhY3RlciBsZW5ndGg6MV07Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewotICAgICAgICAgICAgaWYgKGtleUxv
Y2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQotICAgICAgICAgICAg
ICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlDb2RlOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzID0gZXZlbnRDaGFyYWN0ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFn
cyA9IDA7Ci0KLSAgICBpZiAoW2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBj
aGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6
MF0gPD0gJ1onKSB7Ci0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1vZGlmaWVyRmxh
Z1NoaWZ0OwotICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVy
IGxvd2VyY2FzZVN0cmluZ107Ci0gICAgfQotCi0gICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1v
ZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKLQotICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8q
RE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0V2
ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKyAgICBhdXRvIG1vZGlmaWVyS2V5cyA9IGFkb3B0
TlMoW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5OnRvV1RGU3RyaW5nKGtleSkgbW9k
aWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9uOmtleUxvY2F0
aW9uXSk7CiAKICAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6
TlNFdmVudFR5cGVLZXlEb3duCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01h
a2VQb2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2Rp
ZmllckZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1l
Rm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1X
aW5kb3coKSB3aW5kb3dOdW1iZXJdCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OltO
U0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAg
a2V5Q29kZTprZXlDb2RlXTsKKyAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAg
ICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKKyAgICAgICAg
dGltZXN0YW1wOmFic29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCisg
ICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxh
dGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3ND
b250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+
ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
Om1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpCisgICAgICAg
IGlzQVJlcGVhdDpOTworICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV07CiAK
ICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9s
bGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlE
b3duOmV2ZW50XTsKQEAgLTgzNiwxNCArNjQ1LDE0IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
a2V5RG93bihXS1N0cmluZ1IKIAogICAgIGV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleVVwCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01h
a2VQb2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2Rp
ZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVy
S2V5cy0+bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmFi
c29sdXRlVGltZUZvckV2ZW50VGltZShjdXJyZW50RXZlbnRUaW1lKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZl
bnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5n
ZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAg
ICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICAgICAgICAgICAgICAgICAga2V5
Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVdOwogCiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwo=
</data>
<flag name="review"
          id="464385"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="464396"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440555</attachid>
            <date>2021-10-07 16:44:24 -0700</date>
            <delta_ts>2021-10-08 13:17:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code-8.txt</filename>
            <type>text/plain</type>
            <size>48100</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4Mzc1NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDIxLTEwLTA3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
cyBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVuIERS
VCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgb2Yg
a2V5RG93bi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIg
a2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5tbTogQWRkZWQuCisgICAgICAgICgtW01vZGlm
aWVyS2V5cyBpbml0XSk6CisgICAgICAgICgtW01vZGlmaWVyS2V5cyBkZWFsbG9jXSk6CisgICAg
ICAgICgrW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5Om1vZGlmaWVyczprZXlMb2Nh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjprZXlE
b3duKToKKwogMjAyMS0xMC0wNyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW3dlYmtpdHNjbXB5XSBTaGFyZSBjYWNoZSBiZXR3ZWVuIHByb2Nlc3NlcwpA
QCAtMTgyODMsNCArMTgzMDYsNCBAQAogICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlQXVk
aW9UcmFuc2Zvcm1lcik6CiAgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKIAotPT0gUm9s
bGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMjEtMDMtMTggPT0KKz09IFJvbGxlZCBvdmVyIHRvIENo
YW5nZUxvZy0yMDIxLTAzLTE4ID09ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODM3NTYpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDcgQEAKIAkJN0NGRjlCQzIyNTMzQkMxNjAwMDgwMDlG
IC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87
IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5tbSAqLzsgfTsKIAkJODQ2NUUyQzcwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVt
cFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQ2NUUyQzYwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovOyB9
OworCQk5MzJCQjlDMzI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyQkI5QzIyNzBFMjczQzAw
OTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSAqLzsgfTsKIAkJOTNDNzg4MjYyNTBDNkQzQTAwQzBB
QTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MjQyNTBDNkQzOTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5j
dGlvbnMuY3BwICovOyB9OwogCQk5M0M3ODgyRTI1MEM3MTcyMDBDMEFBMjQgLyogSlNCYXNpY3Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4
MjkyNTBDNzEzNDAwQzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsgfTsKIAkJQTExNThENTgxODky
NzQwQzAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1OEQ1NjE4OTI3M0VCMDA4OEMx
N0IgLyogRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldy5tbSAqLzsgfTsKQEAgLTM0NSw2ICszNDYs
OCBAQAogCQk4MDA0NUFFQjE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MDA0NUFFQzE0
NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ2NUUyQzYwRkZBOERGMjAw
M0I4MzQyIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MzJCQjlDMTI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmaWVyS2V5cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MzJCQjlDMjI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9kaWZpZXJLZXlz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzM1NDM1RjAzRDc1NTAyMDA4NjM1
Q0UgLyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViS2l0LmZyYW1ld29y
azsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTM0MDk5NTQwODU0MENB
RjAwN0YzQkM4IC8qIER1bXBSZW5kZXJUcmVlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSBEdW1wUmVuZGVyVHJlZTsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJOTNDNzg4MjQyNTBDNkQzOTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5j
dGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmdGVzdEZ1
bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDAsNiArOTQzLDgg
QEAKIAkJCQlGNDRBNTMxQzIxQjg5QTQ1MDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RTd2l6emxl
ci5tbSAqLywKIAkJCQlGNEMzNTc4OTIwRTg0NDI3MDBGQTA3NDggLyogTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlci5oICovLAogCQkJCUY0QzM1Nzg4MjBFODQ0MjcwMEZBMDc0OCAvKiBMYXlvdXRUZXN0
U3BlbGxDaGVja2VyLm1tICovLAorCQkJCTkzMkJCOUMxMjcwRTI3M0MwMDk0Q0MzMyAvKiBNb2Rp
ZmllcktleXMuaCAqLywKKwkJCQk5MzJCQjlDMjI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJL
ZXlzLm1tICovLAogCQkJCUY0MDEwQjdBMjREQTIwMEUwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5o
ICovLAogCQkJCUY0MDEwQjc5MjREQTIwMEUwMEE4NzZFMiAvKiBQb3NlQXNDbGFzcy5tbSAqLywK
IAkJCSk7CkBAIC0xMjg0LDYgKzEyODksNyBAQAogCQkJCUY0RkVEMzIwMjM1ODIxNTgwMDNDMTM5
QyAvKiBOU1Bhc3RlYm9hcmRBZGRpdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIz
MjBDOUIwMUI0MDAxMTQzNjkgLyogT2JqQ0NvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQTE4QjdFMEM5QjA4RjEwMDExNDM2OSAvKiBPYmpDUGx1Z2luLm0gaW4gU291cmNlcyAqLywK
KwkJCQk5MzJCQjlDMzI3MEUyNzNDMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNBMThCODAwQzlCMDhGMTAwMTE0MzY5IC8qIE9iakNQbHVnaW5GdW5jdGlv
bi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ2NUUyQzcwRkZBOERGMjAwM0I4MzQyIC8qIFBpeGVs
RHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMjg0Q0QwQ0ZBODNDODAwN0U1
MzNFIC8qIFBpeGVsRHVtcFN1cHBvcnRDRy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCShy
ZXZpc2lvbiAyODM3NTYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAi
RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCIKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRmls
ZURyYWdnaW5nU291cmNlLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQuaCIK
KyNpbXBvcnQgIk1vZGlmaWVyS2V5cy5oIgogI2ltcG9ydCAiV2ViQ29yZVRlc3RTdXBwb3J0Lmgi
CiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQ
cml2YXRlLmg+CkBAIC04MSwxMyArODIsNiBAQCBlbnVtIE1vdXNlQnV0dG9uIHsKICAgICBOb01v
dXNlQnV0dG9uID0gLTIKIH07CiAKLXN0cnVjdCBLZXlNYXBwaW5nRW50cnkgewotICAgIGludCBt
YWNLZXlDb2RlOwotICAgIGludCBtYWNOdW1wYWRLZXlDb2RlOwotICAgIHVuaWNoYXIgY2hhcmFj
dGVyOwotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXJOYW1lOwotfTsKLQogTlNQb2ludCBsYXN0TW91
c2VQb3NpdGlvbjsKIE5TUG9pbnQgbGFzdENsaWNrUG9zaXRpb247CiBpbnQgbGFzdENsaWNrQnV0
dG9uID0gTm9Nb3VzZUJ1dHRvbjsKQEAgLTk3MiwyMDQgKzk2NiwyMyBAQCArICh2b2lkKWNsZWFy
U2F2ZWRFdmVudHMKIAogLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aXRo
TW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QgKiltb2RpZmllcnMgd2l0aExvY2F0aW9uOih1bnNp
Z25lZCBsb25nKWxvY2F0aW9uCiB7Ci0gICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gY2hh
cmFjdGVyOwotICAgIHVuc2lnbmVkIHNob3J0IGtleUNvZGUgPSAwOwotICAgIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBr
ZXlDb2RlID0gMHg3QjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAicmlnaHRBcnJvdyJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJy
b3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0M7Ci0g
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAg
IGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJkb3duQXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNEb3duQXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4N0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VVcCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9u
S2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3NDsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgewotICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwot
ICAgICAgICBrZXlDb2RlID0gMHg3OTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVh
bFRvU3RyaW5nOkAiaG9tZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0hvbWVG
dW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzM7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVuZCJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHg3NzsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiaW5zZXJ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0
RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDcyOwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkZWxldGUiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNEZWxldGVGdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzU7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAw
eDFCOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicHJpbnRTY3JlZW4iXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQcmludFNjcmVlbkZ1bmN0aW9uS2V5OwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFs
IGtleSBjb2RlIGZvciBQcmludFNjcmVlbi4KLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHgwNDMwOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgz
OyAvLyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7Ci0gICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNv
ZGUgPSAweDNCOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJs
ZWZ0U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUxOwotICAgICAg
ICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzODsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSAweEZGRTc7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNBOwotICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodENvbnRyb2wiXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0OwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzRTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAicmlnaHRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTI7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDNDOwotICAgIH0gZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTg7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDNEOwotICAgIH0KLQotICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRo
ZSBmdW5jdGlvbi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwu
Li4sIkYyNCIpLgotICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkg
bmFtZSwgc2V0IGl0cyBrZXkgY29kZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0
OyBpKyspIHsKLSAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7Ci0gICAgICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKLSAgICAgICAgICAgIGV2ZW50Q2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIDE6IGtleUNvZGUg
PSAweDdBOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IGtleUNvZGUgPSAweDc4OyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDM6IGtleUNvZGUgPSAweDYzOyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDQ6IGtleUNvZGUgPSAweDc2OyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIDU6IGtleUNvZGUgPSAweDYwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IDY6IGtleUNvZGUgPSAweDYxOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDc6IGtleUNv
ZGUgPSAweDYyOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDg6IGtleUNvZGUgPSAweDY0
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDk6IGtleUNvZGUgPSAweDY1OyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDEwOiBrZXlDb2RlID0gMHg2RDsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxMToga2V5Q29kZSA9IDB4Njc7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgMTI6IGtleUNvZGUgPSAweDZGOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEz
OiBrZXlDb2RlID0gMHg2OTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNDoga2V5Q29k
ZSA9IDB4NkI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTU6IGtleUNvZGUgPSAweDcx
OyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE2OiBrZXlDb2RlID0gMHg2QTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSAxNzoga2V5Q29kZSA9IDB4NDA7IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTg6IGtleUNvZGUgPSAweDRGOyBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIDE5OiBrZXlDb2RlID0gMHg1MDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAy
MDoga2V5Q29kZSA9IDB4NUE7IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gRklYTUU6IE5vIGtleUNvZGUgaXMgc2V0IGZvciBtb3N0IGtleXMuCi0gICAg
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHQiXSkKLSAgICAgICAga2V5Q29kZSA9
IDB4MzA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0pCi0g
ICAgICAgIGtleUNvZGUgPSAweDMxOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiXHIiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MjQ7Ci0gICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcbiJdKQotICAgICAgICBrZXlDb2RlID0gMHg0QzsK
LSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQotICAgICAg
ICBrZXlDb2RlID0gMHgzMzsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImEiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDA7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBCOwotICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZCJdKQotICAgICAgICBrZXlDb2Rl
ID0gMHgwMjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUiXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4MEU7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJceDFiIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDFCOwotCi0gICAgS2V5TWFw
cGluZ0VudHJ5IHRhYmxlW10gPSB7Ci0gICAgICAgIHsweDJGLCAweDQxLCAnLicsIG5pbH0sCi0g
ICAgICAgIHswLCAgICAweDQzLCAnKicsIG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ1LCAnKycs
IG5pbH0sCi0gICAgICAgIHswLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9uS2V5LCBAImNs
ZWFyIn0sCi0gICAgICAgIHsweDJDLCAweDRCLCAnLycsIG5pbH0sCi0gICAgICAgIHswLCAgICAw
eDRDLCAzLCBAImVudGVyIiB9LAotICAgICAgICB7MHgxQiwgMHg0RSwgJy0nLCBuaWx9LAotICAg
ICAgICB7MHgxOCwgMHg1MSwgJz0nLCBuaWx9LAotICAgICAgICB7MHgxRCwgMHg1MiwgJzAnLCBu
aWx9LAotICAgICAgICB7MHgxMiwgMHg1MywgJzEnLCBuaWx9LAotICAgICAgICB7MHgxMywgMHg1
NCwgJzInLCBuaWx9LAotICAgICAgICB7MHgxNCwgMHg1NSwgJzMnLCBuaWx9LAotICAgICAgICB7
MHgxNSwgMHg1NiwgJzQnLCBuaWx9LAotICAgICAgICB7MHgxNywgMHg1NywgJzUnLCBuaWx9LAot
ICAgICAgICB7MHgxNiwgMHg1OCwgJzYnLCBuaWx9LAotICAgICAgICB7MHgxQSwgMHg1OSwgJzcn
LCBuaWx9LAotICAgICAgICB7MHgxQywgMHg1QiwgJzgnLCBuaWx9LAotICAgICAgICB7MHgxOSwg
MHg1QywgJzknLCBuaWx9LAotICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgodGFibGUpOyArK2kpIHsKLSAgICAgICAgTlNTdHJpbmcqIGN1cnJlbnRD
aGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnRhYmxlW2ld
LmNoYXJhY3RlciBsZW5ndGg6MV07Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpjdXJyZW50Q2hhcmFjdGVyU3RyaW5nXSB8fCBbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
Zzp0YWJsZVtpXS5jaGFyYWN0ZXJOYW1lXSkgewotICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09
IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICAgICAgICAgIGtleUNvZGUgPSB0YWJs
ZVtpXS5tYWNOdW1wYWRLZXlDb2RlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOwotICAgICAgICAgICAgZXZlbnRDaGFyYWN0
ZXIgPSBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0g
ZXZlbnRDaGFyYWN0ZXI7Ci0KLSAgICBpbnQgbW9kaWZpZXJGbGFncyA9IDA7Ci0KLSAgICBpZiAo
W2NoYXJhY3RlciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
ID49ICdBJyAmJiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7Ci0jaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVudE1v
ZGlmaWVyRmxhZ1NoaWZ0OwotI2Vsc2UKLSAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVu
dEZsYWdNYXNrTGVmdFNoaWZ0S2V5OwotI2VuZGlmCi0gICAgICAgIGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93ZXJjYXNlU3RyaW5nXTsKLSAgICB9Ci0KLSAgICBt
b2RpZmllckZsYWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOwotCi0gICAgaWYg
KGxvY2F0aW9uID09IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEKQotICAgICAgICBtb2RpZmllckZs
YWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIFJldGFpblB0cjxNb2Rp
ZmllcktleXM+IG1vZGlmaWVyS2V5cyA9IFtNb2RpZmllcktleXMgbW9kaWZpZXJLZXlzV2l0aEtl
eTpjaGFyYWN0ZXIgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxv
Y2F0aW9uOmxvY2F0aW9uXTsKIAogICAgIFtbW21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50
Vmlld10gbGF5b3V0XTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gZXZl
bnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURv
d24KICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZs
YWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6W3NlbGYgY3VycmVudEV2ZW50
VGltZV0KICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbW1ttYWluRnJhbWUg
d2ViVmlld10gd2luZG93XSB3aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVu
dENoYXJhY3Rlci5nZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdl
dCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV0pOworICAgICAgICAgICAgICAgICAgICAgICAga2V5
Q29kZTptb2RpZmllcktleXMtPmtleUNvZGVdKTsKICNlbHNlCi0gICAgYXV0byBldmVudCA9IGFk
b3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlE
b3duIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOmV2ZW50Q2hh
cmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6
Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3Rl
ciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5k
ZXg6MF0gPT0gJ1x0JyldKTsKKyAgICBhdXRvIGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFs
bG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOltzZWxm
IGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rl
ci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlm
aWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5w
dXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0g
aXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQnKV0pOwogI2Vu
ZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTExODMsMTYgKzk5NiwxNiBAQCAt
ICh2b2lkKWtleURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIHdpCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgZXZlbnQgPSByZXRhaW5QdHIoW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0V2ZW50VHlwZUtleVVwCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01h
a2VQb2ludCg1LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2Rp
ZmllckZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVy
S2V5cy0+bW9kaWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOltz
ZWxmIGN1cnJlbnRFdmVudFRpbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1i
ZXI6W1tbbWFpbkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOm1v
ZGlmaWVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycy5nZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5P
Ci0gICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlDb2RlXSk7CiAjZWxzZQotICAg
IGV2ZW50ID0gYWRvcHROUyhbW1dlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpX
ZWJFdmVudEtleVVwIHRpbWVTdGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJz
OmV2ZW50Q2hhcmFjdGVyIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgbW9kaWZpZXJzOihXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MgaXNS
ZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6
W2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJh
Y3RlckF0SW5kZXg6MF0gPT0gJ1x0JyldKTsKKyAgICBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVu
dCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3Nl
bGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFj
dGVyLmdldCgpIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycy5nZXQoKSBtb2RpZmllcnM6KFdlYkV2ZW50RmxhZ3MpbW9k
aWZpZXJLZXlzLT5tb2RpZmllckZsYWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJ
bnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDow
XSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CiAj
ZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgTW9kaWZpZXJLZXlzIDogTlNPYmplY3QgeworQHB1Ymxp
YworICAgIFJldGFpblB0cjxOU1N0cmluZz4gZXZlbnRDaGFyYWN0ZXI7CisgICAgdW5zaWduZWQg
c2hvcnQga2V5Q29kZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyczsKKyAgICBpbnQgbW9kaWZpZXJGbGFnczsKK30KKworKyAoTW9kaWZpZXJLZXlz
Kiltb2RpZmllcktleXNXaXRoS2V5OihOU1N0cmluZyAqKWtleSBtb2RpZmllcnM6KGludCltb2Rp
ZmllcnMga2V5TG9jYXRpb246KHVuc2lnbmVkKWtleUxvY2F0aW9uOworCitAZW5kCkluZGV4OiBU
b29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5tbQkobm9uZXhpc3Rl
bnQpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiTW9kaWZpZXJLZXlzLmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorI2ltcG9ydCA8V2ViS2l0L0tleUV2ZW50Q29kZXNJT1MuaD4KKyNpbXBvcnQgPFdlYktpdC9X
ZWJFdmVudC5oPgorI2VuZGlmCisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0TGVnYWN5Lmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCitzdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKKyAgICBpbnQg
bWFjS2V5Q29kZTsKKyAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKKyAgICB1bmljaGFyIGNoYXJh
Y3RlcjsKKyAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKK307CisKK0BpbXBsZW1lbnRhdGlv
biBNb2RpZmllcktleXMKKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJl
dHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKysgKE1vZGlmaWVyS2V5cyAqKW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5TU3RyaW5nICop
Y2hhcmFjdGVyIG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQp
a2V5TG9jYXRpb24KK3sKKyAgICBNb2RpZmllcktleXMgKm1vZGlmZXJLZXlzID0gW1tNb2RpZmll
cktleXMgYWxsb2NdIGluaXRdOworCisgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpjaGFyYWN0ZXJdKTsKKyAg
ICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDA7CisgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAibGVmdEFycm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TTGVm
dEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBt
b2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4N0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4N0M7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInVwQXJyb3ciXSkgeworICAgICAgICBjb25zdCB1bmlj
aGFyIGNoID0gTlNVcEFycm93RnVuY3Rpb25LZXk7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4N0U7CisgICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRvd25BcnJvdyJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0Rvd25BcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBtb2RpZmVyS2V5
cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDdEOworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZlcktl
eXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3NDsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicGFnZURvd24iXSkgeworICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlRG93bkZ1bmN0aW9uS2V5OworICAgICAgICBtb2Rp
ZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDc5OworICAg
IH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJob21lIl0pIHsKKyAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TSG9tZUZ1bmN0aW9uS2V5OworICAgICAgICBtb2RpZmVy
S2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDczOworICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZlcktleXMt
PmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5n
dGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3NzsKKyAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiaW5zZXJ0Il0pIHsKKyAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TSW5zZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIG1vZGlmZXJLZXlz
LT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVu
Z3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NzI7CisgICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImRlbGV0ZSJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU0RlbGV0ZUZ1bmN0aW9uS2V5OworICAgICAgICBtb2RpZmVyS2V5
cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDc1OworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7CisgICAg
ICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7CisgICAgICAg
IG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4MDsg
Ly8gVGhlcmUgaXMgbm8ga25vd24gdmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCisg
ICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxM
ZXR0ZXJBIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKKyAgICAgICAg
bW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzOyAv
LyBTaGFyZXMga2V5IHdpdGggIkYiIG9uIFJ1c3NpYW4gbGF5b3V0LgorICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0Q29udHJvbCJdKSB7CisgICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweEZGRTM7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAg
ICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4M0I7CisgICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRTaGlmdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweEZGRTE7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2Rp
ZmVyS2V5cy0+a2V5Q29kZSA9IDB4Mzg7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1
YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhG
RkU3OworICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtl
eUNvZGUgPSAweDNBOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJyaWdodENvbnRyb2wiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU0Owor
ICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUg
PSAweDNFOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJyaWdo
dFNoaWZ0Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsKKyAgICAgICAg
bW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzQzsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkg
eworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OworICAgICAgICBtb2RpZmVyS2V5
cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDNEOworICAgIH0gZWxz
ZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gMHgxQjsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAg
ICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzNTsKKyAgICB9CisKKyAgICAvLyBDb21wYXJl
IHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkg
dGhlIERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KKyAgICAvLyBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7CisgICAgICAgIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkg
eworICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0g
MSk7CisgICAgICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgICAgIHN3aXRjaCAo
aSkgeworICAgICAgICAgICAgY2FzZSAxOiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4N0E7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAyOiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4Nzg7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAzOiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NjM7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA0OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NzY7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA1OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NjA7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA2OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NjE7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA3OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NjI7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA4OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NjQ7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSA5OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NjU7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAxMDogbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDZEOyBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2Nzsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NkY7
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzogbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDY5
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg2
QjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE1OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4
NzE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjogbW9kaWZlcktleXMtPmtleUNvZGUgPSAw
eDZBOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTc6IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0g
MHg0MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9
IDB4NEY7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOTogbW9kaWZlcktleXMtPmtleUNvZGUg
PSAweDUwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjA6IG1vZGlmZXJLZXlzLT5rZXlDb2Rl
ID0gMHg1QTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBGSVhNRTogTm8ga2V5Q29kZSBpcyBzZXQgZm9yIG1vc3Qga2V5cy4KKyAgICBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJcdCJdKQorICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29k
ZSA9IDB4MzA7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCIgIl0p
CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzMTsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlD
b2RlID0gMHgyNDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxu
Il0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg0QzsKKyAgICBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx4OCJdKQorICAgICAgICBtb2RpZmVyS2V5cy0+
a2V5Q29kZSA9IDB4MzM7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJhIl0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgwMDsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImIiXSkKKyAgICAgICAgbW9kaWZlcktleXMt
PmtleUNvZGUgPSAweDBCOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiZCJdKQorICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4MDI7CisgICAgZWxzZSBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlIl0pCisgICAgICAgIG1vZGlmZXJLZXlz
LT5rZXlDb2RlID0gMHgwRTsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAIlx4MWIiXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDFCOworICAgIGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiOiJdKQorICAgICAgICBtb2RpZmVy
S2V5cy0+a2V5Q29kZSA9IDB4Mjk7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCI7Il0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgyOTsKKyAgICBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIiwiXSkKKyAgICAgICAgbW9kaWZl
cktleXMtPmtleUNvZGUgPSAweDJCOworCisgICAgS2V5TWFwcGluZ0VudHJ5IHRhYmxlW10gPSB7
CisgICAgICAgIHsgMHgyRiwgMHg0MSwgJy4nLCBuaWwgfSwKKyAgICAgICAgeyAwLCAgICAweDQz
LCAnKicsIG5pbCB9LAorICAgICAgICB7IDAsICAgIDB4NDUsICcrJywgbmlsIH0sCisgICAgICAg
IHsgMCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwgQCJjbGVhciIgfSwKKyAgICAg
ICAgeyAweDJDLCAweDRCLCAnLycsIG5pbCB9LAorICAgICAgICB7IDAsICAgIDB4NEMsIDMsIEAi
ZW50ZXIiIH0sCisgICAgICAgIHsgMHgxQiwgMHg0RSwgJy0nLCBuaWwgfSwKKyAgICAgICAgeyAw
eDE4LCAweDUxLCAnPScsIG5pbCB9LAorICAgICAgICB7IDB4MUQsIDB4NTIsICcwJywgbmlsIH0s
CisgICAgICAgIHsgMHgxMiwgMHg1MywgJzEnLCBuaWwgfSwKKyAgICAgICAgeyAweDEzLCAweDU0
LCAnMicsIG5pbCB9LAorICAgICAgICB7IDB4MTQsIDB4NTUsICczJywgbmlsIH0sCisgICAgICAg
IHsgMHgxNSwgMHg1NiwgJzQnLCBuaWwgfSwKKyAgICAgICAgeyAweDE3LCAweDU3LCAnNScsIG5p
bCB9LAorICAgICAgICB7IDB4MTYsIDB4NTgsICc2JywgbmlsIH0sCisgICAgICAgIHsgMHgxQSwg
MHg1OSwgJzcnLCBuaWwgfSwKKyAgICAgICAgeyAweDFDLCAweDVCLCAnOCcsIG5pbCB9LAorICAg
ICAgICB7IDB4MTksIDB4NUMsICc5JywgbmlsIH0sCisgICAgfTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0YWJsZSk7ICsraSkgeworICAgICAgICBOU1N0
cmluZyogY3VycmVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomdGFibGVbaV0uY2hhcmFjdGVyIGxlbmd0aDoxXTsKKyAgICAgICAgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOmN1cnJlbnRDaGFyYWN0ZXJTdHJpbmddIHx8IFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOnRhYmxlW2ldLmNoYXJhY3Rlck5hbWVdKSB7CisgICAgICAgICAgICBp
ZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCisgICAg
ICAgICAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSB0YWJsZVtpXS5tYWNOdW1wYWRLZXlD
b2RlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlD
b2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKKyAgICAgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVu
dENoYXJhY3RlciA9IGN1cnJlbnRDaGFyYWN0ZXJTdHJpbmc7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIG1vZGlmZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnMgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOm1vZGlm
ZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKV0pOworCisgICAgbW9kaWZlcktleXMtPm1vZGlm
aWVyRmxhZ3MgPSAwOworCisgICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIDw9ICdaJykgeworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBt
b2RpZmVyS2V5cy0+bW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnU2hpZnQ7Cisj
ZWxzZQorICAgICAgICBtb2RpZmVyS2V5cy0+bW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudEZsYWdN
YXNrTGVmdFNoaWZ0S2V5OworI2VuZGlmCisgICAgICAgIG1vZGlmZXJLZXlzLT5jaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CisgICAgfQor
CisgICAgbW9kaWZlcktleXMtPm1vZGlmaWVyRmxhZ3MgfD0gbW9kaWZpZXJzOworCisgICAgaWYg
KGtleUxvY2F0aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQorICAgICAg
ICBtb2RpZmVyS2V5cy0+bW9kaWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJp
Y1BhZDsKKyAgICAKKyAgICByZXR1cm4gW21vZGlmZXJLZXlzIGF1dG9yZWxlYXNlXTsKK30KKwor
QGVuZApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4
Mzc1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAKIAkJ
N0NGRjlCQ0IyNTM0QUYxRDAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkM3MjUzNEFGMUQwMDA4MDA5
RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMzRDNjYyMTQ4NzYzNjQwMEFDMzJFOSAv
KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMzRDNjYxMTQ4NzYzNjQwMEFDMzJFOSAvKiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJODA5NzMzOEExNDg3NEE1QTAwODE1NkQ5
IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODA5NzMzODkxNDg3NEE1QTAwODE1NkQ5IC8q
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovOyB9OworCQk5MzJCQjlDMDI3
MEUyNzAwMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyQkI5QkUyNzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlm
aWVyS2V5cy5tbSAqLzsgfTsKIAkJOTM3NjQxN0EyMTBENzM3MjAwQTNEQUFFIC8qIFdlYktpdFRl
c3RSdW5uZXJXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRv
dy5tbSAqLzsgfTsKIAkJOTNDNzg4MjMyNTBDNkMyRTAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTND
Nzg4MUYyNTBDNjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICovOyB9OwogCQk5
M0M3ODgzMTI1MEM3MTlGMDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MzAyNTBDNzE5OTAwQzBBQTI0IC8q
IEpTQmFzaWNzLmNwcCAqLzsgfTsKQEAgLTM2Nyw2ICszNjgsOCBAQAogCQk4NDFDQzAwRDE4MTE4
NUJGMDA0MkU5QjYgLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQxQ0Mw
MEUxODExODVCRjAwNDJFOUI2IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4REQ3NkZB
MTA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxl
IjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTMyQkI5QkQyNzBFMjcwMDAwOTRDQzMzIC8q
IE1vZGlmaWVyS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2RpZmll
cktleXMuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMkJCOUJFMjcwRTI3MDAwMDk0Q0MzMyAv
KiBNb2RpZmllcktleXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBNb2RpZmllcktleXMubW07IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlm
aWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzOEQxQkUyNTBCRDlE
RDAwRTgyN0Y2IC8qIERpY3Rpb25hcnlGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlv
bmFyeUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzc2NDE3NjIx
MEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0MTc3MjEwRDczNjEwMEEzREFBRSAvKiBX
ZWJLaXRUZXN0UnVubmVyV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTk1NSw2ICs5NTgsOCBAQAogCQkJCUY0NEE1MzE2MjFCODk5REEwMERCQjk5QyAvKiBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0QzM1NzhCMjBFODQ0NDAwMEZBMDc0OCAvKiBM
YXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCiAJCQkJRjRDMzU3OEEyMEU4NDQ0MDAwRkEwNzQ4
IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkJOTMyQkI5QkQyNzBFMjcwMDAw
OTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5oICovLAorCQkJCTkzMkJCOUJFMjcwRTI3MDAwMDk0Q0Mz
MyAvKiBNb2RpZmllcktleXMubW0gKi8sCiAJCQkJMkUyQTc2NUIyMzcwQzhBMDAwOEY5RkZFIC8q
IFBsYXRmb3JtVmlld0hlbHBlcnMuaCAqLywKIAkJCQkyRTJBNzY1QzIzNzBDOEEwMDA4RjlGRkUg
LyogUGxhdGZvcm1WaWV3SGVscGVycy5tbSAqLywKIAkJCQlGNDAxMEI3RDI0REEyMDQ4MDBBODc2
RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKQEAgLTEyNDYsNiArMTI1MSw3IEBACiAJCQkJQTE4NTEw
M0YxQjlBRTEyOTAwNzQ0QUVCIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0NEE1MzE4MjFCODk5RTUwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFEQThBM0QxRTcyMDVDQzAwRTFERjJGIC8q
IElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzMkJC
OUMwMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5M0M3ODgzMjI1MEM3MUI3MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY3M0I1NTExQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMThFNzE4MUQ2QkM0NTYwMDI3RTU0NyAvKiBKU1dyYXBw
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHJldmlzaW9uIDI4Mzc1NikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbXBvcnQgIkV2ZW50U2VuZGVyUHJveHkuaCIKIAogI2ltcG9ydCAiQ29y
ZUdyYXBoaWNzVGVzdFNQSS5oIgorI2ltcG9ydCAiTW9kaWZpZXJLZXlzLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAi
VGVzdENvbnRyb2xsZXIuaCIKQEAgLTIzOCwxMyArMjM5LDYgQEAgZW51bSBNb3VzZUJ1dHRvbiB7
CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsK
LSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKLSAgICB1bmlj
aGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKLX07Ci0KIHN0YXRp
YyBOU0V2ZW50VHlwZSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9u
LCBNb3VzZUFjdGlvbiBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsKQEAgLTYzMiwy
MDMgKzYyNiwxOCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtCiAK
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAgICBOU1N0cmlu
ZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmcoa2V5KTsKLQotICAgIE5TU3RyaW5nICpldmVudENo
YXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAg
ICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgewotICAgICAg
ICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNv
ZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1
cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9u
S2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsKLSAgICB9IGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKLSAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQ
YWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzQ7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQi
XSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKLSAgICAg
ICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxl
bmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIg
Y2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2Rl
ID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVs
ZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7
Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAgIH0gZWxzZSBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZpcnR1YWwga2V5
IGNvZGUgZm9yIFByaW50U2NyZWVuLgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNo
YXIgY2ggPSAweDA0MzA7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM7IC8v
IFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCi0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKLSAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9
IDB4M0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRT
aGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Ci0gICAgICAgIGV2
ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6
MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM4OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFNzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0E7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDNFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJyaWdodFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMjsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0M7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IDB4RkZFODsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4
M0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImVzY2FwZSJd
KSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOwotICAgICAgICBldmVudENoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAg
ICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBz
dHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVj
IChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEg
ZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewotICAgICAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7Ci0gICAgICAg
ICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2gg
bGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlD
b2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2
MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA4OiBr
ZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0g
MHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE1OiBr
ZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9
IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9z
dCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCi0gICAg
ICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDI0OwotICAg
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKLSAgICAgICAga2V5
Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJc
eDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAwOwotICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAgICBrZXlDb2RlID0g
MHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKLSAg
ICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVsc2UgaWYgKFtjaGFy
YWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgxQjsK
LSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkKLSAgICAgICAg
a2V5Q29kZSA9IDB4Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCI7Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiLCJdKQotICAgICAgICBrZXlDb2RlID0gMHgyQjsKLQotICAgIEtl
eU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBuaWx9
LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NSwg
JysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktleSwg
QCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAotICAgICAgICB7MCwg
ICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmlsfSwK
LSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAgICAgICAgezB4MUQsIDB4NTIsICcw
JywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKLSAgICAgICAgezB4MTMs
IDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKLSAgICAg
ICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAgezB4MTcsIDB4NTcsICc1Jywgbmls
fSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKLSAgICAgICAgezB4MUEsIDB4NTks
ICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKLSAgICAgICAgezB4
MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBjdXJy
ZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJs
ZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAgICAgICAgICAgIGlmIChrZXlMb2Nh
dGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKLSAgICAgICAgICAgICAg
ICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKLSAgICAgICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlmaWVyRmxhZ3Mg
PSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hh
cmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBd
IDw9ICdaJykgewotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2RpZmllckZsYWdT
aGlmdDsKLSAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJhY3RlciBs
b3dlcmNhc2VTdHJpbmddOwotICAgIH0KLQotICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVpbGRNb2Rp
ZmllckZsYWdzKG1vZGlmaWVycyk7Ci0KLSAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRP
TV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNFdmVu
dE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgUmV0YWluUHRyPE1vZGlmaWVyS2V5cz4gbW9k
aWZpZXJLZXlzID0gW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5OnRvV1RGU3RyaW5n
KGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtleUxvY2F0aW9u
OmtleUxvY2F0aW9uXTsKIAogICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZs
YWdzOm1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDphYnNv
bHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cwotICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAgICAgICAgICAg
ICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1
LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncwor
ICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRp
bWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29udGV4dDpbTlNH
cmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZp
ZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkK
KyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlD
b2RlXTsKIAogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICBbW21fdGVz
dENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25k
ZXJdIGtleURvd246ZXZlbnRdOwpAQCAtODM2LDE0ICs2NDUsMTQgQEAgdm9pZCBFdmVudFNlbmRl
clByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogCiAgICAgZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVu
dFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZs
YWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6
bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6bW9kaWZpZXJL
ZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KLSAgICAg
ICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisgICAgICAgICAgICAgICAgICAg
ICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV07CiAKICAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07Cg==
</data>
<flag name="review"
          id="464537"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440662</attachid>
            <date>2021-10-08 13:17:57 -0700</date>
            <delta_ts>2021-10-09 14:35:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>shared-code-9.txt</filename>
            <type>text/plain</type>
            <size>47881</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MzgzNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDIxLTEwLTA3ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQdWxsIG1vZGlmaWVyIGtleSBleHRyYWN0aW9uIGludG8gVGVzdFJ1bm5lclNoYXJl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMjY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBwdWxscyB0aGUgY29kZSB0byBleHRyYWN0IG1vZGlmaWVyIGtleSBpbmZvcm1hdGlvbiBp
cyBwdWxsZWQgaW50byBhIGxpdHRsZSBjbGFzcyAKKyAgICAgICAgY2FsbGVkIE1vZGlmaWVyS2V5
cyBpbiBUZXN0UnVubmVyU2hhcmVkLiBUaGF0IGNvZGUgaXMgbm93IHNoYXJlZCBiZXR3ZWVuIERS
VCBhbmQgV0tUUiAKKyAgICAgICAgZm9yIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgb2Yg
a2V5RG93bi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIg
a2V5RG93bjp3aXRoTW9kaWZpZXJzOndpdGhMb2NhdGlvbjpdKToKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5tbTogQWRkZWQuCisgICAgICAgICgtW01vZGlm
aWVyS2V5cyBpbml0XSk6CisgICAgICAgICgtW01vZGlmaWVyS2V5cyBkZWFsbG9jXSk6CisgICAg
ICAgICgrW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5Om1vZGlmaWVyczprZXlMb2Nh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjprZXlE
b3duKToKKwogMjAyMS0xMC0wOCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2NvbnRyaWJ1dG9ycy5qc29uXSBTdXBwb3J0IEdpdEh1YiB1c2VybmFtZXMK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjgzNzU2KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw3IEBACiAJCTdDRkY5QkMyMjUzM0JDMTYw
MDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQu
Y3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXIubW0gKi87IH07CiAJCTg0NjVFMkM3MEZGQThERjIwMDNCODM0MiAvKiBQ
aXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0NjVFMkM2MEZGQThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNw
cCAqLzsgfTsKKwkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkJCOUMyMjcw
RTI3M0MwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi87IH07CiAJCTkzQzc4ODI2MjUwQzZE
M0EwMEMwQUEyNCAvKiBSZWZ0ZXN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzc4ODI0MjUwQzZEMzkwMEMwQUEyNCAvKiBSZWZ0
ZXN0RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJOTNDNzg4MkUyNTBDNzE3MjAwQzBBQTI0IC8qIEpT
QmFzaWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQzc4ODI5MjUwQzcxMzQwMEMwQUEyNCAvKiBKU0Jhc2ljcy5jcHAgKi87IH07CiAJCUExMTU4
RDU4MTg5Mjc0MEMwMDg4QzE3QiAvKiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNThENTYxODkyNzNF
QjAwODhDMTdCIC8qIER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXcubW0gKi87IH07CkBAIC0zNDUs
NiArMzQ2LDggQEAKIAkJODAwNDVBRUIxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmg7IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODAw
NDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0NjVFMkM2MEZG
QThERjIwMDNCODM0MiAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQaXhlbER1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzEyNzBFMjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZmllcktleXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyQkI5QzIyNzBFMjczQzAwOTRDQzMzIC8qIE1vZGlm
aWVyS2V5cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1vZGlm
aWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzNTQzNUYwM0Q3NTUw
MjAwODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IFdlYktpdC5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzNDA5OTU0
MDg1NDBDQUYwMDdGM0JDOCAvKiBEdW1wUmVuZGVyVHJlZSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gRHVtcFJlbmRlclRyZWU7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzQzc4ODI0MjUwQzZEMzkwMEMwQUEyNCAvKiBSZWZ0
ZXN0RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
ZnRlc3RGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQwLDYg
Kzk0Myw4IEBACiAJCQkJRjQ0QTUzMUMyMUI4OUE0NTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIubW0gKi8sCiAJCQkJRjRDMzU3ODkyMEU4NDQyNzAwRkEwNzQ4IC8qIExheW91dFRl
c3RTcGVsbENoZWNrZXIuaCAqLywKIAkJCQlGNEMzNTc4ODIwRTg0NDI3MDBGQTA3NDggLyogTGF5
b3V0VGVzdFNwZWxsQ2hlY2tlci5tbSAqLywKKwkJCQk5MzJCQjlDMTI3MEUyNzNDMDA5NENDMzMg
LyogTW9kaWZpZXJLZXlzLmggKi8sCisJCQkJOTMyQkI5QzIyNzBFMjczQzAwOTRDQzMzIC8qIE1v
ZGlmaWVyS2V5cy5tbSAqLywKIAkJCQlGNDAxMEI3QTI0REEyMDBFMDBBODc2RTIgLyogUG9zZUFz
Q2xhc3MuaCAqLywKIAkJCQlGNDAxMEI3OTI0REEyMDBFMDBBODc2RTIgLyogUG9zZUFzQ2xhc3Mu
bW0gKi8sCiAJCQkpOwpAQCAtMTI4NCw2ICsxMjg5LDcgQEAKIAkJCQlGNEZFRDMyMDIzNTgyMTU4
MDAzQzEzOUMgLyogTlNQYXN0ZWJvYXJkQWRkaXRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNBMThCMzIwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9sbGVyLm0gaW4gU291cmNlcyAq
LywKIAkJCQlCQ0ExOEI3RTBDOUIwOEYxMDAxMTQzNjkgLyogT2JqQ1BsdWdpbi5tIGluIFNvdXJj
ZXMgKi8sCisJCQkJOTMyQkI5QzMyNzBFMjczQzAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDQTE4QjgwMEM5QjA4RjEwMDExNDM2OSAvKiBPYmpDUGx1Z2lu
RnVuY3Rpb24ubSBpbiBTb3VyY2VzICovLAogCQkJCTg0NjVFMkM3MEZGQThERjIwMDNCODM0MiAv
KiBQaXhlbER1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjI4NENEMENGQTgz
QzgwMDdFNTMzRSAvKiBQaXhlbER1bXBTdXBwb3J0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5tbQkocmV2aXNpb24gMjgzNzU2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvLmgiCiAjaW1wb3J0ICJEdW1wUmVuZGVy
VHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5oIgogI2ltcG9ydCAiRHVtcFJlbmRlclRyZWVQYXN0ZWJv
YXJkLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKICNpbXBvcnQgIldlYkNvcmVUZXN0U3Vw
cG9ydC5oIgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJWaWV3UHJpdmF0ZS5oPgpAQCAtODEsMTMgKzgyLDYgQEAgZW51bSBNb3VzZUJ1dHRvbiB7CiAg
ICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKLSAg
ICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKLSAgICB1bmljaGFy
IGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKLX07Ci0KIE5TUG9pbnQg
bGFzdE1vdXNlUG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bvc2l0aW9uOwogaW50IGxhc3RD
bGlja0J1dHRvbiA9IE5vTW91c2VCdXR0b247CkBAIC05NzIsMjA0ICs5NjYsMjMgQEAgKyAodm9p
ZCljbGVhclNhdmVkRXZlbnRzCiAKIC0gKHZvaWQpa2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0
ZXIgd2l0aE1vZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlv
bjoodW5zaWduZWQgbG9uZylsb2NhdGlvbgogewotICAgIE5TU3RyaW5nICpldmVudENoYXJhY3Rl
ciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2RlID0gMDsKLSAgICBpZiAo
W2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFy
YWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAg
ICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxU
b1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNS
aWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAw
eDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJ1cEFycm93
Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5Owot
ICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczom
Y2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsKLSAgICB9IGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsKLSAgICAgICAgY29uc3Qg
dW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNQYWdlVXBG
dW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4NzQ7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBhZ2VEb3duIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlvbktleTsKLSAgICAgICAg
ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0
aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDcz
OwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlbmQiXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktleTsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBO
U0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3
MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZGVsZXRlIl0p
IHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJlc2NhcGUiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHgxQjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MzU7Ci0gICAg
fSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInByaW50U2NyZWVuIl0pIHsK
LSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3JlZW5GdW5jdGlvbktleTsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4MDsgLy8gVGhlcmUgaXMgbm8ga25vd24g
dmlydHVhbCBrZXkgY29kZSBmb3IgUHJpbnRTY3JlZW4uCi0gICAgfSBlbHNlIGlmIChbY2hhcmFj
dGVyIGlzRXF1YWxUb1N0cmluZzpAImN5cmlsbGljU21hbGxMZXR0ZXJBIl0pIHsKLSAgICAgICAg
Y29uc3QgdW5pY2hhciBjaCA9IDB4MDQzMDsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4MzsgLy8gU2hhcmVzIGtleSB3aXRoICJGIiBvbiBSdXNzaWFuIGxheW91dC4KLSAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdENvbnRyb2wiXSkgewot
ICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkUzOwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHgzQjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAibGVmdFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsK
LSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Mzg7Ci0gICAgfSBlbHNlIGlmIChb
Y2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRBbHQiXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gMHhGRkU3OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgz
QTsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRDb250
cm9sIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFNDsKLSAgICAgICAgZXZl
bnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDox
XTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0U7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNo
ID0gMHhGRkUyOwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzQzsKLSAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBbHQiXSkgewotICAg
ICAgICBjb25zdCB1bmljaGFyIGNoID0gMHhGRkU4OwotICAgICAgICBldmVudENoYXJhY3RlciA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBr
ZXlDb2RlID0gMHgzRDsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJlIHRoZSBpbnB1dCBzdHJpbmcg
d2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhlIERPTSBzcGVjIChpLmUu
ICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgZnVuY3Rp
b24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewotICAgICAgICAgICAgY29u
c3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7Ci0gICAgICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiBr
ZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAyOiBrZXlDb2RlID0g
MHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlDb2RlID0gMHg2MzsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3NjsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA3
OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA4OiBrZXlDb2Rl
ID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5OiBrZXlDb2RlID0gMHg2NTsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9IDB4NkQ7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTQ6
IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE1OiBrZXlDb2Rl
ID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNjoga2V5Q29kZSA9IDB4NkE7
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUgPSAweDQwOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0RjsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9zdCBrZXlz
LgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCi0gICAgICAgIGtl
eUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDI0OwotICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKLSAgICAgICAga2V5Q29kZSA9
IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJceDgiXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAwOwotICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgwQjsK
LSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImQiXSkKLSAgICAgICAg
a2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIg
aXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlDb2RlID0gMHgxQjsKLQotICAg
IEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7MHgyRiwgMHg0MSwgJy4nLCBu
aWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0
NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5jdGlvbktl
eSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAotICAgICAgICB7
MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4MUIsIDB4NEUsICctJywgbmls
fSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAgICAgICAgezB4MUQsIDB4NTIs
ICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKLSAgICAgICAgezB4
MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmlsfSwKLSAg
ICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAgezB4MTcsIDB4NTcsICc1Jywg
bmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKLSAgICAgICAgezB4MUEsIDB4
NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKLSAgICAgICAg
ezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0gICAgICAgIE5TU3RyaW5nKiBj
dXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0
YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAgICAgICAgICAgIGlmIChsb2Nh
dGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAgICAgICAgICAgICBrZXlDb2Rl
ID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsKLSAgICAgICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlmaWVyRmxhZ3MgPSAwOwotCi0g
ICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJ
bmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdIDw9ICdaJykg
ewotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5T
RXZlbnRNb2RpZmllckZsYWdTaGlmdDsKLSNlbHNlCi0gICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0g
V2ViRXZlbnRGbGFnTWFza0xlZnRTaGlmdEtleTsKLSNlbmRpZgotICAgICAgICBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107Ci0gICAgfQot
Ci0gICAgbW9kaWZpZXJGbGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKLQot
ICAgIGlmIChsb2NhdGlvbiA9PSBET01fS0VZX0xPQ0FUSU9OX05VTVBBRCkKLSAgICAgICAgbW9k
aWZpZXJGbGFncyB8PSBOU0V2ZW50TW9kaWZpZXJGbGFnTnVtZXJpY1BhZDsKKyAgICBSZXRhaW5Q
dHI8TW9kaWZpZXJLZXlzPiBtb2RpZmllcktleXMgPSBbTW9kaWZpZXJLZXlzIG1vZGlmaWVyS2V5
c1dpdGhLZXk6Y2hhcmFjdGVyIG1vZGlmaWVyczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJz
KSBrZXlMb2NhdGlvbjpsb2NhdGlvbl07CiAKICAgICBbW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBk
b2N1bWVudFZpZXddIGxheW91dF07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBh
dXRvIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNFdmVudFR5
cGVLZXlEb3duCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1
LCA1KQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdz
CisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9k
aWZpZXJGbGFncwogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOltzZWxmIGN1cnJl
bnRFdmVudFRpbWVdCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W1tbbWFp
bkZyYW1lIHdlYlZpZXddIHdpbmRvd10gd2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5
cy0+ZXZlbnRDaGFyYWN0ZXIuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczptb2RpZmllcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycy5nZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAg
ICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGtleUNvZGU6bW9kaWZpZXJLZXlzLT5rZXlDb2RlXSk7CiAjZWxzZQotICAgIGF1dG8gZXZl
bnQgPSBhZG9wdE5TKFtbV2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2
ZW50S2V5RG93biB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hhcmFjdGVyczpl
dmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzIGlzUmVw
ZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOltj
aGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3RlciBjaGFyYWN0
ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAgYXV0byBldmVudCA9IGFkb3B0TlMoW1tXZWJF
dmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFt
cDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXSBjaGFyYWN0ZXJzOm1vZGlmaWVyS2V5cy0+ZXZlbnRD
aGFyYWN0ZXIuZ2V0KCkgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmdldCgpIG1vZGlmaWVyczooV2ViRXZlbnRGbGFn
cyltb2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOjAg
d2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6W2NoYXJhY3RlciBjaGFyYWN0ZXJBdElu
ZGV4OjBdIGlzVGFiS2V5OihbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0gJ1x0Jyld
KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMTgzLDE2ICs5OTYs
MTYgQEAgLSAodm9pZClrZXlEb3duOihOU1N0cmluZyAqKWNoYXJhY3RlciB3aQogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGV2ZW50ID0gcmV0YWluUHRyKFtOU0V2ZW50IGtleUV2ZW50
V2l0aFR5cGU6TlNFdmVudFR5cGVLZXlVcAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246TlNNYWtlUG9pbnQoNSwgNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6bW9kaWZpZXJGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczpt
b2RpZmllcktleXMtPm1vZGlmaWVyRmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDpbc2VsZiBjdXJyZW50RXZlbnRUaW1lXQogICAgICAgICAgICAgICAgICAgICAgICAgd2lu
ZG93TnVtYmVyOltbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIHdpbmRvd051bWJlcl0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3Rl
cgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycworICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyczptb2RpZmllcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJl
cGVhdDpOTwotICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV0pOwogI2Vs
c2UKLSAgICBldmVudCA9IGFkb3B0TlMoW1tXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVu
dFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6W3NlbGYgY3VycmVudEV2ZW50VGltZV0gY2hh
cmFjdGVyczpldmVudENoYXJhY3RlciBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIG1vZGlmaWVyczooV2ViRXZlbnRGbGFncyltb2RpZmllckZs
YWdzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBr
ZXlDb2RlOltjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSBpc1RhYktleTooW2NoYXJhY3Rl
ciBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICdcdCcpXSk7CisgICAgZXZlbnQgPSBhZG9wdE5TKFtb
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0
YW1wOltzZWxmIGN1cnJlbnRFdmVudFRpbWVdIGNoYXJhY3RlcnM6bW9kaWZpZXJLZXlzLT5ldmVu
dENoYXJhY3Rlci5nZXQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlz
LT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuZ2V0KCkgbW9kaWZpZXJzOihXZWJFdmVudEZs
YWdzKW1vZGlmaWVyS2V5cy0+bW9kaWZpZXJGbGFncyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6
MCB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpbY2hhcmFjdGVyIGNoYXJhY3RlckF0
SW5kZXg6MF0gaXNUYWJLZXk6KFtjaGFyYWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA9PSAnXHQn
KV0pOwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFRvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9Nb2RpZmllcktleXMuaAkobm9uZXhpc3RlbnQpCisrKyBU
b29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL01vZGlmaWVyS2V5cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIE1vZGlmaWVyS2V5cyA6IE5TT2JqZWN0IHsK
K0BwdWJsaWMKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGV2ZW50Q2hhcmFjdGVyOworICAgIHVu
c2lnbmVkIHNob3J0IGtleUNvZGU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM7CisgICAgaW50IG1vZGlmaWVyRmxhZ3M7Cit9CisKKysgKE1vZGlm
aWVyS2V5cyAqKW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5TU3RyaW5nICopa2V5IG1vZGlmaWVyczoo
aW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoodW5zaWduZWQpa2V5TG9jYXRpb247CisKK0BlbmQK
SW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlzLm1tCShu
b25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZpZXJLZXlz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2RpZmllcktleXMuaCIKKworI2ltcG9ydCA8V2ViS2l0
L1dlYktpdExlZ2FjeS5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNpbXBvcnQgPFdlYktpdC9LZXlFdmVudENvZGVzSU9TLmg+CisjaW1wb3J0
IDxXZWJLaXQvV2ViRXZlbnQuaD4KKyNlbmRpZgorCitzdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsK
KyAgICBpbnQgbWFjS2V5Q29kZTsKKyAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsKKyAgICB1bmlj
aGFyIGNoYXJhY3RlcjsKKyAgICBOU1N0cmluZyAqY2hhcmFjdGVyTmFtZTsKK307CisKK0BpbXBs
ZW1lbnRhdGlvbiBNb2RpZmllcktleXMKKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbc3VwZXIg
ZGVhbGxvY107Cit9CisKKysgKE1vZGlmaWVyS2V5cyAqKW1vZGlmaWVyS2V5c1dpdGhLZXk6KE5T
U3RyaW5nICopY2hhcmFjdGVyIG1vZGlmaWVyczooaW50KW1vZGlmaWVycyBrZXlMb2NhdGlvbjoo
dW5zaWduZWQpa2V5TG9jYXRpb24KK3sKKyAgICBNb2RpZmllcktleXMgKm1vZGlmZXJLZXlzID0g
W1tbTW9kaWZpZXJLZXlzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisKKyAgICBtb2RpZmVy
S2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOmNoYXJhY3Rlcl0pOworICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMDsKKyAgICBp
ZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkgeworICAgICAgICBj
b25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZl
cktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3QjsKKyAgICB9
IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAicmlnaHRBcnJvdyJdKSB7Cisg
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1JpZ2h0QXJyb3dGdW5jdGlvbktleTsKKyAgICAg
ICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3
QzsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAidXBBcnJvdyJd
KSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1VwQXJyb3dGdW5jdGlvbktleTsKKyAg
ICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0g
MHg3RTsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFy
cm93Il0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25L
ZXk7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5
Q29kZSA9IDB4N0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InBhZ2VVcCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VVcEZ1bmN0aW9u
S2V5OworICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtl
eUNvZGUgPSAweDc0OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCJwYWdlRG93biJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1BhZ2VEb3duRnVu
Y3Rpb25LZXk7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5
cy0+a2V5Q29kZSA9IDB4Nzk7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0
cmluZzpAImhvbWUiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rp
b25LZXk7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+
a2V5Q29kZSA9IDB4NzM7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImVuZCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU0VuZEZ1bmN0aW9uS2V5
OworICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNv
ZGUgPSAweDc3OworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJp
bnNlcnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNJbnNlcnRGdW5jdGlvbktl
eTsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlD
b2RlID0gMHg3MjsKKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAi
ZGVsZXRlIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVuY3Rpb25L
ZXk7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5
Q29kZSA9IDB4NzU7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
InByaW50U2NyZWVuIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUHJpbnRTY3Jl
ZW5GdW5jdGlvbktleTsKKyAgICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlm
ZXJLZXlzLT5rZXlDb2RlID0gMHgwOyAvLyBUaGVyZSBpcyBubyBrbm93biB2aXJ0dWFsIGtleSBj
b2RlIGZvciBQcmludFNjcmVlbi4KKyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRv
U3RyaW5nOkAiY3lyaWxsaWNTbWFsbExldHRlckEiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHgwNDMwOworICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZl
cktleXMtPmtleUNvZGUgPSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBs
YXlvdXQuCisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRD
b250cm9sIl0pIHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKKyAgICAgICAg
bW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZjaCBsZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzQjsK
KyAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdFNoaWZ0Il0p
IHsKKyAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMTsKKyAgICAgICAgbW9kaWZlcktl
eXMtPmV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzODsKKyAgICB9IGVs
c2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAibGVmdEFsdCJdKSB7CisgICAgICAg
IGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTc7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENo
YXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwor
ICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4M0E7CisgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJvbCJdKSB7CisgICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSAweEZGRTQ7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAg
ICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4M0U7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0U2hpZnQiXSkgeworICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gMHhGRkUyOworICAgICAgICBtb2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZl
cktleXMtPmtleUNvZGUgPSAweDNDOworICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCJyaWdodEFsdCJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZG
RTg7CisgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOworICAgICAgICBtb2RpZmVyS2V5cy0+a2V5
Q29kZSA9IDB4M0Q7CisgICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImVzY2FwZSJdKSB7CisgICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOworICAgICAgICBt
b2RpZmVyS2V5cy0+ZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDM1Owor
ICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIGlucHV0IHN0cmluZyB3aXRoIHRoZSBmdW5jdGlv
bi1rZXkgbmFtZXMgZGVmaW5lZCBieSB0aGUgRE9NIHNwZWMgKGkuZS4gIkYxIiwuLi4sIkYyNCIp
LgorICAgIC8vIElmIHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBmdW5jdGlvbi1rZXkgbmFtZSwgc2V0
IGl0cyBrZXkgY29kZS4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDI0OyBpKyspIHsK
KyAgICAgICAgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiRiV1IiwgaV1dKSB7CisgICAgICAgICAgICBjb25zdCB1bmljaGFyIGNoID0g
TlNGMUZ1bmN0aW9uS2V5ICsgKGkgLSAxKTsKKyAgICAgICAgICAgIG1vZGlmZXJLZXlzLT5ldmVu
dENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFd
OworICAgICAgICAgICAgc3dpdGNoIChpKSB7CisgICAgICAgICAgICBjYXNlIDE6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg3QTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg3ODsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg2MzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg3NjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg2MDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg2MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg2MjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg2NDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6IG1vZGlmZXJL
ZXlzLT5rZXlDb2RlID0gMHg2NTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEwOiBtb2RpZmVy
S2V5cy0+a2V5Q29kZSA9IDB4NkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMTogbW9kaWZl
cktleXMtPmtleUNvZGUgPSAweDY3OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IG1vZGlm
ZXJLZXlzLT5rZXlDb2RlID0gMHg2RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBtb2Rp
ZmVyS2V5cy0+a2V5Q29kZSA9IDB4Njk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNDogbW9k
aWZlcktleXMtPmtleUNvZGUgPSAweDZCOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTU6IG1v
ZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg3MTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE2OiBt
b2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NkE7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzog
bW9kaWZlcktleXMtPmtleUNvZGUgPSAweDQwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTg6
IG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHg0RjsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE5
OiBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4NTA7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAy
MDogbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDVBOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNldCBmb3IgbW9z
dCBrZXlzLgorICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0Il0pCisgICAg
ICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzMDsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVy
IGlzRXF1YWxUb1N0cmluZzpAIiAiXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAw
eDMxOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHIiXSkKKyAg
ICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDI0OworICAgIGVsc2UgaWYgKFtjaGFyYWN0
ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUg
PSAweDRDOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHg4Il0p
CisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgzMzsKKyAgICBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImEiXSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNv
ZGUgPSAweDAwOworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJd
KQorICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4MEI7CisgICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJkIl0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlD
b2RlID0gMHgwMjsKKyAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImUi
XSkKKyAgICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSAweDBFOworICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQorICAgICAgICBtb2RpZmVyS2V5cy0+
a2V5Q29kZSA9IDB4MUI7CisgICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6
QCI6Il0pCisgICAgICAgIG1vZGlmZXJLZXlzLT5rZXlDb2RlID0gMHgyOTsKKyAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjsiXSkKKyAgICAgICAgbW9kaWZlcktleXMt
PmtleUNvZGUgPSAweDI5OworICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5n
OkAiLCJdKQorICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9IDB4MkI7CisKKyAgICBLZXlN
YXBwaW5nRW50cnkgdGFibGVbXSA9IHsKKyAgICAgICAgeyAweDJGLCAweDQxLCAnLicsIG5pbCB9
LAorICAgICAgICB7IDAsICAgIDB4NDMsICcqJywgbmlsIH0sCisgICAgICAgIHsgMCwgICAgMHg0
NSwgJysnLCBuaWwgfSwKKyAgICAgICAgeyAwLCAgICAweDQ3LCBOU0NsZWFyTGluZUZ1bmN0aW9u
S2V5LCBAImNsZWFyIiB9LAorICAgICAgICB7IDB4MkMsIDB4NEIsICcvJywgbmlsIH0sCisgICAg
ICAgIHsgMCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKKyAgICAgICAgeyAweDFCLCAweDRFLCAn
LScsIG5pbCB9LAorICAgICAgICB7IDB4MTgsIDB4NTEsICc9JywgbmlsIH0sCisgICAgICAgIHsg
MHgxRCwgMHg1MiwgJzAnLCBuaWwgfSwKKyAgICAgICAgeyAweDEyLCAweDUzLCAnMScsIG5pbCB9
LAorICAgICAgICB7IDB4MTMsIDB4NTQsICcyJywgbmlsIH0sCisgICAgICAgIHsgMHgxNCwgMHg1
NSwgJzMnLCBuaWwgfSwKKyAgICAgICAgeyAweDE1LCAweDU2LCAnNCcsIG5pbCB9LAorICAgICAg
ICB7IDB4MTcsIDB4NTcsICc1JywgbmlsIH0sCisgICAgICAgIHsgMHgxNiwgMHg1OCwgJzYnLCBu
aWwgfSwKKyAgICAgICAgeyAweDFBLCAweDU5LCAnNycsIG5pbCB9LAorICAgICAgICB7IDB4MUMs
IDB4NUIsICc4JywgbmlsIH0sCisgICAgICAgIHsgMHgxOSwgMHg1QywgJzknLCBuaWwgfSwKKyAg
ICB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxl
KTsgKytpKSB7CisgICAgICAgIE5TU3RyaW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFd
OworICAgICAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3Rl
clN0cmluZ10gfHwgW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVy
TmFtZV0pIHsKKyAgICAgICAgICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9M
T0NBVElPTl9OVU1QQUQqLykKKyAgICAgICAgICAgICAgICBtb2RpZmVyS2V5cy0+a2V5Q29kZSA9
IHRhYmxlW2ldLm1hY051bXBhZEtleUNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgbW9kaWZlcktleXMtPmtleUNvZGUgPSB0YWJsZVtpXS5tYWNLZXlDb2RlOworICAgICAg
ICAgICAgbW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmlu
ZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbW9kaWZlcktl
eXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6bW9kaWZlcktleXMtPmV2ZW50Q2hhcmFjdGVyLmdldCgpXSk7CisK
KyAgICBtb2RpZmVyS2V5cy0+bW9kaWZpZXJGbGFncyA9IDA7CisKKyAgICBpZiAoW2NoYXJhY3Rl
ciBsZW5ndGhdID09IDEgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJBdEluZGV4OjBdID49ICdBJyAm
JiBbY2hhcmFjdGVyIGNoYXJhY3RlckF0SW5kZXg6MF0gPD0gJ1onKSB7CisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgICAgIG1vZGlmZXJLZXlzLT5tb2RpZmllckZsYWdzIHw9IE5TRXZl
bnRNb2RpZmllckZsYWdTaGlmdDsKKyNlbHNlCisgICAgICAgIG1vZGlmZXJLZXlzLT5tb2RpZmll
ckZsYWdzIHw9IFdlYkV2ZW50RmxhZ01hc2tMZWZ0U2hpZnRLZXk7CisjZW5kaWYKKyAgICAgICAg
bW9kaWZlcktleXMtPmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IFtjaGFyYWN0ZXIgbG93
ZXJjYXNlU3RyaW5nXTsKKyAgICB9CisKKyAgICBtb2RpZmVyS2V5cy0+bW9kaWZpZXJGbGFncyB8
PSBtb2RpZmllcnM7CisKKyAgICBpZiAoa2V5TG9jYXRpb24gPT0gMHgwMyAvKkRPTV9LRVlfTE9D
QVRJT05fTlVNUEFEKi8pCisgICAgICAgIG1vZGlmZXJLZXlzLT5tb2RpZmllckZsYWdzIHw9IE5T
RXZlbnRNb2RpZmllckZsYWdOdW1lcmljUGFkOworICAgIAorICAgIHJldHVybiBtb2RpZmVyS2V5
czsKK30KKworQGVuZApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI4Mzc1NikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1
LDcgQEAKIAkJN0NGRjlCQ0IyNTM0QUYxRDAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkM3MjUzNEFG
MUQwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMzRDNjYyMTQ4NzYzNjQw
MEFDMzJFOSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMzRDNjYxMTQ4NzYzNjQwMEFDMzJFOSAv
KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJODA5NzMzOEExNDg3NEE1
QTAwODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODA5NzMzODkxNDg3NEE1QTAw
ODE1NkQ5IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovOyB9OworCQk5
MzJCQjlDMDI3MEUyNzAwMDA5NENDMzMgLyogTW9kaWZpZXJLZXlzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyQkI5QkUyNzBFMjcwMDAwOTRDQzMz
IC8qIE1vZGlmaWVyS2V5cy5tbSAqLzsgfTsKIAkJOTM3NjQxN0EyMTBENzM3MjAwQTNEQUFFIC8q
IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1
bm5lcldpbmRvdy5tbSAqLzsgfTsKIAkJOTNDNzg4MjMyNTBDNkMyRTAwQzBBQTI0IC8qIFJlZnRl
c3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNDNzg4MUYyNTBDNjlFNDAwQzBBQTI0IC8qIFJlZnRlc3RGdW5jdGlvbnMuY3BwICov
OyB9OwogCQk5M0M3ODgzMTI1MEM3MTlGMDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNzg4MzAyNTBDNzE5OTAw
QzBBQTI0IC8qIEpTQmFzaWNzLmNwcCAqLzsgfTsKQEAgLTM2Nyw2ICszNjgsOCBAQAogCQk4NDFD
QzAwRDE4MTE4NUJGMDA0MkU5QjYgLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODQxQ0MwMEUxODExODVCRjAwNDJFOUI2IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5l
eGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViS2l0VGVzdFJ1bm5lcjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTMyQkI5QkQyNzBFMjcwMDAw
OTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBNb2RpZmllcktleXMuaDsgcGF0aCA9IC4uL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTW9kaWZp
ZXJLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMkJCOUJFMjcwRTI3MDAw
MDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBNb2RpZmllcktleXMubW07IHBhdGggPSAuLi9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL01vZGlmaWVyS2V5cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzOEQx
QkUyNTBCRDlERDAwRTgyN0Y2IC8qIERpY3Rpb25hcnlGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGljdGlvbmFyeUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
Mzc2NDE3NjIxMEQ3MzYwMDBBM0RBQUUgLyogV2ViS2l0VGVzdFJ1bm5lcldpbmRvdy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJXaW5k
b3cubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzY0MTc3MjEwRDczNjEwMEEz
REFBRSAvKiBXZWJLaXRUZXN0UnVubmVyV2luZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdFRlc3RSdW5uZXJXaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk1NSw2ICs5NTgsOCBAQAogCQkJCUY0NEE1MzE2MjFCODk5REEwMERCQjk5QyAv
KiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovLAogCQkJCUY0QzM1NzhCMjBFODQ0NDAwMEZB
MDc0OCAvKiBMYXlvdXRUZXN0U3BlbGxDaGVja2VyLmggKi8sCiAJCQkJRjRDMzU3OEEyMEU4NDQ0
MDAwRkEwNzQ4IC8qIExheW91dFRlc3RTcGVsbENoZWNrZXIubW0gKi8sCisJCQkJOTMyQkI5QkQy
NzBFMjcwMDAwOTRDQzMzIC8qIE1vZGlmaWVyS2V5cy5oICovLAorCQkJCTkzMkJCOUJFMjcwRTI3
MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gKi8sCiAJCQkJMkUyQTc2NUIyMzcwQzhBMDAw
OEY5RkZFIC8qIFBsYXRmb3JtVmlld0hlbHBlcnMuaCAqLywKIAkJCQkyRTJBNzY1QzIzNzBDOEEw
MDA4RjlGRkUgLyogUGxhdGZvcm1WaWV3SGVscGVycy5tbSAqLywKIAkJCQlGNDAxMEI3RDI0REEy
MDQ4MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MuaCAqLywKQEAgLTEyNDYsNiArMTI1MSw3IEBACiAJ
CQkJQTE4NTEwM0YxQjlBRTEyOTAwNzQ0QUVCIC8qIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUY0NEE1MzE4MjFCODk5RTUwMERCQjk5QyAvKiBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFEQThBM0QxRTcyMDVDQzAw
RTFERjJGIC8qIElPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTkzMkJCOUMwMjcwRTI3MDAwMDk0Q0MzMyAvKiBNb2RpZmllcktleXMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5M0M3ODgzMjI1MEM3MUI3MDBDMEFBMjQgLyogSlNCYXNpY3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY3M0I1NTExQkE3ODk2ODAwNEIzRUY0IC8qIEpTVUlTY3JpcHRDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMThFNzE4MUQ2QkM0NTYwMDI3RTU0NyAv
KiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHJldmlzaW9uIDI4Mzc1NikKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkV2ZW50U2VuZGVyUHJveHkuaCIKIAogI2lt
cG9ydCAiQ29yZUdyYXBoaWNzVGVzdFNQSS5oIgorI2ltcG9ydCAiTW9kaWZpZXJLZXlzLmgiCiAj
aW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgog
I2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKQEAgLTIzOCwxMyArMjM5LDYgQEAgZW51bSBNb3Vz
ZUJ1dHRvbiB7CiAgICAgTm9Nb3VzZUJ1dHRvbiA9IC0yCiB9OwogCi1zdHJ1Y3QgS2V5TWFwcGlu
Z0VudHJ5IHsKLSAgICBpbnQgbWFjS2V5Q29kZTsKLSAgICBpbnQgbWFjTnVtcGFkS2V5Q29kZTsK
LSAgICB1bmljaGFyIGNoYXJhY3RlcjsKLSAgICBOU1N0cmluZyogY2hhcmFjdGVyTmFtZTsKLX07
Ci0KIHN0YXRpYyBOU0V2ZW50VHlwZSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihp
bnQgYnV0dG9uLCBNb3VzZUFjdGlvbiBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsK
QEAgLTYzMiwyMDMgKzYyNiwxOCBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJk
KGludCBtCiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXks
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKIHsKLSAg
ICBOU1N0cmluZyogY2hhcmFjdGVyID0gdG9XVEZTdHJpbmcoa2V5KTsKLQotICAgIE5TU3RyaW5n
ICpldmVudENoYXJhY3RlciA9IGNoYXJhY3RlcjsKLSAgICB1bnNpZ25lZCBzaG9ydCBrZXlDb2Rl
ID0gMDsKLSAgICBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QXJyb3ciXSkg
ewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKLSAg
ICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNo
IGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4N0I7Ci0gICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QXJyb3ciXSkgewotICAgICAgICBjb25zdCB1
bmljaGFyIGNoID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFj
dGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAg
ICAgIGtleUNvZGUgPSAweDdDOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJ1cEFycm93Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TVXBBcnJv
d0Z1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICBrZXlDb2RlID0gMHg3RTsKLSAg
ICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiZG93bkFycm93Il0pIHsK
LSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRG93bkFycm93RnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDdEOwotICAgIH0gZWxzZSBpZiAoW2NoYXJh
Y3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwYWdlVXAiXSkgewotICAgICAgICBjb25zdCB1bmljaGFy
IGNoID0gTlNQYWdlVXBGdW5jdGlvbktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29k
ZSA9IDB4NzQ7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInBh
Z2VEb3duIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TUGFnZURvd25GdW5jdGlv
bktleTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJh
Y3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzk7Ci0gICAgfSBlbHNl
IGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImhvbWUiXSkgewotICAgICAgICBjb25z
dCB1bmljaGFyIGNoID0gTlNIb21lRnVuY3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAg
IGtleUNvZGUgPSAweDczOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJp
bmc6QCJlbmQiXSkgewotICAgICAgICBjb25zdCB1bmljaGFyIGNoID0gTlNFbmRGdW5jdGlvbktl
eTsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3Rl
cnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4Nzc7Ci0gICAgfSBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImluc2VydCJdKSB7Ci0gICAgICAgIGNvbnN0
IHVuaWNoYXIgY2ggPSBOU0luc2VydEZ1bmN0aW9uS2V5OwotICAgICAgICBldmVudENoYXJhY3Rl
ciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAg
ICBrZXlDb2RlID0gMHg3MjsKLSAgICB9IGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3Ry
aW5nOkAiZGVsZXRlIl0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRGVsZXRlRnVu
Y3Rpb25LZXk7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDc1OwotICAgIH0g
ZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJwcmludFNjcmVlbiJdKSB7Ci0g
ICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSBOU1ByaW50U2NyZWVuRnVuY3Rpb25LZXk7Ci0gICAg
ICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBs
ZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDA7IC8vIFRoZXJlIGlzIG5vIGtub3duIHZp
cnR1YWwga2V5IGNvZGUgZm9yIFByaW50U2NyZWVuLgotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6QCJjeXJpbGxpY1NtYWxsTGV0dGVyQSJdKSB7Ci0gICAgICAgIGNv
bnN0IHVuaWNoYXIgY2ggPSAweDA0MzA7Ci0gICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUg
PSAweDM7IC8vIFNoYXJlcyBrZXkgd2l0aCAiRiIgb24gUnVzc2lhbiBsYXlvdXQuCi0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAImxlZnRDb250cm9sIl0pIHsKLSAg
ICAgICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFMzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAg
a2V5Q29kZSA9IDB4M0I7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmlu
ZzpAImxlZnRTaGlmdCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTE7Ci0g
ICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZj
aCBsZW5ndGg6MV07Ci0gICAgICAgIGtleUNvZGUgPSAweDM4OwotICAgIH0gZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJsZWZ0QWx0Il0pIHsKLSAgICAgICAgY29uc3QgdW5p
Y2hhciBjaCA9IDB4RkZFNzsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0E7
Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0Q29udHJv
bCJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweEZGRTQ7Ci0gICAgICAgIGV2ZW50
Q2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjaCBsZW5ndGg6MV07
Ci0gICAgICAgIGtleUNvZGUgPSAweDNFOwotICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlciBpc0Vx
dWFsVG9TdHJpbmc6QCJyaWdodFNoaWZ0Il0pIHsKLSAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9
IDB4RkZFMjsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5Q29kZSA9IDB4M0M7Ci0gICAgfSBl
bHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAInJpZ2h0QWx0Il0pIHsKLSAgICAg
ICAgY29uc3QgdW5pY2hhciBjaCA9IDB4RkZFODsKLSAgICAgICAgZXZlbnRDaGFyYWN0ZXIgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoIGxlbmd0aDoxXTsKLSAgICAgICAga2V5
Q29kZSA9IDB4M0Q7Ci0gICAgfSBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImVzY2FwZSJdKSB7Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgY2ggPSAweDFCOwotICAgICAgICBl
dmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomY2ggbGVuZ3Ro
OjFdOwotICAgICAgICBrZXlDb2RlID0gMHgzNTsKLSAgICB9Ci0KLSAgICAvLyBDb21wYXJlIHRo
ZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZnVuY3Rpb24ta2V5IG5hbWVzIGRlZmluZWQgYnkgdGhl
IERPTSBzcGVjIChpLmUuICJGMSIsLi4uLCJGMjQiKS4KLSAgICAvLyBJZiB0aGUgaW5wdXQgc3Ry
aW5nIGlzIGEgZnVuY3Rpb24ta2V5IG5hbWUsIHNldCBpdHMga2V5IGNvZGUuCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8PSAyNDsgaSsrKSB7Ci0gICAgICAgIGlmIChbY2hhcmFjdGVyIGlz
RXF1YWxUb1N0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkYldSIsIGldXSkgewot
ICAgICAgICAgICAgY29uc3QgdW5pY2hhciBjaCA9IE5TRjFGdW5jdGlvbktleSArIChpIC0gMSk7
Ci0gICAgICAgICAgICBldmVudENoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomY2ggbGVuZ3RoOjFdOwotICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSAxOiBrZXlDb2RlID0gMHg3QTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAyOiBrZXlDb2RlID0gMHg3ODsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAzOiBrZXlD
b2RlID0gMHg2MzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBrZXlDb2RlID0gMHg3
NjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA1OiBrZXlDb2RlID0gMHg2MDsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSA2OiBrZXlDb2RlID0gMHg2MTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSA3OiBrZXlDb2RlID0gMHg2MjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSA4OiBrZXlDb2RlID0gMHg2NDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSA5OiBr
ZXlDb2RlID0gMHg2NTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxMDoga2V5Q29kZSA9
IDB4NkQ7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTE6IGtleUNvZGUgPSAweDY3OyBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDEyOiBrZXlDb2RlID0gMHg2RjsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSAxMzoga2V5Q29kZSA9IDB4Njk7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgMTQ6IGtleUNvZGUgPSAweDZCOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIDE1OiBrZXlDb2RlID0gMHg3MTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNjog
a2V5Q29kZSA9IDB4NkE7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMTc6IGtleUNvZGUg
PSAweDQwOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIDE4OiBrZXlDb2RlID0gMHg0Rjsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOToga2V5Q29kZSA9IDB4NTA7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgMjA6IGtleUNvZGUgPSAweDVBOyBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBObyBrZXlDb2RlIGlzIHNl
dCBmb3IgbW9zdCBrZXlzLgotICAgIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlx0
Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDMwOwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNF
cXVhbFRvU3RyaW5nOkAiICJdKQotICAgICAgICBrZXlDb2RlID0gMHgzMTsKLSAgICBlbHNlIGlm
IChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIlxyIl0pCi0gICAgICAgIGtleUNvZGUgPSAw
eDI0OwotICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXG4iXSkKLSAg
ICAgICAga2V5Q29kZSA9IDB4NEM7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFsVG9T
dHJpbmc6QCJceDgiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MzM7Ci0gICAgZWxzZSBpZiAoW2No
YXJhY3RlciBpc0VxdWFsVG9TdHJpbmc6QCJhIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDAwOwot
ICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiYiJdKQotICAgICAgICBr
ZXlDb2RlID0gMHgwQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpA
ImQiXSkKLSAgICAgICAga2V5Q29kZSA9IDB4MDI7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6QCJlIl0pCi0gICAgICAgIGtleUNvZGUgPSAweDBFOwotICAgIGVsc2Ug
aWYgKFtjaGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiXHgxYiJdKQotICAgICAgICBrZXlDb2Rl
ID0gMHgxQjsKLSAgICBlbHNlIGlmIChbY2hhcmFjdGVyIGlzRXF1YWxUb1N0cmluZzpAIjoiXSkK
LSAgICAgICAga2V5Q29kZSA9IDB4Mjk7Ci0gICAgZWxzZSBpZiAoW2NoYXJhY3RlciBpc0VxdWFs
VG9TdHJpbmc6QCI7Il0pCi0gICAgICAgIGtleUNvZGUgPSAweDI5OwotICAgIGVsc2UgaWYgKFtj
aGFyYWN0ZXIgaXNFcXVhbFRvU3RyaW5nOkAiLCJdKQotICAgICAgICBrZXlDb2RlID0gMHgyQjsK
LQotICAgIEtleU1hcHBpbmdFbnRyeSB0YWJsZVtdID0gewotICAgICAgICB7MHgyRiwgMHg0MSwg
Jy4nLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0MywgJyonLCBuaWx9LAotICAgICAgICB7MCwg
ICAgMHg0NSwgJysnLCBuaWx9LAotICAgICAgICB7MCwgICAgMHg0NywgTlNDbGVhckxpbmVGdW5j
dGlvbktleSwgQCJjbGVhciJ9LAotICAgICAgICB7MHgyQywgMHg0QiwgJy8nLCBuaWx9LAotICAg
ICAgICB7MCwgICAgMHg0QywgMywgQCJlbnRlciIgfSwKLSAgICAgICAgezB4MUIsIDB4NEUsICct
JywgbmlsfSwKLSAgICAgICAgezB4MTgsIDB4NTEsICc9JywgbmlsfSwKLSAgICAgICAgezB4MUQs
IDB4NTIsICcwJywgbmlsfSwKLSAgICAgICAgezB4MTIsIDB4NTMsICcxJywgbmlsfSwKLSAgICAg
ICAgezB4MTMsIDB4NTQsICcyJywgbmlsfSwKLSAgICAgICAgezB4MTQsIDB4NTUsICczJywgbmls
fSwKLSAgICAgICAgezB4MTUsIDB4NTYsICc0JywgbmlsfSwKLSAgICAgICAgezB4MTcsIDB4NTcs
ICc1JywgbmlsfSwKLSAgICAgICAgezB4MTYsIDB4NTgsICc2JywgbmlsfSwKLSAgICAgICAgezB4
MUEsIDB4NTksICc3JywgbmlsfSwKLSAgICAgICAgezB4MUMsIDB4NUIsICc4JywgbmlsfSwKLSAg
ICAgICAgezB4MTksIDB4NUMsICc5JywgbmlsfSwKLSAgICB9OwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHRhYmxlKTsgKytpKSB7Ci0gICAgICAgIE5TU3Ry
aW5nKiBjdXJyZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZ0YWJsZVtpXS5jaGFyYWN0ZXIgbGVuZ3RoOjFdOwotICAgICAgICBpZiAoW2NoYXJhY3Rl
ciBpc0VxdWFsVG9TdHJpbmc6Y3VycmVudENoYXJhY3RlclN0cmluZ10gfHwgW2NoYXJhY3RlciBp
c0VxdWFsVG9TdHJpbmc6dGFibGVbaV0uY2hhcmFjdGVyTmFtZV0pIHsKLSAgICAgICAgICAgIGlm
IChrZXlMb2NhdGlvbiA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKLSAgICAg
ICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjTnVtcGFkS2V5Q29kZTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBrZXlDb2RlID0gdGFibGVbaV0ubWFjS2V5Q29kZTsK
LSAgICAgICAgICAgIGV2ZW50Q2hhcmFjdGVyID0gY3VycmVudENoYXJhY3RlclN0cmluZzsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50Q2hhcmFjdGVyOwotCi0gICAgaW50IG1vZGlm
aWVyRmxhZ3MgPSAwOwotCi0gICAgaWYgKFtjaGFyYWN0ZXIgbGVuZ3RoXSA9PSAxICYmIFtjaGFy
YWN0ZXIgY2hhcmFjdGVyQXRJbmRleDowXSA+PSAnQScgJiYgW2NoYXJhY3RlciBjaGFyYWN0ZXJB
dEluZGV4OjBdIDw9ICdaJykgewotICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TRXZlbnRNb2Rp
ZmllckZsYWdTaGlmdDsKLSAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2No
YXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOwotICAgIH0KLQotICAgIG1vZGlmaWVyRmxhZ3MgfD0g
YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycyk7Ci0KLSAgICBpZiAoa2V5TG9jYXRpb24gPT0g
MHgwMyAvKkRPTV9LRVlfTE9DQVRJT05fTlVNUEFEKi8pCi0gICAgICAgIG1vZGlmaWVyRmxhZ3Mg
fD0gTlNFdmVudE1vZGlmaWVyRmxhZ051bWVyaWNQYWQ7CisgICAgUmV0YWluUHRyPE1vZGlmaWVy
S2V5cz4gbW9kaWZpZXJLZXlzID0gW01vZGlmaWVyS2V5cyBtb2RpZmllcktleXNXaXRoS2V5OnRv
V1RGU3RyaW5nKGtleSkgbW9kaWZpZXJzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpIGtl
eUxvY2F0aW9uOmtleUxvY2F0aW9uXTsKIAogICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQg
a2V5RXZlbnRXaXRoVHlwZTpOU0V2ZW50VHlwZUtleURvd24KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBt
b2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcDphYnNvbHV0ZVRpbWVGb3JFdmVudFRpbWUoY3VycmVudEV2ZW50VGltZSgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQotICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgotICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycwotICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCi0gICAgICAg
ICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdOworICAgICAgICBsb2NhdGlvbjpOU01h
a2VQb2ludCg1LCA1KQorICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyS2V5cy0+bW9kaWZp
ZXJGbGFncworICAgICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJl
bnRFdmVudFRpbWUoKSkKKyAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KKyAgICAgICAgY29u
dGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAgICAgIGNoYXJhY3Rl
cnM6bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM6bW9kaWZpZXJLZXlzLT5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMuZ2V0KCkKKyAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgIGtleUNvZGU6bW9kaWZpZXJL
ZXlzLT5rZXlDb2RlXTsKIAogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAg
ICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmly
c3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRdOwpAQCAtODM2LDE0ICs2NDUsMTQgQEAgdm9pZCBF
dmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogCiAgICAgZXZlbnQgPSBbTlNFdmVu
dCBrZXlFdmVudFdpdGhUeXBlOk5TRXZlbnRUeXBlS2V5VXAKICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBt
b2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm
aWVyRmxhZ3M6bW9kaWZpZXJLZXlzLT5tb2RpZmllckZsYWdzCiAgICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lc3RhbXA6YWJzb2x1dGVUaW1lRm9yRXZlbnRUaW1lKGN1cnJlbnRFdmVudFRpbWUo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxl
ci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6
bW9kaWZpZXJLZXlzLT5ldmVudENoYXJhY3Rlci5nZXQoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOm1vZGlmaWVyS2V5cy0+Y2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6
Tk8KLSAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBrZXlDb2RlOm1vZGlmaWVyS2V5cy0+a2V5Q29kZV07CiAKICAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>