<?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>188239</bug_id>
          
          <creation_ts>2018-08-01 14:44:01 -0700</creation_ts>
          <short_desc>Using the keyboard arrow keys to scroll a webpage is very slow, not smooth, takes too long</short_desc>
          <delta_ts>2018-08-01 17:30:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cying</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1447005</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-01 14:44:01 -0700</bug_when>
    <thetext>Using the keyboard arrow keys to scroll a webpage is very slow, not smooth, takes too long</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447006</commentid>
    <comment_count>1</comment_count>
      <attachid>346302</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-01 14:44:56 -0700</bug_when>
    <thetext>Created attachment 346302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447007</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-01 14:45:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/22997654&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447016</commentid>
    <comment_count>3</comment_count>
      <attachid>346304</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-01 14:59:02 -0700</bug_when>
    <thetext>Created attachment 346304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447026</commentid>
    <comment_count>4</comment_count>
      <attachid>346304</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-08-01 15:34:24 -0700</bug_when>
    <thetext>Comment on attachment 346304
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3647
&gt; +    if ([_keyboardScrollingAnimator handleKeyEvent:theEvent])
&gt; +        return;

If a page does preventDefault on arrow key events, should it be able to override keyboard scrolling?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3753
&gt; +        return false;

NO

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3756
&gt; +        return false;

NO

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3758
&gt; +    return true;

YES

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:114
&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputUpArrow])

Blank line above please.

This code is pretty hard to read. Would be nice to be able to just have one call to computeOffset().

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:136
&gt; +

Remove blank line.

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:141
&gt; +    _scrollOffsetPerIncrement = *offset;

or offset.value(); that doesn&apos;t make me go looking for pointers.

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:174
&gt; +    _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkFired:)];

OK to not retain this?

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:187
&gt; +    const CFTimeInterval secondsPerScrollIncrement = 0.05; // Seconds it should take to cover one increment when at full speed.

Odd that this isn&apos;t some multiple of 16.667ms?

&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:188
&gt; +    const float maximumVelocity = 2000; // Maximum velocity in pixels per second. Empirically determined.

How well does this work on differently sized devices?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447040</commentid>
    <comment_count>5</comment_count>
      <attachid>346304</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-01 16:20:37 -0700</bug_when>
    <thetext>Comment on attachment 346304
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:114
&gt;&gt; +    if ([charactersIgnoringModifiers isEqualToString:UIKeyInputUpArrow])
&gt; 
&gt; Blank line above please.
&gt; 
&gt; This code is pretty hard to read. Would be nice to be able to just have one call to computeOffset().

I rewrote this, see how you like it.

&gt;&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:174
&gt;&gt; +    _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkFired:)];
&gt; 
&gt; OK to not retain this?

It sits in a retainptr. This is autoreleased so it&apos;s all good.

&gt;&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:187
&gt;&gt; +    const CFTimeInterval secondsPerScrollIncrement = 0.05; // Seconds it should take to cover one increment when at full speed.
&gt; 
&gt; Odd that this isn&apos;t some multiple of 16.667ms?

It is exactly 3 frames @ 60fps, actually! That was unintentional.

&gt;&gt; Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm:188
&gt;&gt; +    const float maximumVelocity = 2000; // Maximum velocity in pixels per second. Empirically determined.
&gt; 
&gt; How well does this work on differently sized devices?

We&apos;ll probably need to tune this, because I don&apos;t know that what feels reasonable to me makes sense. That said, I don&apos;t think you hit this cap on iPhone, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447041</commentid>
    <comment_count>6</comment_count>
      <attachid>346312</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-01 16:24:47 -0700</bug_when>
    <thetext>Created attachment 346312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447047</commentid>
    <comment_count>7</comment_count>
      <attachid>346313</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-01 16:47:29 -0700</bug_when>
    <thetext>Created attachment 346313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447051</commentid>
    <comment_count>8</comment_count>
      <attachid>346313</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-01 17:30:17 -0700</bug_when>
    <thetext>Comment on attachment 346313
Patch

Clearing flags on attachment: 346313

Committed r234488: &lt;https://trac.webkit.org/changeset/234488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447052</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-01 17:30:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346302</attachid>
            <date>2018-08-01 14:44:56 -0700</date>
            <delta_ts>2018-08-01 14:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188239-20180801144455.patch</filename>
            <type>text/plain</type>
            <size>33534</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBkN2JiZDk2
OWYwNzBlZTgwODMyNmRhMzM0NGExMzhhZGRiOWJlZDk5Li4xNTRjNzgzNDFlNjgzZmU3MzM0ZDJh
YmYzMmFkMTkxOGQ5ZDY1YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0wOC0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2luZyB0aGUga2V5Ym9hcmQgYXJyb3cga2V5cyB0byBzY3JvbGwgYSB3ZWJwYWdlIGlz
IHZlcnkgc2xvdywgbm90IHNtb290aCwgdGFrZXMgdG9vIGxvbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIzOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjI5OTc2NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaDoKKyAgICAgICAgQWRkIGEg
cGllY2Ugb2YgU1BJLgorCiAyMDE4LTA3LTMwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmZXRjaGluZyBhbmQgcmVtb3ZlIHR5cGUg
IF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3Yjk3YTRmY2M4ZjczNTQx
NGMwOGMzM2ZlYTFiM2M4NmQxNmNlZDA2Li5kYjAzM2RhOTgzZmM0ZGNiZmJhMGJhNGYwYmY3YTM5
MzMzZmUxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE4LTA4LTAxICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIHRoZSBrZXli
b2FyZCBhcnJvdyBrZXlzIHRvIHNjcm9sbCBhIHdlYnBhZ2UgaXMgdmVyeSBzbG93LCBub3Qgc21v
b3RoLCB0YWtlcyB0b28gbG9uZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4MjM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjk5NzY1ND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IGRlcGVuZGluZyBvbiBrZXkgcmVwZWF0IHRvIGRyaXZlIHNjcm9sbGluZyB3aXRoIGFycm93IGtl
eXMgaGVsZCBkb3duLAorICAgICAgICBydW4gYSBkaXNwbGF5IGxpbmsgdGhhdCBhbmltYXRlcyB0
aGUgc2Nyb2xsLiBXZSBzdGlsbCBkbyBhIHNpbmdsZSBkaXNjcmV0ZSBzY3JvbGwKKyAgICAgICAg
Zmlyc3QgKHNvIHRoYXQgeW91IGNhbiB0YXAgdGhlIGtleSBhbmQgc2hpZnQgYnkgbGluZS9wYWdl
KSwgYnV0IHRoZW4gb24gdGhlIGZpcnN0CisgICAgICAgIHJlcGVhdCB3ZSByYW1wIHVwIHRvIGEg
Y29uc3RhbnQgdmVsb2NpdHkgZGV0ZXJtaW5lZCBieSB0aGUgZGVzaXJlZCBpbmNyZW1lbnQsCisg
ICAgICAgIHN0b3BwaW5nIHdoZW4gdGhlIGtleSBpcyBsaWZ0ZWQgb3IgYSBkaWZmZXJlbnQga2V5
IGlzIHByZXNzZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6YW5pbWF0ZWQ6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsQnlDb250ZW50T2Zmc2V0Ol0pOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgQWRkIGFuaW1hdGVkIHBhcmFtZXRlciB0byBzY3JvbGxCeUNvbnRlbnRPZmZzZXQs
IGFuZCBwbHVtYiBpdCB0aHJvdWdoIHRvIFVJU2Nyb2xsVmlldy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgIEFkZCBhIFdLS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBtZW1iZXIuCisgICAgICAgIENvbmZvcm0gdG8gV0tLZXli
b2FyZFNjcm9sbGFibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9u
XSk6CisgICAgICAgIEluc3RhbGwgdGhlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci4KKwor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAgICAgICBV
bmluc3RhbGwgdGhlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci4KKworICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IHVuc2NhbGVkVmlld10pOgorICAgICAgICBGaXggYSBzdHVwaWQgc3R5bGUg
bml0LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFuZGxlS2V5V2ViRXZlbnQ6XSk6Cisg
ICAgICAgIEdpdmUgV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRoZSBmaXJzdCBzaG90IGF0
IGluY29taW5nIGtleWJvYXJkIGV2ZW50cy4KKyAgICAgICAgSXQgd2lsbCBvbmx5IGNvbnN1bWUg
ZXZlbnRzIGhlcmUgaWYgaXQncyBhbHJlYWR5IHBlcmZvcm1pbmcgYSBzY3JvbGxpbmcgYW5pbWF0
aW9uCisgICAgICAgIChiZWNhdXNlIG90aGVyd2lzZSB0aGV5IHNob3VsZCBnbyBzdHJhaWdodCB0
aHJvdWdoIHRvIHRoZSBwYWdlKS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnRlcnBy
ZXRLZXlFdmVudDppc0NoYXJFdmVudDpdKToKKyAgICAgICAgR2l2ZSBXS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IgYSBzaG90IGF0IGhhbmRsaW5nIGtleWJvYXJkIGV2ZW50cyB0aGF0CisgICAg
ICAgIHRoZSB3ZWIgY29udGVudCBkaWQgbm90IGhhbmRsZS4gV2Ugd2lsbCBvbmx5IHN0YXJ0IGEg
c2Nyb2xsaW5nIGFuaW1hdGlvbgorICAgICAgICBpZiB0aGUgcGFnZSBkaWQgbm90IGhhbmRsZSBh
biBldmVudCB0aGF0IHdvdWxkIHN0YXJ0IGEgc2Nyb2xsLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgaXNLZXlib2FyZFNjcm9sbGFibGVdKToKKyAgICAgICAgUGFydCBvZiBXS0tleWJvYXJk
U2Nyb2xsYWJsZTsgb25seSByZXBvcnQgb3Vyc2VsdmVzIGFzIHNjcm9sbGFibGUgaWYKKyAgICAg
ICAgd2Ugd291bGQgcHJldmlvdXNseSBoYXZlIGFsbG93ZWQgc2Nyb2xsaW5nIGZyb20ga2V5Ym9h
cmQgZXZlbnRzIChpZgorICAgICAgICB3ZSdyZSBub3QgaW4gY29udGVudGVkaXRhYmxlLCBhbmQg
ZG9uJ3QgaGF2ZSBhIDxzZWxlY3Q+IGZvY3VzZWQpLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgZGlzdGFuY2VGb3JTY3JvbGxpbmdJbmNyZW1lbnQ6XSk6CisgICAgICAgIFBhcnQgb2YgV0tL
ZXlib2FyZFNjcm9sbGFibGU7IGNvbXB1dGUgdGhlIGRpc3RhbmNlIGZvciBlYWNoIHNjcm9sbGlu
ZyBpbmNyZW1lbnQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzY3JvbGxCeUNvbnRlbnRP
ZmZzZXQ6YW5pbWF0ZWQ6XSk6CisgICAgICAgIFBhcnQgb2YgV0tLZXlib2FyZFNjcm9sbGFibGU7
IHBsdW1iIHNjcm9sbHMgdXAgdG8gV0tXZWJWaWV3LgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3Njcm9sbE9mZnNldEZvckV2ZW50Ol0pOiBNb3ZlZCB0byBXS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IubW0uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvciBpbml0XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBpbml0V2l0aFNjcm9sbGFibGU6XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciBfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6XSk6CisgICAgICAgIENvbXB1dGUgdGhlIHNjcm9s
bCBvZmZzZXQgZ2l2ZW4gYSBwYXJ0aWN1bGFyIGV2ZW50LiBUaGlzIGlzIG1vdmVkIGZyb20gV0tD
b250ZW50VmlldzsKKyAgICAgICAgb3RoZXJ3aXNlIHRoZSBwcmltYXJ5IGNoYW5nZSBpcyB0aGF0
IGl0IG5vdyBhc2tzIHRoZSBXS0tleWJvYXJkU2Nyb2xsYWJsZQorICAgICAgICBmb3IgdGhlIGRp
c3RhbmNlIGluc3RlYWQgb2YgY29tcHV0aW5nIGl0IGRpcmVjdGx5LgorCisgICAgICAgICgtW1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgSWYg
d2UncmUgY3VycmVudGx5IGluIHRoZSBpbml0aWFsIHN0YXRlIChXYWl0aW5nRm9yRmlyc3RFdmVu
dCksIGFuZAorICAgICAgICBhIGdpdmVuIGV2ZW50IHNob3VsZCBzdGFydCBhIHNjcm9sbCwgdHJh
bnNpdGlvbiBpbnRvIFdhaXRpbmdGb3JSZXBlYXQsCisgICAgICAgIGFuZCBkbyBhIHNpbmdsZSBh
bmltYXRlZCBzY3JvbGwgb2YgdGhlIGFwcHJvcHJpYXRlIGRpc3RhbmNlLgorCisgICAgICAgICgt
W1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBoYW5kbGVLZXlFdmVudDpdKToKKyAgICAgICAg
SWYgdGhpcyBrZXkgZXZlbnQgc2hvdWxkIHRlcm1pbmF0ZSBhIHNjcm9sbCAoYmVjYXVzZSBpdCBp
cyBlaXRoZXIgYSBrZXl1cAorICAgICAgICBvciBhIGRpZmZlcmVudCBrZXkgdGhhbiB0aGUgY3Vy
cmVudCBzY3JvbGwpLCBzaHV0IGRvd24gYW55IHJ1bm5pbmcgYW5pbWF0aW9ucy4KKworICAgICAg
ICBJZiB0aGlzIGlzIHRoZSBmaXJzdCBrZXkgcmVwZWF0IGFmdGVyIHRoZSBpbml0aWFsIHNjcm9s
bCwgc3RhcnQgYSBzY3JvbGxpbmcKKyAgICAgICAgYW5pbWF0aW9uLgorCisgICAgICAgIEVhdCB0
aGUgZXZlbnQgaWYgaXQgZWl0aGVyIHN0YXJ0ZWQgb3IgY29udGludWVkIGEgc2Nyb2xsLgorCisg
ICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBzdGFydEFuaW1hdGVkU2Nyb2xs
XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBzdG9wQW5pbWF0ZWRT
Y3JvbGxdKToKKyAgICAgICAgSGVscGVycyB0byBzdGFydCBhbmQgc3RvcCB0aGUgZGlzcGxheSBs
aW5rIGFuZCBkbyBzb21lIGJvb2trZWVwaW5nLgorCisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvciBkaXNwbGF5TGlua0ZpcmVkOl0pOgorICAgICAgICBBc2sgdGhlIFdLS2V5
Ym9hcmRTY3JvbGxhYmxlIHRvIHNjcm9sbCB0aGUgY29udGVudCBiYXNlZCBvbiB0aGUgZnJhbWUg
dGltZSwKKyAgICAgICAgYW4gYWNjZWxlcmF0aW9uIGN1cnZlLCBhbmQgdGhlIGN1cnJlbnQgYW5p
bWF0aW9uJ3Mgc2Nyb2xsaW5nIGluY3JlbWVudC4KKworICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA4LTAxICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0
NDQzIGFuZCByMjM0NDQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
UXVhcnR6Q29yZVNQSS5oCmluZGV4IDY3ZTA4ZDUxODJiYTQwNzRkYjA2ZTg2NzRiM2JjOTkxMTJh
ZmRiODkuLjZhMGVjYTBhYjUwYWViZmFiYWY1NjFmMWU1MzJiN2Y0NDM2MzkxZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FDb250ZXh0Lmg+CiAjaW1wb3J0IDxR
dWFydHpDb3JlL0NBTGF5ZXJIb3N0Lmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJQcml2
YXRlLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NBTWVkaWFUaW1pbmdGdW5jdGlvblByaXZhdGUu
aD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4KIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTE1Myw2ICsxNTQsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIEBwcm9wZXJ0eSBD
R0Zsb2F0IHZlbG9jaXR5OwogQGVuZAogCitAaW50ZXJmYWNlIENBTWVkaWFUaW1pbmdGdW5jdGlv
biAoKQorLSAoZmxvYXQpX3NvbHZlRm9ySW5wdXQ6KGZsb2F0KXQ7CitAZW5kCisKICNlbmRpZiAv
LyBfX09CSkNfXwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IDUzZGY5MTU3MTdkY2EzNDBmYzdjYTM2NjE2YTczNWY3NDE5
ZmZlZWMuLmIxMGEwMWMwNGE3MTgwMDEyZGU5YzY1MWQwNzQ2MWE0NDI0YmNhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjExMyw3
ICsyMTEzLDcgQEAgLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFy
Z2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KWNv
bnRlbnRPZmZzZXREZWx0YQorLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3Jl
OjpGbG9hdFBvaW50KWNvbnRlbnRPZmZzZXREZWx0YSBhbmltYXRlZDooQk9PTClhbmltYXRlZAog
ewogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2NhbGVkT2Zmc2V0RGVsdGEgPSBjb250ZW50T2Zm
c2V0RGVsdGE7CiAgICAgQ0dGbG9hdCB6b29tU2NhbGUgPSBjb250ZW50Wm9vbVNjYWxlKHNlbGYp
OwpAQCAtMjEyOCw3ICsyMTI4LDcgQEAgLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihX
ZWJDb3JlOjpGbG9hdFBvaW50KWNvbnRlbnRPZmZzZXREZWx0YQogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OiBzY3Jv
bGxpbmcgdG8gIiA8PCBXZWJDb3JlOjpGbG9hdFBvaW50KGJvdW5kZWRPZmZzZXQpKTsKIAotICAg
IFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmJvdW5kZWRPZmZzZXQgYW5pbWF0ZWQ6WUVT
XTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpib3VuZGVkT2Zmc2V0IGFuaW1h
dGVkOmFuaW1hdGVkXTsKIH0KIAogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KFdlYkNvcmU6
OkZsb2F0UG9pbnQpb3JpZ2luIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4
IGFhYjMwMTBmNWQ4MzFmMTkwYjlhOTQ0YWYyNjc2Zjg3MWM1N2QwYmUuLjNhMDU0MWM0MTA0MTdj
YjBjYjhkZGRkZTY5ZWVlMjI0NGNmOWRhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC05MSw3ICs5MSw3IEBA
IHN0cnVjdCBQcmludEluZm87CiAKIC0gKHZvaWQpX3Njcm9sbFRvQ29udGVudFNjcm9sbFBvc2l0
aW9uOihXZWJDb3JlOjpGbG9hdFBvaW50KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2Vi
Q29yZTo6SW50UG9pbnQpc2Nyb2xsT3JpZ2luOwogLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJD
b3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3Jp
Z2luIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwot
LSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNl
dDsKKy0gKHZvaWQpX3Njcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClv
ZmZzZXQgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7CiAtICh2b2lkKV96b29tVG9Gb2N1c1JlY3Q6
KFdlYkNvcmU6OkZsb2F0UmVjdClmb2N1c2VkRWxlbWVudFJlY3Qgc2VsZWN0aW9uUmVjdDooV2Vi
Q29yZTo6RmxvYXRSZWN0KXNlbGVjdGlvblJlY3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMgaW5zaWRl
Rml4ZWQ6KEJPT0wpaW5zaWRlRml4ZWQgZm9udFNpemU6KGZsb2F0KWZvbnRTaXplIG1pbmltdW1T
Y2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2Nh
bGUgYWxsb3dTY2FsaW5nOihCT09MKWFsbG93U2NhbGluZyBmb3JjZVNjcm9sbDooQk9PTClmb3Jj
ZVNjcm9sbDsKIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRS
ZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6
KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4
aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxv
YXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KFdl
YkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCmluZGV4IGY4ZTQ1ODRlYmVmYzhkOGI4ZTcyNjJlYjhmYzQwMGI2MWRjZDE0NTcuLjMxYTYy
ODNiMjhjMTFmMGU3ZDk0MjhjMjU4OWNmNTk2NmYzZDM4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbXBvcnQgIldLQWlyUGxheVJvdXRlUGlja2VyLmgiCiAjaW1wb3J0ICJX
S0ZpbGVVcGxvYWRQYW5lbC5oIgogI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgorI2ltcG9y
dCAiV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgiCiAjaW1wb3J0ICJXS1N5bnRoZXRpY0Ns
aWNrVGFwR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgpAQCAtMjE1LDYgKzIxNiw4IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXI+IF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlcjsKIAorICAgIFJldGFp
blB0cjxXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I+IF9rZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yOworCiAgICAgQk9PTCBfaXNFZGl0YWJsZTsKICAgICBCT09MIF9zaG93aW5nVGV4dFN0eWxl
T3B0aW9uczsKICAgICBCT09MIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb247CkBAIC0yNjAs
NyArMjYzLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAogQGVuZAogCi1AaW50
ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1cmVSZWNvZ25pemVy
RGVsZWdhdGUsIFVJVGV4dEF1dG9zY3JvbGxpbmcsIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudCwg
VUlUZXh0SW5wdXRQcml2YXRlLCBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0ZSwgVUlXZWJUb3Vj
aEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90
b2NvbCwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlLCBXS0ZpbGVVcGxvYWRQYW5lbERl
bGVnYXRlCitAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1
cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJVGV4dEF1dG9zY3JvbGxpbmcsIFVJVGV4dElucHV0TXVs
dGlEb2N1bWVudCwgVUlUZXh0SW5wdXRQcml2YXRlLCBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0
ZSwgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJV0tJbnRlcmFj
dGlvblZpZXdQcm90b2NvbCwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlLCBXS0ZpbGVV
cGxvYWRQYW5lbERlbGVnYXRlLCBXS0tleWJvYXJkU2Nyb2xsYWJsZQogI2lmIEVOQUJMRShEQVRB
X0lOVEVSQUNUSU9OKQogICAgICwgVUlEcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZSwgVUlEcm9wSW50
ZXJhY3Rpb25EZWxlZ2F0ZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhMWE0ZGM4YjYwNTZh
OGZlNmQ2OTQzMGQwZDQ2NjllMWNlNjcwMDgyLi40MTk5Y2YyZDk3NzdiMjMwZGNiNGQzYzliOTVj
NDJkMWUxYTBlZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTYyMiw2ICs2MjIsOCBAQCAtICh2b2lk
KXNldHVwSW50ZXJhY3Rpb24KICAgICAgICAgW3NlbGYuc3VwZXJ2aWV3IGFkZFN1YnZpZXc6X2lu
dGVyYWN0aW9uVmlld3NDb250YWluZXJWaWV3LmdldCgpXTsKICAgICB9CiAKKyAgICBfa2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvciA9IGFkb3B0TlMoW1tXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0
b3IgYWxsb2NdIGluaXRXaXRoU2Nyb2xsYWJsZTpzZWxmXSk7CisKICAgICBbc2VsZi5sYXllciBh
ZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ0cmFuc2Zvcm0iIG9wdGlvbnM6TlNLZXlWYWx1
ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwogCiAgICAgX3RvdWNoRXZlbnRH
ZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29n
bml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rvcihfd2ViVG91
Y2hFdmVudHNSZWNvZ25pemVkOikgdG91Y2hEZWxlZ2F0ZTpzZWxmXSk7CkBAIC03NzgsNiArNzgw
LDkgQEAgLSAodm9pZCljbGVhbnVwSW50ZXJhY3Rpb24KICAgICAKICAgICBfaW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXIgPSBudWxscHRyOwogICAgIF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiA9IHsg
fTsKKyAgICAKKyAgICBbX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgaW52YWxpZGF0ZV07Cisg
ICAgX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgPSBuaWw7CiB9CiAKIC0gKHZvaWQpX3JlbW92
ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKQEAgLTgwOCw3ICs4MTMsNyBAQCAtICh2b2lkKV9h
ZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAjZW5kaWYKIH0KIAotLSAoVUlWaWV3Kil1bnNj
YWxlZFZpZXcKKy0gKFVJVmlldyAqKXVuc2NhbGVkVmlldwogewogICAgIHJldHVybiBfaW50ZXJh
Y3Rpb25WaWV3c0NvbnRhaW5lclZpZXcuZ2V0KCk7CiB9CkBAIC0zNjM4LDYgKzM2NDMsOSBAQCAt
ICh2b2lkKWhhbmRsZUtleUV2ZW50Oig6OlVJRXZlbnQgKilldmVudAogCiAtICh2b2lkKWhhbmRs
ZUtleVdlYkV2ZW50Oig6OldlYkV2ZW50ICopdGhlRXZlbnQKIHsKKyAgICBpZiAoW19rZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yIGhhbmRsZUtleUV2ZW50OnRoZUV2ZW50XSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgX3BhZ2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCh0aGVFdmVudCkpOwogfQogCkBAIC0zNjc2LDczICszNjg0LDYgQEAgLSAodm9pZClfZGlk
SGFuZGxlS2V5RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudCBldmVudFdhc0hhbmRsZWQ6KEJPT0wp
ZXZlbnRXYXNIYW4KICAgICBfdWlFdmVudEJlaW5nUmVzZW50ID0gbmlsOwogfQogCi0tIChzdGQ6
Om9wdGlvbmFsPEZsb2F0UG9pbnQ+KV9zY3JvbGxPZmZzZXRGb3JFdmVudDooOjpXZWJFdmVudCAq
KWV2ZW50Ci17Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJTcGFjZUtleSA9IDB4MjA7
Ci0KLSAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCi0gICAgaWYgKF9hc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5lbGVtZW50VHlwZSA9PSBJbnB1dFR5cGU6OlNlbGVjdCkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgPSBldmVudC5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM7Ci0gICAgaWYgKCFjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMubGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgZW51bSBTY3JvbGxpbmdJbmNyZW1lbnQgeyBEb2N1bWVudCwgUGFnZSwgTGluZSB9
OwotICAgIGVudW0gU2Nyb2xsaW5nRGlyZWN0aW9uIHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07
Ci0KLSAgICBhdXRvIGNvbXB1dGVPZmZzZXQgPSBeKFNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1l
bnQsIFNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsKLSAgICAgICAgYm9vbCBpc0hvcml6
b250YWwgPSAoZGlyZWN0aW9uID09IExlZnQgfHwgZGlyZWN0aW9uID09IFJpZ2h0KTsKLQotICAg
ICAgICBDR0Zsb2F0IHNjcm9sbERpc3RhbmNlID0gXiBDR0Zsb2F0IHsKLSAgICAgICAgICAgIHN3
aXRjaCAoaW5jcmVtZW50KSB7Ci0gICAgICAgICAgICBjYXNlIERvY3VtZW50OgotICAgICAgICAg
ICAgICAgIEFTU0VSVCghaXNIb3Jpem9udGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5ib3VuZHMuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBjYXNlIFBhZ2U6Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwotICAgICAgICAgICAgICAgIHJldHVybiBTY3Jv
bGxiYXI6OnBhZ2VTdGVwKF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSwg
c2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQpOwotICAgICAgICAgICAgY2FzZSBMaW5lOgotICAgICAg
ICAgICAgICAgIHJldHVybiBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICB9KCk7Ci0KLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBVcCB8fCBk
aXJlY3Rpb24gPT0gTGVmdCkKLSAgICAgICAgICAgIHNjcm9sbERpc3RhbmNlID0gLXNjcm9sbERp
c3RhbmNlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIChpc0hvcml6b250YWwgPyBGbG9hdFBv
aW50KHNjcm9sbERpc3RhbmNlLCAwKSA6IEZsb2F0UG9pbnQoMCwgc2Nyb2xsRGlzdGFuY2UpKTsK
LSAgICB9OwotCi0gICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRv
U3RyaW5nOlVJS2V5SW5wdXRMZWZ0QXJyb3ddKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9mZnNl
dChMaW5lLCBMZWZ0KTsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0Vx
dWFsVG9TdHJpbmc6VUlLZXlJbnB1dFJpZ2h0QXJyb3ddKQotICAgICAgICByZXR1cm4gY29tcHV0
ZU9mZnNldChMaW5lLCBSaWdodCk7Ci0KLSAgICBTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50
Rm9yVmVydGljYWxBcnJvd0tleSA9IExpbmU7Ci0gICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3Mg
JiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlKQotICAgICAgICBpbmNyZW1lbnRGb3JWZXJ0aWNh
bEFycm93S2V5ID0gUGFnZTsKLSAgICBlbHNlIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2Vi
RXZlbnRGbGFnTWFza0NvbW1hbmQpCi0gICAgICAgIGluY3JlbWVudEZvclZlcnRpY2FsQXJyb3dL
ZXkgPSBEb2N1bWVudDsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0Vx
dWFsVG9TdHJpbmc6VUlLZXlJbnB1dFVwQXJyb3ddKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9m
ZnNldChpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93S2V5LCBVcCk7Ci0gICAgaWYgKFtjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXREb3duQXJyb3dd
KQotICAgICAgICByZXR1cm4gY29tcHV0ZU9mZnNldChpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93
S2V5LCBEb3duKTsKLQotICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1
YWxUb1N0cmluZzpVSUtleUlucHV0UGFnZURvd25dKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9m
ZnNldChQYWdlLCBEb3duKTsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBp
c0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBhZ2VVcF0pCi0gICAgICAgIHJldHVybiBjb21wdXRl
T2Zmc2V0KFBhZ2UsIFVwKTsKLQotICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IGNoYXJhY3RlckF0SW5kZXg6MF0gPT0ga1dlYlNwYWNlS2V5KQotICAgICAgICByZXR1cm4gY29t
cHV0ZU9mZnNldChQYWdlLCAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tT
aGlmdCkgPyBVcCA6IERvd24pOwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQogLSAo
Qk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudCBpc0NoYXJFdmVudDoo
Qk9PTClpc0NoYXJFdmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViRW50ZXJL
ZXkgPSAweDAwMDM7CkBAIC0zNzU3LDEwICszNjk4LDggQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5
RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudCBpc0NoYXJFdmVudDooQk9PTClpc0NoYXJFdmVudAog
ICAgIGlmICghY29udGVudEVkaXRhYmxlICYmIGV2ZW50LmlzVGFiS2V5KQogICAgICAgICByZXR1
cm4gTk87CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxPZmZzZXQg
PSBbc2VsZiBfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6ZXZlbnRdKSB7Ci0gICAgICAgIFtfd2ViVmll
dyBfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OipzY3JvbGxPZmZzZXRdOworICAgIGlmIChbX2tleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3IgYmVnaW5XaXRoRXZlbnQ6ZXZlbnRdKQogICAgICAgICByZXR1
cm4gWUVTOwotICAgIH0KIAogICAgIFVJS2V5Ym9hcmRJbXBsICprZXlib2FyZCA9IFtVSUtleWJv
YXJkSW1wbCBzaGFyZWRJbnN0YW5jZV07CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnMgPSBldmVu
dC5jaGFyYWN0ZXJzOwpAQCAtMzgwOCw2ICszNzQ3LDM2IEBAIC0gKEJPT0wpX2ludGVycHJldEtl
eUV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQgaXNDaGFyRXZlbnQ6KEJPT0wpaXNDaGFyRXZlbnQK
ICAgICByZXR1cm4gTk87CiB9CiAKKy0gKEJPT0wpaXNLZXlib2FyZFNjcm9sbGFibGUKK3sKKyAg
ICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5
cGUgPT0gSW5wdXRUeXBlOjpTZWxlY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCistIChDR0Zsb2F0KWRpc3RhbmNlRm9yU2Nyb2xsaW5nSW5jcmVtZW50
OihTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50Cit7CisgICAgc3dpdGNoIChpbmNyZW1lbnQp
IHsKKyAgICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6CisgICAgICAgIHJldHVy
biBzZWxmLmJvdW5kcy5zaXplLmhlaWdodDsKKyAgICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6
UGFnZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXAoX3BhZ2Ut
PnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdo
dCk7CisgICAgY2FzZSBTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU6CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7CisgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCistICh2b2lkKXNjcm9sbEJ5Q29u
dGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClvZmZzZXQgYW5pbWF0ZWQ6KEJPT0wpYW5p
bWF0ZWQKK3sKKyAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5Q29udGVudE9mZnNldDpvZmZzZXQgYW5p
bWF0ZWQ6YW5pbWF0ZWRdOworfQorCiAtICh2b2lkKWV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxs
YmFjazooTlNTdHJpbmcgKiljb21tYW5kTmFtZQogewogICAgIFtzZWxmIGJlZ2luU2VsZWN0aW9u
Q2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTM5YWQ3MjA5OTFlMGJlYjc2
NjIwOGMwMzNjNTgzZmI1NGRkZjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBGbG9hdFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFz
cyBTY3JvbGxpbmdJbmNyZW1lbnQgOiB1aW50OF90IHsKKyAgICBEb2N1bWVudCwKKyAgICBQYWdl
LAorICAgIExpbmUKK307CisKK30KKworQGNsYXNzIFdlYkV2ZW50OworQHByb3RvY29sIFdLS2V5
Ym9hcmRTY3JvbGxhYmxlOworCitAaW50ZXJmYWNlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xsYWJsZTooaWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxl
PilzY3JvbGxhYmxlOworCistICh2b2lkKWludmFsaWRhdGU7CisKKy0gKEJPT0wpYmVnaW5XaXRo
RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudDsKKy0gKEJPT0wpaGFuZGxlS2V5RXZlbnQ6KDo6V2Vi
RXZlbnQgKilldmVudDsKKworQGVuZAorCitAcHJvdG9jb2wgV0tLZXlib2FyZFNjcm9sbGFibGUg
PE5TT2JqZWN0PgorQHJlcXVpcmVkCistIChCT09MKWlzS2V5Ym9hcmRTY3JvbGxhYmxlOworLSAo
Q0dGbG9hdClkaXN0YW5jZUZvclNjcm9sbGluZ0luY3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJ
bmNyZW1lbnQpaW5jcmVtZW50OworLSAodm9pZClzY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KFdlYkNv
cmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOworQGVuZAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA0
OWQyZmYzOGU5YWEyNzE1M2M0ZDNmNWJmMzc2YTZjOGFiOWUwNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iu
bW0KQEAgLTAsMCArMSwyMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIgorCisjaW1wb3J0ICJVSUtpdFNQ
SS5oIgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dl
YkV2ZW50Lmg+CisjaW1wb3J0IDxhbGdvcml0aG0+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1
YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworI2lmIFBMQVRGT1JNKElPUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2VudW0gY2xhc3MgS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvclN0YXRlIDogdWludDhfdCB7Cisg
ICAgV2FpdGluZ0ZvckZpcnN0RXZlbnQsCisgICAgV2FpdGluZ0ZvclJlcGVhdCwKKyAgICBBbmlt
YXRpbmcKK307CisKK307CisKK0BpbXBsZW1lbnRhdGlvbiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IgeworICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZT4gX3Njcm9sbGFibGU7CisgICAg
Q0ZUaW1lSW50ZXJ2YWwgX3N0YXJ0VGltZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IF9zY3Jv
bGxPZmZzZXRQZXJJbmNyZW1lbnQ7CisgICAgUmV0YWluUHRyPENBRGlzcGxheUxpbms+IF9kaXNw
bGF5TGluazsKKyAgICBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGUgX3N0YXRlOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFNjcm9sbGFibGU6KGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZT4pc2Ny
b2xsYWJsZQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX3Njcm9sbGFibGUgPSBzY3JvbGxhYmxlOworCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BB
bmltYXRlZFNjcm9sbF07CisgICAgX3Njcm9sbGFibGUgPSBuaWw7Cit9CisKKy0gKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pX3Njcm9sbE9mZnNldEZvckV2ZW50Oig6OldlYkV2
ZW50ICopZXZlbnQKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNwYWNlS2V5ID0g
MHgyMDsKKworICAgIGlmICghW19zY3JvbGxhYmxlIGlzS2V5Ym9hcmRTY3JvbGxhYmxlXSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgPSBldmVudC5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM7CisgICAg
aWYgKCFjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMubGVuZ3RoKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50
OF90IHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07CisKKyAgICBhdXRvIGNvbXB1dGVPZmZzZXQg
PSBeKFNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1lbnQsIFNjcm9sbGluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pIHsKKyAgICAgICAgYm9vbCBpc0hvcml6b250YWwgPSAoZGlyZWN0aW9uID09IFNjcm9s
bGluZ0RpcmVjdGlvbjo6TGVmdCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xsaW5nRGlyZWN0aW9uOjpS
aWdodCk7CisKKyAgICAgICAgQ0dGbG9hdCBzY3JvbGxEaXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBk
aXN0YW5jZUZvclNjcm9sbGluZ0luY3JlbWVudDppbmNyZW1lbnRdOworCisgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gU2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xs
aW5nRGlyZWN0aW9uOjpMZWZ0KQorICAgICAgICAgICAgc2Nyb2xsRGlzdGFuY2UgPSAtc2Nyb2xs
RGlzdGFuY2U7CisKKyAgICAgICAgcmV0dXJuIChpc0hvcml6b250YWwgPyBXZWJDb3JlOjpGbG9h
dFBvaW50KHNjcm9sbERpc3RhbmNlLCAwKSA6IFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgc2Nyb2xs
RGlzdGFuY2UpKTsKKyAgICB9OworCisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRMZWZ0QXJyb3ddKQorICAgICAgICByZXR1cm4g
Y29tcHV0ZU9mZnNldChTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmUsIFNjcm9sbGluZ0RpcmVjdGlv
bjo6TGVmdCk7CisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRv
U3RyaW5nOlVJS2V5SW5wdXRSaWdodEFycm93XSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZz
ZXQoU2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lLCBTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0KTsK
KworICAgIFNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93S2V5ID0g
U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYg
V2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSkKKyAgICAgICAgaW5jcmVtZW50Rm9yVmVydGljYWxB
cnJvd0tleSA9IFNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAgICBlbHNlIGlmIChldmVudC5t
b2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQpCisgICAgICAgIGluY3JlbWVu
dEZvclZlcnRpY2FsQXJyb3dLZXkgPSBTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OworICAg
IGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlu
cHV0VXBBcnJvd10pCisgICAgICAgIHJldHVybiBjb21wdXRlT2Zmc2V0KGluY3JlbWVudEZvclZl
cnRpY2FsQXJyb3dLZXksIFNjcm9sbGluZ0RpcmVjdGlvbjo6VXApOworICAgIGlmIChbY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0RG93bkFycm93
XSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoaW5jcmVtZW50Rm9yVmVydGljYWxBcnJv
d0tleSwgU2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duKTsKKworICAgIGlmIChbY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0UGFnZURvd25dKQorICAg
ICAgICByZXR1cm4gY29tcHV0ZU9mZnNldChTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2UsIFNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bik7CisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlVXBdKQorICAgICAgICByZXR1cm4gY29t
cHV0ZU9mZnNldChTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2UsIFNjcm9sbGluZ0RpcmVjdGlvbjo6
VXApOworCisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSBrV2ViU3BhY2VLZXkpCisgICAgICAgIHJldHVybiBjb21wdXRlT2Zmc2V0KFNj
cm9sbGluZ0luY3JlbWVudDo6UGFnZSwgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZs
YWdNYXNrU2hpZnQpID8gU2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFNjcm9sbGluZ0RpcmVjdGlv
bjo6RG93bik7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCistIChCT09MKWJlZ2lu
V2l0aEV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3N0YXRlICE9IEtleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvckZpcnN0RXZlbnQpCisgICAgICAg
IHJldHVybiBOTzsKKworICAgIGF1dG8gb2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2
ZW50OmV2ZW50XTsKKworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4gTk87CisKKyAg
ICBfc3RhdGUgPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGU6OldhaXRpbmdGb3JSZXBl
YXQ7CisgICAgX3Njcm9sbE9mZnNldFBlckluY3JlbWVudCA9ICpvZmZzZXQ7CisKKyAgICAvLyBU
aGUgZmlyc3Qga2V5Ym9hcmQgZXZlbnQgdGhhdCBzdGFydHMgc2Nyb2xsaW5nIHBlcmZvcm1zIGl0
cyBvd24KKyAgICAvLyBkaXNjcmV0ZSBhbmltYXRlZCBzY3JvbGwuIENvbnRpbnVvdXNseSBhbmlt
YXRlZCBzY3JvbGxpbmcgc3RhcnRzCisgICAgLy8gd2hlbiB0aGUga2V5IHJlcGVhdHMuCisgICAg
W19zY3JvbGxhYmxlIHNjcm9sbEJ5Q29udGVudE9mZnNldDpfc2Nyb2xsT2Zmc2V0UGVySW5jcmVt
ZW50IGFuaW1hdGVkOllFU107CisKKyAgICByZXR1cm4gWUVTOworfQorCistIChCT09MKWhhbmRs
ZUtleUV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3N0YXRlID09IEtleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvckZpcnN0RXZlbnQpCisgICAgICAg
IHJldHVybiBOTzsKKworICAgIGF1dG8gb2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2
ZW50OmV2ZW50XTsKKyAgICBpZiAoIW9mZnNldCB8fCBvZmZzZXQgIT0gX3Njcm9sbE9mZnNldFBl
ckluY3JlbWVudCB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXApIHsKKyAgICAgICAgW3Nl
bGYgc3RvcEFuaW1hdGVkU2Nyb2xsXTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAg
IGlmIChfc3RhdGUgPT0gS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvclN0YXRlOjpXYWl0aW5nRm9y
UmVwZWF0KQorICAgICAgICBbc2VsZiBzdGFydEFuaW1hdGVkU2Nyb2xsXTsKKworICAgIHJldHVy
biBZRVM7Cit9CisKKy0gKHZvaWQpc3RhcnRBbmltYXRlZFNjcm9sbAoreworICAgIEFTU0VSVCgh
X2Rpc3BsYXlMaW5rKTsKKworICAgIF9zdGF0ZSA9IEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3JT
dGF0ZTo6QW5pbWF0aW5nOworICAgIF9zdGFydFRpbWUgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsK
KyAgICBfZGlzcGxheUxpbmsgPSBbQ0FEaXNwbGF5TGluayBkaXNwbGF5TGlua1dpdGhUYXJnZXQ6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZGlzcGxheUxpbmtGaXJlZDopXTsKKyAgICBbX2Rpc3Bs
YXlMaW5rIGFkZFRvUnVuTG9vcDpbTlNSdW5Mb29wIG1haW5SdW5Mb29wXSBmb3JNb2RlOk5TUnVu
TG9vcENvbW1vbk1vZGVzXTsKK30KKworLSAodm9pZClzdG9wQW5pbWF0ZWRTY3JvbGwKK3sKKyAg
ICBfc3RhdGUgPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGU6OldhaXRpbmdGb3JGaXJz
dEV2ZW50OworICAgIFtfZGlzcGxheUxpbmsgaW52YWxpZGF0ZV07CisgICAgX2Rpc3BsYXlMaW5r
ID0gbmlsOworfQorCistICh2b2lkKWRpc3BsYXlMaW5rRmlyZWQ6KENBRGlzcGxheUxpbmsgKilz
ZW5kZXIKK3sKKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBzZWNvbmRzUGVyU2Nyb2xsSW5jcmVt
ZW50ID0gMC4wNTsgLy8gU2Vjb25kcyBpdCBzaG91bGQgdGFrZSB0byBjb3ZlciBvbmUgaW5jcmVt
ZW50IHdoZW4gYXQgZnVsbCBzcGVlZC4KKyAgICBjb25zdCBmbG9hdCBtYXhpbXVtVmVsb2NpdHkg
PSAyMDAwOyAvLyBNYXhpbXVtIHZlbG9jaXR5IGluIHBpeGVscyBwZXIgc2Vjb25kLiBFbXBpcmlj
YWxseSBkZXRlcm1pbmVkLgorICAgIGNvbnN0IGZsb2F0IGFjY2VsZXJhdGlvbkR1cmF0aW9uID0g
MC4zOyAvLyBEdXJhdGlvbiBvZiBhY2NlbGVyYXRpb24gaW4gc2Vjb25kcy4gVGhpcyBtYXRjaGVz
IFVJU2Nyb2xsVmlldy4KKworICAgIGF1dG8gdmVsb2NpdHkgPSBfc2Nyb2xsT2Zmc2V0UGVySW5j
cmVtZW50LnNjYWxlZCgxLiAvIHNlY29uZHNQZXJTY3JvbGxJbmNyZW1lbnQpOworICAgIHZlbG9j
aXR5ID0gdmVsb2NpdHkuY29uc3RyYWluZWRCZXR3ZWVuKHsgLW1heGltdW1WZWxvY2l0eSwgLW1h
eGltdW1WZWxvY2l0eSB9LCB7IG1heGltdW1WZWxvY2l0eSwgbWF4aW11bVZlbG9jaXR5IH0pOwor
CisgICAgQ0ZUaW1lSW50ZXJ2YWwgZnJhbWVEdXJhdGlvbiA9IHNlbmRlci50YXJnZXRUaW1lc3Rh
bXAgLSBzZW5kZXIudGltZXN0YW1wOworICAgIENGVGltZUludGVydmFsIHRpbWVGcm9tQW5pbWF0
aW9uU3RhcnQgPSBzZW5kZXIudGltZXN0YW1wIC0gX3N0YXJ0VGltZTsKKyAgICBmbG9hdCBhY2Nl
bGVyYXRpb25GYWN0b3IgPSBbW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1l
OmtDQU1lZGlhVGltaW5nRnVuY3Rpb25FYXNlSW5FYXNlT3V0XSBfc29sdmVGb3JJbnB1dDp0aW1l
RnJvbUFuaW1hdGlvblN0YXJ0IC8gYWNjZWxlcmF0aW9uRHVyYXRpb25dOworCisgICAgYXV0byBj
b250ZW50T2Zmc2V0ID0gdmVsb2NpdHkuc2NhbGVkKGFjY2VsZXJhdGlvbkZhY3RvciAqIGZyYW1l
RHVyYXRpb24pOworICAgIFtfc2Nyb2xsYWJsZSBzY3JvbGxCeUNvbnRlbnRPZmZzZXQ6Y29udGVu
dE9mZnNldCBhbmltYXRlZDpOT107Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDZmODZlMDQ1YjU3NmQxYjYyNjIyMGYwOTU5NTY2Mzk5YWZiZGIyZTkuLmEyZGEyNDk3NmRh
MjgzZTIxMTdhMzA4YTNiNTIzNzFlOTEyYmM4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE4LDYgKzYxOCw3IEBACiAJCTJEMTA4
NzYwMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEwODc1RTFEMkM1NzNFMDBCODVGODIg
LyogTG9hZFBhcmFtZXRlcnMuY3BwICovOyB9OwogCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIg
LyogTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oICov
OyB9OwogCQkyRDEwODc2MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzYy
MUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovOyB9OworCQkyRDEx
QkQxRjIxMTI1QkU4MDA5RDk5RTMgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENUUxMjYyMTBB
REM3QTAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbSAqLzsgfTsKIAkJ
MkQxMjVDNUUxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUMxODU3RUEw
NTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovOyB9OwogCQkyRDEyNUM1RjE4
NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUQxODU3RUEwNTAwM0JB
M0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJMkQxMkRBQjUyMDY2
MkM3MzAwNkYwMEZCIC8qIFdLQW5pbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTJEQUI0MjA2NjJDNzMwMDZGMDBGQiAvKiBX
S0FuaW1hdGlvbkRlbGVnYXRlLmggKi87IH07CkBAIC03MTcsNiArNzE4LDcgQEAKIAkJMkRENDVB
REYxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENDVBREQxRTVGODk3MjAw
NkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tICovOyB9OwogCQkyREQ1QTcyOTFF
QkYwOEQ1MDA5QkE1OTcgLyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyODFFQkYwOEQ1MDA5QkE1OTcg
LyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmggKi87IH07CiAJCTJERDVBNzJCMUVCRjA5QTcwMDlC
QTU5NyAvKiBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyQTFFQkYwOUE3
MDA5QkE1OTcgLyogSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oICov
OyB9OworCQkyREQ1RTEyOTIxMEFEQzdCMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REQ1RTEyNzIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgg
Ki87IH07CiAJCTJERDY3QTJFMUJEODE5NzMwMDUzQjI1MSAvKiBBUElGaW5kTWF0Y2hlc0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENjdB
MkQxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50LmggKi87IH07CiAJCTJE
RDY3QTM1MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3QTMzMUJEODYxMDYwMDUz
QjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQuaCAqLzsgfTsKIAkJMkRENjdBMzYxQkQ4NjEwNjAw
NTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3QTM0MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRG
aW5kZXJDbGllbnQubW0gKi87IH07CkBAIC0zMTkwLDYgKzMxOTIsOCBAQAogCQkyREQ0NUFERDFF
NUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbTsg
cGF0aCA9IGlvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRENUE3MjgxRUJGMDhENTAwOUJBNTk3IC8qIFZpc2libGVXZWJQYWdlQ291
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmxlV2ViUGFnZUNv
dW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENUE3MkExRUJGMDlBNzAw
OUJBNTk3IC8qIEhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5j
cmVhc2VzQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREQ1RTEyNjIx
MEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLm1tOyBwYXRoID0gaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRENUUxMjcyMTBBREM3QTAwREI2MDEyIC8qIFdLS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDsgcGF0aCA9IGlvcy9XS0tleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENjdBMkQx
QkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRNYXRjaGVzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJERDY3QTMzMUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tUZXh0RmluZGVyQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDY3QTM0MUJEODYxMDYwMDUz
QjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1RleHRGaW5kZXJDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01OTg0LDYgKzU5ODgsOCBAQAogCQkJCTBGM0M3MjU3MTk2RjVGNTAwMEFFREQw
QyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0gKi8sCiAJCQkJQTU0MjkzQTIxOTVBNDND
NjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggKi8s
CiAJCQkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdl
c3R1cmVSZWNvZ25pemVyLm1tICovLAorCQkJCTJERDVFMTI3MjEwQURDN0EwMERCNjAxMiAvKiBX
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCAqLywKKwkJCQkyREQ1RTEyNjIxMEFEQzdBMDBE
QjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICovLAogCQkJCTJEQTFFNEZD
MThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCAqLywKIAkJCQkyREExRTRGRDE4
QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3Lm1tICovLAogCQkJCUExNUVFREU0MUUz
MDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLApAQCAtOTc4OSw2ICs5Nzk1LDcg
QEAKIAkJCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDMEYwQUIyMDAwNjU4MjAwNTM2NTM2IC8qIFdL
SW5zcGVjdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTE4QjVEMjFGRTFENTVCMDBG
OUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERDVF
MTI5MjEwQURDN0IwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQTlFMTBCMTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzkwQTlGMUFENzE2NDkwMEFCOTBC
MyAvKiBXS0xheW91dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTFFNEZFMThDMDJCNkEw
MERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2MzMsNiAr
MTE2NDAsNyBAQAogCQkJCTk5NEJBREYzMUY3RDc4MTEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDMEYwQUMyMDAwNjU4NTAwNTM2
NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxOEI1RDMx
RkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMkQxMUJEMUYyMTEyNUJFODAwOUQ5OUUzIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlFMTBBMTMxNUNEMTgwMDlFNzAzMSAvKiBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBMUU0RkYx
OEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUM5OEM0OEE5MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346304</attachid>
            <date>2018-08-01 14:59:02 -0700</date>
            <delta_ts>2018-08-01 16:24:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188239-20180801145901.patch</filename>
            <type>text/plain</type>
            <size>33534</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBkN2JiZDk2
OWYwNzBlZTgwODMyNmRhMzM0NGExMzhhZGRiOWJlZDk5Li4xNTRjNzgzNDFlNjgzZmU3MzM0ZDJh
YmYzMmFkMTkxOGQ5ZDY1YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0wOC0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2luZyB0aGUga2V5Ym9hcmQgYXJyb3cga2V5cyB0byBzY3JvbGwgYSB3ZWJwYWdlIGlz
IHZlcnkgc2xvdywgbm90IHNtb290aCwgdGFrZXMgdG9vIGxvbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIzOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjI5OTc2NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaDoKKyAgICAgICAgQWRkIGEg
cGllY2Ugb2YgU1BJLgorCiAyMDE4LTA3LTMwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmZXRjaGluZyBhbmQgcmVtb3ZlIHR5cGUg
IF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3Yjk3YTRmY2M4ZjczNTQx
NGMwOGMzM2ZlYTFiM2M4NmQxNmNlZDA2Li5kYjAzM2RhOTgzZmM0ZGNiZmJhMGJhNGYwYmY3YTM5
MzMzZmUxNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE4LTA4LTAxICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFVzaW5nIHRoZSBrZXli
b2FyZCBhcnJvdyBrZXlzIHRvIHNjcm9sbCBhIHdlYnBhZ2UgaXMgdmVyeSBzbG93LCBub3Qgc21v
b3RoLCB0YWtlcyB0b28gbG9uZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4MjM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjk5NzY1ND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IGRlcGVuZGluZyBvbiBrZXkgcmVwZWF0IHRvIGRyaXZlIHNjcm9sbGluZyB3aXRoIGFycm93IGtl
eXMgaGVsZCBkb3duLAorICAgICAgICBydW4gYSBkaXNwbGF5IGxpbmsgdGhhdCBhbmltYXRlcyB0
aGUgc2Nyb2xsLiBXZSBzdGlsbCBkbyBhIHNpbmdsZSBkaXNjcmV0ZSBzY3JvbGwKKyAgICAgICAg
Zmlyc3QgKHNvIHRoYXQgeW91IGNhbiB0YXAgdGhlIGtleSBhbmQgc2hpZnQgYnkgbGluZS9wYWdl
KSwgYnV0IHRoZW4gb24gdGhlIGZpcnN0CisgICAgICAgIHJlcGVhdCB3ZSByYW1wIHVwIHRvIGEg
Y29uc3RhbnQgdmVsb2NpdHkgZGV0ZXJtaW5lZCBieSB0aGUgZGVzaXJlZCBpbmNyZW1lbnQsCisg
ICAgICAgIHN0b3BwaW5nIHdoZW4gdGhlIGtleSBpcyBsaWZ0ZWQgb3IgYSBkaWZmZXJlbnQga2V5
IGlzIHByZXNzZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6YW5pbWF0ZWQ6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsQnlDb250ZW50T2Zmc2V0Ol0pOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgQWRkIGFuaW1hdGVkIHBhcmFtZXRlciB0byBzY3JvbGxCeUNvbnRlbnRPZmZzZXQs
IGFuZCBwbHVtYiBpdCB0aHJvdWdoIHRvIFVJU2Nyb2xsVmlldy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgIEFkZCBhIFdLS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBtZW1iZXIuCisgICAgICAgIENvbmZvcm0gdG8gV0tLZXli
b2FyZFNjcm9sbGFibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9u
XSk6CisgICAgICAgIEluc3RhbGwgdGhlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci4KKwor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAgICAgICBV
bmluc3RhbGwgdGhlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci4KKworICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IHVuc2NhbGVkVmlld10pOgorICAgICAgICBGaXggYSBzdHVwaWQgc3R5bGUg
bml0LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFuZGxlS2V5V2ViRXZlbnQ6XSk6Cisg
ICAgICAgIEdpdmUgV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRoZSBmaXJzdCBzaG90IGF0
IGluY29taW5nIGtleWJvYXJkIGV2ZW50cy4KKyAgICAgICAgSXQgd2lsbCBvbmx5IGNvbnN1bWUg
ZXZlbnRzIGhlcmUgaWYgaXQncyBhbHJlYWR5IHBlcmZvcm1pbmcgYSBzY3JvbGxpbmcgYW5pbWF0
aW9uCisgICAgICAgIChiZWNhdXNlIG90aGVyd2lzZSB0aGV5IHNob3VsZCBnbyBzdHJhaWdodCB0
aHJvdWdoIHRvIHRoZSBwYWdlKS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnRlcnBy
ZXRLZXlFdmVudDppc0NoYXJFdmVudDpdKToKKyAgICAgICAgR2l2ZSBXS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IgYSBzaG90IGF0IGhhbmRsaW5nIGtleWJvYXJkIGV2ZW50cyB0aGF0CisgICAg
ICAgIHRoZSB3ZWIgY29udGVudCBkaWQgbm90IGhhbmRsZS4gV2Ugd2lsbCBvbmx5IHN0YXJ0IGEg
c2Nyb2xsaW5nIGFuaW1hdGlvbgorICAgICAgICBpZiB0aGUgcGFnZSBkaWQgbm90IGhhbmRsZSBh
biBldmVudCB0aGF0IHdvdWxkIHN0YXJ0IGEgc2Nyb2xsLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgaXNLZXlib2FyZFNjcm9sbGFibGVdKToKKyAgICAgICAgUGFydCBvZiBXS0tleWJvYXJk
U2Nyb2xsYWJsZTsgb25seSByZXBvcnQgb3Vyc2VsdmVzIGFzIHNjcm9sbGFibGUgaWYKKyAgICAg
ICAgd2Ugd291bGQgcHJldmlvdXNseSBoYXZlIGFsbG93ZWQgc2Nyb2xsaW5nIGZyb20ga2V5Ym9h
cmQgZXZlbnRzIChpZgorICAgICAgICB3ZSdyZSBub3QgaW4gY29udGVudGVkaXRhYmxlLCBhbmQg
ZG9uJ3QgaGF2ZSBhIDxzZWxlY3Q+IGZvY3VzZWQpLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgZGlzdGFuY2VGb3JTY3JvbGxpbmdJbmNyZW1lbnQ6XSk6CisgICAgICAgIFBhcnQgb2YgV0tL
ZXlib2FyZFNjcm9sbGFibGU7IGNvbXB1dGUgdGhlIGRpc3RhbmNlIGZvciBlYWNoIHNjcm9sbGlu
ZyBpbmNyZW1lbnQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzY3JvbGxCeUNvbnRlbnRP
ZmZzZXQ6YW5pbWF0ZWQ6XSk6CisgICAgICAgIFBhcnQgb2YgV0tLZXlib2FyZFNjcm9sbGFibGU7
IHBsdW1iIHNjcm9sbHMgdXAgdG8gV0tXZWJWaWV3LgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3Njcm9sbE9mZnNldEZvckV2ZW50Ol0pOiBNb3ZlZCB0byBXS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IubW0uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvciBpbml0XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBpbml0V2l0aFNjcm9sbGFibGU6XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciBfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6XSk6CisgICAgICAgIENvbXB1dGUgdGhlIHNjcm9s
bCBvZmZzZXQgZ2l2ZW4gYSBwYXJ0aWN1bGFyIGV2ZW50LiBUaGlzIGlzIG1vdmVkIGZyb20gV0tD
b250ZW50VmlldzsKKyAgICAgICAgb3RoZXJ3aXNlIHRoZSBwcmltYXJ5IGNoYW5nZSBpcyB0aGF0
IGl0IG5vdyBhc2tzIHRoZSBXS0tleWJvYXJkU2Nyb2xsYWJsZQorICAgICAgICBmb3IgdGhlIGRp
c3RhbmNlIGluc3RlYWQgb2YgY29tcHV0aW5nIGl0IGRpcmVjdGx5LgorCisgICAgICAgICgtW1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgSWYg
d2UncmUgY3VycmVudGx5IGluIHRoZSBpbml0aWFsIHN0YXRlIChXYWl0aW5nRm9yRmlyc3RFdmVu
dCksIGFuZAorICAgICAgICBhIGdpdmVuIGV2ZW50IHNob3VsZCBzdGFydCBhIHNjcm9sbCwgdHJh
bnNpdGlvbiBpbnRvIFdhaXRpbmdGb3JSZXBlYXQsCisgICAgICAgIGFuZCBkbyBhIHNpbmdsZSBh
bmltYXRlZCBzY3JvbGwgb2YgdGhlIGFwcHJvcHJpYXRlIGRpc3RhbmNlLgorCisgICAgICAgICgt
W1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBoYW5kbGVLZXlFdmVudDpdKToKKyAgICAgICAg
SWYgdGhpcyBrZXkgZXZlbnQgc2hvdWxkIHRlcm1pbmF0ZSBhIHNjcm9sbCAoYmVjYXVzZSBpdCBp
cyBlaXRoZXIgYSBrZXl1cAorICAgICAgICBvciBhIGRpZmZlcmVudCBrZXkgdGhhbiB0aGUgY3Vy
cmVudCBzY3JvbGwpLCBzaHV0IGRvd24gYW55IHJ1bm5pbmcgYW5pbWF0aW9ucy4KKworICAgICAg
ICBJZiB0aGlzIGlzIHRoZSBmaXJzdCBrZXkgcmVwZWF0IGFmdGVyIHRoZSBpbml0aWFsIHNjcm9s
bCwgc3RhcnQgYSBzY3JvbGxpbmcKKyAgICAgICAgYW5pbWF0aW9uLgorCisgICAgICAgIEVhdCB0
aGUgZXZlbnQgaWYgaXQgZWl0aGVyIHN0YXJ0ZWQgb3IgY29udGludWVkIGEgc2Nyb2xsLgorCisg
ICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBzdGFydEFuaW1hdGVkU2Nyb2xs
XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBzdG9wQW5pbWF0ZWRT
Y3JvbGxdKToKKyAgICAgICAgSGVscGVycyB0byBzdGFydCBhbmQgc3RvcCB0aGUgZGlzcGxheSBs
aW5rIGFuZCBkbyBzb21lIGJvb2trZWVwaW5nLgorCisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvciBkaXNwbGF5TGlua0ZpcmVkOl0pOgorICAgICAgICBBc2sgdGhlIFdLS2V5
Ym9hcmRTY3JvbGxhYmxlIHRvIHNjcm9sbCB0aGUgY29udGVudCBiYXNlZCBvbiB0aGUgZnJhbWUg
dGltZSwKKyAgICAgICAgYW4gYWNjZWxlcmF0aW9uIGN1cnZlLCBhbmQgdGhlIGN1cnJlbnQgYW5p
bWF0aW9uJ3Mgc2Nyb2xsaW5nIGluY3JlbWVudC4KKworICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA4LTAxICBDb21taXQgUXVldWUgIDxjb21taXQt
cXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0
NDQzIGFuZCByMjM0NDQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
UXVhcnR6Q29yZVNQSS5oCmluZGV4IDY3ZTA4ZDUxODJiYTQwNzRkYjA2ZTg2NzRiM2JjOTkxMTJh
ZmRiODkuLjZhMGVjYTBhYjUwYWViZmFiYWY1NjFmMWU1MzJiN2Y0NDM2MzkxZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FDb250ZXh0Lmg+CiAjaW1wb3J0IDxR
dWFydHpDb3JlL0NBTGF5ZXJIb3N0Lmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXJQcml2
YXRlLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NBTWVkaWFUaW1pbmdGdW5jdGlvblByaXZhdGUu
aD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4KIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTE1Myw2ICsxNTQsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIEBwcm9wZXJ0eSBD
R0Zsb2F0IHZlbG9jaXR5OwogQGVuZAogCitAaW50ZXJmYWNlIENBTWVkaWFUaW1pbmdGdW5jdGlv
biAoKQorLSAoZmxvYXQpX3NvbHZlRm9ySW5wdXQ6KGZsb2F0KXQ7CitAZW5kCisKICNlbmRpZiAv
LyBfX09CSkNfXwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IDUzZGY5MTU3MTdkY2EzNDBmYzdjYTM2NjE2YTczNWY3NDE5
ZmZlZWMuLmIxMGEwMWMwNGE3MTgwMDEyZGU5YzY1MWQwNzQ2MWE0NDI0YmNhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjExMyw3
ICsyMTEzLDcgQEAgLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFy
Z2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KWNv
bnRlbnRPZmZzZXREZWx0YQorLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3Jl
OjpGbG9hdFBvaW50KWNvbnRlbnRPZmZzZXREZWx0YSBhbmltYXRlZDooQk9PTClhbmltYXRlZAog
ewogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2NhbGVkT2Zmc2V0RGVsdGEgPSBjb250ZW50T2Zm
c2V0RGVsdGE7CiAgICAgQ0dGbG9hdCB6b29tU2NhbGUgPSBjb250ZW50Wm9vbVNjYWxlKHNlbGYp
OwpAQCAtMjEyOCw3ICsyMTI4LDcgQEAgLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihX
ZWJDb3JlOjpGbG9hdFBvaW50KWNvbnRlbnRPZmZzZXREZWx0YQogCiAgICAgTE9HX1dJVEhfU1RS
RUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OiBzY3Jv
bGxpbmcgdG8gIiA8PCBXZWJDb3JlOjpGbG9hdFBvaW50KGJvdW5kZWRPZmZzZXQpKTsKIAotICAg
IFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmJvdW5kZWRPZmZzZXQgYW5pbWF0ZWQ6WUVT
XTsKKyAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpib3VuZGVkT2Zmc2V0IGFuaW1h
dGVkOmFuaW1hdGVkXTsKIH0KIAogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KFdlYkNvcmU6
OkZsb2F0UG9pbnQpb3JpZ2luIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4
IGFhYjMwMTBmNWQ4MzFmMTkwYjlhOTQ0YWYyNjc2Zjg3MWM1N2QwYmUuLjNhMDU0MWM0MTA0MTdj
YjBjYjhkZGRkZTY5ZWVlMjI0NGNmOWRhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC05MSw3ICs5MSw3IEBA
IHN0cnVjdCBQcmludEluZm87CiAKIC0gKHZvaWQpX3Njcm9sbFRvQ29udGVudFNjcm9sbFBvc2l0
aW9uOihXZWJDb3JlOjpGbG9hdFBvaW50KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2Vi
Q29yZTo6SW50UG9pbnQpc2Nyb2xsT3JpZ2luOwogLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJD
b3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3Jp
Z2luIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwot
LSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KW9mZnNl
dDsKKy0gKHZvaWQpX3Njcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClv
ZmZzZXQgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQ7CiAtICh2b2lkKV96b29tVG9Gb2N1c1JlY3Q6
KFdlYkNvcmU6OkZsb2F0UmVjdClmb2N1c2VkRWxlbWVudFJlY3Qgc2VsZWN0aW9uUmVjdDooV2Vi
Q29yZTo6RmxvYXRSZWN0KXNlbGVjdGlvblJlY3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMgaW5zaWRl
Rml4ZWQ6KEJPT0wpaW5zaWRlRml4ZWQgZm9udFNpemU6KGZsb2F0KWZvbnRTaXplIG1pbmltdW1T
Y2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2Nh
bGUgYWxsb3dTY2FsaW5nOihCT09MKWFsbG93U2NhbGluZyBmb3JjZVNjcm9sbDooQk9PTClmb3Jj
ZVNjcm9sbDsKIC0gKEJPT0wpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRS
ZWN0IHdpdGhPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6
KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4
aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooZmxv
YXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwogLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KFdl
YkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCmluZGV4IGY4ZTQ1ODRlYmVmYzhkOGI4ZTcyNjJlYjhmYzQwMGI2MWRjZDE0NTcuLjMxYTYy
ODNiMjhjMTFmMGU3ZDk0MjhjMjU4OWNmNTk2NmYzZDM4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbXBvcnQgIldLQWlyUGxheVJvdXRlUGlja2VyLmgiCiAjaW1wb3J0ICJX
S0ZpbGVVcGxvYWRQYW5lbC5oIgogI2ltcG9ydCAiV0tGb3JtUGVyaXBoZXJhbC5oIgorI2ltcG9y
dCAiV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgiCiAjaW1wb3J0ICJXS1N5bnRoZXRpY0Ns
aWNrVGFwR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgpAQCAtMjE1LDYgKzIxNiw4IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXI+IF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlcjsKIAorICAgIFJldGFp
blB0cjxXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I+IF9rZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yOworCiAgICAgQk9PTCBfaXNFZGl0YWJsZTsKICAgICBCT09MIF9zaG93aW5nVGV4dFN0eWxl
T3B0aW9uczsKICAgICBCT09MIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb247CkBAIC0yNjAs
NyArMjYzLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAogQGVuZAogCi1AaW50
ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1cmVSZWNvZ25pemVy
RGVsZWdhdGUsIFVJVGV4dEF1dG9zY3JvbGxpbmcsIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudCwg
VUlUZXh0SW5wdXRQcml2YXRlLCBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0ZSwgVUlXZWJUb3Vj
aEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90
b2NvbCwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlLCBXS0ZpbGVVcGxvYWRQYW5lbERl
bGVnYXRlCitAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1
cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJVGV4dEF1dG9zY3JvbGxpbmcsIFVJVGV4dElucHV0TXVs
dGlEb2N1bWVudCwgVUlUZXh0SW5wdXRQcml2YXRlLCBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0
ZSwgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJV0tJbnRlcmFj
dGlvblZpZXdQcm90b2NvbCwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlLCBXS0ZpbGVV
cGxvYWRQYW5lbERlbGVnYXRlLCBXS0tleWJvYXJkU2Nyb2xsYWJsZQogI2lmIEVOQUJMRShEQVRB
X0lOVEVSQUNUSU9OKQogICAgICwgVUlEcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZSwgVUlEcm9wSW50
ZXJhY3Rpb25EZWxlZ2F0ZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhMWE0ZGM4YjYwNTZh
OGZlNmQ2OTQzMGQwZDQ2NjllMWNlNjcwMDgyLi40MTk5Y2YyZDk3NzdiMjMwZGNiNGQzYzliOTVj
NDJkMWUxYTBlZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTYyMiw2ICs2MjIsOCBAQCAtICh2b2lk
KXNldHVwSW50ZXJhY3Rpb24KICAgICAgICAgW3NlbGYuc3VwZXJ2aWV3IGFkZFN1YnZpZXc6X2lu
dGVyYWN0aW9uVmlld3NDb250YWluZXJWaWV3LmdldCgpXTsKICAgICB9CiAKKyAgICBfa2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvciA9IGFkb3B0TlMoW1tXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0
b3IgYWxsb2NdIGluaXRXaXRoU2Nyb2xsYWJsZTpzZWxmXSk7CisKICAgICBbc2VsZi5sYXllciBh
ZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ0cmFuc2Zvcm0iIG9wdGlvbnM6TlNLZXlWYWx1
ZU9ic2VydmluZ09wdGlvbkluaXRpYWwgY29udGV4dDpuaWxdOwogCiAgICAgX3RvdWNoRXZlbnRH
ZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29n
bml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rvcihfd2ViVG91
Y2hFdmVudHNSZWNvZ25pemVkOikgdG91Y2hEZWxlZ2F0ZTpzZWxmXSk7CkBAIC03NzgsNiArNzgw
LDkgQEAgLSAodm9pZCljbGVhbnVwSW50ZXJhY3Rpb24KICAgICAKICAgICBfaW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXIgPSBudWxscHRyOwogICAgIF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiA9IHsg
fTsKKyAgICAKKyAgICBbX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgaW52YWxpZGF0ZV07Cisg
ICAgX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgPSBuaWw7CiB9CiAKIC0gKHZvaWQpX3JlbW92
ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKQEAgLTgwOCw3ICs4MTMsNyBAQCAtICh2b2lkKV9h
ZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAjZW5kaWYKIH0KIAotLSAoVUlWaWV3Kil1bnNj
YWxlZFZpZXcKKy0gKFVJVmlldyAqKXVuc2NhbGVkVmlldwogewogICAgIHJldHVybiBfaW50ZXJh
Y3Rpb25WaWV3c0NvbnRhaW5lclZpZXcuZ2V0KCk7CiB9CkBAIC0zNjM4LDYgKzM2NDMsOSBAQCAt
ICh2b2lkKWhhbmRsZUtleUV2ZW50Oig6OlVJRXZlbnQgKilldmVudAogCiAtICh2b2lkKWhhbmRs
ZUtleVdlYkV2ZW50Oig6OldlYkV2ZW50ICopdGhlRXZlbnQKIHsKKyAgICBpZiAoW19rZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yIGhhbmRsZUtleUV2ZW50OnRoZUV2ZW50XSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgX3BhZ2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCh0aGVFdmVudCkpOwogfQogCkBAIC0zNjc2LDczICszNjg0LDYgQEAgLSAodm9pZClfZGlk
SGFuZGxlS2V5RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudCBldmVudFdhc0hhbmRsZWQ6KEJPT0wp
ZXZlbnRXYXNIYW4KICAgICBfdWlFdmVudEJlaW5nUmVzZW50ID0gbmlsOwogfQogCi0tIChzdGQ6
Om9wdGlvbmFsPEZsb2F0UG9pbnQ+KV9zY3JvbGxPZmZzZXRGb3JFdmVudDooOjpXZWJFdmVudCAq
KWV2ZW50Ci17Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJTcGFjZUtleSA9IDB4MjA7
Ci0KLSAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCi0gICAgaWYgKF9hc3Npc3RlZE5vZGVJbmZv
cm1hdGlvbi5lbGVtZW50VHlwZSA9PSBJbnB1dFR5cGU6OlNlbGVjdCkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgPSBldmVudC5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM7Ci0gICAgaWYgKCFjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMubGVuZ3RoKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgZW51bSBTY3JvbGxpbmdJbmNyZW1lbnQgeyBEb2N1bWVudCwgUGFnZSwgTGluZSB9
OwotICAgIGVudW0gU2Nyb2xsaW5nRGlyZWN0aW9uIHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07
Ci0KLSAgICBhdXRvIGNvbXB1dGVPZmZzZXQgPSBeKFNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1l
bnQsIFNjcm9sbGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsKLSAgICAgICAgYm9vbCBpc0hvcml6
b250YWwgPSAoZGlyZWN0aW9uID09IExlZnQgfHwgZGlyZWN0aW9uID09IFJpZ2h0KTsKLQotICAg
ICAgICBDR0Zsb2F0IHNjcm9sbERpc3RhbmNlID0gXiBDR0Zsb2F0IHsKLSAgICAgICAgICAgIHN3
aXRjaCAoaW5jcmVtZW50KSB7Ci0gICAgICAgICAgICBjYXNlIERvY3VtZW50OgotICAgICAgICAg
ICAgICAgIEFTU0VSVCghaXNIb3Jpem9udGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5ib3VuZHMuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgICAgICBjYXNlIFBhZ2U6Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwotICAgICAgICAgICAgICAgIHJldHVybiBTY3Jv
bGxiYXI6OnBhZ2VTdGVwKF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSwg
c2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQpOwotICAgICAgICAgICAgY2FzZSBMaW5lOgotICAgICAg
ICAgICAgICAgIHJldHVybiBTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICB9KCk7Ci0KLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBVcCB8fCBk
aXJlY3Rpb24gPT0gTGVmdCkKLSAgICAgICAgICAgIHNjcm9sbERpc3RhbmNlID0gLXNjcm9sbERp
c3RhbmNlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIChpc0hvcml6b250YWwgPyBGbG9hdFBv
aW50KHNjcm9sbERpc3RhbmNlLCAwKSA6IEZsb2F0UG9pbnQoMCwgc2Nyb2xsRGlzdGFuY2UpKTsK
LSAgICB9OwotCi0gICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRv
U3RyaW5nOlVJS2V5SW5wdXRMZWZ0QXJyb3ddKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9mZnNl
dChMaW5lLCBMZWZ0KTsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0Vx
dWFsVG9TdHJpbmc6VUlLZXlJbnB1dFJpZ2h0QXJyb3ddKQotICAgICAgICByZXR1cm4gY29tcHV0
ZU9mZnNldChMaW5lLCBSaWdodCk7Ci0KLSAgICBTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50
Rm9yVmVydGljYWxBcnJvd0tleSA9IExpbmU7Ci0gICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3Mg
JiBXZWJFdmVudEZsYWdNYXNrQWx0ZXJuYXRlKQotICAgICAgICBpbmNyZW1lbnRGb3JWZXJ0aWNh
bEFycm93S2V5ID0gUGFnZTsKLSAgICBlbHNlIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2Vi
RXZlbnRGbGFnTWFza0NvbW1hbmQpCi0gICAgICAgIGluY3JlbWVudEZvclZlcnRpY2FsQXJyb3dL
ZXkgPSBEb2N1bWVudDsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0Vx
dWFsVG9TdHJpbmc6VUlLZXlJbnB1dFVwQXJyb3ddKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9m
ZnNldChpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93S2V5LCBVcCk7Ci0gICAgaWYgKFtjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXREb3duQXJyb3dd
KQotICAgICAgICByZXR1cm4gY29tcHV0ZU9mZnNldChpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93
S2V5LCBEb3duKTsKLQotICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1
YWxUb1N0cmluZzpVSUtleUlucHV0UGFnZURvd25dKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9m
ZnNldChQYWdlLCBEb3duKTsKLSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBp
c0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBhZ2VVcF0pCi0gICAgICAgIHJldHVybiBjb21wdXRl
T2Zmc2V0KFBhZ2UsIFVwKTsKLQotICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IGNoYXJhY3RlckF0SW5kZXg6MF0gPT0ga1dlYlNwYWNlS2V5KQotICAgICAgICByZXR1cm4gY29t
cHV0ZU9mZnNldChQYWdlLCAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tT
aGlmdCkgPyBVcCA6IERvd24pOwotCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQogLSAo
Qk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudCBpc0NoYXJFdmVudDoo
Qk9PTClpc0NoYXJFdmVudAogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViRW50ZXJL
ZXkgPSAweDAwMDM7CkBAIC0zNzU3LDEwICszNjk4LDggQEAgLSAoQk9PTClfaW50ZXJwcmV0S2V5
RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudCBpc0NoYXJFdmVudDooQk9PTClpc0NoYXJFdmVudAog
ICAgIGlmICghY29udGVudEVkaXRhYmxlICYmIGV2ZW50LmlzVGFiS2V5KQogICAgICAgICByZXR1
cm4gTk87CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxPZmZzZXQg
PSBbc2VsZiBfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6ZXZlbnRdKSB7Ci0gICAgICAgIFtfd2ViVmll
dyBfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OipzY3JvbGxPZmZzZXRdOworICAgIGlmIChbX2tleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3IgYmVnaW5XaXRoRXZlbnQ6ZXZlbnRdKQogICAgICAgICByZXR1
cm4gWUVTOwotICAgIH0KIAogICAgIFVJS2V5Ym9hcmRJbXBsICprZXlib2FyZCA9IFtVSUtleWJv
YXJkSW1wbCBzaGFyZWRJbnN0YW5jZV07CiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnMgPSBldmVu
dC5jaGFyYWN0ZXJzOwpAQCAtMzgwOCw2ICszNzQ3LDM2IEBAIC0gKEJPT0wpX2ludGVycHJldEtl
eUV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQgaXNDaGFyRXZlbnQ6KEJPT0wpaXNDaGFyRXZlbnQK
ICAgICByZXR1cm4gTk87CiB9CiAKKy0gKEJPT0wpaXNLZXlib2FyZFNjcm9sbGFibGUKK3sKKyAg
ICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5
cGUgPT0gSW5wdXRUeXBlOjpTZWxlY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCistIChDR0Zsb2F0KWRpc3RhbmNlRm9yU2Nyb2xsaW5nSW5jcmVtZW50
OihTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50Cit7CisgICAgc3dpdGNoIChpbmNyZW1lbnQp
IHsKKyAgICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6RG9jdW1lbnQ6CisgICAgICAgIHJldHVy
biBzZWxmLmJvdW5kcy5zaXplLmhlaWdodDsKKyAgICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6
UGFnZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXAoX3BhZ2Ut
PnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdo
dCk7CisgICAgY2FzZSBTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU6CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7CisgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCistICh2b2lkKXNjcm9sbEJ5Q29u
dGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClvZmZzZXQgYW5pbWF0ZWQ6KEJPT0wpYW5p
bWF0ZWQKK3sKKyAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5Q29udGVudE9mZnNldDpvZmZzZXQgYW5p
bWF0ZWQ6YW5pbWF0ZWRdOworfQorCiAtICh2b2lkKWV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxs
YmFjazooTlNTdHJpbmcgKiljb21tYW5kTmFtZQogewogICAgIFtzZWxmIGJlZ2luU2VsZWN0aW9u
Q2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTM5YWQ3MjA5OTFlMGJlYjc2
NjIwOGMwMzNjNTgzZmI1NGRkZjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBGbG9hdFBvaW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFz
cyBTY3JvbGxpbmdJbmNyZW1lbnQgOiB1aW50OF90IHsKKyAgICBEb2N1bWVudCwKKyAgICBQYWdl
LAorICAgIExpbmUKK307CisKK30KKworQGNsYXNzIFdlYkV2ZW50OworQHByb3RvY29sIFdLS2V5
Ym9hcmRTY3JvbGxhYmxlOworCitAaW50ZXJmYWNlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xsYWJsZTooaWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxl
PilzY3JvbGxhYmxlOworCistICh2b2lkKWludmFsaWRhdGU7CisKKy0gKEJPT0wpYmVnaW5XaXRo
RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudDsKKy0gKEJPT0wpaGFuZGxlS2V5RXZlbnQ6KDo6V2Vi
RXZlbnQgKilldmVudDsKKworQGVuZAorCitAcHJvdG9jb2wgV0tLZXlib2FyZFNjcm9sbGFibGUg
PE5TT2JqZWN0PgorQHJlcXVpcmVkCistIChCT09MKWlzS2V5Ym9hcmRTY3JvbGxhYmxlOworLSAo
Q0dGbG9hdClkaXN0YW5jZUZvclNjcm9sbGluZ0luY3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJ
bmNyZW1lbnQpaW5jcmVtZW50OworLSAodm9pZClzY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KFdlYkNv
cmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFuaW1hdGVkOworQGVuZAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI3
NTZiNjQ5ZWIwNWI0MGEwNDIzNWVjZjhhODY0MGYzYmQ4NWY4NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iu
bW0KQEAgLTAsMCArMSwyMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIgorCisjaWYgUExBVEZPUk0oSU9T
KQorCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CisjaW1wb3J0IDxhbGdvcml0aG0+CisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2VudW0gY2xhc3MgS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvclN0YXRlIDogdWludDhfdCB7Cisg
ICAgV2FpdGluZ0ZvckZpcnN0RXZlbnQsCisgICAgV2FpdGluZ0ZvclJlcGVhdCwKKyAgICBBbmlt
YXRpbmcKK307CisKK307CisKK0BpbXBsZW1lbnRhdGlvbiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IgeworICAgIGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZT4gX3Njcm9sbGFibGU7CisgICAg
Q0ZUaW1lSW50ZXJ2YWwgX3N0YXJ0VGltZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IF9zY3Jv
bGxPZmZzZXRQZXJJbmNyZW1lbnQ7CisgICAgUmV0YWluUHRyPENBRGlzcGxheUxpbms+IF9kaXNw
bGF5TGluazsKKyAgICBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGUgX3N0YXRlOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFNjcm9sbGFibGU6KGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZT4pc2Ny
b2xsYWJsZQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX3Njcm9sbGFibGUgPSBzY3JvbGxhYmxlOworCisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BB
bmltYXRlZFNjcm9sbF07CisgICAgX3Njcm9sbGFibGUgPSBuaWw7Cit9CisKKy0gKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pX3Njcm9sbE9mZnNldEZvckV2ZW50Oig6OldlYkV2
ZW50ICopZXZlbnQKK3sKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNwYWNlS2V5ID0g
MHgyMDsKKworICAgIGlmICghW19zY3JvbGxhYmxlIGlzS2V5Ym9hcmRTY3JvbGxhYmxlXSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnMgPSBldmVudC5jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM7CisgICAg
aWYgKCFjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMubGVuZ3RoKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgZW51bSBjbGFzcyBTY3JvbGxpbmdEaXJlY3Rpb24gOiB1aW50
OF90IHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07CisKKyAgICBhdXRvIGNvbXB1dGVPZmZzZXQg
PSBeKFNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1lbnQsIFNjcm9sbGluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pIHsKKyAgICAgICAgYm9vbCBpc0hvcml6b250YWwgPSAoZGlyZWN0aW9uID09IFNjcm9s
bGluZ0RpcmVjdGlvbjo6TGVmdCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xsaW5nRGlyZWN0aW9uOjpS
aWdodCk7CisKKyAgICAgICAgQ0dGbG9hdCBzY3JvbGxEaXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBk
aXN0YW5jZUZvclNjcm9sbGluZ0luY3JlbWVudDppbmNyZW1lbnRdOworCisgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gU2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCB8fCBkaXJlY3Rpb24gPT0gU2Nyb2xs
aW5nRGlyZWN0aW9uOjpMZWZ0KQorICAgICAgICAgICAgc2Nyb2xsRGlzdGFuY2UgPSAtc2Nyb2xs
RGlzdGFuY2U7CisKKyAgICAgICAgcmV0dXJuIChpc0hvcml6b250YWwgPyBXZWJDb3JlOjpGbG9h
dFBvaW50KHNjcm9sbERpc3RhbmNlLCAwKSA6IFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgc2Nyb2xs
RGlzdGFuY2UpKTsKKyAgICB9OworCisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRMZWZ0QXJyb3ddKQorICAgICAgICByZXR1cm4g
Y29tcHV0ZU9mZnNldChTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmUsIFNjcm9sbGluZ0RpcmVjdGlv
bjo6TGVmdCk7CisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRv
U3RyaW5nOlVJS2V5SW5wdXRSaWdodEFycm93XSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZz
ZXQoU2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lLCBTY3JvbGxpbmdEaXJlY3Rpb246OlJpZ2h0KTsK
KworICAgIFNjcm9sbGluZ0luY3JlbWVudCBpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93S2V5ID0g
U2Nyb2xsaW5nSW5jcmVtZW50OjpMaW5lOworICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYg
V2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZSkKKyAgICAgICAgaW5jcmVtZW50Rm9yVmVydGljYWxB
cnJvd0tleSA9IFNjcm9sbGluZ0luY3JlbWVudDo6UGFnZTsKKyAgICBlbHNlIGlmIChldmVudC5t
b2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQpCisgICAgICAgIGluY3JlbWVu
dEZvclZlcnRpY2FsQXJyb3dLZXkgPSBTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OworICAg
IGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlu
cHV0VXBBcnJvd10pCisgICAgICAgIHJldHVybiBjb21wdXRlT2Zmc2V0KGluY3JlbWVudEZvclZl
cnRpY2FsQXJyb3dLZXksIFNjcm9sbGluZ0RpcmVjdGlvbjo6VXApOworICAgIGlmIChbY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0RG93bkFycm93
XSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoaW5jcmVtZW50Rm9yVmVydGljYWxBcnJv
d0tleSwgU2Nyb2xsaW5nRGlyZWN0aW9uOjpEb3duKTsKKworICAgIGlmIChbY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0UGFnZURvd25dKQorICAg
ICAgICByZXR1cm4gY29tcHV0ZU9mZnNldChTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2UsIFNjcm9s
bGluZ0RpcmVjdGlvbjo6RG93bik7CisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlVXBdKQorICAgICAgICByZXR1cm4gY29t
cHV0ZU9mZnNldChTY3JvbGxpbmdJbmNyZW1lbnQ6OlBhZ2UsIFNjcm9sbGluZ0RpcmVjdGlvbjo6
VXApOworCisgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgY2hhcmFjdGVyQXRJ
bmRleDowXSA9PSBrV2ViU3BhY2VLZXkpCisgICAgICAgIHJldHVybiBjb21wdXRlT2Zmc2V0KFNj
cm9sbGluZ0luY3JlbWVudDo6UGFnZSwgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZs
YWdNYXNrU2hpZnQpID8gU2Nyb2xsaW5nRGlyZWN0aW9uOjpVcCA6IFNjcm9sbGluZ0RpcmVjdGlv
bjo6RG93bik7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCistIChCT09MKWJlZ2lu
V2l0aEV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3N0YXRlICE9IEtleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvckZpcnN0RXZlbnQpCisgICAgICAg
IHJldHVybiBOTzsKKworICAgIGF1dG8gb2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2
ZW50OmV2ZW50XTsKKworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1cm4gTk87CisKKyAg
ICBfc3RhdGUgPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGU6OldhaXRpbmdGb3JSZXBl
YXQ7CisgICAgX3Njcm9sbE9mZnNldFBlckluY3JlbWVudCA9ICpvZmZzZXQ7CisKKyAgICAvLyBU
aGUgZmlyc3Qga2V5Ym9hcmQgZXZlbnQgdGhhdCBzdGFydHMgc2Nyb2xsaW5nIHBlcmZvcm1zIGl0
cyBvd24KKyAgICAvLyBkaXNjcmV0ZSBhbmltYXRlZCBzY3JvbGwuIENvbnRpbnVvdXNseSBhbmlt
YXRlZCBzY3JvbGxpbmcgc3RhcnRzCisgICAgLy8gd2hlbiB0aGUga2V5IHJlcGVhdHMuCisgICAg
W19zY3JvbGxhYmxlIHNjcm9sbEJ5Q29udGVudE9mZnNldDpfc2Nyb2xsT2Zmc2V0UGVySW5jcmVt
ZW50IGFuaW1hdGVkOllFU107CisKKyAgICByZXR1cm4gWUVTOworfQorCistIChCT09MKWhhbmRs
ZUtleUV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3N0YXRlID09IEtleWJv
YXJkU2Nyb2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvckZpcnN0RXZlbnQpCisgICAgICAg
IHJldHVybiBOTzsKKworICAgIGF1dG8gb2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2
ZW50OmV2ZW50XTsKKyAgICBpZiAoIW9mZnNldCB8fCBvZmZzZXQgIT0gX3Njcm9sbE9mZnNldFBl
ckluY3JlbWVudCB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXApIHsKKyAgICAgICAgW3Nl
bGYgc3RvcEFuaW1hdGVkU2Nyb2xsXTsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKworICAg
IGlmIChfc3RhdGUgPT0gS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvclN0YXRlOjpXYWl0aW5nRm9y
UmVwZWF0KQorICAgICAgICBbc2VsZiBzdGFydEFuaW1hdGVkU2Nyb2xsXTsKKworICAgIHJldHVy
biBZRVM7Cit9CisKKy0gKHZvaWQpc3RhcnRBbmltYXRlZFNjcm9sbAoreworICAgIEFTU0VSVCgh
X2Rpc3BsYXlMaW5rKTsKKworICAgIF9zdGF0ZSA9IEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3JT
dGF0ZTo6QW5pbWF0aW5nOworICAgIF9zdGFydFRpbWUgPSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsK
KyAgICBfZGlzcGxheUxpbmsgPSBbQ0FEaXNwbGF5TGluayBkaXNwbGF5TGlua1dpdGhUYXJnZXQ6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZGlzcGxheUxpbmtGaXJlZDopXTsKKyAgICBbX2Rpc3Bs
YXlMaW5rIGFkZFRvUnVuTG9vcDpbTlNSdW5Mb29wIG1haW5SdW5Mb29wXSBmb3JNb2RlOk5TUnVu
TG9vcENvbW1vbk1vZGVzXTsKK30KKworLSAodm9pZClzdG9wQW5pbWF0ZWRTY3JvbGwKK3sKKyAg
ICBfc3RhdGUgPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGU6OldhaXRpbmdGb3JGaXJz
dEV2ZW50OworICAgIFtfZGlzcGxheUxpbmsgaW52YWxpZGF0ZV07CisgICAgX2Rpc3BsYXlMaW5r
ID0gbmlsOworfQorCistICh2b2lkKWRpc3BsYXlMaW5rRmlyZWQ6KENBRGlzcGxheUxpbmsgKilz
ZW5kZXIKK3sKKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBzZWNvbmRzUGVyU2Nyb2xsSW5jcmVt
ZW50ID0gMC4wNTsgLy8gU2Vjb25kcyBpdCBzaG91bGQgdGFrZSB0byBjb3ZlciBvbmUgaW5jcmVt
ZW50IHdoZW4gYXQgZnVsbCBzcGVlZC4KKyAgICBjb25zdCBmbG9hdCBtYXhpbXVtVmVsb2NpdHkg
PSAyMDAwOyAvLyBNYXhpbXVtIHZlbG9jaXR5IGluIHBpeGVscyBwZXIgc2Vjb25kLiBFbXBpcmlj
YWxseSBkZXRlcm1pbmVkLgorICAgIGNvbnN0IGZsb2F0IGFjY2VsZXJhdGlvbkR1cmF0aW9uID0g
MC4zOyAvLyBEdXJhdGlvbiBvZiBhY2NlbGVyYXRpb24gaW4gc2Vjb25kcy4gVGhpcyBtYXRjaGVz
IFVJU2Nyb2xsVmlldy4KKworICAgIGF1dG8gdmVsb2NpdHkgPSBfc2Nyb2xsT2Zmc2V0UGVySW5j
cmVtZW50LnNjYWxlZCgxLiAvIHNlY29uZHNQZXJTY3JvbGxJbmNyZW1lbnQpOworICAgIHZlbG9j
aXR5ID0gdmVsb2NpdHkuY29uc3RyYWluZWRCZXR3ZWVuKHsgLW1heGltdW1WZWxvY2l0eSwgLW1h
eGltdW1WZWxvY2l0eSB9LCB7IG1heGltdW1WZWxvY2l0eSwgbWF4aW11bVZlbG9jaXR5IH0pOwor
CisgICAgQ0ZUaW1lSW50ZXJ2YWwgZnJhbWVEdXJhdGlvbiA9IHNlbmRlci50YXJnZXRUaW1lc3Rh
bXAgLSBzZW5kZXIudGltZXN0YW1wOworICAgIENGVGltZUludGVydmFsIHRpbWVGcm9tQW5pbWF0
aW9uU3RhcnQgPSBzZW5kZXIudGltZXN0YW1wIC0gX3N0YXJ0VGltZTsKKyAgICBmbG9hdCBhY2Nl
bGVyYXRpb25GYWN0b3IgPSBbW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1l
OmtDQU1lZGlhVGltaW5nRnVuY3Rpb25FYXNlSW5FYXNlT3V0XSBfc29sdmVGb3JJbnB1dDp0aW1l
RnJvbUFuaW1hdGlvblN0YXJ0IC8gYWNjZWxlcmF0aW9uRHVyYXRpb25dOworCisgICAgYXV0byBj
b250ZW50T2Zmc2V0ID0gdmVsb2NpdHkuc2NhbGVkKGFjY2VsZXJhdGlvbkZhY3RvciAqIGZyYW1l
RHVyYXRpb24pOworICAgIFtfc2Nyb2xsYWJsZSBzY3JvbGxCeUNvbnRlbnRPZmZzZXQ6Y29udGVu
dE9mZnNldCBhbmltYXRlZDpOT107Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDZmODZlMDQ1YjU3NmQxYjYyNjIyMGYwOTU5NTY2Mzk5YWZiZGIyZTkuLmEyZGEyNDk3NmRh
MjgzZTIxMTdhMzA4YTNiNTIzNzFlOTEyYmM4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE4LDYgKzYxOCw3IEBACiAJCTJEMTA4
NzYwMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEwODc1RTFEMkM1NzNFMDBCODVGODIg
LyogTG9hZFBhcmFtZXRlcnMuY3BwICovOyB9OwogCQkyRDEwODc2MTFEMkM1NzNFMDBCODVGODIg
LyogTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oICov
OyB9OwogCQkyRDEwODc2MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnNDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzYy
MUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICovOyB9OworCQkyRDEx
QkQxRjIxMTI1QkU4MDA5RDk5RTMgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENUUxMjYyMTBB
REM3QTAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbSAqLzsgfTsKIAkJ
MkQxMjVDNUUxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUMxODU3RUEw
NTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovOyB9OwogCQkyRDEyNUM1RjE4
NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUQxODU3RUEwNTAwM0JB
M0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJMkQxMkRBQjUyMDY2
MkM3MzAwNkYwMEZCIC8qIFdLQW5pbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTJEQUI0MjA2NjJDNzMwMDZGMDBGQiAvKiBX
S0FuaW1hdGlvbkRlbGVnYXRlLmggKi87IH07CkBAIC03MTcsNiArNzE4LDcgQEAKIAkJMkRENDVB
REYxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENDVBREQxRTVGODk3MjAw
NkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tICovOyB9OwogCQkyREQ1QTcyOTFF
QkYwOEQ1MDA5QkE1OTcgLyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyODFFQkYwOEQ1MDA5QkE1OTcg
LyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmggKi87IH07CiAJCTJERDVBNzJCMUVCRjA5QTcwMDlC
QTU5NyAvKiBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyQTFFQkYwOUE3
MDA5QkE1OTcgLyogSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oICov
OyB9OworCQkyREQ1RTEyOTIxMEFEQzdCMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REQ1RTEyNzIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLmgg
Ki87IH07CiAJCTJERDY3QTJFMUJEODE5NzMwMDUzQjI1MSAvKiBBUElGaW5kTWF0Y2hlc0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENjdB
MkQxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50LmggKi87IH07CiAJCTJE
RDY3QTM1MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3QTMzMUJEODYxMDYwMDUz
QjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQuaCAqLzsgfTsKIAkJMkRENjdBMzYxQkQ4NjEwNjAw
NTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3QTM0MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRG
aW5kZXJDbGllbnQubW0gKi87IH07CkBAIC0zMTkwLDYgKzMxOTIsOCBAQAogCQkyREQ0NUFERDFF
NUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbTsg
cGF0aCA9IGlvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRENUE3MjgxRUJGMDhENTAwOUJBNTk3IC8qIFZpc2libGVXZWJQYWdlQ291
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmxlV2ViUGFnZUNv
dW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENUE3MkExRUJGMDlBNzAw
OUJBNTk3IC8qIEhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5j
cmVhc2VzQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREQ1RTEyNjIx
MEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLm1tOyBwYXRoID0gaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRENUUxMjcyMTBBREM3QTAwREI2MDEyIC8qIFdLS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDsgcGF0aCA9IGlvcy9XS0tleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENjdBMkQx
QkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRNYXRjaGVzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJERDY3QTMzMUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tUZXh0RmluZGVyQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDY3QTM0MUJEODYxMDYwMDUz
QjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1RleHRGaW5kZXJDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01OTg0LDYgKzU5ODgsOCBAQAogCQkJCTBGM0M3MjU3MTk2RjVGNTAwMEFFREQw
QyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0gKi8sCiAJCQkJQTU0MjkzQTIxOTVBNDND
NjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggKi8s
CiAJCQkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdl
c3R1cmVSZWNvZ25pemVyLm1tICovLAorCQkJCTJERDVFMTI3MjEwQURDN0EwMERCNjAxMiAvKiBX
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCAqLywKKwkJCQkyREQ1RTEyNjIxMEFEQzdBMDBE
QjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICovLAogCQkJCTJEQTFFNEZD
MThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCAqLywKIAkJCQkyREExRTRGRDE4
QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3Lm1tICovLAogCQkJCUExNUVFREU0MUUz
MDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLApAQCAtOTc4OSw2ICs5Nzk1LDcg
QEAKIAkJCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDMEYwQUIyMDAwNjU4MjAwNTM2NTM2IC8qIFdL
SW5zcGVjdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTE4QjVEMjFGRTFENTVCMDBG
OUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERDVF
MTI5MjEwQURDN0IwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQTlFMTBCMTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzkwQTlGMUFENzE2NDkwMEFCOTBC
MyAvKiBXS0xheW91dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTFFNEZFMThDMDJCNkEw
MERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2MzMsNiAr
MTE2NDAsNyBAQAogCQkJCTk5NEJBREYzMUY3RDc4MTEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDMEYwQUMyMDAwNjU4NTAwNTM2
NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxOEI1RDMx
RkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMkQxMUJEMUYyMTEyNUJFODAwOUQ5OUUzIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlFMTBBMTMxNUNEMTgwMDlFNzAzMSAvKiBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBMUU0RkYx
OEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUM5OEM0OEE5MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346312</attachid>
            <date>2018-08-01 16:24:47 -0700</date>
            <delta_ts>2018-08-01 16:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188239-20180801162447.patch</filename>
            <type>text/plain</type>
            <size>32919</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdiOTdhNGZjYzhmNzM1NDE0
YzA4YzMzZmVhMWIzYzg2ZDE2Y2VkMDYuLjYyZmM5NzRmMDhjYjFjNmJjNzhjMmZlNWMzMDg0MGUz
NDliMTUyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMTgtMDgtMDEgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNpbmcgdGhlIGtleWJv
YXJkIGFycm93IGtleXMgdG8gc2Nyb2xsIGEgd2VicGFnZSBpcyB2ZXJ5IHNsb3csIG5vdCBzbW9v
dGgsIHRha2VzIHRvbyBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODgyMzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyOTk3NjU0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBJbnN0ZWFkIG9mIGRl
cGVuZGluZyBvbiBrZXkgcmVwZWF0IHRvIGRyaXZlIHNjcm9sbGluZyB3aXRoIGFycm93IGtleXMg
aGVsZCBkb3duLAorICAgICAgICBydW4gYSBkaXNwbGF5IGxpbmsgdGhhdCBhbmltYXRlcyB0aGUg
c2Nyb2xsLiBXZSBzdGlsbCBkbyBhIHNpbmdsZSBkaXNjcmV0ZSBzY3JvbGwKKyAgICAgICAgZmly
c3QgKHNvIHRoYXQgeW91IGNhbiB0YXAgdGhlIGtleSBhbmQgc2hpZnQgYnkgbGluZS9wYWdlKSwg
YnV0IHRoZW4gb24gdGhlIGZpcnN0CisgICAgICAgIHJlcGVhdCB3ZSByYW1wIHVwIHRvIGEgY29u
c3RhbnQgdmVsb2NpdHkgZGV0ZXJtaW5lZCBieSB0aGUgZGVzaXJlZCBpbmNyZW1lbnQsCisgICAg
ICAgIHN0b3BwaW5nIHdoZW4gdGhlIGtleSBpcyBsaWZ0ZWQgb3IgYSBkaWZmZXJlbnQga2V5IGlz
IHByZXNzZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6YW5pbWF0ZWQ6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsQnlDb250ZW50T2Zmc2V0Ol0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAg
ICAgICAgQWRkIGFuaW1hdGVkIHBhcmFtZXRlciB0byBzY3JvbGxCeUNvbnRlbnRPZmZzZXQsIGFu
ZCBwbHVtYiBpdCB0aHJvdWdoIHRvIFVJU2Nyb2xsVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgIEFkZCBhIFdLS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvciBtZW1iZXIuCisgICAgICAgIENvbmZvcm0gdG8gV0tLZXlib2Fy
ZFNjcm9sbGFibGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6
CisgICAgICAgIEluc3RhbGwgdGhlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAgICAgICBVbmlu
c3RhbGwgdGhlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IHVuc2NhbGVkVmlld10pOgorICAgICAgICBGaXggYSBzdHVwaWQgc3R5bGUgbml0
LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFuZGxlS2V5V2ViRXZlbnQ6XSk6CisgICAg
ICAgIEdpdmUgV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHRoZSBmaXJzdCBzaG90IGF0IGlu
Y29taW5nIGtleWJvYXJkIGV2ZW50cy4KKyAgICAgICAgSXQgd2lsbCBvbmx5IGNvbnN1bWUgZXZl
bnRzIGhlcmUgaWYgaXQncyBhbHJlYWR5IHBlcmZvcm1pbmcgYSBzY3JvbGxpbmcgYW5pbWF0aW9u
CisgICAgICAgIChiZWNhdXNlIG90aGVyd2lzZSB0aGV5IHNob3VsZCBnbyBzdHJhaWdodCB0aHJv
dWdoIHRvIHRoZSBwYWdlKS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnRlcnByZXRL
ZXlFdmVudDppc0NoYXJFdmVudDpdKToKKyAgICAgICAgR2l2ZSBXS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IgYSBzaG90IGF0IGhhbmRsaW5nIGtleWJvYXJkIGV2ZW50cyB0aGF0CisgICAgICAg
IHRoZSB3ZWIgY29udGVudCBkaWQgbm90IGhhbmRsZS4gV2Ugd2lsbCBvbmx5IHN0YXJ0IGEgc2Ny
b2xsaW5nIGFuaW1hdGlvbgorICAgICAgICBpZiB0aGUgcGFnZSBkaWQgbm90IGhhbmRsZSBhbiBl
dmVudCB0aGF0IHdvdWxkIHN0YXJ0IGEgc2Nyb2xsLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgaXNLZXlib2FyZFNjcm9sbGFibGVdKToKKyAgICAgICAgUGFydCBvZiBXS0tleWJvYXJkU2Ny
b2xsYWJsZTsgb25seSByZXBvcnQgb3Vyc2VsdmVzIGFzIHNjcm9sbGFibGUgaWYKKyAgICAgICAg
d2Ugd291bGQgcHJldmlvdXNseSBoYXZlIGFsbG93ZWQgc2Nyb2xsaW5nIGZyb20ga2V5Ym9hcmQg
ZXZlbnRzIChpZgorICAgICAgICB3ZSdyZSBub3QgaW4gY29udGVudGVkaXRhYmxlLCBhbmQgZG9u
J3QgaGF2ZSBhIDxzZWxlY3Q+IGZvY3VzZWQpLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
ZGlzdGFuY2VGb3JTY3JvbGxpbmdJbmNyZW1lbnQ6XSk6CisgICAgICAgIFBhcnQgb2YgV0tLZXli
b2FyZFNjcm9sbGFibGU7IGNvbXB1dGUgdGhlIGRpc3RhbmNlIGZvciBlYWNoIHNjcm9sbGluZyBp
bmNyZW1lbnQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzY3JvbGxCeUNvbnRlbnRPZmZz
ZXQ6YW5pbWF0ZWQ6XSk6CisgICAgICAgIFBhcnQgb2YgV0tLZXlib2FyZFNjcm9sbGFibGU7IHBs
dW1iIHNjcm9sbHMgdXAgdG8gV0tXZWJWaWV3LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3Njcm9sbE9mZnNldEZvckV2ZW50Ol0pOiBNb3ZlZCB0byBXS0tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IubW0uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvciBpbml0XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBp
bml0V2l0aFNjcm9sbGFibGU6XSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ciBfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6XSk6CisgICAgICAgIENvbXB1dGUgdGhlIHNjcm9sbCBv
ZmZzZXQgZ2l2ZW4gYSBwYXJ0aWN1bGFyIGV2ZW50LiBUaGlzIGlzIG1vdmVkIGZyb20gV0tDb250
ZW50VmlldzsKKyAgICAgICAgb3RoZXJ3aXNlIHRoZSBwcmltYXJ5IGNoYW5nZSBpcyB0aGF0IGl0
IG5vdyBhc2tzIHRoZSBXS0tleWJvYXJkU2Nyb2xsYWJsZQorICAgICAgICBmb3IgdGhlIGRpc3Rh
bmNlIGluc3RlYWQgb2YgY29tcHV0aW5nIGl0IGRpcmVjdGx5LgorCisgICAgICAgICgtW1dLS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBiZWdpbldpdGhFdmVudDpdKToKKyAgICAgICAgSWYgd2Un
cmUgY3VycmVudGx5IGluIHRoZSBpbml0aWFsIHN0YXRlIChXYWl0aW5nRm9yRmlyc3RFdmVudCks
IGFuZAorICAgICAgICBhIGdpdmVuIGV2ZW50IHNob3VsZCBzdGFydCBhIHNjcm9sbCwgdHJhbnNp
dGlvbiBpbnRvIFdhaXRpbmdGb3JSZXBlYXQsCisgICAgICAgIGFuZCBkbyBhIHNpbmdsZSBhbmlt
YXRlZCBzY3JvbGwgb2YgdGhlIGFwcHJvcHJpYXRlIGRpc3RhbmNlLgorCisgICAgICAgICgtW1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBoYW5kbGVLZXlFdmVudDpdKToKKyAgICAgICAgSWYg
dGhpcyBrZXkgZXZlbnQgc2hvdWxkIHRlcm1pbmF0ZSBhIHNjcm9sbCAoYmVjYXVzZSBpdCBpcyBl
aXRoZXIgYSBrZXl1cAorICAgICAgICBvciBhIG5vbi1zY3JvbGxpbmcga2V5ZG93biksIHNodXQg
ZG93biBhbnkgcnVubmluZyBhbmltYXRpb25zLgorCisgICAgICAgIElmIHRoaXMgaXMgdGhlIGZp
cnN0IGtleSByZXBlYXQgYWZ0ZXIgdGhlIGluaXRpYWwgc2Nyb2xsLCBzdGFydCBhIHNjcm9sbGlu
ZworICAgICAgICBhbmltYXRpb24uCisKKyAgICAgICAgRWF0IHRoZSBldmVudCBpZiBpdCBlaXRo
ZXIgc3RhcnRlZCBvciBjb250aW51ZWQgYSBzY3JvbGwuCisKKyAgICAgICAgKC1bV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yIHN0YXJ0QW5pbWF0ZWRTY3JvbGxdKToKKyAgICAgICAgKC1bV0tL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHN0b3BBbmltYXRlZFNjcm9sbF0pOgorICAgICAgICBI
ZWxwZXJzIHRvIHN0YXJ0IGFuZCBzdG9wIHRoZSBkaXNwbGF5IGxpbmsgYW5kIGRvIHNvbWUgYm9v
a2tlZXBpbmcuCisKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGRpc3Bs
YXlMaW5rRmlyZWQ6XSk6CisgICAgICAgIEFzayB0aGUgV0tLZXlib2FyZFNjcm9sbGFibGUgdG8g
c2Nyb2xsIHRoZSBjb250ZW50IGJhc2VkIG9uIHRoZSBmcmFtZSB0aW1lLAorICAgICAgICBhbiBh
Y2NlbGVyYXRpb24gY3VydmUsIGFuZCB0aGUgY3VycmVudCBhbmltYXRpb24ncyBzY3JvbGxpbmcg
aW5jcmVtZW50LgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTgtMDgtMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzQ0NDMgYW5kIHIyMzQ0NDUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1
M2RmOTE1NzE3ZGNhMzQwZmM3Y2EzNjYxNmE3MzVmNzQxOWZmZWVjLi5iMTBhMDFjMDRhNzE4MDAx
MmRlOWM2NTFkMDc0NjFhNDQyNGJjYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIxMTMsNyArMjExMyw3IEBAIC0gKEJPT0wpX3Nj
cm9sbFRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgb3JpZ2luOihXZWJDb3Jl
OjpGbG9hdFBvaW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS0gKHZvaWQpX3Njcm9sbEJ5Q29u
dGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludCljb250ZW50T2Zmc2V0RGVsdGEKKy0gKHZv
aWQpX3Njcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludCljb250ZW50T2Zm
c2V0RGVsdGEgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQKIHsKICAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IHNjYWxlZE9mZnNldERlbHRhID0gY29udGVudE9mZnNldERlbHRhOwogICAgIENHRmxvYXQg
em9vbVNjYWxlID0gY29udGVudFpvb21TY2FsZShzZWxmKTsKQEAgLTIxMjgsNyArMjEyOCw3IEBA
IC0gKHZvaWQpX3Njcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludCljb250
ZW50T2Zmc2V0RGVsdGEKIAogICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVh
bSA8PCAiX3Njcm9sbEJ5Q29udGVudE9mZnNldDogc2Nyb2xsaW5nIHRvICIgPDwgV2ViQ29yZTo6
RmxvYXRQb2ludChib3VuZGVkT2Zmc2V0KSk7CiAKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVu
dE9mZnNldDpib3VuZGVkT2Zmc2V0IGFuaW1hdGVkOllFU107CisgICAgW19zY3JvbGxWaWV3IHNl
dENvbnRlbnRPZmZzZXQ6Ym91bmRlZE9mZnNldCBhbmltYXRlZDphbmltYXRlZF07CiB9CiAKIC0g
KHZvaWQpX3pvb21PdXRXaXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBhbmlt
YXRlZDooQk9PTClhbmltYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBhYWIzMDEwZjVkODMxZjE5MGI5YTk0
NGFmMjY3NmY4NzFjNTdkMGJlLi4zYTA1NDFjNDEwNDE3Y2IwY2I4ZGRkZGU2OWVlZTIyNDRjZjlk
YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaApAQCAtOTEsNyArOTEsNyBAQCBzdHJ1Y3QgUHJpbnRJbmZvOwogCiAt
ICh2b2lkKV9zY3JvbGxUb0NvbnRlbnRTY3JvbGxQb3NpdGlvbjooV2ViQ29yZTo6RmxvYXRQb2lu
dClzY3JvbGxQb3NpdGlvbiBzY3JvbGxPcmlnaW46KFdlYkNvcmU6OkludFBvaW50KXNjcm9sbE9y
aWdpbjsKIC0gKEJPT0wpX3Njcm9sbFRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJl
Y3Qgb3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBtaW5pbXVtU2Nyb2xsRGlzdGFu
Y2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKLS0gKHZvaWQpX3Njcm9sbEJ5Q29udGVu
dE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClvZmZzZXQ7CistICh2b2lkKV9zY3JvbGxCeUNv
bnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09MKWFu
aW1hdGVkOwogLSAodm9pZClfem9vbVRvRm9jdXNSZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpZm9j
dXNlZEVsZW1lbnRSZWN0IHNlbGVjdGlvblJlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdClzZWxlY3Rp
b25SZWN0SW5Eb2N1bWVudENvb3JkaW5hdGVzIGluc2lkZUZpeGVkOihCT09MKWluc2lkZUZpeGVk
IGZvbnRTaXplOihmbG9hdClmb250U2l6ZSBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2Nh
bGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIGFsbG93U2NhbGluZzooQk9PTClh
bGxvd1NjYWxpbmcgZm9yY2VTY3JvbGw6KEJPT0wpZm9yY2VTY3JvbGw7CiAtIChCT09MKV96b29t
VG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihXZWJDb3Jl
OjpGbG9hdFBvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3QgbWlu
aW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGlt
dW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5j
ZTsKIC0gKHZvaWQpX3pvb21PdXRXaXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdp
biBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBmOGU0NTg0ZWJlZmM4
ZDhiOGU3MjYyZWI4ZmM0MDBiNjFkY2QxNDU3Li4zMWE2MjgzYjI4YzExZjBlN2Q5NDI4YzI1ODlj
ZjU5NjZmM2QzODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJX
S0FpclBsYXlSb3V0ZVBpY2tlci5oIgogI2ltcG9ydCAiV0tGaWxlVXBsb2FkUGFuZWwuaCIKICNp
bXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKKyNpbXBvcnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25pemVy
LmgiCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4K
QEAgLTIxNSw2ICsyMTYsOCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPiBfaW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXI7CiAKKyAgICBSZXRhaW5QdHI8V0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yPiBfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjsKKwogICAgIEJPT0wgX2lzRWRp
dGFibGU7CiAgICAgQk9PTCBfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnM7CiAgICAgQk9PTCBfaGFz
VmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uOwpAQCAtMjYwLDcgKzI2Myw3IEBAIHN0cnVjdCBXS0F1
dG9Db3JyZWN0aW9uRGF0YSB7CiAKIEBlbmQKIAotQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChX
S0ludGVyYWN0aW9uKSA8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVRleHRBdXRvc2Ny
b2xsaW5nLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQsIFVJVGV4dElucHV0UHJpdmF0ZSwgVUlX
ZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUsIFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXpl
ckRlbGVnYXRlLCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wsIFdLQWN0aW9uU2hlZXRBc3Np
c3RhbnREZWxlZ2F0ZSwgV0tGaWxlVXBsb2FkUGFuZWxEZWxlZ2F0ZQorQGludGVyZmFjZSBXS0Nv
bnRlbnRWaWV3IChXS0ludGVyYWN0aW9uKSA8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBV
SVRleHRBdXRvc2Nyb2xsaW5nLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQsIFVJVGV4dElucHV0
UHJpdmF0ZSwgVUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUsIFVJV2ViVG91Y2hFdmVudHNHZXN0
dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wsIFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZSwgV0tGaWxlVXBsb2FkUGFuZWxEZWxlZ2F0ZSwgV0tL
ZXlib2FyZFNjcm9sbGFibGUKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICAsIFVJ
RHJhZ0ludGVyYWN0aW9uRGVsZWdhdGUsIFVJRHJvcEludGVyYWN0aW9uRGVsZWdhdGUKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggYTFhNGRjOGI2MDU2YThmZTZkNjk0MzBkMGQ0NjY5ZTFjZTY3
MDA4Mi4uMDIzYWIwMTBlM2I5ZjRmMzE2ZjczYWQxMTk1YTQ5OGIzMzkyNWZmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC02MjIsNiArNjIyLDggQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAg
ICAgIFtzZWxmLnN1cGVydmlldyBhZGRTdWJ2aWV3Ol9pbnRlcmFjdGlvblZpZXdzQ29udGFpbmVy
Vmlldy5nZXQoKV07CiAgICAgfQogCisgICAgX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgPSBh
ZG9wdE5TKFtbV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGFsbG9jXSBpbml0V2l0aFNjcm9s
bGFibGU6c2VsZl0pOworCiAgICAgW3NlbGYubGF5ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQ
YXRoOkAidHJhbnNmb3JtIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0aWFs
IGNvbnRleHQ6bmlsXTsKIAogICAgIF90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIgPSBhZG9w
dE5TKFtbVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRh
cmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3dlYlRvdWNoRXZlbnRzUmVjb2duaXplZDopIHRv
dWNoRGVsZWdhdGU6c2VsZl0pOwpAQCAtNzc4LDYgKzc4MCw5IEBAIC0gKHZvaWQpY2xlYW51cElu
dGVyYWN0aW9uCiAgICAgCiAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbnVsbHB0cjsK
ICAgICBfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gPSB7IH07CisgICAgCisgICAgW19rZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yIGludmFsaWRhdGVdOworICAgIF9rZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yID0gbmlsOwogfQogCiAtICh2b2lkKV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6
ZXJzCkBAIC04MDgsNyArODEzLDcgQEAgLSAodm9pZClfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25p
emVycwogI2VuZGlmCiB9CiAKLS0gKFVJVmlldyopdW5zY2FsZWRWaWV3CistIChVSVZpZXcgKil1
bnNjYWxlZFZpZXcKIHsKICAgICByZXR1cm4gX2ludGVyYWN0aW9uVmlld3NDb250YWluZXJWaWV3
LmdldCgpOwogfQpAQCAtMzYzOCw2ICszNjQzLDkgQEAgLSAodm9pZCloYW5kbGVLZXlFdmVudDoo
OjpVSUV2ZW50ICopZXZlbnQKIAogLSAodm9pZCloYW5kbGVLZXlXZWJFdmVudDooOjpXZWJFdmVu
dCAqKXRoZUV2ZW50CiB7CisgICAgaWYgKFtfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBoYW5k
bGVLZXlFdmVudDp0aGVFdmVudF0pCisgICAgICAgIHJldHVybjsKKwogICAgIF9wYWdlLT5oYW5k
bGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGhlRXZlbnQpKTsKIH0KIApA
QCAtMzY3Niw3MyArMzY4NCw2IEBAIC0gKHZvaWQpX2RpZEhhbmRsZUtleUV2ZW50Oig6OldlYkV2
ZW50ICopZXZlbnQgZXZlbnRXYXNIYW5kbGVkOihCT09MKWV2ZW50V2FzSGFuCiAgICAgX3VpRXZl
bnRCZWluZ1Jlc2VudCA9IG5pbDsKIH0KIAotLSAoc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50Pilf
c2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudAotewotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwotCi0gICAgaWYgKF9wYWdlLT5lZGl0
b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIAotICAgIGlmIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0g
SW5wdXRUeXBlOjpTZWxlY3QpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBO
U1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnQuY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOwotICAgIGlmICghY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGVudW0gU2Nyb2xsaW5n
SW5jcmVtZW50IHsgRG9jdW1lbnQsIFBhZ2UsIExpbmUgfTsKLSAgICBlbnVtIFNjcm9sbGluZ0Rp
cmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9OwotCi0gICAgYXV0byBjb21wdXRlT2Zm
c2V0ID0gXihTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50LCBTY3JvbGxpbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uKSB7Ci0gICAgICAgIGJvb2wgaXNIb3Jpem9udGFsID0gKGRpcmVjdGlvbiA9PSBM
ZWZ0IHx8IGRpcmVjdGlvbiA9PSBSaWdodCk7Ci0KLSAgICAgICAgQ0dGbG9hdCBzY3JvbGxEaXN0
YW5jZSA9IF4gQ0dGbG9hdCB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewotICAg
ICAgICAgICAgY2FzZSBEb2N1bWVudDoKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWlzSG9yaXpv
bnRhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0Owot
ICAgICAgICAgICAgY2FzZSBQYWdlOgotICAgICAgICAgICAgICAgIEFTU0VSVCghaXNIb3Jpem9u
dGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsYmFyOjpwYWdlU3RlcChfcGFnZS0+
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCksIHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0
KTsKLSAgICAgICAgICAgIGNhc2UgTGluZToKLSAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xs
YmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSgpOwot
Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVXAgfHwgZGlyZWN0aW9uID09IExlZnQpCi0gICAg
ICAgICAgICBzY3JvbGxEaXN0YW5jZSA9IC1zY3JvbGxEaXN0YW5jZTsKLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiAoaXNIb3Jpem9udGFsID8gRmxvYXRQb2ludChzY3JvbGxEaXN0YW5jZSwgMCkg
OiBGbG9hdFBvaW50KDAsIHNjcm9sbERpc3RhbmNlKSk7Ci0gICAgfTsKLQotICAgIGlmIChbY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0TGVmdEFy
cm93XSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoTGluZSwgTGVmdCk7Ci0gICAgaWYg
KFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRS
aWdodEFycm93XSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoTGluZSwgUmlnaHQpOwot
Ci0gICAgU2Nyb2xsaW5nSW5jcmVtZW50IGluY3JlbWVudEZvclZlcnRpY2FsQXJyb3dLZXkgPSBM
aW5lOwotICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVy
bmF0ZSkKLSAgICAgICAgaW5jcmVtZW50Rm9yVmVydGljYWxBcnJvd0tleSA9IFBhZ2U7Ci0gICAg
ZWxzZSBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb21tYW5kKQot
ICAgICAgICBpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93S2V5ID0gRG9jdW1lbnQ7Ci0gICAgaWYg
KFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRV
cEFycm93XSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoaW5jcmVtZW50Rm9yVmVydGlj
YWxBcnJvd0tleSwgVXApOwotICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlz
RXF1YWxUb1N0cmluZzpVSUtleUlucHV0RG93bkFycm93XSkKLSAgICAgICAgcmV0dXJuIGNvbXB1
dGVPZmZzZXQoaW5jcmVtZW50Rm9yVmVydGljYWxBcnJvd0tleSwgRG93bik7Ci0KLSAgICBpZiAo
W2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBh
Z2VEb3duXSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoUGFnZSwgRG93bik7Ci0gICAg
aWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5w
dXRQYWdlVXBdKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9mZnNldChQYWdlLCBVcCk7Ci0KLSAg
ICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBdID09
IGtXZWJTcGFjZUtleSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoUGFnZSwgKGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrU2hpZnQpID8gVXAgOiBEb3duKTsKLQot
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50
Oig6OldlYkV2ZW50ICopZXZlbnQgaXNDaGFyRXZlbnQ6KEJPT0wpaXNDaGFyRXZlbnQKIHsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYkVudGVyS2V5ID0gMHgwMDAzOwpAQCAtMzc1Nywx
MCArMzY5OCw4IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50Oig6OldlYkV2ZW50ICopZXZl
bnQgaXNDaGFyRXZlbnQ6KEJPT0wpaXNDaGFyRXZlbnQKICAgICBpZiAoIWNvbnRlbnRFZGl0YWJs
ZSAmJiBldmVudC5pc1RhYktleSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgaWYgKHN0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsT2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZv
ckV2ZW50OmV2ZW50XSkgewotICAgICAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5Q29udGVudE9mZnNl
dDoqc2Nyb2xsT2Zmc2V0XTsKKyAgICBpZiAoW19rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGJl
Z2luV2l0aEV2ZW50OmV2ZW50XSkKICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICB9CiAKICAgICBV
SUtleWJvYXJkSW1wbCAqa2V5Ym9hcmQgPSBbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFuY2Vd
OwogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gZXZlbnQuY2hhcmFjdGVyczsKQEAgLTM4MDgs
NiArMzc0NywzNiBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooOjpXZWJFdmVudCAqKWV2
ZW50IGlzQ2hhckV2ZW50OihCT09MKWlzQ2hhckV2ZW50CiAgICAgcmV0dXJuIE5POwogfQogCist
IChCT09MKWlzS2V5Ym9hcmRTY3JvbGxhYmxlCit7CisgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0
ZSgpLmlzQ29udGVudEVkaXRhYmxlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBpZiAoX2Fz
c2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6U2VsZWN0KQor
ICAgICAgICByZXR1cm4gTk87CisKKyAgICByZXR1cm4gWUVTOworfQorCistIChDR0Zsb2F0KWRp
c3RhbmNlRm9yU2Nyb2xsaW5nSW5jcmVtZW50OihTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50
Cit7CisgICAgc3dpdGNoIChpbmNyZW1lbnQpIHsKKyAgICBjYXNlIFNjcm9sbGluZ0luY3JlbWVu
dDo6RG9jdW1lbnQ6CisgICAgICAgIHJldHVybiBzZWxmLmJvdW5kcy5zaXplLmhlaWdodDsKKyAg
ICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6UGFnZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlNjcm9sbGJhcjo6cGFnZVN0ZXAoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdo
dCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgY2FzZSBTY3JvbGxpbmdJbmNyZW1l
bnQ6OkxpbmU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxiYXI6OnBpeGVsc1Blckxp
bmVTdGVwKCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAw
OworfQorCistICh2b2lkKXNjcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2lu
dClvZmZzZXQgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQKK3sKKyAgICBbX3dlYlZpZXcgX3Njcm9s
bEJ5Q29udGVudE9mZnNldDpvZmZzZXQgYW5pbWF0ZWQ6YW5pbWF0ZWRdOworfQorCiAtICh2b2lk
KWV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjazooTlNTdHJpbmcgKiljb21tYW5kTmFtZQog
ewogICAgIFtzZWxmIGJlZ2luU2VsZWN0aW9uQ2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNTM5YWQ3MjA5OTFlMGJlYjc2NjIwOGMwMzNjNTgzZmI1NGRkZjJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZPUk0o
SU9TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFBvaW50OworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTY3JvbGxpbmdJbmNyZW1lbnQgOiB1aW50OF90
IHsKKyAgICBEb2N1bWVudCwKKyAgICBQYWdlLAorICAgIExpbmUKK307CisKK30KKworQGNsYXNz
IFdlYkV2ZW50OworQHByb3RvY29sIFdLS2V5Ym9hcmRTY3JvbGxhYmxlOworCitAaW50ZXJmYWNl
IFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0IE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xsYWJs
ZTooaWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxlPilzY3JvbGxhYmxlOworCistICh2b2lkKWludmFs
aWRhdGU7CisKKy0gKEJPT0wpYmVnaW5XaXRoRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudDsKKy0g
KEJPT0wpaGFuZGxlS2V5RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudDsKKworQGVuZAorCitAcHJv
dG9jb2wgV0tLZXlib2FyZFNjcm9sbGFibGUgPE5TT2JqZWN0PgorQHJlcXVpcmVkCistIChCT09M
KWlzS2V5Ym9hcmRTY3JvbGxhYmxlOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvclNjcm9sbGluZ0lu
Y3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50OworLSAodm9pZClz
Y3JvbGxCeUNvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVk
OihCT09MKWFuaW1hdGVkOworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYwYTg1YWIyNTVjMDYzYzg0MjdkZTM3NmY3M2E2NzZj
MzEwZjI1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2lt
cG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50Lmg+
CisjaW1wb3J0IDxhbGdvcml0aG0+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVT
UEkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvclN0YXRlIDogdWludDhfdCB7CisgICAgV2FpdGluZ0ZvckZpcnN0RXZlbnQsCisgICAg
V2FpdGluZ0ZvclJlcGVhdCwKKyAgICBBbmltYXRpbmcKK307CisKK307CisKK0BpbXBsZW1lbnRh
dGlvbiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgeworICAgIGlkIDxXS0tleWJvYXJkU2Ny
b2xsYWJsZT4gX3Njcm9sbGFibGU7CisgICAgQ0ZUaW1lSW50ZXJ2YWwgX3N0YXJ0VGltZTsKKyAg
ICBXZWJDb3JlOjpGbG9hdFBvaW50IF9zY3JvbGxPZmZzZXRQZXJJbmNyZW1lbnQ7CisgICAgUmV0
YWluUHRyPENBRGlzcGxheUxpbms+IF9kaXNwbGF5TGluazsKKyAgICBLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yU3RhdGUgX3N0YXRlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAg
IHJldHVybiBuaWw7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGFibGU6KGlk
IDxXS0tleWJvYXJkU2Nyb2xsYWJsZT4pc2Nyb2xsYWJsZQoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3Njcm9s
bGFibGUgPSBzY3JvbGxhYmxlOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpaW52
YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CisgICAgX3Njcm9sbGFi
bGUgPSBuaWw7Cit9CisKKy0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4pX3Nj
cm9sbE9mZnNldEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQga1dlYlNwYWNlS2V5ID0gMHgyMDsKKworICAgIGlmICghW19zY3JvbGxhYmxl
IGlzS2V5Ym9hcmRTY3JvbGxhYmxlXSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVudC5jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnM7CisgICAgaWYgKCFjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMubGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgZW51bSBjbGFz
cyBEaXJlY3Rpb24gOiB1aW50OF90IHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07CisgICAgZW51
bSBjbGFzcyBLZXkgOiB1aW50OF90IHsgT3RoZXIsIExlZnRBcnJvdywgUmlnaHRBcnJvdywgVXBB
cnJvdywgRG93bkFycm93LCBQYWdlVXAsIFBhZ2VEb3duLCBTcGFjZSB9OworICAgIAorICAgIGF1
dG8ga2V5ID0gXnsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNF
cXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRMZWZ0QXJyb3ddKQorICAgICAgICAgICAgcmV0dXJuIEtl
eTo6TGVmdEFycm93OworICAgICAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBp
c0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFJpZ2h0QXJyb3ddKQorICAgICAgICAgICAgcmV0dXJu
IEtleTo6UmlnaHRBcnJvdzsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRVcEFycm93XSkKKyAgICAgICAgICAgIHJldHVy
biBLZXk6OlVwQXJyb3c7CisgICAgICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0RG93bkFycm93XSkKKyAgICAgICAgICAgIHJldHVy
biBLZXk6OkRvd25BcnJvdzsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlRG93bl0pCisgICAgICAgICAgICByZXR1
cm4gS2V5OjpQYWdlRG93bjsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlVXBdKQorICAgICAgICAgICAgcmV0dXJu
IEtleTo6UGFnZVVwOworICAgICAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBj
aGFyYWN0ZXJBdEluZGV4OjBdID09IGtXZWJTcGFjZUtleSkKKyAgICAgICAgICAgIHJldHVybiBL
ZXk6OlNwYWNlOworICAgICAgICByZXR1cm4gS2V5OjpPdGhlcjsKKyAgICB9KCk7CisgICAgCisg
ICAgaWYgKGtleSA9PSBLZXk6Ok90aGVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIAorICAgIEJPT0wgc2hpZnRQcmVzc2VkID0gZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2
ZW50RmxhZ01hc2tTaGlmdDsKKyAgICBCT09MIGFsdFByZXNzZWQgPSBldmVudC5tb2RpZmllckZs
YWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZTsKKyAgICBCT09MIGNtZFByZXNzZWQgPSBl
dmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQ7CisgICAgCisgICAg
YXV0byBpbmNyZW1lbnQgPSBeeworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBjYXNl
IEtleTo6TGVmdEFycm93OgorICAgICAgICBjYXNlIEtleTo6UmlnaHRBcnJvdzoKKyAgICAgICAg
ICAgIHJldHVybiBTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgIGNhc2UgS2V5OjpV
cEFycm93OgorICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAgICAgaWYgKGFs
dFByZXNzZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ0luY3JlbWVudDo6UGFn
ZTsKKyAgICAgICAgICAgIGlmIChjbWRQcmVzc2VkKQorICAgICAgICAgICAgICAgIHJldHVybiBT
Y3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OworICAgICAgICAgICAgcmV0dXJuIFNjcm9sbGlu
Z0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKKyAgICAgICAgY2Fz
ZSBLZXk6OlBhZ2VEb3duOgorICAgICAgICBjYXNlIEtleTo6U3BhY2U6CisgICAgICAgICAgICBy
ZXR1cm4gU2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOworICAgICAgICBjYXNlIEtleTo6T3RoZXI6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBT
Y3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgIH07CisgICAgfSgpOworCisgICAgYXV0
byBkaXJlY3Rpb24gPSBeKCkgeworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBjYXNl
IEtleTo6TGVmdEFycm93OgorICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbjo6TGVmdDsKKyAg
ICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9u
OjpSaWdodDsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgIGNhc2UgS2V5OjpQ
YWdlVXA6CisgICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uOjpVcDsKKyAgICAgICAgY2FzZSBL
ZXk6OkRvd25BcnJvdzoKKyAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgorICAgICAgICAgICAg
cmV0dXJuIERpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgorICAgICAg
ICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IERpcmVjdGlvbjo6VXAgOiBEaXJlY3Rpb246OkRv
d247CisgICAgICAgIGNhc2UgS2V5OjpPdGhlcjoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgfTsK
KyAgICB9KCk7CisKKyAgICBib29sIGlzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBEaXJlY3Rp
b246OkxlZnQgfHwgZGlyZWN0aW9uID09IERpcmVjdGlvbjo6UmlnaHQ7CisgICAgQ0dGbG9hdCBz
Y3JvbGxEaXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvclNjcm9sbGluZ0luY3JlbWVu
dDppbmNyZW1lbnRdOworICAgIAorICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpVcCB8
fCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpMZWZ0KQorICAgICAgICBzY3JvbGxEaXN0YW5jZSA9
IC1zY3JvbGxEaXN0YW5jZTsKKyAgICAKKyAgICByZXR1cm4gaXNIb3Jpem9udGFsID8gV2ViQ29y
ZTo6RmxvYXRQb2ludChzY3JvbGxEaXN0YW5jZSwgMCkgOiBXZWJDb3JlOjpGbG9hdFBvaW50KDAs
IHNjcm9sbERpc3RhbmNlKTsKK30KKworLSAoQk9PTCliZWdpbldpdGhFdmVudDooOjpXZWJFdmVu
dCAqKWV2ZW50Cit7CisgICAgaWYgKF9zdGF0ZSAhPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
U3RhdGU6OldhaXRpbmdGb3JGaXJzdEV2ZW50KQorICAgICAgICByZXR1cm4gTk87CisgICAgCisg
ICAgaWYgKGV2ZW50LnR5cGUgIT0gV2ViRXZlbnRLZXlEb3duKQorICAgICAgICByZXR1cm4gTk87
CisKKyAgICBhdXRvIG9mZnNldCA9IFtzZWxmIF9zY3JvbGxPZmZzZXRGb3JFdmVudDpldmVudF07
CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIF9zdGF0ZSA9IEtl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvclJlcGVhdDsKKyAgICBfc2Ny
b2xsT2Zmc2V0UGVySW5jcmVtZW50ID0gb2Zmc2V0LnZhbHVlKCk7CisKKyAgICAvLyBUaGUgZmly
c3Qga2V5Ym9hcmQgZXZlbnQgdGhhdCBzdGFydHMgc2Nyb2xsaW5nIHBlcmZvcm1zIGl0cyBvd24K
KyAgICAvLyBkaXNjcmV0ZSBhbmltYXRlZCBzY3JvbGwuIENvbnRpbnVvdXNseSBhbmltYXRlZCBz
Y3JvbGxpbmcgc3RhcnRzCisgICAgLy8gd2hlbiB0aGUga2V5IHJlcGVhdHMuCisgICAgW19zY3Jv
bGxhYmxlIHNjcm9sbEJ5Q29udGVudE9mZnNldDpfc2Nyb2xsT2Zmc2V0UGVySW5jcmVtZW50IGFu
aW1hdGVkOllFU107CisKKyAgICByZXR1cm4gWUVTOworfQorCistIChCT09MKWhhbmRsZUtleUV2
ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3N0YXRlID09IEtleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvckZpcnN0RXZlbnQpCisgICAgICAgIHJldHVy
biBOTzsKKworICAgIGF1dG8gb2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2ZW50OmV2
ZW50XTsKKyAgICBpZiAoIW9mZnNldCB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXApIHsK
KyAgICAgICAgW3NlbGYgc3RvcEFuaW1hdGVkU2Nyb2xsXTsKKyAgICAgICAgcmV0dXJuIE5POwor
ICAgIH0KKworICAgIGlmIChfc3RhdGUgPT0gS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvclN0YXRl
OjpXYWl0aW5nRm9yUmVwZWF0KQorICAgICAgICBbc2VsZiBzdGFydEFuaW1hdGVkU2Nyb2xsXTsK
KworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpc3RhcnRBbmltYXRlZFNjcm9sbAorewor
ICAgIEFTU0VSVCghX2Rpc3BsYXlMaW5rKTsKKworICAgIF9zdGF0ZSA9IEtleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3JTdGF0ZTo6QW5pbWF0aW5nOworICAgIF9zdGFydFRpbWUgPSBDQUN1cnJlbnRN
ZWRpYVRpbWUoKTsKKyAgICBfZGlzcGxheUxpbmsgPSBbQ0FEaXNwbGF5TGluayBkaXNwbGF5TGlu
a1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZGlzcGxheUxpbmtGaXJlZDopXTsK
KyAgICBbX2Rpc3BsYXlMaW5rIGFkZFRvUnVuTG9vcDpbTlNSdW5Mb29wIG1haW5SdW5Mb29wXSBm
b3JNb2RlOk5TUnVuTG9vcENvbW1vbk1vZGVzXTsKK30KKworLSAodm9pZClzdG9wQW5pbWF0ZWRT
Y3JvbGwKK3sKKyAgICBfc3RhdGUgPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGU6Oldh
aXRpbmdGb3JGaXJzdEV2ZW50OworICAgIFtfZGlzcGxheUxpbmsgaW52YWxpZGF0ZV07CisgICAg
X2Rpc3BsYXlMaW5rID0gbmlsOworfQorCistICh2b2lkKWRpc3BsYXlMaW5rRmlyZWQ6KENBRGlz
cGxheUxpbmsgKilzZW5kZXIKK3sKKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBzZWNvbmRzUGVy
U2Nyb2xsSW5jcmVtZW50ID0gMC4wNTsgLy8gU2Vjb25kcyBpdCBzaG91bGQgdGFrZSB0byBjb3Zl
ciBvbmUgaW5jcmVtZW50IHdoZW4gYXQgZnVsbCBzcGVlZC4KKyAgICBjb25zdCBmbG9hdCBtYXhp
bXVtVmVsb2NpdHkgPSAyMDAwOyAvLyBNYXhpbXVtIHZlbG9jaXR5IGluIHBpeGVscyBwZXIgc2Vj
b25kLiBFbXBpcmljYWxseSBkZXRlcm1pbmVkLgorICAgIGNvbnN0IENGVGltZUludGVydmFsIGFj
Y2VsZXJhdGlvbkR1cmF0aW9uID0gMC4zOyAvLyBEdXJhdGlvbiBvZiBhY2NlbGVyYXRpb24gaW4g
c2Vjb25kcy4gVGhpcyBtYXRjaGVzIFVJU2Nyb2xsVmlldy4KKworICAgIGF1dG8gdmVsb2NpdHkg
PSBfc2Nyb2xsT2Zmc2V0UGVySW5jcmVtZW50LnNjYWxlZCgxLiAvIHNlY29uZHNQZXJTY3JvbGxJ
bmNyZW1lbnQpOworICAgIHZlbG9jaXR5ID0gdmVsb2NpdHkuY29uc3RyYWluZWRCZXR3ZWVuKHsg
LW1heGltdW1WZWxvY2l0eSwgLW1heGltdW1WZWxvY2l0eSB9LCB7IG1heGltdW1WZWxvY2l0eSwg
bWF4aW11bVZlbG9jaXR5IH0pOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgZnJhbWVEdXJhdGlvbiA9
IHNlbmRlci50YXJnZXRUaW1lc3RhbXAgLSBzZW5kZXIudGltZXN0YW1wOworICAgIENGVGltZUlu
dGVydmFsIHRpbWVGcm9tQW5pbWF0aW9uU3RhcnQgPSBzZW5kZXIudGltZXN0YW1wIC0gX3N0YXJ0
VGltZTsKKyAgICBmbG9hdCBhY2NlbGVyYXRpb25GYWN0b3IgPSBbW0NBTWVkaWFUaW1pbmdGdW5j
dGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rpb25FYXNlSW5FYXNlT3V0
XSBfc29sdmVGb3JJbnB1dDpzdGQ6Om1pbjxDRlRpbWVJbnRlcnZhbD4odGltZUZyb21BbmltYXRp
b25TdGFydCwgYWNjZWxlcmF0aW9uRHVyYXRpb24pIC8gYWNjZWxlcmF0aW9uRHVyYXRpb25dOwor
CisgICAgYXV0byBjb250ZW50T2Zmc2V0ID0gdmVsb2NpdHkuc2NhbGVkKGFjY2VsZXJhdGlvbkZh
Y3RvciAqIGZyYW1lRHVyYXRpb24pOworICAgIFtfc2Nyb2xsYWJsZSBzY3JvbGxCeUNvbnRlbnRP
ZmZzZXQ6Y29udGVudE9mZnNldCBhbmltYXRlZDpOT107Cit9CisKK0BlbmQKKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDZmODZlMDQ1YjU3NmQxYjYyNjIyMGYwOTU5NTY2Mzk5YWZiZGIyZTku
LmEyZGEyNDk3NmRhMjgzZTIxMTdhMzA4YTNiNTIzNzFlOTEyYmM4NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE4LDYgKzYxOCw3
IEBACiAJCTJEMTA4NzYwMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEwODc1RTFEMkM1
NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwICovOyB9OwogCQkyRDEwODc2MTFEMkM1
NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFy
YW1ldGVycy5oICovOyB9OwogCQkyRDEwODc2MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBhcmFt
ZXRlcnNDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1tICov
OyB9OworCQkyRDExQkQxRjIxMTI1QkU4MDA5RDk5RTMgLyogV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRENUUxMjYyMTBBREM3QTAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5t
bSAqLzsgfTsKIAkJMkQxMjVDNUUxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQx
MjVDNUMxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovOyB9Owog
CQkyRDEyNUM1RjE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUQx
ODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJ
MkQxMkRBQjUyMDY2MkM3MzAwNkYwMEZCIC8qIFdLQW5pbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTJEQUI0MjA2NjJDNzMw
MDZGMDBGQiAvKiBXS0FuaW1hdGlvbkRlbGVnYXRlLmggKi87IH07CkBAIC03MTcsNiArNzE4LDcg
QEAKIAkJMkRENDVBREYxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENDVB
REQxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tICovOyB9Owog
CQkyREQ1QTcyOTFFQkYwOEQ1MDA5QkE1OTcgLyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyODFFQkYw
OEQ1MDA5QkE1OTcgLyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmggKi87IH07CiAJCTJERDVBNzJC
MUVCRjA5QTcwMDlCQTU5NyAvKiBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1
QTcyQTFFQkYwOUE3MDA5QkE1OTcgLyogSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2Vz
Q291bnRlci5oICovOyB9OworCQkyREQ1RTEyOTIxMEFEQzdCMDBEQjYwMTIgLyogV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREQ1RTEyNzIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yLmggKi87IH07CiAJCTJERDY3QTJFMUJEODE5NzMwMDUzQjI1MSAvKiBBUElGaW5k
TWF0Y2hlc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRENjdBMkQxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50Lmgg
Ki87IH07CiAJCTJERDY3QTM1MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3QTMz
MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQuaCAqLzsgfTsKIAkJMkRENjdB
MzYxQkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3QTM0MUJEODYxMDYwMDUzQjI1
MSAvKiBXS1RleHRGaW5kZXJDbGllbnQubW0gKi87IH07CkBAIC0zMTkwLDYgKzMxOTIsOCBAQAog
CQkyREQ0NUFERDFFNUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBJbnB1dFZpZXdVcGRhdGVE
ZWZlcnJlci5tbTsgcGF0aCA9IGlvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENUE3MjgxRUJGMDhENTAwOUJBNTk3IC8qIFZpc2li
bGVXZWJQYWdlQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNp
YmxlV2ViUGFnZUNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENUE3
MkExRUJGMDlBNzAwOUJBNTk3IC8qIEhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0Nv
dW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlkZGVuUGFnZVRocm90
dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyREQ1RTEyNjIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLm1tOyBwYXRoID0gaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRENUUxMjcyMTBBREM3QTAwREI2
MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDsgcGF0aCA9IGlvcy9X
S0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRENjdBMkQxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRNYXRjaGVzQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDY3QTMzMUJEODYxMDYwMDUzQjI1MSAvKiBX
S1RleHRGaW5kZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tU
ZXh0RmluZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDY3QTM0
MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1RleHRGaW5kZXJDbGllbnQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTg0LDYgKzU5ODgsOCBAQAogCQkJCTBGM0M3MjU3MTk2
RjVGNTAwMEFFREQwQyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0gKi8sCiAJCQkJQTU0
MjkzQTIxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNv
Z25pemVyLmggKi8sCiAJCQkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9y
Tm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICovLAorCQkJCTJERDVFMTI3MjEwQURDN0Ew
MERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCAqLywKKwkJCQkyREQ1RTEy
NjIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICovLAog
CQkJCTJEQTFFNEZDMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCAqLywKIAkJ
CQkyREExRTRGRDE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3Lm1tICovLAogCQkJ
CUExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLApAQCAtOTc4
OSw2ICs5Nzk1LDcgQEAKIAkJCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDMEYwQUIyMDAwNjU4MjAw
NTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTE4QjVE
MjFGRTFENTVCMDBGOUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICov
LAorCQkJCTJERDVFMTI5MjEwQURDN0IwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTlFMTBCMTMxNUNEMTgwMDlFNzAzMSAvKiBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzkwQTlGMUFE
NzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTFF
NEZFMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCBpbiBIZWFkZXJzICovLApA
QCAtMTE2MzMsNiArMTE2NDAsNyBAQAogCQkJCTk5NEJBREYzMUY3RDc4MTEwMEI1NzFFNyAvKiBX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDMEYwQUMy
MDAwNjU4NTAwNTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTUxOEI1RDMxRkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMkQxMUJEMUYyMTEyNUJFODAwOUQ5OUUzIC8qIFdLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlFMTBBMTMxNUNEMTgw
MDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkRBMUU0RkYxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUM5OEM0OEE5MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346313</attachid>
            <date>2018-08-01 16:47:29 -0700</date>
            <delta_ts>2018-08-01 17:30:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188239-20180801164728.patch</filename>
            <type>text/plain</type>
            <size>34404</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBkN2JiZDk2
OWYwNzBlZTgwODMyNmRhMzM0NGExMzhhZGRiOWJlZDk5Li40NmQ4ZWJiMzNjNGNhNWYyY2ZjOWJh
MWFiZTNjNjllOWQxZjIzNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0wOC0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2luZyB0aGUga2V5Ym9hcmQgYXJyb3cga2V5cyB0byBzY3JvbGwgYSB3ZWJwYWdlIGlz
IHZlcnkgc2xvdywgbm90IHNtb290aCwgdGFrZXMgdG9vIGxvbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIzOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjI5OTc2NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAgICAgIEFkZCBhIHBp
ZWNlIG9mIFNQSS4KKwogMjAxOC0wNy0zMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZmV0Y2hpbmcgYW5kIHJlbW92ZSB0eXBlICBf
V0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2I5N2E0ZmNjOGY3MzU0MTRj
MDhjMzNmZWExYjNjODZkMTZjZWQwNi4uNjJmYzk3NGYwOGNiMWM2YmM3OGMyZmU1YzMwODQwZTM0
OWIxNTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAxOC0wOC0wMSAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBVc2luZyB0aGUga2V5Ym9h
cmQgYXJyb3cga2V5cyB0byBzY3JvbGwgYSB3ZWJwYWdlIGlzIHZlcnkgc2xvdywgbm90IHNtb290
aCwgdGFrZXMgdG9vIGxvbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4ODIzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI5OTc2NTQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEluc3RlYWQgb2YgZGVw
ZW5kaW5nIG9uIGtleSByZXBlYXQgdG8gZHJpdmUgc2Nyb2xsaW5nIHdpdGggYXJyb3cga2V5cyBo
ZWxkIGRvd24sCisgICAgICAgIHJ1biBhIGRpc3BsYXkgbGluayB0aGF0IGFuaW1hdGVzIHRoZSBz
Y3JvbGwuIFdlIHN0aWxsIGRvIGEgc2luZ2xlIGRpc2NyZXRlIHNjcm9sbAorICAgICAgICBmaXJz
dCAoc28gdGhhdCB5b3UgY2FuIHRhcCB0aGUga2V5IGFuZCBzaGlmdCBieSBsaW5lL3BhZ2UpLCBi
dXQgdGhlbiBvbiB0aGUgZmlyc3QKKyAgICAgICAgcmVwZWF0IHdlIHJhbXAgdXAgdG8gYSBjb25z
dGFudCB2ZWxvY2l0eSBkZXRlcm1pbmVkIGJ5IHRoZSBkZXNpcmVkIGluY3JlbWVudCwKKyAgICAg
ICAgc3RvcHBpbmcgd2hlbiB0aGUga2V5IGlzIGxpZnRlZCBvciBhIGRpZmZlcmVudCBrZXkgaXMg
cHJlc3NlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbEJ5Q29udGVudE9mZnNldDphbmltYXRlZDpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6XSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICBBZGQgYW5pbWF0ZWQgcGFyYW1ldGVyIHRvIHNjcm9sbEJ5Q29udGVudE9mZnNldCwgYW5k
IHBsdW1iIGl0IHRocm91Z2ggdG8gVUlTY3JvbGxWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgQWRkIGEgV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yIG1lbWJlci4KKyAgICAgICAgQ29uZm9ybSB0byBXS0tleWJvYXJk
U2Nyb2xsYWJsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToK
KyAgICAgICAgSW5zdGFsbCB0aGUgV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLgorCisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgIFVuaW5z
dGFsbCB0aGUgV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLgorCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgdW5zY2FsZWRWaWV3XSk6CisgICAgICAgIEZpeCBhIHN0dXBpZCBzdHlsZSBuaXQu
CisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBoYW5kbGVLZXlXZWJFdmVudDpdKToKKyAgICAg
ICAgR2l2ZSBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgdGhlIGZpcnN0IHNob3QgYXQgaW5j
b21pbmcga2V5Ym9hcmQgZXZlbnRzLgorICAgICAgICBJdCB3aWxsIG9ubHkgY29uc3VtZSBldmVu
dHMgaGVyZSBpZiBpdCdzIGFscmVhZHkgcGVyZm9ybWluZyBhIHNjcm9sbGluZyBhbmltYXRpb24K
KyAgICAgICAgKGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXkgc2hvdWxkIGdvIHN0cmFpZ2h0IHRocm91
Z2ggdG8gdGhlIHBhZ2UpLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludGVycHJldEtl
eUV2ZW50OmlzQ2hhckV2ZW50Ol0pOgorICAgICAgICBHaXZlIFdLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvciBhIHNob3QgYXQgaGFuZGxpbmcga2V5Ym9hcmQgZXZlbnRzIHRoYXQKKyAgICAgICAg
dGhlIHdlYiBjb250ZW50IGRpZCBub3QgaGFuZGxlLiBXZSB3aWxsIG9ubHkgc3RhcnQgYSBzY3Jv
bGxpbmcgYW5pbWF0aW9uCisgICAgICAgIGlmIHRoZSBwYWdlIGRpZCBub3QgaGFuZGxlIGFuIGV2
ZW50IHRoYXQgd291bGQgc3RhcnQgYSBzY3JvbGwuCisKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBpc0tleWJvYXJkU2Nyb2xsYWJsZV0pOgorICAgICAgICBQYXJ0IG9mIFdLS2V5Ym9hcmRTY3Jv
bGxhYmxlOyBvbmx5IHJlcG9ydCBvdXJzZWx2ZXMgYXMgc2Nyb2xsYWJsZSBpZgorICAgICAgICB3
ZSB3b3VsZCBwcmV2aW91c2x5IGhhdmUgYWxsb3dlZCBzY3JvbGxpbmcgZnJvbSBrZXlib2FyZCBl
dmVudHMgKGlmCisgICAgICAgIHdlJ3JlIG5vdCBpbiBjb250ZW50ZWRpdGFibGUsIGFuZCBkb24n
dCBoYXZlIGEgPHNlbGVjdD4gZm9jdXNlZCkuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBk
aXN0YW5jZUZvclNjcm9sbGluZ0luY3JlbWVudDpdKToKKyAgICAgICAgUGFydCBvZiBXS0tleWJv
YXJkU2Nyb2xsYWJsZTsgY29tcHV0ZSB0aGUgZGlzdGFuY2UgZm9yIGVhY2ggc2Nyb2xsaW5nIGlu
Y3JlbWVudC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNjcm9sbEJ5Q29udGVudE9mZnNl
dDphbmltYXRlZDpdKToKKyAgICAgICAgUGFydCBvZiBXS0tleWJvYXJkU2Nyb2xsYWJsZTsgcGx1
bWIgc2Nyb2xscyB1cCB0byBXS1dlYlZpZXcuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
c2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6XSk6IE1vdmVkIHRvIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yIGluaXRdKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGlu
aXRXaXRoU2Nyb2xsYWJsZTpdKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
IF9zY3JvbGxPZmZzZXRGb3JFdmVudDpdKToKKyAgICAgICAgQ29tcHV0ZSB0aGUgc2Nyb2xsIG9m
ZnNldCBnaXZlbiBhIHBhcnRpY3VsYXIgZXZlbnQuIFRoaXMgaXMgbW92ZWQgZnJvbSBXS0NvbnRl
bnRWaWV3OworICAgICAgICBvdGhlcndpc2UgdGhlIHByaW1hcnkgY2hhbmdlIGlzIHRoYXQgaXQg
bm93IGFza3MgdGhlIFdLS2V5Ym9hcmRTY3JvbGxhYmxlCisgICAgICAgIGZvciB0aGUgZGlzdGFu
Y2UgaW5zdGVhZCBvZiBjb21wdXRpbmcgaXQgZGlyZWN0bHkuCisKKyAgICAgICAgKC1bV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yIGJlZ2luV2l0aEV2ZW50Ol0pOgorICAgICAgICBJZiB3ZSdy
ZSBjdXJyZW50bHkgaW4gdGhlIGluaXRpYWwgc3RhdGUgKFdhaXRpbmdGb3JGaXJzdEV2ZW50KSwg
YW5kCisgICAgICAgIGEgZ2l2ZW4gZXZlbnQgc2hvdWxkIHN0YXJ0IGEgc2Nyb2xsLCB0cmFuc2l0
aW9uIGludG8gV2FpdGluZ0ZvclJlcGVhdCwKKyAgICAgICAgYW5kIGRvIGEgc2luZ2xlIGFuaW1h
dGVkIHNjcm9sbCBvZiB0aGUgYXBwcm9wcmlhdGUgZGlzdGFuY2UuCisKKyAgICAgICAgKC1bV0tL
ZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGhhbmRsZUtleUV2ZW50Ol0pOgorICAgICAgICBJZiB0
aGlzIGtleSBldmVudCBzaG91bGQgdGVybWluYXRlIGEgc2Nyb2xsIChiZWNhdXNlIGl0IGlzIGVp
dGhlciBhIGtleXVwCisgICAgICAgIG9yIGEgbm9uLXNjcm9sbGluZyBrZXlkb3duKSwgc2h1dCBk
b3duIGFueSBydW5uaW5nIGFuaW1hdGlvbnMuCisKKyAgICAgICAgSWYgdGhpcyBpcyB0aGUgZmly
c3Qga2V5IHJlcGVhdCBhZnRlciB0aGUgaW5pdGlhbCBzY3JvbGwsIHN0YXJ0IGEgc2Nyb2xsaW5n
CisgICAgICAgIGFuaW1hdGlvbi4KKworICAgICAgICBFYXQgdGhlIGV2ZW50IGlmIGl0IGVpdGhl
ciBzdGFydGVkIG9yIGNvbnRpbnVlZCBhIHNjcm9sbC4KKworICAgICAgICAoLVtXS0tleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3Igc3RhcnRBbmltYXRlZFNjcm9sbF0pOgorICAgICAgICAoLVtXS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Igc3RvcEFuaW1hdGVkU2Nyb2xsXSk6CisgICAgICAgIEhl
bHBlcnMgdG8gc3RhcnQgYW5kIHN0b3AgdGhlIGRpc3BsYXkgbGluayBhbmQgZG8gc29tZSBib29r
a2VlcGluZy4KKworICAgICAgICAoLVtXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgZGlzcGxh
eUxpbmtGaXJlZDpdKToKKyAgICAgICAgQXNrIHRoZSBXS0tleWJvYXJkU2Nyb2xsYWJsZSB0byBz
Y3JvbGwgdGhlIGNvbnRlbnQgYmFzZWQgb24gdGhlIGZyYW1lIHRpbWUsCisgICAgICAgIGFuIGFj
Y2VsZXJhdGlvbiBjdXJ2ZSwgYW5kIHRoZSBjdXJyZW50IGFuaW1hdGlvbidzIHNjcm9sbGluZyBp
bmNyZW1lbnQuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAxOC0wOC0wMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNDQ0MyBhbmQgcjIzNDQ0NS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAppbmRl
eCA2N2UwOGQ1MTgyYmE0MDc0ZGIwNmU4Njc0YjNiYzk5MTEyYWZkYjg5Li42YTBlY2EwYWI1MGFl
YmZhYmFmNTYxZjFlNTMyYjdmNDQzNjM5MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0
IDxRdWFydHpDb3JlL0NBQ29udGV4dC5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVySG9z
dC5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8UXVh
cnR6Q29yZS9DQU1lZGlhVGltaW5nRnVuY3Rpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxRdWFydHpD
b3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNTMsNiAr
MTU0LDEwIEBAIHR5cGVkZWYgZW51bSB7CiBAcHJvcGVydHkgQ0dGbG9hdCB2ZWxvY2l0eTsKIEBl
bmQKIAorQGludGVyZmFjZSBDQU1lZGlhVGltaW5nRnVuY3Rpb24gKCkKKy0gKGZsb2F0KV9zb2x2
ZUZvcklucHV0OihmbG9hdCl0OworQGVuZAorCiAjZW5kaWYgLy8gX19PQkpDX18KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCA1M2RmOTE1NzE3ZGNhMzQwZmM3Y2EzNjYxNmE3MzVmNzQxOWZmZWVjLi5iMTBhMDFjMDRhNzE4
MDAxMmRlOWM2NTFkMDc0NjFhNDQyNGJjYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIxMTMsNyArMjExMyw3IEBAIC0gKEJPT0wp
X3Njcm9sbFRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgb3JpZ2luOihXZWJD
b3JlOjpGbG9hdFBvaW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS0gKHZvaWQpX3Njcm9sbEJ5
Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludCljb250ZW50T2Zmc2V0RGVsdGEKKy0g
KHZvaWQpX3Njcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludCljb250ZW50
T2Zmc2V0RGVsdGEgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQKIHsKICAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IHNjYWxlZE9mZnNldERlbHRhID0gY29udGVudE9mZnNldERlbHRhOwogICAgIENHRmxv
YXQgem9vbVNjYWxlID0gY29udGVudFpvb21TY2FsZShzZWxmKTsKQEAgLTIxMjgsNyArMjEyOCw3
IEBAIC0gKHZvaWQpX3Njcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClj
b250ZW50T2Zmc2V0RGVsdGEKIAogICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0
cmVhbSA8PCAiX3Njcm9sbEJ5Q29udGVudE9mZnNldDogc2Nyb2xsaW5nIHRvICIgPDwgV2ViQ29y
ZTo6RmxvYXRQb2ludChib3VuZGVkT2Zmc2V0KSk7CiAKLSAgICBbX3Njcm9sbFZpZXcgc2V0Q29u
dGVudE9mZnNldDpib3VuZGVkT2Zmc2V0IGFuaW1hdGVkOllFU107CisgICAgW19zY3JvbGxWaWV3
IHNldENvbnRlbnRPZmZzZXQ6Ym91bmRlZE9mZnNldCBhbmltYXRlZDphbmltYXRlZF07CiB9CiAK
IC0gKHZvaWQpX3pvb21PdXRXaXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBh
bmltYXRlZDooQk9PTClhbmltYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBhYWIzMDEwZjVkODMxZjE5MGI5
YTk0NGFmMjY3NmY4NzFjNTdkMGJlLi4zYTA1NDFjNDEwNDE3Y2IwY2I4ZGRkZGU2OWVlZTIyNDRj
ZjlkYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtOTEsNyArOTEsNyBAQCBzdHJ1Y3QgUHJpbnRJbmZvOwog
CiAtICh2b2lkKV9zY3JvbGxUb0NvbnRlbnRTY3JvbGxQb3NpdGlvbjooV2ViQ29yZTo6RmxvYXRQ
b2ludClzY3JvbGxQb3NpdGlvbiBzY3JvbGxPcmlnaW46KFdlYkNvcmU6OkludFBvaW50KXNjcm9s
bE9yaWdpbjsKIC0gKEJPT0wpX3Njcm9sbFRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdl
dFJlY3Qgb3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBtaW5pbXVtU2Nyb2xsRGlz
dGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKLS0gKHZvaWQpX3Njcm9sbEJ5Q29u
dGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQb2ludClvZmZzZXQ7CistICh2b2lkKV9zY3JvbGxC
eUNvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1hdGVkOihCT09M
KWFuaW1hdGVkOwogLSAodm9pZClfem9vbVRvRm9jdXNSZWN0OihXZWJDb3JlOjpGbG9hdFJlY3Qp
Zm9jdXNlZEVsZW1lbnRSZWN0IHNlbGVjdGlvblJlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdClzZWxl
Y3Rpb25SZWN0SW5Eb2N1bWVudENvb3JkaW5hdGVzIGluc2lkZUZpeGVkOihCT09MKWluc2lkZUZp
eGVkIGZvbnRTaXplOihmbG9hdClmb250U2l6ZSBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVt
U2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIGFsbG93U2NhbGluZzooQk9P
TClhbGxvd1NjYWxpbmcgZm9yY2VTY3JvbGw6KEJPT0wpZm9yY2VTY3JvbGw7CiAtIChCT09MKV96
b29tVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihXZWJD
b3JlOjpGbG9hdFBvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3Qg
bWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1h
eGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0
YW5jZTsKIC0gKHZvaWQpX3pvb21PdXRXaXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9y
aWdpbiBhbmltYXRlZDooQk9PTClhbmltYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBmOGU0NTg0ZWJl
ZmM4ZDhiOGU3MjYyZWI4ZmM0MDBiNjFkY2QxNDU3Li4zMWE2MjgzYjI4YzExZjBlN2Q5NDI4YzI1
ODljZjU5NjZmM2QzODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0
ICJXS0FpclBsYXlSb3V0ZVBpY2tlci5oIgogI2ltcG9ydCAiV0tGaWxlVXBsb2FkUGFuZWwuaCIK
ICNpbXBvcnQgIldLRm9ybVBlcmlwaGVyYWwuaCIKKyNpbXBvcnQgIldLS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvci5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25p
emVyLmgiCiAjaW1wb3J0IDxVSUtpdC9VSVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3Iu
aD4KQEAgLTIxNSw2ICsyMTYsOCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAg
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPiBf
aW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI7CiAKKyAgICBSZXRhaW5QdHI8V0tLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yPiBfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjsKKwogICAgIEJPT0wgX2lz
RWRpdGFibGU7CiAgICAgQk9PTCBfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnM7CiAgICAgQk9PTCBf
aGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uOwpAQCAtMjYwLDcgKzI2Myw3IEBAIHN0cnVjdCBX
S0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKIEBlbmQKIAotQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3
IChXS0ludGVyYWN0aW9uKSA8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVRleHRBdXRv
c2Nyb2xsaW5nLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQsIFVJVGV4dElucHV0UHJpdmF0ZSwg
VUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUsIFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2du
aXplckRlbGVnYXRlLCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wsIFdLQWN0aW9uU2hlZXRB
c3Npc3RhbnREZWxlZ2F0ZSwgV0tGaWxlVXBsb2FkUGFuZWxEZWxlZ2F0ZQorQGludGVyZmFjZSBX
S0NvbnRlbnRWaWV3IChXS0ludGVyYWN0aW9uKSA8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRl
LCBVSVRleHRBdXRvc2Nyb2xsaW5nLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQsIFVJVGV4dElu
cHV0UHJpdmF0ZSwgVUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdhdGUsIFVJV2ViVG91Y2hFdmVudHNH
ZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wsIFdL
QWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZSwgV0tGaWxlVXBsb2FkUGFuZWxEZWxlZ2F0ZSwg
V0tLZXlib2FyZFNjcm9sbGFibGUKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICAs
IFVJRHJhZ0ludGVyYWN0aW9uRGVsZWdhdGUsIFVJRHJvcEludGVyYWN0aW9uRGVsZWdhdGUKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYTFhNGRjOGI2MDU2YThmZTZkNjk0MzBkMGQ0NjY5ZTFj
ZTY3MDA4Mi4uMDIzYWIwMTBlM2I5ZjRmMzE2ZjczYWQxMTk1YTQ5OGIzMzkyNWZmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC02MjIsNiArNjIyLDggQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAg
ICAgICAgIFtzZWxmLnN1cGVydmlldyBhZGRTdWJ2aWV3Ol9pbnRlcmFjdGlvblZpZXdzQ29udGFp
bmVyVmlldy5nZXQoKV07CiAgICAgfQogCisgICAgX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Ig
PSBhZG9wdE5TKFtbV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIGFsbG9jXSBpbml0V2l0aFNj
cm9sbGFibGU6c2VsZl0pOworCiAgICAgW3NlbGYubGF5ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JL
ZXlQYXRoOkAidHJhbnNmb3JtIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0
aWFsIGNvbnRleHQ6bmlsXTsKIAogICAgIF90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIgPSBh
ZG9wdE5TKFtbVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0
aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3dlYlRvdWNoRXZlbnRzUmVjb2duaXplZDop
IHRvdWNoRGVsZWdhdGU6c2VsZl0pOwpAQCAtNzc4LDYgKzc4MCw5IEBAIC0gKHZvaWQpY2xlYW51
cEludGVyYWN0aW9uCiAgICAgCiAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbnVsbHB0
cjsKICAgICBfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gPSB7IH07CisgICAgCisgICAgW19rZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yIGludmFsaWRhdGVdOworICAgIF9rZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yID0gbmlsOwogfQogCiAtICh2b2lkKV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29n
bml6ZXJzCkBAIC04MDgsNyArODEzLDcgQEAgLSAodm9pZClfYWRkRGVmYXVsdEdlc3R1cmVSZWNv
Z25pemVycwogI2VuZGlmCiB9CiAKLS0gKFVJVmlldyopdW5zY2FsZWRWaWV3CistIChVSVZpZXcg
Kil1bnNjYWxlZFZpZXcKIHsKICAgICByZXR1cm4gX2ludGVyYWN0aW9uVmlld3NDb250YWluZXJW
aWV3LmdldCgpOwogfQpAQCAtMzYzOCw2ICszNjQzLDkgQEAgLSAodm9pZCloYW5kbGVLZXlFdmVu
dDooOjpVSUV2ZW50ICopZXZlbnQKIAogLSAodm9pZCloYW5kbGVLZXlXZWJFdmVudDooOjpXZWJF
dmVudCAqKXRoZUV2ZW50CiB7CisgICAgaWYgKFtfa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciBo
YW5kbGVLZXlFdmVudDp0aGVFdmVudF0pCisgICAgICAgIHJldHVybjsKKwogICAgIF9wYWdlLT5o
YW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGhlRXZlbnQpKTsKIH0K
IApAQCAtMzY3Niw3MyArMzY4NCw2IEBAIC0gKHZvaWQpX2RpZEhhbmRsZUtleUV2ZW50Oig6Oldl
YkV2ZW50ICopZXZlbnQgZXZlbnRXYXNIYW5kbGVkOihCT09MKWV2ZW50V2FzSGFuCiAgICAgX3Vp
RXZlbnRCZWluZ1Jlc2VudCA9IG5pbDsKIH0KIAotLSAoc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50
Pilfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudAotewotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwotCi0gICAgaWYgKF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIAotICAgIGlmIChfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uZWxlbWVudFR5cGUg
PT0gSW5wdXRUeXBlOjpTZWxlY3QpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICBOU1N0cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnQuY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOwotICAgIGlmICghY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
Lmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGVudW0gU2Nyb2xs
aW5nSW5jcmVtZW50IHsgRG9jdW1lbnQsIFBhZ2UsIExpbmUgfTsKLSAgICBlbnVtIFNjcm9sbGlu
Z0RpcmVjdGlvbiB7IFVwLCBEb3duLCBMZWZ0LCBSaWdodCB9OwotCi0gICAgYXV0byBjb21wdXRl
T2Zmc2V0ID0gXihTY3JvbGxpbmdJbmNyZW1lbnQgaW5jcmVtZW50LCBTY3JvbGxpbmdEaXJlY3Rp
b24gZGlyZWN0aW9uKSB7Ci0gICAgICAgIGJvb2wgaXNIb3Jpem9udGFsID0gKGRpcmVjdGlvbiA9
PSBMZWZ0IHx8IGRpcmVjdGlvbiA9PSBSaWdodCk7Ci0KLSAgICAgICAgQ0dGbG9hdCBzY3JvbGxE
aXN0YW5jZSA9IF4gQ0dGbG9hdCB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGluY3JlbWVudCkgewot
ICAgICAgICAgICAgY2FzZSBEb2N1bWVudDoKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWlzSG9y
aXpvbnRhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0
OwotICAgICAgICAgICAgY2FzZSBQYWdlOgotICAgICAgICAgICAgICAgIEFTU0VSVCghaXNIb3Jp
em9udGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsYmFyOjpwYWdlU3RlcChfcGFn
ZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCksIHNlbGYuYm91bmRzLnNpemUuaGVp
Z2h0KTsKLSAgICAgICAgICAgIGNhc2UgTGluZToKLSAgICAgICAgICAgICAgICByZXR1cm4gU2Ny
b2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSgp
OwotCi0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVXAgfHwgZGlyZWN0aW9uID09IExlZnQpCi0g
ICAgICAgICAgICBzY3JvbGxEaXN0YW5jZSA9IC1zY3JvbGxEaXN0YW5jZTsKLSAgICAgICAgCi0g
ICAgICAgIHJldHVybiAoaXNIb3Jpem9udGFsID8gRmxvYXRQb2ludChzY3JvbGxEaXN0YW5jZSwg
MCkgOiBGbG9hdFBvaW50KDAsIHNjcm9sbERpc3RhbmNlKSk7Ci0gICAgfTsKLQotICAgIGlmIChb
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0TGVm
dEFycm93XSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoTGluZSwgTGVmdCk7Ci0gICAg
aWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5w
dXRSaWdodEFycm93XSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoTGluZSwgUmlnaHQp
OwotCi0gICAgU2Nyb2xsaW5nSW5jcmVtZW50IGluY3JlbWVudEZvclZlcnRpY2FsQXJyb3dLZXkg
PSBMaW5lOwotICAgIGlmIChldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0Fs
dGVybmF0ZSkKLSAgICAgICAgaW5jcmVtZW50Rm9yVmVydGljYWxBcnJvd0tleSA9IFBhZ2U7Ci0g
ICAgZWxzZSBpZiAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tDb21tYW5k
KQotICAgICAgICBpbmNyZW1lbnRGb3JWZXJ0aWNhbEFycm93S2V5ID0gRG9jdW1lbnQ7Ci0gICAg
aWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5w
dXRVcEFycm93XSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoaW5jcmVtZW50Rm9yVmVy
dGljYWxBcnJvd0tleSwgVXApOwotICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
IGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0RG93bkFycm93XSkKLSAgICAgICAgcmV0dXJuIGNv
bXB1dGVPZmZzZXQoaW5jcmVtZW50Rm9yVmVydGljYWxBcnJvd0tleSwgRG93bik7Ci0KLSAgICBp
ZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1
dFBhZ2VEb3duXSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoUGFnZSwgRG93bik7Ci0g
ICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5
SW5wdXRQYWdlVXBdKQotICAgICAgICByZXR1cm4gY29tcHV0ZU9mZnNldChQYWdlLCBVcCk7Ci0K
LSAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBd
ID09IGtXZWJTcGFjZUtleSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoUGFnZSwgKGV2
ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrU2hpZnQpID8gVXAgOiBEb3duKTsK
LQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIC0gKEJPT0wpX2ludGVycHJldEtleUV2
ZW50Oig6OldlYkV2ZW50ICopZXZlbnQgaXNDaGFyRXZlbnQ6KEJPT0wpaXNDaGFyRXZlbnQKIHsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYkVudGVyS2V5ID0gMHgwMDAzOwpAQCAtMzc1
NywxMCArMzY5OCw4IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50Oig6OldlYkV2ZW50ICop
ZXZlbnQgaXNDaGFyRXZlbnQ6KEJPT0wpaXNDaGFyRXZlbnQKICAgICBpZiAoIWNvbnRlbnRFZGl0
YWJsZSAmJiBldmVudC5pc1RhYktleSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgaWYgKHN0
ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsT2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNl
dEZvckV2ZW50OmV2ZW50XSkgewotICAgICAgICBbX3dlYlZpZXcgX3Njcm9sbEJ5Q29udGVudE9m
ZnNldDoqc2Nyb2xsT2Zmc2V0XTsKKyAgICBpZiAoW19rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
IGJlZ2luV2l0aEV2ZW50OmV2ZW50XSkKICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICB9CiAKICAg
ICBVSUtleWJvYXJkSW1wbCAqa2V5Ym9hcmQgPSBbVUlLZXlib2FyZEltcGwgc2hhcmVkSW5zdGFu
Y2VdOwogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gZXZlbnQuY2hhcmFjdGVyczsKQEAgLTM4
MDgsNiArMzc0NywzNiBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooOjpXZWJFdmVudCAq
KWV2ZW50IGlzQ2hhckV2ZW50OihCT09MKWlzQ2hhckV2ZW50CiAgICAgcmV0dXJuIE5POwogfQog
CistIChCT09MKWlzS2V5Ym9hcmRTY3JvbGxhYmxlCit7CisgICAgaWYgKF9wYWdlLT5lZGl0b3JT
dGF0ZSgpLmlzQ29udGVudEVkaXRhYmxlKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBpZiAo
X2Fzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IElucHV0VHlwZTo6U2VsZWN0
KQorICAgICAgICByZXR1cm4gTk87CisKKyAgICByZXR1cm4gWUVTOworfQorCistIChDR0Zsb2F0
KWRpc3RhbmNlRm9yU2Nyb2xsaW5nSW5jcmVtZW50OihTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVt
ZW50Cit7CisgICAgc3dpdGNoIChpbmNyZW1lbnQpIHsKKyAgICBjYXNlIFNjcm9sbGluZ0luY3Jl
bWVudDo6RG9jdW1lbnQ6CisgICAgICAgIHJldHVybiBzZWxmLmJvdW5kcy5zaXplLmhlaWdodDsK
KyAgICBjYXNlIFNjcm9sbGluZ0luY3JlbWVudDo6UGFnZToKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXAoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhl
aWdodCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgY2FzZSBTY3JvbGxpbmdJbmNy
ZW1lbnQ6OkxpbmU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY3JvbGxiYXI6OnBpeGVsc1Bl
ckxpbmVTdGVwKCk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworfQorCistICh2b2lkKXNjcm9sbEJ5Q29udGVudE9mZnNldDooV2ViQ29yZTo6RmxvYXRQ
b2ludClvZmZzZXQgYW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQKK3sKKyAgICBbX3dlYlZpZXcgX3Nj
cm9sbEJ5Q29udGVudE9mZnNldDpvZmZzZXQgYW5pbWF0ZWQ6YW5pbWF0ZWRdOworfQorCiAtICh2
b2lkKWV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjazooTlNTdHJpbmcgKiljb21tYW5kTmFt
ZQogewogICAgIFtzZWxmIGJlZ2luU2VsZWN0aW9uQ2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNTM5YWQ3MjA5OTFlMGJlYjc2NjIwOGMwMzNjNTgzZmI1NGRkZjJjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3Jv
bGxpbmdBbmltYXRvci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgUExBVEZP
Uk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFBvaW50OworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTY3JvbGxpbmdJbmNyZW1lbnQgOiB1aW50
OF90IHsKKyAgICBEb2N1bWVudCwKKyAgICBQYWdlLAorICAgIExpbmUKK307CisKK30KKworQGNs
YXNzIFdlYkV2ZW50OworQHByb3RvY29sIFdLS2V5Ym9hcmRTY3JvbGxhYmxlOworCitAaW50ZXJm
YWNlIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvciA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xs
YWJsZTooaWQgPFdLS2V5Ym9hcmRTY3JvbGxhYmxlPilzY3JvbGxhYmxlOworCistICh2b2lkKWlu
dmFsaWRhdGU7CisKKy0gKEJPT0wpYmVnaW5XaXRoRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudDsK
Ky0gKEJPT0wpaGFuZGxlS2V5RXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudDsKKworQGVuZAorCitA
cHJvdG9jb2wgV0tLZXlib2FyZFNjcm9sbGFibGUgPE5TT2JqZWN0PgorQHJlcXVpcmVkCistIChC
T09MKWlzS2V5Ym9hcmRTY3JvbGxhYmxlOworLSAoQ0dGbG9hdClkaXN0YW5jZUZvclNjcm9sbGlu
Z0luY3JlbWVudDooV2ViS2l0OjpTY3JvbGxpbmdJbmNyZW1lbnQpaW5jcmVtZW50OworLSAodm9p
ZClzY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KFdlYkNvcmU6OkZsb2F0UG9pbnQpb2Zmc2V0IGFuaW1h
dGVkOihCT09MKWFuaW1hdGVkOworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYwYTg1YWIyNTVjMDYzYzg0MjdkZTM3NmY3M2E2
NzZjMzEwZjI1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTAsMCArMSwyNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJVSUtpdFNQSS5oIgor
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkV2ZW50
Lmg+CisjaW1wb3J0IDxhbGdvcml0aG0+CisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNv
cmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRvclN0YXRlIDogdWludDhfdCB7CisgICAgV2FpdGluZ0ZvckZpcnN0RXZlbnQsCisg
ICAgV2FpdGluZ0ZvclJlcGVhdCwKKyAgICBBbmltYXRpbmcKK307CisKK307CisKK0BpbXBsZW1l
bnRhdGlvbiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgeworICAgIGlkIDxXS0tleWJvYXJk
U2Nyb2xsYWJsZT4gX3Njcm9sbGFibGU7CisgICAgQ0ZUaW1lSW50ZXJ2YWwgX3N0YXJ0VGltZTsK
KyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IF9zY3JvbGxPZmZzZXRQZXJJbmNyZW1lbnQ7CisgICAg
UmV0YWluUHRyPENBRGlzcGxheUxpbms+IF9kaXNwbGF5TGluazsKKyAgICBLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yU3RhdGUgX3N0YXRlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAorewor
ICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGFibGU6
KGlkIDxXS0tleWJvYXJkU2Nyb2xsYWJsZT4pc2Nyb2xsYWJsZQoreworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3Nj
cm9sbGFibGUgPSBzY3JvbGxhYmxlOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
aW52YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BBbmltYXRlZFNjcm9sbF07CisgICAgX3Njcm9s
bGFibGUgPSBuaWw7Cit9CisKKy0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4p
X3Njcm9sbE9mZnNldEZvckV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQga1dlYlNwYWNlS2V5ID0gMHgyMDsKKworICAgIGlmICghW19zY3JvbGxh
YmxlIGlzS2V5Ym9hcmRTY3JvbGxhYmxlXSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVudC5jaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM7CisgICAgaWYgKCFjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMubGVuZ3RoKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgZW51bSBj
bGFzcyBEaXJlY3Rpb24gOiB1aW50OF90IHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07CisgICAg
ZW51bSBjbGFzcyBLZXkgOiB1aW50OF90IHsgT3RoZXIsIExlZnRBcnJvdywgUmlnaHRBcnJvdywg
VXBBcnJvdywgRG93bkFycm93LCBQYWdlVXAsIFBhZ2VEb3duLCBTcGFjZSB9OworICAgIAorICAg
IGF1dG8ga2V5ID0gXnsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMg
aXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRMZWZ0QXJyb3ddKQorICAgICAgICAgICAgcmV0dXJu
IEtleTo6TGVmdEFycm93OworICAgICAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFJpZ2h0QXJyb3ddKQorICAgICAgICAgICAgcmV0
dXJuIEtleTo6UmlnaHRBcnJvdzsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRVcEFycm93XSkKKyAgICAgICAgICAgIHJl
dHVybiBLZXk6OlVwQXJyb3c7CisgICAgICAgIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0RG93bkFycm93XSkKKyAgICAgICAgICAgIHJl
dHVybiBLZXk6OkRvd25BcnJvdzsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlRG93bl0pCisgICAgICAgICAgICBy
ZXR1cm4gS2V5OjpQYWdlRG93bjsKKyAgICAgICAgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnMgaXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXRQYWdlVXBdKQorICAgICAgICAgICAgcmV0
dXJuIEtleTo6UGFnZVVwOworICAgICAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyBjaGFyYWN0ZXJBdEluZGV4OjBdID09IGtXZWJTcGFjZUtleSkKKyAgICAgICAgICAgIHJldHVy
biBLZXk6OlNwYWNlOworICAgICAgICByZXR1cm4gS2V5OjpPdGhlcjsKKyAgICB9KCk7CisgICAg
CisgICAgaWYgKGtleSA9PSBLZXk6Ok90aGVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIAorICAgIEJPT0wgc2hpZnRQcmVzc2VkID0gZXZlbnQubW9kaWZpZXJGbGFncyAmIFdl
YkV2ZW50RmxhZ01hc2tTaGlmdDsKKyAgICBCT09MIGFsdFByZXNzZWQgPSBldmVudC5tb2RpZmll
ckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZTsKKyAgICBCT09MIGNtZFByZXNzZWQg
PSBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQ7CisgICAgCisg
ICAgYXV0byBpbmNyZW1lbnQgPSBeeworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBj
YXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICBjYXNlIEtleTo6UmlnaHRBcnJvdzoKKyAgICAg
ICAgICAgIHJldHVybiBTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgIGNhc2UgS2V5
OjpVcEFycm93OgorICAgICAgICBjYXNlIEtleTo6RG93bkFycm93OgorICAgICAgICAgICAgaWYg
KGFsdFByZXNzZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ0luY3JlbWVudDo6
UGFnZTsKKyAgICAgICAgICAgIGlmIChjbWRQcmVzc2VkKQorICAgICAgICAgICAgICAgIHJldHVy
biBTY3JvbGxpbmdJbmNyZW1lbnQ6OkRvY3VtZW50OworICAgICAgICAgICAgcmV0dXJuIFNjcm9s
bGluZ0luY3JlbWVudDo6TGluZTsKKyAgICAgICAgY2FzZSBLZXk6OlBhZ2VVcDoKKyAgICAgICAg
Y2FzZSBLZXk6OlBhZ2VEb3duOgorICAgICAgICBjYXNlIEtleTo6U3BhY2U6CisgICAgICAgICAg
ICByZXR1cm4gU2Nyb2xsaW5nSW5jcmVtZW50OjpQYWdlOworICAgICAgICBjYXNlIEtleTo6T3Ro
ZXI6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBTY3JvbGxpbmdJbmNyZW1lbnQ6OkxpbmU7CisgICAgICAgIH07CisgICAgfSgpOworCisgICAg
YXV0byBkaXJlY3Rpb24gPSBeKCkgeworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICBj
YXNlIEtleTo6TGVmdEFycm93OgorICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbjo6TGVmdDsK
KyAgICAgICAgY2FzZSBLZXk6OlJpZ2h0QXJyb3c6CisgICAgICAgICAgICByZXR1cm4gRGlyZWN0
aW9uOjpSaWdodDsKKyAgICAgICAgY2FzZSBLZXk6OlVwQXJyb3c6CisgICAgICAgIGNhc2UgS2V5
OjpQYWdlVXA6CisgICAgICAgICAgICByZXR1cm4gRGlyZWN0aW9uOjpVcDsKKyAgICAgICAgY2Fz
ZSBLZXk6OkRvd25BcnJvdzoKKyAgICAgICAgY2FzZSBLZXk6OlBhZ2VEb3duOgorICAgICAgICAg
ICAgcmV0dXJuIERpcmVjdGlvbjo6RG93bjsKKyAgICAgICAgY2FzZSBLZXk6OlNwYWNlOgorICAg
ICAgICAgICAgcmV0dXJuIHNoaWZ0UHJlc3NlZCA/IERpcmVjdGlvbjo6VXAgOiBEaXJlY3Rpb246
OkRvd247CisgICAgICAgIGNhc2UgS2V5OjpPdGhlcjoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIERpcmVjdGlvbjo6RG93bjsKKyAgICAgICAg
fTsKKyAgICB9KCk7CisKKyAgICBib29sIGlzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb246OkxlZnQgfHwgZGlyZWN0aW9uID09IERpcmVjdGlvbjo6UmlnaHQ7CisgICAgQ0dGbG9h
dCBzY3JvbGxEaXN0YW5jZSA9IFtfc2Nyb2xsYWJsZSBkaXN0YW5jZUZvclNjcm9sbGluZ0luY3Jl
bWVudDppbmNyZW1lbnRdOworICAgIAorICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpV
cCB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpMZWZ0KQorICAgICAgICBzY3JvbGxEaXN0YW5j
ZSA9IC1zY3JvbGxEaXN0YW5jZTsKKyAgICAKKyAgICByZXR1cm4gaXNIb3Jpem9udGFsID8gV2Vi
Q29yZTo6RmxvYXRQb2ludChzY3JvbGxEaXN0YW5jZSwgMCkgOiBXZWJDb3JlOjpGbG9hdFBvaW50
KDAsIHNjcm9sbERpc3RhbmNlKTsKK30KKworLSAoQk9PTCliZWdpbldpdGhFdmVudDooOjpXZWJF
dmVudCAqKWV2ZW50Cit7CisgICAgaWYgKF9zdGF0ZSAhPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yU3RhdGU6OldhaXRpbmdGb3JGaXJzdEV2ZW50KQorICAgICAgICByZXR1cm4gTk87CisgICAg
CisgICAgaWYgKGV2ZW50LnR5cGUgIT0gV2ViRXZlbnRLZXlEb3duKQorICAgICAgICByZXR1cm4g
Tk87CisKKyAgICBhdXRvIG9mZnNldCA9IFtzZWxmIF9zY3JvbGxPZmZzZXRGb3JFdmVudDpldmVu
dF07CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIF9zdGF0ZSA9
IEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvclJlcGVhdDsKKyAgICBf
c2Nyb2xsT2Zmc2V0UGVySW5jcmVtZW50ID0gb2Zmc2V0LnZhbHVlKCk7CisKKyAgICAvLyBUaGUg
Zmlyc3Qga2V5Ym9hcmQgZXZlbnQgdGhhdCBzdGFydHMgc2Nyb2xsaW5nIHBlcmZvcm1zIGl0cyBv
d24KKyAgICAvLyBkaXNjcmV0ZSBhbmltYXRlZCBzY3JvbGwuIENvbnRpbnVvdXNseSBhbmltYXRl
ZCBzY3JvbGxpbmcgc3RhcnRzCisgICAgLy8gd2hlbiB0aGUga2V5IHJlcGVhdHMuCisgICAgW19z
Y3JvbGxhYmxlIHNjcm9sbEJ5Q29udGVudE9mZnNldDpfc2Nyb2xsT2Zmc2V0UGVySW5jcmVtZW50
IGFuaW1hdGVkOllFU107CisKKyAgICByZXR1cm4gWUVTOworfQorCistIChCT09MKWhhbmRsZUtl
eUV2ZW50Oig6OldlYkV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoX3N0YXRlID09IEtleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3JTdGF0ZTo6V2FpdGluZ0ZvckZpcnN0RXZlbnQpCisgICAgICAgIHJl
dHVybiBOTzsKKworICAgIGF1dG8gb2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2ZW50
OmV2ZW50XTsKKyAgICBpZiAoIW9mZnNldCB8fCBldmVudC50eXBlID09IFdlYkV2ZW50S2V5VXAp
IHsKKyAgICAgICAgW3NlbGYgc3RvcEFuaW1hdGVkU2Nyb2xsXTsKKyAgICAgICAgcmV0dXJuIE5P
OworICAgIH0KKworICAgIGlmIChfc3RhdGUgPT0gS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvclN0
YXRlOjpXYWl0aW5nRm9yUmVwZWF0KQorICAgICAgICBbc2VsZiBzdGFydEFuaW1hdGVkU2Nyb2xs
XTsKKworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKHZvaWQpc3RhcnRBbmltYXRlZFNjcm9sbAor
eworICAgIEFTU0VSVCghX2Rpc3BsYXlMaW5rKTsKKworICAgIF9zdGF0ZSA9IEtleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3JTdGF0ZTo6QW5pbWF0aW5nOworICAgIF9zdGFydFRpbWUgPSBDQUN1cnJl
bnRNZWRpYVRpbWUoKTsKKyAgICBfZGlzcGxheUxpbmsgPSBbQ0FEaXNwbGF5TGluayBkaXNwbGF5
TGlua1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZGlzcGxheUxpbmtGaXJlZDop
XTsKKyAgICBbX2Rpc3BsYXlMaW5rIGFkZFRvUnVuTG9vcDpbTlNSdW5Mb29wIG1haW5SdW5Mb29w
XSBmb3JNb2RlOk5TUnVuTG9vcENvbW1vbk1vZGVzXTsKK30KKworLSAodm9pZClzdG9wQW5pbWF0
ZWRTY3JvbGwKK3sKKyAgICBfc3RhdGUgPSBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yU3RhdGU6
OldhaXRpbmdGb3JGaXJzdEV2ZW50OworICAgIFtfZGlzcGxheUxpbmsgaW52YWxpZGF0ZV07Cisg
ICAgX2Rpc3BsYXlMaW5rID0gbmlsOworfQorCistICh2b2lkKWRpc3BsYXlMaW5rRmlyZWQ6KENB
RGlzcGxheUxpbmsgKilzZW5kZXIKK3sKKyAgICBjb25zdCBDRlRpbWVJbnRlcnZhbCBzZWNvbmRz
UGVyU2Nyb2xsSW5jcmVtZW50ID0gMC4wNTsgLy8gU2Vjb25kcyBpdCBzaG91bGQgdGFrZSB0byBj
b3ZlciBvbmUgaW5jcmVtZW50IHdoZW4gYXQgZnVsbCBzcGVlZC4KKyAgICBjb25zdCBmbG9hdCBt
YXhpbXVtVmVsb2NpdHkgPSAyMDAwOyAvLyBNYXhpbXVtIHZlbG9jaXR5IGluIHBpeGVscyBwZXIg
c2Vjb25kLiBFbXBpcmljYWxseSBkZXRlcm1pbmVkLgorICAgIGNvbnN0IENGVGltZUludGVydmFs
IGFjY2VsZXJhdGlvbkR1cmF0aW9uID0gMC4zOyAvLyBEdXJhdGlvbiBvZiBhY2NlbGVyYXRpb24g
aW4gc2Vjb25kcy4gVGhpcyBtYXRjaGVzIFVJU2Nyb2xsVmlldy4KKworICAgIGF1dG8gdmVsb2Np
dHkgPSBfc2Nyb2xsT2Zmc2V0UGVySW5jcmVtZW50LnNjYWxlZCgxLiAvIHNlY29uZHNQZXJTY3Jv
bGxJbmNyZW1lbnQpOworICAgIHZlbG9jaXR5ID0gdmVsb2NpdHkuY29uc3RyYWluZWRCZXR3ZWVu
KHsgLW1heGltdW1WZWxvY2l0eSwgLW1heGltdW1WZWxvY2l0eSB9LCB7IG1heGltdW1WZWxvY2l0
eSwgbWF4aW11bVZlbG9jaXR5IH0pOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgZnJhbWVEdXJhdGlv
biA9IHNlbmRlci50YXJnZXRUaW1lc3RhbXAgLSBzZW5kZXIudGltZXN0YW1wOworICAgIENGVGlt
ZUludGVydmFsIHRpbWVGcm9tQW5pbWF0aW9uU3RhcnQgPSBzZW5kZXIudGltZXN0YW1wIC0gX3N0
YXJ0VGltZTsKKyAgICBmbG9hdCBhY2NlbGVyYXRpb25GYWN0b3IgPSBbW0NBTWVkaWFUaW1pbmdG
dW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rpb25FYXNlSW5FYXNl
T3V0XSBfc29sdmVGb3JJbnB1dDpzdGQ6Om1pbjxDRlRpbWVJbnRlcnZhbD4odGltZUZyb21Bbmlt
YXRpb25TdGFydCwgYWNjZWxlcmF0aW9uRHVyYXRpb24pIC8gYWNjZWxlcmF0aW9uRHVyYXRpb25d
OworCisgICAgYXV0byBjb250ZW50T2Zmc2V0ID0gdmVsb2NpdHkuc2NhbGVkKGFjY2VsZXJhdGlv
bkZhY3RvciAqIGZyYW1lRHVyYXRpb24pOworICAgIFtfc2Nyb2xsYWJsZSBzY3JvbGxCeUNvbnRl
bnRPZmZzZXQ6Y29udGVudE9mZnNldCBhbmltYXRlZDpOT107Cit9CisKK0BlbmQKKworI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDZmODZlMDQ1YjU3NmQxYjYyNjIyMGYwOTU5NTY2Mzk5YWZiZGIy
ZTkuLmEyZGEyNDk3NmRhMjgzZTIxMTdhMzA4YTNiNTIzNzFlOTEyYmM4NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjE4LDYgKzYx
OCw3IEBACiAJCTJEMTA4NzYwMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEwODc1RTFE
MkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwICovOyB9OwogCQkyRDEwODc2MTFE
MkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2Fk
UGFyYW1ldGVycy5oICovOyB9OwogCQkyRDEwODc2MzFEMkM2NDFCMDBCODVGODIgLyogTG9hZFBh
cmFtZXRlcnNDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEMTA4NzYyMUQyQzY0MUIwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVyc0NvY29hLm1t
ICovOyB9OworCQkyRDExQkQxRjIxMTI1QkU4MDA5RDk5RTMgLyogV0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRENUUxMjYyMTBBREM3QTAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRv
ci5tbSAqLzsgfTsKIAkJMkQxMjVDNUUxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovOyB9
OwogCQkyRDEyNUM1RjE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVD
NUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSAqLzsgfTsK
IAkJMkQxMkRBQjUyMDY2MkM3MzAwNkYwMEZCIC8qIFdLQW5pbWF0aW9uRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMTJEQUI0MjA2NjJD
NzMwMDZGMDBGQiAvKiBXS0FuaW1hdGlvbkRlbGVnYXRlLmggKi87IH07CkBAIC03MTcsNiArNzE4
LDcgQEAKIAkJMkRENDVBREYxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVy
cmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRE
NDVBREQxRTVGODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLm1tICovOyB9
OwogCQkyREQ1QTcyOTFFQkYwOEQ1MDA5QkE1OTcgLyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1QTcyODFF
QkYwOEQ1MDA5QkE1OTcgLyogVmlzaWJsZVdlYlBhZ2VDb3VudGVyLmggKi87IH07CiAJCTJERDVB
NzJCMUVCRjA5QTcwMDlCQTU5NyAvKiBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXND
b3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REQ1QTcyQTFFQkYwOUE3MDA5QkE1OTcgLyogSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVh
c2VzQ291bnRlci5oICovOyB9OworCQkyREQ1RTEyOTIxMEFEQzdCMDBEQjYwMTIgLyogV0tLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREQ1RTEyNzIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLmggKi87IH07CiAJCTJERDY3QTJFMUJEODE5NzMwMDUzQjI1MSAvKiBBUElG
aW5kTWF0Y2hlc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRENjdBMkQxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50
LmggKi87IH07CiAJCTJERDY3QTM1MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3
QTMzMUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQuaCAqLzsgfTsKIAkJMkRE
NjdBMzYxQkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVudC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDY3QTM0MUJEODYxMDYwMDUz
QjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQubW0gKi87IH07CkBAIC0zMTkwLDYgKzMxOTIsOCBA
QAogCQkyREQ0NUFERDFFNUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlci5tbTsgcGF0aCA9IGlvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENUE3MjgxRUJGMDhENTAwOUJBNTk3IC8qIFZp
c2libGVXZWJQYWdlQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
aXNpYmxlV2ViUGFnZUNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRE
NUE3MkExRUJGMDlBNzAwOUJBNTk3IC8qIEhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNl
c0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlkZGVuUGFnZVRo
cm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyREQ1RTEyNjIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLm1tOyBwYXRoID0gaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRENUUxMjcyMTBBREM3QTAw
REI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDsgcGF0aCA9IGlv
cy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkRENjdBMkQxQkQ4MTk3MzAwNTNCMjUxIC8qIEFQSUZpbmRNYXRjaGVzQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUZpbmRNYXRjaGVzQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDY3QTMzMUJEODYxMDYwMDUzQjI1MSAv
KiBXS1RleHRGaW5kZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tUZXh0RmluZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDY3
QTM0MUJEODYxMDYwMDUzQjI1MSAvKiBXS1RleHRGaW5kZXJDbGllbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1RleHRGaW5kZXJDbGllbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTg0LDYgKzU5ODgsOCBAQAogCQkJCTBGM0M3MjU3
MTk2RjVGNTAwMEFFREQwQyAvKiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0gKi8sCiAJCQkJ
QTU0MjkzQTIxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVS
ZWNvZ25pemVyLmggKi8sCiAJCQkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICovLAorCQkJCTJERDVFMTI3MjEwQURD
N0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCAqLywKKwkJCQkyREQ1
RTEyNjIxMEFEQzdBMDBEQjYwMTIgLyogV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tICov
LAogCQkJCTJEQTFFNEZDMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCAqLywK
IAkJCQkyREExRTRGRDE4QzAyQjZBMDBEQkM5MjkgLyogV0tMZWdhY3lQREZWaWV3Lm1tICovLAog
CQkJCUExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oICovLApAQCAt
OTc4OSw2ICs5Nzk1LDcgQEAKIAkJCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDMEYwQUIyMDAwNjU4
MjAwNTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTE4
QjVEMjFGRTFENTVCMDBGOUZBMjggLyogV0tJbnNwZWN0b3JXS1dlYlZpZXcuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJERDVFMTI5MjEwQURDN0IwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTlFMTBCMTMxNUNEMTgwMDlFNzAzMSAv
KiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzkwQTlG
MUFENzE2NDkwMEFCOTBCMyAvKiBXS0xheW91dE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
QTFFNEZFMThDMDJCNkEwMERCQzkyOSAvKiBXS0xlZ2FjeVBERlZpZXcuaCBpbiBIZWFkZXJzICov
LApAQCAtMTE2MzMsNiArMTE2NDAsNyBAQAogCQkJCTk5NEJBREYzMUY3RDc4MTEwMEI1NzFFNyAv
KiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDMEYw
QUMyMDAwNjU4NTAwNTM2NTM2IC8qIFdLSW5zcGVjdG9yV2luZG93Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTUxOEI1RDMxRkUxRDU1QjAwRjlGQTI4IC8qIFdLSW5zcGVjdG9yV0tXZWJWaWV3Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMkQxMUJEMUYyMTEyNUJFODAwOUQ5OUUzIC8qIFdLS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlFMTBBMTMxNUNE
MTgwMDlFNzAzMSAvKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkRBMUU0RkYxOEMwMkI2QTAwREJDOTI5IC8qIFdLTGVnYWN5UERGVmlldy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUM5OEM0OEE5MUI2RkQ1QjUwMDE0NTEwMyAvKiBXS01lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>