<?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>219732</bug_id>
          
          <creation_ts>2020-12-10 00:36:26 -0800</creation_ts>
          <short_desc>[Cocoa] Add Experimental VP8 support</short_desc>
          <delta_ts>2020-12-11 18:37:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713454</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-10 00:36:26 -0800</bug_when>
    <thetext>[Cocoa] Add Experimental VP8 support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713455</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-10 00:37:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/72171055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713457</commentid>
    <comment_count>2</comment_count>
      <attachid>415843</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-10 00:40:11 -0800</bug_when>
    <thetext>Created attachment 415843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713561</commentid>
    <comment_count>3</comment_count>
      <attachid>415883</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-10 09:22:22 -0800</bug_when>
    <thetext>Created attachment 415883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713577</commentid>
    <comment_count>4</comment_count>
      <attachid>415889</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-10 09:48:23 -0800</bug_when>
    <thetext>Created attachment 415889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713601</commentid>
    <comment_count>5</comment_count>
      <attachid>415895</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-10 10:20:45 -0800</bug_when>
    <thetext>Created attachment 415895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713611</commentid>
    <comment_count>6</comment_count>
      <attachid>415900</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-10 10:40:50 -0800</bug_when>
    <thetext>Created attachment 415900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713682</commentid>
    <comment_count>7</comment_count>
      <attachid>415900</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-10 12:59:52 -0800</bug_when>
    <thetext>Comment on attachment 415900
Patch

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

&gt; Source/ThirdParty/libwebrtc/ChangeLog:29
&gt; +        * Source/webrtc/sdk/WebKit/WebKitVP8Decoder.h: Copied from Source/WebCore/platform/graphics/cocoa/VP9UtilitiesCocoa.h.

Nit. I am afraid we need to update the change log generator. It often produces such information for newly added files.

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:79
&gt; +    } while (false);

Why do we need this &quot;do ... while&quot; loop trick?

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:93
&gt; +    auto createPixelFormatAttributes = [] (OSType pixelFormat, int32_t borderPixels) {

Nit. The space between [] and () can be removed.

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:94
&gt; +        auto createNumber = [] (int32_t format) -&gt; CFNumberRef {

Ditto.

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:1142
&gt; +    uint16_t height;

No default value for height?

&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:304
&gt; +        m_enableVP8Decoder = true;

Does this flag make sense for other ports?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713714</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-10 14:11:43 -0800</bug_when>
    <thetext>(In reply to Peng Liu from comment #7)
&gt; Comment on attachment 415900 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415900&amp;action=review
&gt; 
&gt; &gt; Source/ThirdParty/libwebrtc/ChangeLog:29
&gt; &gt; +        * Source/webrtc/sdk/WebKit/WebKitVP8Decoder.h: Copied from Source/WebCore/platform/graphics/cocoa/VP9UtilitiesCocoa.h.
&gt; 
&gt; Nit. I am afraid we need to update the change log generator. It often
&gt; produces such information for newly added files.
&gt; 
&gt; &gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:79
&gt; &gt; +    } while (false);
&gt; 
&gt; Why do we need this &quot;do ... while&quot; loop trick?

It lets us do &quot;early return&quot;-style logic without having to create a self-running lambda.

&gt; &gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:93
&gt; &gt; +    auto createPixelFormatAttributes = [] (OSType pixelFormat, int32_t borderPixels) {
&gt; 
&gt; Nit. The space between [] and () can be removed.
&gt; 
&gt; &gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:94
&gt; &gt; +        auto createNumber = [] (int32_t format) -&gt; CFNumberRef {
&gt; 
&gt; Ditto.

This code is just being moved from one file to the other, so I wanted to avoid changing it at all.

&gt; &gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:1142
&gt; &gt; +    uint16_t height;
&gt; 
&gt; No default value for height?

Will add.

&gt; &gt; Source/WebKit/GPUProcess/GPUProcess.cpp:304
&gt; &gt; +        m_enableVP8Decoder = true;
&gt; 
&gt; Does this flag make sense for other ports?

Probably not; but it won&apos;t affect them unless they set the ENABLE(VP9) flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713995</commentid>
    <comment_count>9</comment_count>
      <attachid>415900</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-11 11:37:02 -0800</bug_when>
    <thetext>Comment on attachment 415900
Patch

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

&gt; Source/WebKit/ChangeLog:7
&gt; +

Please fill in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714052</commentid>
    <comment_count>10</comment_count>
      <attachid>416036</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-11 12:46:08 -0800</bug_when>
    <thetext>Created attachment 416036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714079</commentid>
    <comment_count>11</comment_count>
      <attachid>416041</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-11 13:50:43 -0800</bug_when>
    <thetext>Created attachment 416041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714085</commentid>
    <comment_count>12</comment_count>
      <attachid>416041</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-12-11 14:06:45 -0800</bug_when>
    <thetext>Comment on attachment 416041
Patch

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

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:79
&gt; +    } while (false);

You can use early returns instead of this loop.

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:102
&gt; +        auto borderPixelsValue = createNumber(32);

Why not use the `borderPixels` parameter?

&gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:146
&gt; +    OSStatus vtError = kVTVideoDecoderBadDataErr;

Nit: you could set this in a trailing `else` clause</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714087</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-11 14:21:36 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #12)
&gt; Comment on attachment 416041 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416041&amp;action=review
&gt; 
&gt; &gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:79
&gt; &gt; +    } while (false);
&gt; 
&gt; You can use early returns instead of this loop.

Ok.

&gt; &gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:102
&gt; &gt; +        auto borderPixelsValue = createNumber(32);
&gt; 
&gt; Why not use the `borderPixels` parameter?

No idea why we have the borderPixels parameter in the first place, since this just used locally with a hard coded value.

&gt; &gt; Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoderReceiver.cpp:146
&gt; &gt; +    OSStatus vtError = kVTVideoDecoderBadDataErr;
&gt; 
&gt; Nit: you could set this in a trailing `else` clause

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714088</commentid>
    <comment_count>14</comment_count>
      <attachid>416047</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-11 14:24:28 -0800</bug_when>
    <thetext>Created attachment 416047
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714178</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-11 16:57:41 -0800</bug_when>
    <thetext>Committed r270720: &lt;https://trac.webkit.org/changeset/270720&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416047.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714212</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-11 18:33:37 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714213</commentid>
    <comment_count>17</comment_count>
      <attachid>416083</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-11 18:33:38 -0800</bug_when>
    <thetext>Created attachment 416083
Follow-up merge fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714214</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-12-11 18:37:56 -0800</bug_when>
    <thetext>Committed r270727: &lt;https://trac.webkit.org/changeset/270727&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415843</attachid>
            <date>2020-12-10 00:40:11 -0800</date>
            <delta_ts>2020-12-10 09:22:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219732-20201210004010.patch</filename>
            <type>text/plain</type>
            <size>89018</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBkN2FmYjdkYjMzODZhNzUyYjY4NTY5OTM4ZTM5OWUxMTdkY2EzY2VlLi44NjU2
OWUzNDc3MDE0ZWVmN2U2Y2E4NmEwYjc4MmY2ZjRmMGY3OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJL
aXREZWNvZGVyUmVjZWl2ZXI6OldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAgICAgICh3ZWJy
dGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6fldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAg
ICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4
ZWxCdWZmZXJQb29sKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpk
ZWNvZGVyRmFpbGVkKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpE
ZWNvZGVkKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmg6IEFkZGVkCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlV2ViS2l0VlA4RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OmludmFsaWRhdGVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6ZmluYWxpemVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y29weVZQOERlY29kZXJE
ZWJ1Z0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6d2ViS2l0VlA4RGVjb2RlckZyb21W
VERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOERlY29kZXJTZXNzaW9uKToKKyAg
ICAgICAgKHdlYnJ0Yzo6ZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jayk6
CisgICAgICAgICh3ZWJydGM6OmRlY29kZVZQOERlY29kZXJGcmFtZSk6CisgICAgICAgICogU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2Vi
cnRjOjpzdGFydFZQOURlY29kZXJTZXNzaW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXRWUDlEZWNvZGVy
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2Rl
ckZhaWxlZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTAtMjQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0JpZ1N1cl0gQXBwZW5kaW5nIGEgbmV3IFdlYk0gaW5pdCBzZWdt
ZW50IGJldHdlZW4gQ2x1c3RlciBlbGVtZW50cyB0aHJvd3MgYW4gZXJyb3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzVmZDFj
NDdiNzQ2YzA4MGYxMDUxM2JlY2VlMjYxOTUzMTQ1ZjM3MC4uNTM4NzIwZDQyYzRhNmQ1NjUyMjA1
ZWIwYTNjNDEzNDJkZTVlNTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMi0xMCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBl
cmltZW50YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sOgorCiAyMDIwLTEyLTA3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBSZW1vdmUgV0VCS0lUX1dSQVBfU09VUkNFTElTVApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDliZGYwNWVmMTY2Yzg2MWNkYjgxYjYyMjI0ZTU5YWIwMTg5OTQzODguLjU1
MWFmODVlMGViMTZlNTQ2ZDM1YTliMDkzYWU5NjEwNzVhNzI0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50YWwgVlA4IHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTczMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ld2x5IHBhc3NpbmcgdGVz
dHM6CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXIuaHRtbAorICAgICAgICAgICAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1k
dXJpbmctcGVuZGluZy1zZWVrLmh0bWwKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlZWthYmxlLmh0bWwKKyAgICAg
ICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUuaHRtbCAKKyAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNv
bmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lcmF0ZS5odG1sCisgICAgICAgICAgICBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hh
bmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbAorICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtaW52YWxpZC1jb2RlYy5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1hdERlc2NyaXB0aW9u
RnJvbVZQOUhlYWRlclBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVZQOEZyYW1lSGVh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzVlA4RGVjb2RlckF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjppc1ZQ
OUNvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpp
c1ZQOENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRW
UDhEZWNvZGVyKToKKwogMjAyMC0xMS0wNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBOb24tZnVsbHNjcmVlbiBwYWdlIGNvbnRlbnRzIHZpc2libGUgd2hlbiBy
b3RhdGluZyBkZXZpY2UgZHVyaW5nIGVsZW1lbnQgZnVsbHNjcmVlbiBwcmVzZW50YXRpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDYwNDgxNWMxMmM0YmEyODc4NTNiN2Q0MTQ3OGY2OWJkYzk2MWQ2YjkuLjllMWJj
YmYwNTFkNzY5YTRlYjIyZjU3ZTlkNDM4MTliZTcxNzg0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzYgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBzdXBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OnVwZGF0ZVBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9u
Ojppc1ZQOERlY29kZXJFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNUb0Fw
cEJvdW5kRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlVlA4U1dEZWNvZGVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAyMC0xMi0wOCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBFbnRlcmluZyBmdWxsc2NyZWVuIGZy
b20gbGVzcy10aGFuLWZ1bGxzY3JlZW4gV0tXZWJWaWV3IGRvZXMgbm90IGxheW91dCBjb3JyZWN0
bHkgdXBvbiBleGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggYTJjYWZiMzkyMjk5ZTk1
YjdhN2JkZmU2ZTM2ZDdmZjA1ZjcxOTBmYi4uMzA5NGM5MTVmZGVkODMwMjU3NzY5NDVmYzFlZThk
ZGRmNzNjMDY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMTAwLDYgKzEwMCw3IEBA
IF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRl
V2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJX
ZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNf
MTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9f
Wk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0
cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQ
OURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRl
b0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBl
RUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggYTJjYWZiMzkyMjk5ZTk1YjdhN2JkZmU2ZTM2
ZDdmZjA1ZjcxOTBmYi4uMzA5NGM5MTVmZGVkODMwMjU3NzY5NDVmYzFlZThkZGRmNzNjMDY1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xp
YndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMTAwLDYgKzEwMCw3IEBAIF9fWk42
d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0
RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRW
UDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJL
aXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2Vi
cnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVnaXN0
ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29k
ZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1l
RVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQog
X19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1h
Yy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLm1hYy5leHAKaW5kZXggYTJjYWZiMzkyMjk5ZTk1YjdhN2JkZmU2ZTM2ZDdmZjA1ZjcxOTBm
Yi4uMzA5NGM5MTVmZGVkODMwMjU3NzY5NDVmYzFlZThkZGRmNzNjMDY1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMu
ZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3
ZWJydGMubWFjLmV4cApAQCAtMTAwLDYgKzEwMCw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNh
dGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNf
MTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0
YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRW
UDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdh
cmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVy
RXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMy
MHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlv
bklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVs
QnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZl
ci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYwZTViYzUzNjA4ZDM4
NzNhZTc1MWUxY2Q1Nzg2ZjczZThhZjljZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJl
Y2VpdmVyLmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJL
aXRWUDlEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgi
CisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKwor
V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpXZWJLaXREZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29k
ZXJTZXNzaW9uIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2Vi
S2l0RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0RGVjb2RlclJlY2VpdmVyKCkKK3sKKyAgICBpZiAo
bV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7
Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJvbUZvcm1hdERl
c2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7Cisg
ICAgLy8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3
ZSBtdXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJp
LXBsYW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9z
ZSB0byB0aGUKKyAgICAvLyBkZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMg
b3duIGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNl
IHBvc3QtZGVjb2RlLgorICAgIG1faXNGdWxsUmFuZ2UgPSBmYWxzZTsKKyAgICBtX2lzMTBiaXQg
PSBmYWxzZTsKKworICAgIGRvIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXRE
ZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICBpZiAo
IWV4dGVuc2lvbnMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDRlR5cGVSZWYgZXh0
ZW5zaW9uQXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXRE
ZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAg
ICAgICAgaWYgKCFleHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykg
IT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2
cGNDIikpKTsKKyAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlE
KGNvbmZpZ3VyYXRpb25SZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdl
dExlbmd0aChjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25S
ZWNvcmRTaXplIDwgMTIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3Jk
KTsKKyAgICAgICAgYXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9u
UmVjb3JkRGF0YSArIDYpOworCisgICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+
PiA0KSA9PSAxMCkKKyAgICAgICAgICAgIG1faXMxMGJpdCA9IHRydWU7CisKKyAgICAgICAgaWYg
KGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAweDEpCisgICAgICAgICAgICBtX2lzRnVsbFJhbmdl
ID0gdHJ1ZTsKKyAgICB9IHdoaWxlIChmYWxzZSk7Cit9CisKK0NWUGl4ZWxCdWZmZXJQb29sUmVm
IFdlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZl
cldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCkKK3sKKyAgICBp
ZiAobV9waXhlbEJ1ZmZlclBvb2wgJiYgbV9waXhlbEJ1ZmZlcldpZHRoID09IHBpeGVsQnVmZmVy
V2lkdGggJiYgbV9waXhlbEJ1ZmZlckhlaWdodCA9PSBwaXhlbEJ1ZmZlckhlaWdodCAmJiBtX2lz
MTBiaXQgPT0gaXMxMGJpdCkKKyAgICAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sOworCisg
ICAgT1NUeXBlIHBpeGVsRm9ybWF0OworICAgIGlmIChpczEwYml0KQorICAgICAgICBwaXhlbEZv
cm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBs
YW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlk
ZW9SYW5nZTsKKyAgICBlbHNlCisgICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/
IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKKworICAgIGF1dG8gY3Jl
YXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhlbEZvcm1hdCwgaW50MzJf
dCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0byBjcmVhdGVOdW1iZXIgPSBbXSAoaW50MzJf
dCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAgICAgICAgICAgIHJldHVybiBDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmZm9ybWF0KTsK
KyAgICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9IENGQXJyYXlDcmVhdGVN
dXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwor
ICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihwaXhlbEZvcm1hdCk7Cisg
ICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywgZm9ybWF0TnVtYmVyKTsK
KyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7CisKKyAgICAgICAgYXV0byBib3JkZXJQ
aXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7CisKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5
c1tdID0geworICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCisg
ICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVmdEtleSwKKyAgICAgICAg
ICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwKKyAgICAgICAgICAgIGtD
VlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1
ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAorICAgICAgICB9OworICAgICAgICBjb25zdCB2
b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAgIGNmUGl4ZWxGb3JtYXRzLAorICAgICAgICAg
ICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAg
ICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFs
dWUsCisgICAgICAgIH07CisgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcyk7CisgICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNWYWx1ZSk7CisgICAgICAg
IENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOwor
ICAgIH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9IGNyZWF0ZVBpeGVsRm9y
bWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOworICAgIFZURGVjb2RlclNlc3Npb25TZXRQ
aXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOwor
ICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworCisgICAgaWYgKG1fcGl4ZWxC
dWZmZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7CisgICAg
ICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBtX3BpeGVsQnVm
ZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsK
KyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmV0YWluKG1fcGl4ZWxCdWZm
ZXJQb29sKTsKKworICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHBpeGVsQnVmZmVyV2lkdGg7Cisg
ICAgbV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVsQnVmZmVySGVpZ2h0OworICAgIG1faXMxMGJp
dCA9IGlzMTBiaXQ7CisKKyAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Cit9CisKK09TU3Rh
dHVzIFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCit7Cisg
ICAgT1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2RlckJhZERhdGFFcnI7CisgICAgaWYg
KGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQpCisgICAgICAgIHZ0RXJyb3Ig
PSBub0VycjsKKyAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfVU5JTklU
SUFMSVpFRCkKKyAgICAgICAgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2Rlck1hbGZ1bmN0aW9uRXJy
OworICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19NRU1PUlkpCisgICAg
ICAgIHZ0RXJyb3IgPSBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOworICAgIFZURGVjb2RlclNlc3Np
b25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHZ0RXJyb3IsIDAs
IG51bGxwdHIpOworICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKKworICAgIFJUQ19MT0co
TFNfRVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVjb2RlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8
IGVycm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVycm9yOworICAgIHJldHVybiB2dEVycm9yOwor
fQorCitpbnQzMl90IFdlYktpdERlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBm
cmFtZSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJh
bWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkg
LT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhp
cy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAx
MCk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7
CisgICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLCAmcGl4ZWxCdWZmZXIpID09IGtDVlJldHVy
blN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0pOworCisgICAgVlREZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJh
bWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwgcGl4ZWxCdWZmZXIgPyBub0VyciA6IC0xLCAw
LCBwaXhlbEJ1ZmZlcik7CisgICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOworICAgIGlmIChw
aXhlbEJ1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsKKyAgICByZXR1cm4g
MDsKK30KKworaW50MzJfdCBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFt
ZSYgZnJhbWUsIGludDY0X3QpCit7CisgICAgRGVjb2RlZChmcmFtZSk7CisgICAgcmV0dXJuIDA7
Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZy
YW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiwgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4pCit7
CisgICAgRGVjb2RlZChmcmFtZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2Vp
dmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YTMzODc0NWJiN2ExNjgy
NjQxN2E4YzgwMDZlNGI5NWZiYjk3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNl
aXZlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgIlZUVmlk
ZW9EZWNvZGVyU1BJLmgiCisjaW5jbHVkZSAiV2ViS2l0VXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8
VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xh
c3MgV2ViS2l0RGVjb2RlclJlY2VpdmVyIGZpbmFsIDogcHVibGljIERlY29kZWRJbWFnZUNhbGxi
YWNrIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJLaXREZWNvZGVyUmVjZWl2ZXIoVlRWaWRl
b0RlY29kZXJTZXNzaW9uKTsKKyAgICB+V2ViS2l0RGVjb2RlclJlY2VpdmVyKCk7CisKKyAgICBW
VFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dEZyYW1lOyB9CisgICAgdm9pZCBzZXRDdXJyZW50RnJhbWUoVlRWaWRlb0RlY29kZXJGcmFtZSBj
dXJyZW50RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7IH0KKyAgICBPU1N0
YXR1cyBkZWNvZGVyRmFpbGVkKGludCBlcnJvcik7CisKKyAgICB2b2lkIGluaXRpYWxpemVGcm9t
Rm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZik7CisKK3ByaXZhdGU6Cisg
ICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmKSBmaW5hbDsKKyAgICBpbnQzMl90IERlY29k
ZWQoVmlkZW9GcmFtZSYsIGludDY0X3QgZGVjb2RlX3RpbWVfbXMpIGZpbmFsOworICAgIHZvaWQg
RGVjb2RlZChWaWRlb0ZyYW1lJiwgYWJzbDo6b3B0aW9uYWw8aW50MzJfdD4gZGVjb2RlX3RpbWVf
bXMsIGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IHFwKSBmaW5hbDsKKworICAgIENWUGl4ZWxCdWZm
ZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXplX3QgcGl4ZWxCdWZmZXJXaWR0aCwgc2l6ZV90
IHBpeGVsQnVmZmVySGVpZ2h0LCBib29sIGlzMTBiaXQpOworCisgICAgVlRWaWRlb0RlY29kZXJT
ZXNzaW9uIG1fc2Vzc2lvbiB7IG51bGxwdHIgfTsKKyAgICBWVFZpZGVvRGVjb2RlckZyYW1lIG1f
Y3VycmVudEZyYW1lIHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3BpeGVsQnVmZmVyV2lkdGgg
eyAwIH07CisgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJIZWlnaHQgeyAwIH07CisgICAgYm9vbCBt
X2lzMTBiaXQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Z1bGxSYW5nZSB7IGZhbHNlIH07Cisg
ICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgbV9waXhlbEJ1ZmZlclBvb2wgeyBudWxscHRyIH07Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lZGMyNDEyZTE0MTc2MDNkNTg0Yzg5NmUwODUyNjg2NmFmZmFkM2UyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmNwcApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJXZWJLaXRWUDhEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
IDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+CisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19j
b2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIuaCIKKyNpbmNsdWRlICJydGNfYmFz
ZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2luZm8u
aCIKKworI2luY2x1ZGUgIkNNQmFzZU9iamVjdFNQSS5oIgorI2luY2x1ZGUgIlZUVmlkZW9EZWNv
ZGVyU1BJLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitzdGF0aWMgT1NTdGF0dXMgY3JlYXRl
V2ViS2l0VlA4RGVjb2RlcihGaWdWaWRlb0NvZGVjVHlwZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2Nh
dG9yLCBWVFZpZGVvRGVjb2RlclJlZiopOwordm9pZCByZWdpc3RlcldlYktpdFZQOERlY29kZXIo
KQoreworICAgIFZUUmVnaXN0ZXJWaWRlb0RlY29kZXIoJ3ZwMDgnLCBjcmVhdGVXZWJLaXRWUDhE
ZWNvZGVyKTsKK30KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJ2
cHhWcDhEZWNvZGVyPiBtX2luc3RhbmNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXREZWNv
ZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7Cit9IFdlYktpdFZQOERlY29kZXI7CisKK3N0YXRpYyBP
U1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVjb2RlcihDTUJhc2VPYmplY3RSZWYpOworc3RhdGljIHZv
aWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVjdFJlZik7CitzdGF0aWMgQ0ZTdHJpbmdS
ZWYgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9uKENNQmFzZU9iamVjdFJlZik7CisKK3N0
YXRpYyBjb25zdCBDTUJhc2VDbGFzcyBXZWJLaXRWUDhEZWNvZGVyX0Jhc2VDbGFzcyA9Cit7Cisg
ICAga0NNQmFzZU9iamVjdF9DbGFzc1ZlcnNpb25fMSwKKyAgICBzaXplb2YoV2ViS2l0VlA4RGVj
b2RlciksCisgICAgbnVsbHB0ciwgLy8gQ29tcGFyaXNvbiBieSBwb2ludGVyIGVxdWFsaXR5Cisg
ICAgaW52YWxpZGF0ZVZQOERlY29kZXIsCisgICAgZmluYWxpemVWUDhEZWNvZGVyLAorICAgIGNv
cHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbiwKKyAgICBudWxscHRyLCAvLyBDb3B5UHJvcGVy
dHkKKyAgICBudWxscHRyLCAvLyBTZXRQcm9wZXJ0eQorICAgIG51bGxwdHIsCisgICAgbnVsbHB0
cgorfTsKKworc3RhdGljIE9TU3RhdHVzIHN0YXJ0VlA4RGVjb2RlclNlc3Npb24oVlRWaWRlb0Rl
Y29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9u
UmVmKTsKK3N0YXRpYyBPU1N0YXR1cyBkZWNvZGVWUDhEZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29k
ZXJSZWYsIFZUVmlkZW9EZWNvZGVyRnJhbWUsIENNU2FtcGxlQnVmZmVyUmVmLCBWVERlY29kZUZy
YW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKik7CisKK3N0YXRpYyBjb25zdCBWVFZpZGVvRGVj
b2RlckNsYXNzIFdlYktpdFZQOERlY29kZXJfVmlkZW9EZWNvZGVyQ2xhc3MgPQoreworICAgIGtW
VFZpZGVvRGVjb2Rlcl9DbGFzc1ZlcnNpb25fMSwKKyAgICBzdGFydFZQOERlY29kZXJTZXNzaW9u
LAorICAgIGRlY29kZVZQOERlY29kZXJGcmFtZSwKKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVj
b2RlckZ1bmN0aW9uX0NvcHlTdXBwb3J0ZWRQcm9wZXJ0eURpY3Rpb25hcnksCisgICAgbnVsbHB0
ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9TZXRQcm9wZXJ0aWVzCisgICAgbnVsbHB0ciwg
Ly8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9Db3B5U2VyaWFsaXphYmxlUHJvcGVydGllcworICAg
IG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rpb25fQ2FuQWNjZXB0Rm9ybWF0RGVzY3Jp
cHRpb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0ZpbmlzaERlbGF5
ZWRGcmFtZXMKKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX1N0YXJ0VGls
ZVNlc3Npb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0RlY29kZVRp
bGUKKyAgICBudWxscHRyIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rpb25fRmluaXNoRGVsYXllZFRp
bGVzCit9OworCitzdGF0aWMgY29uc3QgVlRWaWRlb0RlY29kZXJWVGFibGUgV2ViS2l0VlA4RGVj
b2RlclZUYWJsZSA9Cit7CisgICAgeyBudWxscHRyLCAmV2ViS2l0VlA4RGVjb2Rlcl9CYXNlQ2xh
c3MgfSwKKyAgICAmV2ViS2l0VlA4RGVjb2Rlcl9WaWRlb0RlY29kZXJDbGFzcworfTsKKworT1NT
dGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdWaWRlb0NvZGVjVHlwZSwgQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJlZiogZGVjb2Rlck91dCkKK3sKKyAgICBp
ZiAoIWRlY29kZXJPdXQpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNv
ZGVyIGNyZWF0aW9uIGZhaWxlZCwgbm8gZGVjb2RlciBvdXRwdXQiOworICAgICAgICByZXR1cm4g
a1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAgIFZUVmlkZW9EZWNvZGVyUmVmIGRlY29kZXIg
PSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTURlcml2ZWRPYmplY3RDcmVhdGUoYWxsb2Nh
dG9yLCAmV2ViS2l0VlA4RGVjb2RlclZUYWJsZS5iYXNlLCBWVFZpZGVvRGVjb2RlckdldENsYXNz
SUQoKSwgKENNQmFzZU9iamVjdFJlZiopJmRlY29kZXIpOworCisgICAgaWYgKCFkZWNvZGVyKSB7
CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDggZGVjb2RlciBjcmVhdGlvbiBmYWls
ZWQsIENNRGVyaXZlZE9iamVjdENyZWF0ZSBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9yOwor
ICAgICAgICByZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsKKyAgICB9CisKKyAgICBpZihl
cnJvcikgeworICAgICAgICBDRlJlbGVhc2UoZGVjb2Rlcik7CisgICAgICAgIGRlY29kZXIgPSBO
VUxMOworICAgIH0KKyAgICAqZGVjb2Rlck91dCA9IGRlY29kZXI7CisgICAgcmV0dXJuIGVycm9y
OworfQorCitPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVjb2RlcihDTUJhc2VPYmplY3RSZWYgaW5z
dGFuY2UpCit7CisgICAgYXV0byogZGVjb2RlciA9IHN0YXRpY19jYXN0PFdlYktpdFZQOERlY29k
ZXIqPihDTUJhc2VPYmplY3RHZXREZXJpdmVkU3RvcmFnZShpbnN0YW5jZSkpOworICAgIGlmICgh
ZGVjb2RlcikKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBpbnZh
bGlkYXRpb24gZmFpbGVkIGFzIGluc3RhbmNlIGhhcyBubyBkZWNvZGVyIjsKKyAgICBlbHNlIHsK
KyAgICAgICAgZGVjb2Rlci0+bV9pbnN0YW5jZSA9IG51bGxwdHI7CisgICAgICAgIGRlY29kZXIt
Pm1fcmVjZWl2ZXIgPSBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gbm9FcnI7Cit9CisKK3Zv
aWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVjdFJlZiBpbnN0YW5jZSkKK3sKKyAgICBp
bnZhbGlkYXRlVlA4RGVjb2RlcihpbnN0YW5jZSk7Cit9CisKK0NGU3RyaW5nUmVmIGNvcHlWUDhE
ZWNvZGVyRGVidWdEZXNjcmlwdGlvbihDTUJhc2VPYmplY3RSZWYpCit7CisgICAgcmV0dXJuIENG
U1RSKCJXZWJLaXQgVlA4IGRlY29kZXIiKTsKK30KKworV2ViS2l0VlA4RGVjb2Rlciogd2ViS2l0
VlA4RGVjb2RlckZyb21WVERlY29kZXIoVlRWaWRlb0RlY29kZXJSZWYgZGVjb2RlcikKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0VlA4RGVjb2Rlcio+KENNQmFzZU9iamVjdEdldERl
cml2ZWRTdG9yYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8Q01CYXNlT2JqZWN0UmVmPihkZWNvZGVyKSkp
OworfQorT1NTdGF0dXMgc3RhcnRWUDhEZWNvZGVyU2Vzc2lvbihWVFZpZGVvRGVjb2RlclJlZiBp
bnN0YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNlc3Npb24sIENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sKKyAgICBhdXRvKiBkZWNvZGVyID0gd2Vi
S2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFuY2UpOworICAgIGlmICghZGVjb2Rlcikg
eworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0byBn
ZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIHN0YXJ0aW5nIjsKKyAgICAgICAgcmV0dXJu
IGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBkZWNvZGVyLT5tX2luc3RhbmNlID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJ2cHhWcDhEZWNvZGVyPigpOworICAgIGRlY29kZXItPm1fcmVjZWl2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdERlY29kZXJSZWNlaXZlcj4oc2Vzc2lvbik7Cisg
ICAgZGVjb2Rlci0+bV9yZWNlaXZlci0+aW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihm
b3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBkZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRl
Y29kZUNvbXBsZXRlQ2FsbGJhY2soZGVjb2Rlci0+bV9yZWNlaXZlci5nZXQoKSk7CisKKyAgICBW
aWRlb0NvZGVjIGNvZGVjOworICAgIGF1dG8gZGltZW5zaW9ucyA9IENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgIGNvZGVjLndpZHRo
ID0gZGltZW5zaW9ucy53aWR0aDsKKyAgICBjb2RlYy5oZWlnaHQgPSBkaW1lbnNpb25zLmhlaWdo
dDsKKworICAgIGRlY29kZXItPm1faW5zdGFuY2UtPkluaXREZWNvZGUoJmNvZGVjLCBDcHVJbmZv
OjpEZXRlY3ROdW1iZXJPZkNvcmVzKCkpOworCisgICAgcmV0dXJuIG5vRXJyOworfQorCitzdGF0
aWMgT1NTdGF0dXMgZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jayhXZWJL
aXRWUDhEZWNvZGVyJiBkZWNvZGVyLCBWVFZpZGVvRGVjb2RlckZyYW1lIGZyYW1lLCBDTUJsb2Nr
QnVmZmVyUmVmIGVuY29kZWRCdWZmZXIpCit7CisgICAgUlRDX0RDSEVDSyhDTUJsb2NrQnVmZmVy
SXNSYW5nZUNvbnRpZ3VvdXMoZW5jb2RlZEJ1ZmZlciwgMCwgMCkpOworCisgICAgYXV0byBzaXpl
ID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoZW5jb2RlZEJ1ZmZlcik7CisgICAgY2hhciog
ZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyR2V0RGF0
YVBvaW50ZXIoZW5jb2RlZEJ1ZmZlciwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgJmRhdGEpKSB7Cisg
ICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDggZGVjb2RlcjogQ01CbG9ja0J1ZmZlckdl
dERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yICIgPDwgZXJyb3I7CisgICAgICAgIHJldHVy
biBlcnJvcjsKKyAgICB9CisKKyAgICBSVENfRENIRUNLKCFkZWNvZGVyLm1fcmVjZWl2ZXItPmN1
cnJlbnRGcmFtZSgpKTsKKyAgICBkZWNvZGVyLm1fcmVjZWl2ZXItPnNldEN1cnJlbnRGcmFtZShm
cmFtZSk7CisKKyAgICBFbmNvZGVkSW1hZ2UgaW1hZ2UgeyByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSwgc2l6ZSwgc2l6ZSB9OworICAgIC8vIFdlIHNldCB0aG9zZSB2YWx1ZXMgYXMg
VlA4RGVjb2RlckltcGwgY2hlY2tzIGZvciBnZXR0aW5nIGEgZnVsbCBrZXkgZnJhbWUgYXMgZmly
c3QgZnJhbWUuCisgICAgaW1hZ2UuX2ZyYW1lVHlwZSA9IFZpZGVvRnJhbWVUeXBlOjprVmlkZW9G
cmFtZUtleTsKKyAgICBpbWFnZS5fY29tcGxldGVGcmFtZSA9IHRydWU7CisgICAgYXV0byBlcnJv
ciA9IGRlY29kZXIubV9pbnN0YW5jZS0+RGVjb2RlKGltYWdlLCBmYWxzZSwgMCk7CisgICAgaWYg
KGVycm9yKQorICAgICAgICByZXR1cm4gZGVjb2Rlci5tX3JlY2VpdmVyLT5kZWNvZGVyRmFpbGVk
KGVycm9yKTsKKworICAgIFJUQ19EQ0hFQ0soIWRlY29kZXIubV9yZWNlaXZlci0+Y3VycmVudEZy
YW1lKCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09TU3RhdHVzIGRlY29kZVZQOERlY29kZXJG
cmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJGcmFtZSBmcmFt
ZSwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBWVERlY29kZUZyYW1lRmxhZ3MsIFZU
RGVjb2RlSW5mb0ZsYWdzKikKK3sKKyAgICBhdXRvKiBkZWNvZGVyID0gd2ViS2l0VlA4RGVjb2Rl
ckZyb21WVERlY29kZXIoaW5zdGFuY2UpOworICAgIGlmICghZGVjb2RlciB8fCAhZGVjb2Rlci0+
bV9pbnN0YW5jZSB8fCAhZGVjb2Rlci0+bV9yZWNlaXZlcikgeworICAgICAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0byBnZXQgZGVjb2RlciBmcm9tIGluc3Rh
bmNlIHdoaWxlIGRlY29kaW5nIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsKKyAg
ICB9CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZm
ZXIoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWVuY29kZWRCdWZmZXIpIHsKKyAgICAgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBmYWlsZWQgdG8gZ2V0IGRhdGEgYnVmZmVy
IjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBDTUJsb2Nr
QnVmZmVyUmVmIGNvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOworICAgIC8vIE1ha2Ugc3VyZSBi
bG9jayBidWZmZXIgaXMgY29udGlndW91cy4KKyAgICBpZiAoIUNNQmxvY2tCdWZmZXJJc1Jhbmdl
Q29udGlndW91cyhlbmNvZGVkQnVmZmVyLCAwLCAwKSkgeworICAgICAgICBhdXRvIHN0YXR1cyA9
IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51bGxwdHIsIGVuY29kZWRCdWZmZXIsIG51
bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAsICZjb250aWd1b3VzQnVmZmVyKTsKKyAgICAgICAgaWYg
KHN0YXR1cyAhPSBub0VycikgeworICAgICAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQ
OCBkZWNvZGVyOiBmYWlsZWQgdG8gY3JlYXRlIGNvbnRpZ3VvdXMgYmxvY2sgYnVmZmVyIHdpdGgg
ZXJyb3IgIiA8PCBzdGF0dXM7CisgICAgICAgICAgICByZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxl
ZEVycjsKKyAgICAgICAgfQorICAgICAgICBlbmNvZGVkQnVmZmVyID0gY29udGlndW91c0J1ZmZl
cjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGRlY29kZVZQOERlY29kZXJGcmFtZUZyb21D
b250aWd1b3VzQmxvY2soKmRlY29kZXIsIGZyYW1lLCBlbmNvZGVkQnVmZmVyKTsKKworICAgIGlm
IChjb250aWd1b3VzQnVmZmVyKQorICAgICAgICBDRlJlbGVhc2UoY29udGlndW91c0J1ZmZlcik7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VlA4RGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNzMwYjk1NmFlNWE3NzA0MzhmODA4ZDUx
NTEzN2YxODYxODU5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaApAQCAtMCww
ICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSB3ZWJydGMg
eworCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOURlY29kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcAppbmRleCA0M2E4ZWM3MmRiZWI5OGFl
YzQ0NmI3MTk4N2MzMWQzMGU4ZDUzNzVmLi4zYjM1OWMyNzA1ODI4OTZhZDIwMjMzOGYxMTY4NGVj
ZDk1NmUxNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rl
ci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIldlYktpdFZQOURlY29kZXIuaCIK
IAorI2luY2x1ZGUgIldlYktpdERlY29kZXJSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYktpdFV0
aWxpdGllcy5oIgogI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KICNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3ZwOV9pbXBsLmgiCkBAIC00Miwz
OSArNDMsMTEgQEAgdm9pZCByZWdpc3RlcldlYktpdFZQOURlY29kZXIoKQogICAgIFZUUmVnaXN0
ZXJWaWRlb0RlY29kZXIoJ3ZwMDknLCBjcmVhdGVXZWJLaXRWUDlEZWNvZGVyKTsKIH0KIAotY2xh
c3MgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxWUDlEZWNvZGVySW1wbD4gbV9pbnN0YW5jZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyPiBtX3JlY2VpdmVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7CiB9IFdlYktpdFZQOURlY29k
ZXI7CiAKLWNsYXNzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlciBmaW5hbCA6IHB1YmxpYyBEZWNv
ZGVkSW1hZ2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViS2l0VlA5RGVjb2Rl
clJlY2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbik7Ci0gICAgfldlYktpdFZQOURlY29kZXJS
ZWNlaXZlcigpOwotCi0gICAgVlRWaWRlb0RlY29kZXJGcmFtZSBjdXJyZW50RnJhbWUoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQotICAgIHZvaWQgc2V0Q3VycmVudEZyYW1lKFZU
VmlkZW9EZWNvZGVyRnJhbWUgY3VycmVudEZyYW1lKSB7IG1fY3VycmVudEZyYW1lID0gY3VycmVu
dEZyYW1lOyB9Ci0gICAgT1NTdGF0dXMgZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpOwotCi0gICAg
dm9pZCBpbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYpOwotCi1wcml2YXRlOgotICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJikgZmluYWw7
Ci0gICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBpbnQ2NF90IGRlY29kZV90aW1lX21z
KSBmaW5hbDsKLSAgICB2b2lkIERlY29kZWQoVmlkZW9GcmFtZSYsIGFic2w6Om9wdGlvbmFsPGlu
dDMyX3Q+IGRlY29kZV90aW1lX21zLCBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkgZmluYWw7
Ci0KLSAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHBpeGVs
QnVmZmVyV2lkdGgsIHNpemVfdCBwaXhlbEJ1ZmZlckhlaWdodCwgYm9vbCBpczEwYml0KTsKLQot
ICAgIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBtX3Nlc3Npb24geyBudWxscHRyIH07Ci0gICAgVlRW
aWRlb0RlY29kZXJGcmFtZSBtX2N1cnJlbnRGcmFtZSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3Qg
bV9waXhlbEJ1ZmZlcldpZHRoIHsgMCB9OwotICAgIHNpemVfdCBtX3BpeGVsQnVmZmVySGVpZ2h0
IHsgMCB9OwotICAgIGJvb2wgbV9pczEwYml0IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNGdWxs
UmFuZ2UgeyBmYWxzZSB9OwotICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIG1fcGl4ZWxCdWZmZXJQ
b29sIHsgbnVsbHB0ciB9OwotfTsKLQogc3RhdGljIE9TU3RhdHVzIGludmFsaWRhdGVWUDlEZWNv
ZGVyKENNQmFzZU9iamVjdFJlZik7CiBzdGF0aWMgdm9pZCBmaW5hbGl6ZVZQOURlY29kZXIoQ01C
YXNlT2JqZWN0UmVmKTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5VlA5RGVjb2RlckRlYnVnRGVz
Y3JpcHRpb24oQ01CYXNlT2JqZWN0UmVmKTsKQEAgLTE3NSw3ICsxNDgsNyBAQCBPU1N0YXR1cyBz
dGFydFZQOURlY29kZXJTZXNzaW9uKFZUVmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVv
RGVjb2RlclNlc3NpbwogICAgIH0KIAogICAgIGRlY29kZXItPm1faW5zdGFuY2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZQOURlY29kZXJJbXBsPigpOwotICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdFZQOURlY29kZXJSZWNlaXZlcj4oc2Vzc2lvbik7CisgICAg
ZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RGVjb2RlclJlY2Vp
dmVyPihzZXNzaW9uKTsKICAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5pbml0aWFsaXplRnJvbUZv
cm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsKIAogICAgIGRlY29kZXItPm1faW5z
dGFuY2UtPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayhkZWNvZGVyLT5tX3JlY2VpdmVy
LmdldCgpKTsKQEAgLTI1MCwxNjEgKzIyMyw0IEBAIE9TU3RhdHVzIGRlY29kZVZQOURlY29kZXJG
cmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJGcmFtZSBmCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRW
UDlEZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNlc3Npb24pCi0gICAgOiBt
X3Nlc3Npb24oc2Vzc2lvbikKLXsKLX0KLQotV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjp+V2Vi
S2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKLXsKLSAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCi0g
ICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci19Ci0KLXZvaWQgV2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0
RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCi17Ci0gICAgLy8gQ29yZUFuaW1hdGlv
biBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhl
IGJ1ZmZlcnMgb3V0cHV0Ci0gICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0
ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKLSAgICAvLyBk
ZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENWUGl4
ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQotICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgotICAg
IG1faXNGdWxsUmFuZ2UgPSBmYWxzZTsKLSAgICBtX2lzMTBiaXQgPSBmYWxzZTsKLQotICAgIGRv
IHsKLSAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVu
c2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwotICAgICAgICBpZiAoIWV4dGVuc2lvbnMpCi0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMgPSBDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lv
bl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKLSAgICAgICAgaWYgKCFleHRlbnNp
b25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBhdXRvIGNvbmZpZ3VyYXRp
b25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKChD
RkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKLSAgICAgICAg
aWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRpb25SZWNv
cmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
YXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25maWd1cmF0
aW9uUmVjb3JkKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwgMTIpCi0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmREYXRh
ID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsKLSAgICAgICAgYXV0byBi
aXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSArIDYpOwot
Ci0gICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkKLSAgICAg
ICAgICAgIG1faXMxMGJpdCA9IHRydWU7Ci0KLSAgICAgICAgaWYgKGJpdERlcHRoQ2hyb21hQW5k
UmFuZ2UgJiAweDEpCi0gICAgICAgICAgICBtX2lzRnVsbFJhbmdlID0gdHJ1ZTsKLSAgICB9IHdo
aWxlIChmYWxzZSk7Ci19Ci0KLUNWUGl4ZWxCdWZmZXJQb29sUmVmIFdlYktpdFZQOURlY29kZXJS
ZWNlaXZlcjo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3Qg
cGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCkKLXsKLSAgICBpZiAobV9waXhlbEJ1ZmZl
clBvb2wgJiYgbV9waXhlbEJ1ZmZlcldpZHRoID09IHBpeGVsQnVmZmVyV2lkdGggJiYgbV9waXhl
bEJ1ZmZlckhlaWdodCA9PSBwaXhlbEJ1ZmZlckhlaWdodCAmJiBtX2lzMTBiaXQgPT0gaXMxMGJp
dCkKLSAgICAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sOwotCi0gICAgT1NUeXBlIHBpeGVs
Rm9ybWF0OwotICAgIGlmIChpczEwYml0KQotICAgICAgICBwaXhlbEZvcm1hdCA9IG1faXNGdWxs
UmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSA6
IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZTsKLSAgICBl
bHNlCi0gICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0
VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIw
WXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKLQotICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRB
dHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhlbEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMp
IHsKLSAgICAgICAgYXV0byBjcmVhdGVOdW1iZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENG
TnVtYmVyUmVmIHsKLSAgICAgICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmZm9ybWF0KTsKLSAgICAgICAgfTsKLSAg
ICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgICAgICBhdXRvIGZv
cm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihwaXhlbEZvcm1hdCk7Ci0gICAgICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywgZm9ybWF0TnVtYmVyKTsKLSAgICAgICAgQ0ZSZWxl
YXNlKGZvcm1hdE51bWJlcik7Ci0KLSAgICAgICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9IGNy
ZWF0ZU51bWJlcigzMik7Ci0KLSAgICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0gewotICAgICAg
ICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCi0gICAgICAgICAgICBrQ1ZQ
aXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVmdEtleSwKLSAgICAgICAgICAgIGtDVlBpeGVsQnVm
ZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwKLSAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0
ZW5kZWRQaXhlbHNUb3BLZXksCi0gICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4
ZWxzQm90dG9tS2V5LAotICAgICAgICB9OwotICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9
IHsKLSAgICAgICAgICAgIGNmUGl4ZWxGb3JtYXRzLAotICAgICAgICAgICAgYm9yZGVyUGl4ZWxz
VmFsdWUsCi0gICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKLSAgICAgICAgICAgIGJvcmRl
clBpeGVsc1ZhbHVlLAotICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCi0gICAgICAgIH07
Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAg
ICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNWYWx1ZSk7Ci0gICAgICAgIENGUmVsZWFzZShjZlBp
eGVsRm9ybWF0cyk7Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOwotICAgIH07Ci0KLSAgICBh
dXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhw
aXhlbEZvcm1hdCwgMzIpOwotICAgIFZURGVjb2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJp
YnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOwotICAgIENGUmVsZWFzZShw
aXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOwotCi0gICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7Ci0g
ICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgIG1fcGl4ZWxCdWZm
ZXJQb29sID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVj
b2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsKLSAgICBpZiAobV9waXhl
bEJ1ZmZlclBvb2wpCi0gICAgICAgIENGUmV0YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKLQotICAg
IG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHBpeGVsQnVmZmVyV2lkdGg7Ci0gICAgbV9waXhlbEJ1ZmZl
ckhlaWdodCA9IHBpeGVsQnVmZmVySGVpZ2h0OwotICAgIG1faXMxMGJpdCA9IGlzMTBiaXQ7Ci0K
LSAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Ci19Ci0KLU9TU3RhdHVzIFdlYktpdFZQOURl
Y29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCi17Ci0gICAgT1NTdGF0dXMg
dnRFcnJvciA9IGtWVFZpZGVvRGVjb2RlckJhZERhdGFFcnI7Ci0gICAgaWYgKGVycm9yID09IFdF
QlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQpCi0gICAgICAgIHZ0RXJyb3IgPSBub0VycjsKLSAg
ICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfVU5JTklUSUFMSVpFRCkKLSAg
ICAgICAgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2Rlck1hbGZ1bmN0aW9uRXJyOwotICAgIGVsc2Ug
aWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19NRU1PUlkpCi0gICAgICAgIHZ0RXJyb3Ig
PSBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOwotICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2Rl
ZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHZ0RXJyb3IsIDAsIG51bGxwdHIpOwot
ICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLQotICAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJWUDkgZGVjb2RlcjogZGVjb2RlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9yIDw8ICIs
IHZ0RXJyb3IgIiA8PCB2dEVycm9yOwotICAgIHJldHVybiB2dEVycm9yOwotfQotCi1pbnQzMl90
IFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSkKLXsK
LSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlz
XShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4gQ1ZQaXhl
bEJ1ZmZlclJlZiB7Ci0gICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxC
dWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7Ci0gICAg
ICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAg
IGlmIChDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1fcGl4ZWxCdWZmZXJQb29sLCAmcGl4ZWxCdWZmZXIpID09IGtDVlJldHVyblN1Y2Nlc3Mp
Ci0gICAgICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0pOwotCi0gICAgVlREZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUobV9zZXNz
aW9uLCBtX2N1cnJlbnRGcmFtZSwgcGl4ZWxCdWZmZXIgPyBub0VyciA6IC0xLCAwLCBwaXhlbEJ1
ZmZlcik7Ci0gICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOwotICAgIGlmIChwaXhlbEJ1ZmZl
cikKLSAgICAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsKLSAgICByZXR1cm4gMDsKLX0KLQot
aW50MzJfdCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYgZnJh
bWUsIGludDY0X3QpCi17Ci0gICAgRGVjb2RlZChmcmFtZSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
LXZvaWQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1l
LCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiwgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4pCi17Ci0g
ICAgRGVjb2RlZChmcmFtZSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlMTA4MDQzOTk5NjQ4M2FiMzMxYTI5ZGFlYmUwNjRmMGZkMGYzZmQzLi5hOTIzOWMyNmIz
YTliMTdjM2Y5MmMxMjZlYzUzZjAzMTMwOTQ5NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zOTA5LDYgKzM5MDksMTAgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgyOTA4
IC8qIHJvd19uZW9uNjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0ZENTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsgfTsK
IAkJNUNGRDUzOTMxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0ODI5
MDggLyogc2NhbGVfbmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4IC8q
IHNjYWxlX25lb242NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDRkQ1MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87IH07
CisJCUNEMzgxRjI3MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyNTI1ODE1OTFG
MDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5oICovOyB9OworCQlDRDM4MUYyOTI1ODE1OTFG
MDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0
VlA4RGVjb2Rlci5jcHAgKi87IH07CisJCUNEMzgxRjJCMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJL
aXREZWNvZGVyUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QzODFGMkEyNTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNl
aXZlci5jcHAgKi87IH07CisJCUNEMzgxRjJEMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJLaXREZWNv
ZGVyUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMzgxRjJDMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCAq
LzsgfTsKIAkJQ0RFQkI0QjYyNEMwMTlDNDAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NjQyNEMw
MTkxQTAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCNzI0QzAx
OUM0MDBBREJENDQgLyogbWFzdGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDZGMjRDMDE5MUEwMEFEQkQ0NCAvKiBtYXN0ZXJf
cGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCODI0QzAxOUM0MDBBREJENDQgLyogYmxvY2tfcGFy
c2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
QkI0NzYyNEMwMTkxQTAwQURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyAqLzsgfTsKQEAgLTg0MzIs
NiArODQzNiwxMCBAQAogCQk1RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0UgLyogRGVidWdS
ZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVs
ZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFCODlCOEEyMjFF
MDA0QzAwRUI0Q0VBIC8qIFNES1ZhcmlhbnQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU0RLVmFy
aWFudC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMjUyNTgx
NTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViS2l0VlA4RGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRWUDhEZWNvZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMkEyNTgxRkVCQTAwNzdERUM4IC8q
IFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRDM4MUYyQzI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdERlY29kZXJSZWNlaXZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREVCQjExOTI0QzAxODc0MDBBREJENDQgLyogbGlid2VibS5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFy
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJ3ZWJtLmE7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCUNERUJCMTFFMjRDMDE4OTYwMEFEQkQ0NCAvKiBsaWJ3ZWJt
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxpYndlYm0ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNERUJCNDA1MjRDMDE5MUEwMEFEQkQ0NCAvKiByZWFkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gcmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDk2
Niw2ICsxMDk3NCwxMCBAQAogCQkJCTQxNTg2NDk3MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJLaXRF
bmNvZGVyLm1tICovLAogCQkJCTQxRUNFQUJCMjA2NDAzQzEwMDlENTE0MSAvKiBXZWJLaXRVdGls
aXRpZXMuaCAqLywKIAkJCQk0MUVDRUFCRDIwNjQwNDk4MDA5RDUxNDEgLyogV2ViS2l0VXRpbGl0
aWVzLm1tICovLAorCQkJCUNEMzgxRjI4MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNv
ZGVyLmNwcCAqLywKKwkJCQlDRDM4MUYyNTI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVj
b2Rlci5oICovLAorCQkJCUNEMzgxRjJBMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVy
UmVjZWl2ZXIuY3BwICovLAorCQkJCUNEMzgxRjJDMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIuaCAqLywKIAkJCQk0MTQwMzdCQTI0QUM3NkU5MDBCQ0U5QjIgLyogV2Vi
S2l0VlA5RGVjb2Rlci5jcHAgKi8sCiAJCQkJNDE0MDM3QjkyNEFDNzZFOTAwQkNFOUIyIC8qIFdl
YktpdFZQOURlY29kZXIuaCAqLywKIAkJCSk7CkBAIC0xNjQzOSw2ICsxNjQ1MSw3IEBACiAJCQkJ
NUNERDhCOTkxRTQzQzJCNTAwNjIxRTkyIC8qIGVuZXJneV9pbnZlcnNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0REOEI5QjFFNDNDMkI1MDA2MjFFOTIgLyogZW5oX3Vwc2FtcGxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REOEI5RjFFNDNDMkI1MDA2MjFFOTIgLyogZW5oYW5jZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNEMzgxRjI3MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNv
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REOEI5RDFFNDNDMkI1MDA2MjFFOTIgLyogZW5o
YW5jZXJfaW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQzM0QxMzFGNzlCMzM0MDAz
ODdCNEQgLyogZW50cm9weV9jb2RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDREQ4N0I5MUU0
M0JDMDUwMDYyMUU5MiAvKiBlbnRyb3B5X2NvZGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjUw
Niw2ICsxNjUxOSw3IEBACiAJCQkJNDE5QzgzMUExRkUyNDJCMjAwNDBDMzBGIC8qIGZpcl9maWx0
ZXJfYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE5QzgzMUMxRkUyNDJCMjAwNDBDMzBGIC8qIGZp
cl9maWx0ZXJfZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjRDNkIxRTQzMUY5QzAw
MjY1MUM4IC8qIGZpcl9maWx0ZXJfc3NlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDM4MUYyRDI1
ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTMxQzA4MzIzNEI4OThEMDAyOEE2MTUgLyogZmlyZXdhbGxfc29ja2V0X3NlcnZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEREIyNEQyMTI2NUJENzAwMjk2RDQ3IC8qIGZpeGVkX2Fy
cmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVGMUZBRTIxMjcyRkJBMDAwNjRDQkYgLyogZml4
ZWRfZGlnaXRhbF9sZXZlbF9lc3RpbWF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMTk2ODQsNiAr
MTk2OTgsNyBAQAogCQkJCTQxOUM4MkZGMUZFMjBGMDIwMDQwQzMwRiAvKiBydGNwX3RyYW5zY2Vp
dmVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgzMDIxRkUyMEYwMjAwNDBDMzBGIC8qIHJ0
Y3BfdHJhbnNjZWl2ZXJfY29uZmlnLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5QzgzMDAxRkUy
MEYwMjAwNDBDMzBGIC8qIHJ0Y3BfdHJhbnNjZWl2ZXJfaW1wbC5jYyBpbiBTb3VyY2VzICovLAor
CQkJCUNEMzgxRjJCMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4ODlENzcyMTZCQzRFQzAwNDYxNEREIC8qIFJUQ1J0cEVu
Y29kaW5nUGFyYW1ldGVycy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRkNCQjg5MjFCMjAwRkQw
MEE1REYyNyAvKiBSVENSdHBGcmFnbWVudGF0aW9uSGVhZGVyLm0gaW4gU291cmNlcyAqLywKIAkJ
CQk0MURCMUE5NDI0MzIxNjE0MDA1QUI4RUEgLyogcnRjc3RhdHNfb2JqZWN0cy5jYyBpbiBTb3Vy
Y2VzICovLApAQCAtMTk5OTcsNiArMjAwMTIsNyBAQAogCQkJCTQxODkzOTFEMjQyQTcwNEUwMDdG
REM0MSAvKiB2aWRlb19ydHBfZGVwYWNrZXRpemVyX2dlbmVyaWMuY2MgaW4gU291cmNlcyAqLywK
IAkJCQk0MTg5MzkyODI0MkE3MDRFMDA3RkRDNDEgLyogdmlkZW9fcnRwX2RlcGFja2V0aXplcl9o
MjY0LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4OTM5MTYyNDJBNzA0RTAwN0ZEQzQxIC8qIHZp
ZGVvX3J0cF9kZXBhY2tldGl6ZXJfcmF3LmNjIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QzODFGMjky
NTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE4OTM5MjIyNDJBNzA0RTAwN0ZEQzQxIC8qIHZpZGVvX3J0cF9kZXBhY2tldGl6ZXJfdnA4
LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MDM1RjIyNEFBMEY1NDAwQkNFOUIyIC8qIHZpZGVv
X3J0cF9kZXBhY2tldGl6ZXJfdnA5LmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMUJGMTQyMzRC
ODgyMDAwMjhBNjE1IC8qIHZpZGVvX3J0cF9yZWNlaXZlci5jYyBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBkNGRhYTJiMjkxZGU1NjIxZDg3OTNiYzZhYzMy
Y2M3ZWM4ZDE0MmYyLi42OGIxMjc4NTdmNzU2NmE2ZjQ5MGEzMmFiNzhhOGEwNmIwYzYxZmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNF
eHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtODUyLDYgKzg1MiwxNiBAQCBVc2VyR2Vz
dHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ6CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVs
dDogdHJ1ZQogCitWUDhEZWNvZGVyRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRh
YmxlTmFtZTogIlZQOCBkZWNvZGVyIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFi
bGUgVlA4IGRlY29kZXIiCisgIHdlYmNvcmVCaW5kaW5nOiBub25lCisgIGNvbmRpdGlvbjogRU5B
QkxFKFZQOSkKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IFdl
YktpdDo6ZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCkKKwogIyBGSVhNRTogSXMgdGhpcyBpbXBs
ZW1lbnRlZCBmb3IgV2ViS2l0TGVnYWN5PyBJZiBub3QsIHRoaXMgc2hvdWxkIGJlIGV4Y2x1ZGVk
IGZyb20gV2ViS2l0TGVnYWN5IGVudGlyZWx5LgogVlA5RGVjb2RlckVuYWJsZWQ6CiAgIHR5cGU6
IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRp
ZXMuY3BwCmluZGV4IDE0MDg3NDFiODEzMzEwZDI3ZjQ2MDAwMThlMzMxYTUwNGM1NDQwYmQuLjRl
MjgyMjcyMTUxN2MzYmU2ODkzZTE4YzgxYzdhZjVhMmRiODViNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcApAQCAtMTI0LDEyICsx
MjQsNiBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmljaWVudHModWludDhfdCBt
YXRyaXhDb2VmZmljaWVudHMpCiAKIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
PiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogewotICAgIC8v
IFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGluIHRo
ZSB3ZWJtIEdpdEh1YiByZXBvOgotICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vd2VibXByb2pl
Y3QvdnA5LWRhc2gvYmxvYi9tYXN0ZXIvVlBDb2RlY0lTT01lZGlhRmlsZUZvcm1hdEJpbmRpbmcu
bWQjY29kZWNzLXBhcmFtZXRlci1zdHJpbmc+Ci0KLSAgICAvLyAic2FtcGxlIGVudHJ5IDRDQywg
cHJvZmlsZSwgbGV2ZWwsIGFuZCBiaXREZXB0aCBhcmUgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIElm
IGFueSBvZiB0aGVzZSBmaWVsZHMgYXJlIGVtcHR5LCBvciBub3QKLSAgICAvLyB3aXRoaW4gdGhl
aXIgYWxsb3dlZCByYW5nZSwgdGhlIHByb2Nlc3NpbmcgZGV2aWNlIFNIQUxMIHRyZWF0IGl0IGFz
IGFuIGVycm9yLiIKLQogICAgIGF1dG8gY29kZWNTcGxpdCA9IGNvZGVjVmlldy5zcGxpdCgnLicp
OwogICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2luKCk7CiAgICAgaWYgKG5l
eHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCkBAIC0xMzcsMTIgKzEzMSwyNCBAQCBPcHRp
b25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhT
dHJpbmdWaWV3IGNvZGVjVmlldwogCiAgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgY29u
ZmlndXJhdGlvbjsKIAotICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxlZ2FsIHZhbHVlcyBhcmUg
J3ZwMDgnIG9yICd2cDA5Jy4KICAgICBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9ICgqbmV4dEVs
ZW1lbnQpLnRvU3RyaW5nKCk7CisgICAgKytuZXh0RWxlbWVudDsKKworICAgIC8vIFN1cHBvcnQg
dGhlIGxlZ2FjeSBpZGVudGlmaWVycyAod2l0aCBubyBwYXJhbWV0ZXJzKSBmb3IgVlA4IGFuZCBW
UDkuCisgICAgaWYgKChjb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAidnA4IiB8fCBjb25maWd1
cmF0aW9uLmNvZGVjTmFtZSA9PSAidnA5IikgJiYgbmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisKKyAgICAvLyBUaGUgZm9ybWF0
IG9mIHRoZSAndnAwOScgY29kZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBpbiB0aGUgd2VibSBHaXRI
dWIgcmVwbzoKKyAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3dlYm1wcm9qZWN0L3ZwOS1kYXNo
L2Jsb2IvbWFzdGVyL1ZQQ29kZWNJU09NZWRpYUZpbGVGb3JtYXRCaW5kaW5nLm1kI2NvZGVjcy1w
YXJhbWV0ZXItc3RyaW5nPgorCisgICAgLy8gInNhbXBsZSBlbnRyeSA0Q0MsIHByb2ZpbGUsIGxl
dmVsLCBhbmQgYml0RGVwdGggYXJlIGFsbCBtYW5kYXRvcnkgZmllbGRzLiBJZiBhbnkgb2YgdGhl
c2UgZmllbGRzIGFyZSBlbXB0eSwgb3Igbm90CisgICAgLy8gd2l0aGluIHRoZWlyIGFsbG93ZWQg
cmFuZ2UsIHRoZSBwcm9jZXNzaW5nIGRldmljZSBTSEFMTCB0cmVhdCBpdCBhcyBhbiBlcnJvci4i
CisKKyAgICAvLyBDb2RlYyBpZGVudGlmaWVyOiBsZWdhbCB2YWx1ZXMgYXJlICd2cDA4JyBvciAn
dnAwOScuCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9ICJ2cDA4IiAmJiBjb25m
aWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAidnAwOSIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQorICAgIGlm
IChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgLy8gRmlyc3QgZWxlbWVudDogcHJvZmlsZS4gTGVnYWwgdmFsdWVzIGFy
ZSAwLTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDg0YmM1NzRkYzBm
MDNmOGZmYjQzNjg5MGZjNGExYTVkZWFhOWU2NDEuLmQ3YmUwMTJhZjJkZDA4Y2VmNWM3MDcyZjkx
MTVhNTkxNmM0Nzk3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC00
NzAsNyArNDcwLDcgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY28KICNpZiBFTkFCTEUoVlA5KQog
ICAgIGF1dG8gc3BsaXRSZXN1bHRzID0gU3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIpLnNwbGl0
KCcsJyk7CiAgICAgZm9yIChhdXRvIHNwbGl0IDogc3BsaXRSZXN1bHRzKSB7Ci0gICAgICAgIGlm
IChzcGxpdC5zdGFydHNXaXRoKCJ2cDA5IikpIHsKKyAgICAgICAgaWYgKHNwbGl0LnN0YXJ0c1dp
dGgoInZwMDkiKSB8fCBzcGxpdC5zdGFydHNXaXRoKCJ2cDA4IikgfHwgZXF1YWwoc3BsaXQsICJ2
cDgiKSB8fCBlcXVhbChzcGxpdCwgInZwOSIpKSB7CiAgICAgICAgICAgICBhdXRvIGNvZGVjUGFy
YW1ldGVycyA9IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoc3BsaXQpOwogICAgICAgICAgICAgaWYg
KCFjb2RlY1BhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51
bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CkBAIC00ODAsNiArNDgwLDcgQEAgTWVk
aWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29u
dGVudFR5cGVTdXBwb3J0ZWQoY28KIAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
KwogICAgICAgICAvLyBGSVhNRTogQWRkIE9wdXMgU3VwcG9ydAogICAgICAgICAvLyBGSVhNRTog
QWRkIFZvcmJpcyBTdXBwb3J0CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBw
b3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwpAQCAtOTg2LDcgKzk4Nyw3IEBAIHN0YXRpYyB1aW50
OF90IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyh1aW50NjRfdCB4LCB1
aW50NjRfdCB5KQogICAgIHJldHVybiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6
U3Vic2FtcGxpbmdfNDIwX0NvbG9jYXRlZDsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJz
ZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2VyJiBwYXJzZXIsIGNvbnN0IHdlYm06
OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCitzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3Jp
cHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9u
UmVjb3JkKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiByZWNvcmQsIGludDMyX3Qg
d2lkdGgsIGludDMyX3QgaGVpZ2h0KQogewogICAgIC8vIFJlZjogIlZQIENvZGVjIElTTyBNZWRp
YSBGaWxlIEZvcm1hdCBCaW5kaW5nLCB2MS4wLCAyMDE3LTAzLTMxIgogICAgIC8vIDxodHRwczov
L3d3dy53ZWJtcHJvamVjdC5vcmcvdnA5L21wNC8+CkBAIC0xMDE1LDM1ICsxMDE2LDYgQEAgc3Rh
dGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlw
dGlvbkZyb21WUDlIZWFkZXJQYXIKICAgICAvLyBGSVhNRTogQ29udmVydCBleGlzdGluZyBzdHJ1
Y3QgdG8gYW4gSVNPQm94IGFuZCByZXBsYWNlIHRoZSB3cml0aW5nIGNvZGUgYmVsb3cKICAgICAv
LyB3aXRoIGEgc3ViY2xhc3Mgb2YgSVNPRnVsbEJveC4KIAotICAgIFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkIHJlY29yZDsKLQotICAgIHJlY29yZC5wcm9maWxlID0gcGFyc2VyLnByb2ZpbGUo
KTsKLSAgICAvLyBDb3JlTWVkaWEgZG9lcyBuYXQgY2FyZSBhYm91dCB0aGUgVlA5IGNvZGVjIGxl
dmVsOyBoYXJkLWNvZGUgdG8gTGV2ZWwgMS4wIGhlcmU6Ci0gICAgcmVjb3JkLmxldmVsID0gMTA7
Ci0gICAgcmVjb3JkLmJpdERlcHRoID0gcGFyc2VyLmJpdF9kZXB0aCgpOwotICAgIHJlY29yZC52
aWRlb0Z1bGxSYW5nZUZsYWcgPSBwYXJzZXIuY29sb3JfcmFuZ2UoKSA/IFZQQ29uZmlndXJhdGlv
blJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKLSAg
ICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21h
U3Vic2FtcGxpbmcocGFyc2VyLnN1YnNhbXBsaW5nX3goKSwgcGFyc2VyLnN1YnNhbXBsaW5nX3ko
KSk7Ci0gICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gVlBDb25maWd1cmF0aW9uQ29sb3JQcmlt
YXJpZXM6OlVuc3BlY2lmaWVkOwotICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9
IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZDsKLSAg
ICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZp
Y2llbnRzOjpVbnNwZWNpZmllZDsKLQotICAgIC8vIENvbnRhaW5lciBjb2xvciB2YWx1ZXMgY2Fu
IG92ZXJyaWRlIHBlci1zYW1wbGUgb25lczoKLSAgICBpZiAoY29sb3IuaXNfcHJlc2VudCgpKSB7
Ci0gICAgICAgIGF1dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52YWx1ZSgpOwotICAgICAgICBpZiAo
Y29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1
ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQu
Y2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxp
bmcoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52YWx1ZSgpLCBjb2xvclZhbHVlLmNo
cm9tYV9zdWJzYW1wbGluZ195LnZhbHVlKCkpOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS5yYW5n
ZS5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdlOjprVW5z
cGVjaWZpZWQpCi0gICAgICAgICAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gY29sb3JW
YWx1ZS5yYW5nZS52YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/IFZQQ29uZmlndXJhdGlvblJhbmdl
OjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKLSAgICAgICAg
aWYgKGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC5pc19wcmVzZW50KCkpCi0gICAgICAgICAg
ICByZWNvcmQuYml0RGVwdGggPSBjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwudmFsdWUoKTsK
LSAgICAgICAgaWYgKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlzX3ByZXNl
bnQoKSkKLSAgICAgICAgICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IGNvbnZl
cnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVy
aXN0aWNzLnZhbHVlKCkpOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2ll
bnRzLmlzX3ByZXNlbnQoKSkKLSAgICAgICAgICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMg
PSBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2ll
bnRzLnZhbHVlKCkpOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS5wcmltYXJpZXMuaXNfcHJlc2Vu
dCgpKQotICAgICAgICAgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gY29udmVydFRvQ29sb3JQ
cmltYXJpZXMoY29sb3JWYWx1ZS5wcmltYXJpZXMudmFsdWUoKSk7Ci0gICAgfQotCiAgICAgY29u
c3RleHByIHNpemVfdCBWUENvZGVjQ29uZmlndXJhdGlvbkNvbnRlbnRzU2l6ZSA9IDEyOwogCiAg
ICAgdWludDMyX3QgdmVyc2lvbkFuZEZsYWdzID0gMSA8PCAyNDsKQEAgLTEwOTIsMTAgKzEwNjQs
MTU0IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9y
bWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyCiAgICAgYXV0byBleHRlbnNpb25zID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZXh0ZW5zaW9uc0tl
eXMuZGF0YSgpLCBleHRlbnNpb25zVmFsdWVzLmRhdGEoKSwgZXh0ZW5zaW9uc0tleXMuc2l6ZSgp
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CiAKICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVz
Y3JpcHRpb24gPSBudWxscHRyOwotICAgIGlmIChub0VyciAhPSBDTVZpZGVvRm9ybWF0RGVzY3Jp
cHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBw
YXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBleHRlbnNpb25zLmdldCgpLCAmZm9ybWF0
RGVzY3JpcHRpb24pKQorICAgIENNVmlkZW9Db2RlY1R5cGUgY29kZWMgPSByZWNvcmQuY29kZWNO
YW1lID09ICJ2cDA5IiA/IGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSA6ICd2cDA4JzsKKyAgICBpZiAo
bm9FcnIgIT0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGNvZGVjLCB3aWR0aCwgaGVpZ2h0LCBleHRlbnNpb25zLmdldCgpLCAmZm9ybWF0RGVzY3Jp
cHRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYWRvcHRDRihmb3Jt
YXREZXNjcmlwdGlvbik7CiB9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlv
blJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKGNvbnN0IHZw
OV9wYXJzZXI6OlZwOUhlYWRlclBhcnNlciYgcGFyc2VyLCBjb25zdCB3ZWJtOjpFbGVtZW50PENv
bG91cj4mIGNvbG9yKQoreworICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJlY29yZDsK
KworICAgIHJlY29yZC5jb2RlY05hbWUgPSAidnAwOSI7CisgICAgcmVjb3JkLnByb2ZpbGUgPSBw
YXJzZXIucHJvZmlsZSgpOworICAgIC8vIENvcmVNZWRpYSBkb2VzIG5hdCBjYXJlIGFib3V0IHRo
ZSBWUDkgY29kZWMgbGV2ZWw7IGhhcmQtY29kZSB0byBMZXZlbCAxLjAgaGVyZToKKyAgICByZWNv
cmQubGV2ZWwgPSAxMDsKKyAgICByZWNvcmQuYml0RGVwdGggPSBwYXJzZXIuYml0X2RlcHRoKCk7
CisgICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IHBhcnNlci5jb2xvcl9yYW5nZSgpID8g
VlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpW
aWRlb1JhbmdlOworICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1w
bGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhwYXJzZXIuc3Vic2FtcGxpbmdfeCgpLCBwYXJzZXIu
c3Vic2FtcGxpbmdfeSgpKTsKKyAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBWUENvbmZpZ3Vy
YXRpb25Db2xvclByaW1hcmllczo6VW5zcGVjaWZpZWQ7CisgICAgcmVjb3JkLnRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzID0gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVu
c3BlY2lmaWVkOworICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBWUENvbmZpZ3VyYXRp
b25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkOworCisgICAgLy8gQ29udGFpbmVyIGNv
bG9yIHZhbHVlcyBjYW4gb3ZlcnJpZGUgcGVyLXNhbXBsZSBvbmVzOgorICAgIGlmIChjb2xvci5p
c19wcmVzZW50KCkpIHsKKyAgICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7
CisgICAgICAgIGlmIChjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNlbnQo
KSAmJiBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKKyAgICAg
ICAgICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9D
aHJvbWFTdWJzYW1wbGluZyhjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVlKCks
IGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7CisgICAgICAgIGlmIChj
b2xvclZhbHVlLnJhbmdlLmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkg
IT0gUmFuZ2U6OmtVbnNwZWNpZmllZCkKKyAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxSYW5n
ZUZsYWcgPSBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBDb25m
aWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1Jh
bmdlOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNlbnQo
KSkKKyAgICAgICAgICAgIHJlY29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJfY2hh
bm5lbC52YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJp
c3RpY3MuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzID0gY29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFu
c2Zlcl9jaGFyYWN0ZXJpc3RpY3MudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLm1h
dHJpeF9jb2VmZmljaWVudHMuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLm1hdHJp
eENvZWZmaWNpZW50cyA9IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVlLm1h
dHJpeF9jb2VmZmljaWVudHMudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnByaW1h
cmllcy5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBj
b252ZXJ0VG9Db2xvclByaW1hcmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZp
Z3VyYXRpb25SZWNvcmQocmVjb3JkLCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpKTsK
K30KKworc3RydWN0IFZQOEZyYW1lSGVhZGVyIHsKKyAgICBib29sIGtleWZyYW1lIHsgZmFsc2Ug
fTsKKyAgICB1aW50OF90IHZlcnNpb24geyAwIH07CisgICAgYm9vbCBzaG93RnJhbWUgeyB0cnVl
IH07CisgICAgdWludDMyX3QgcGFydGl0aW9uU2l6ZSB7IDAgfTsKKyAgICB1aW50OF90IGhvcml6
b250YWxTY2FsZSB7IDAgfTsKKyAgICB1aW50MTZfdCB3aWR0aCB7IDAgfTsKKyAgICB1aW50OF90
IHZlcnRpY2FsU2NhbGUgeyAwIH07CisgICAgdWludDE2X3QgaGVpZ2h0OworICAgIGJvb2wgY29s
b3JTcGFjZSB7IGZhbHNlIH07CisgICAgYm9vbCBuZWVkc0NsYW1waW5nIHsgZmFsc2UgfTsKK307
CisKK3N0YXRpYyBPcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1
aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCit7CisgICAgLy8gVlA4IGZyYW1l
IGhlYWRlcnMgYXJlIGRlZmluZWQgaW4gUkZDIDYzODY6IDxodHRwczovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjNjM4Nj4uCisKKyAgICAvLyBCYWlsIGlmIHRoZSBoZWFkZXIgaXMgYmVsb3cgYSBt
aW5pbXVtIHNpemUKKyAgICBpZiAoZnJhbWVTaXplIDwgMTEpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBWUDhGcmFtZUhlYWRlciBoZWFkZXI7CisgICAgc2l6ZV90IGhlYWRl
clNpemUgPSAxMTsKKworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKGZyYW1lRGF0YSwgaGVhZGVyU2l6ZSksIDAsIGhlYWRlclNpemUpOwor
ICAgIGJvb2wgc3RhdHVzID0gdHJ1ZTsKKworICAgIGF1dG8gdW5jb21wcmVzc2VkQ2h1bmsgPSB2
aWV3LT5nZXQ8dWludDMyX3Q+KDAsIHRydWUsICZzdGF0dXMpOworICAgIGlmICghc3RhdHVzKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaGVhZGVyLmtleWZyYW1lID0gdW5j
b21wcmVzc2VkQ2h1bmsgJiAweDgwMDAwMDAwOworICAgIGhlYWRlci52ZXJzaW9uID0gKHVuY29t
cHJlc3NlZENodW5rID4+IDI4KSAmIDB4NzsKKyAgICBoZWFkZXIuc2hvd0ZyYW1lID0gdW5jb21w
cmVzc2VkQ2h1bmsgJiAweDgwMDAwMDA7CisgICAgaGVhZGVyLnBhcnRpdGlvblNpemUgPSAodW5j
b21wcmVzc2VkQ2h1bmsgPj4gOCkgJiAweDdGRkZGOworCisgICAgaWYgKCFoZWFkZXIua2V5ZnJh
bWUpCisgICAgICAgIHJldHVybiBoZWFkZXI7CisKKyAgICBhdXRvIHN0YXJ0Q29kZTAgPSB2aWV3
LT5nZXQ8dWludDhfdD4oMywgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMgfHwgc3Rh
cnRDb2RlMCAhPSAweDlkKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0
byBzdGFydENvZGUxID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDQsIHRydWUsICZzdGF0dXMpOworICAg
IGlmICghc3RhdHVzIHx8IHN0YXJ0Q29kZTEgIT0gMHgwMSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIGF1dG8gc3RhcnRDb2RlMiA9IHZpZXctPmdldDx1aW50OF90Pig1LCB0
cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENvZGUyICE9IDB4MmEpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGhvcml6b250YWxBbmRXaWR0
aEZpZWxkID0gdmlldy0+Z2V0PHVpbnQxNl90Pig2LCB0cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAo
IXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGhlYWRlci5ob3Jp
em9udGFsU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihob3Jpem9udGFsQW5kV2lkdGhGaWVs
ZCA+PiAxNCk7CisgICAgaGVhZGVyLndpZHRoID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGhvcml6
b250YWxBbmRXaWR0aEZpZWxkICYgMHgzRkZGKTsKKworICAgIGF1dG8gdmVydGljYWxBbmRIZWln
aHRGaWVsZCA9IHZpZXctPmdldDx1aW50MTZfdD4oOCwgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYg
KCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBoZWFkZXIudmVy
dGljYWxTY2FsZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQg
Pj4gMTQpOworICAgIGhlYWRlci5oZWlnaHQgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4odmVydGlj
YWxBbmRIZWlnaHRGaWVsZCAmIDB4M0ZGRik7CisKKyAgICBhdXRvIGNvbG9yU3BhY2VBbmRDbGFt
cGluZ0ZpZWxkID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDEwLCB0cnVlLCAmc3RhdHVzKTsKKyAgICBp
ZiAoIXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGhlYWRlci5j
b2xvclNwYWNlID0gY29sb3JTcGFjZUFuZENsYW1waW5nRmllbGQgJiAweDgwOworICAgIGhlYWRl
ci5uZWVkc0NsYW1waW5nID0gY29sb3JTcGFjZUFuZENsYW1waW5nRmllbGQgJiAweDQwOworCisg
ICAgcmV0dXJuIGhlYWRlcjsKK30KKworc3RhdGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoY29uc3QgVlA4RnJh
bWVIZWFkZXImIGhlYWRlciwgY29uc3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+JiBjb2xvcikKK3sK
KyAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCByZWNvcmQ7CisgICAgcmVjb3JkLmNvZGVj
TmFtZSA9ICJ2cDA4IjsKKyAgICByZWNvcmQucHJvZmlsZSA9IDA7CisgICAgcmVjb3JkLmxldmVs
ID0gMTA7CisgICAgcmVjb3JkLmJpdERlcHRoID0gODsKKyAgICByZWNvcmQudmlkZW9GdWxsUmFu
Z2VGbGFnID0gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZTsKKyAgICByZWNvcmQuY2hy
b21hU3Vic2FtcGxpbmcgPSBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2Ft
cGxpbmdfNDIwX0NvbG9jYXRlZDsKKyAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBoZWFkZXIu
Y29sb3JTcGFjZSA/IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZCA6
IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF82MDFfNzsKKyAgICByZWNvcmQudHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSAgaGVhZGVyLmNvbG9yU3BhY2UgPyBWUENvbmZpZ3VyYXRp
b25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5zcGVjaWZpZWQgOiBWUENvbmZpZ3VyYXRpb25U
cmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNjAxXzc7CisgICAgcmVjb3JkLm1hdHJpeENvZWZm
aWNpZW50cyA9IGhlYWRlci5jb2xvclNwYWNlID8gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZp
Y2llbnRzOjpVbnNwZWNpZmllZCA6IFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6
QlRfNjAxXzc7CisKKyAgICAvLyBDb250YWluZXIgY29sb3IgdmFsdWVzIGNhbiBvdmVycmlkZSBw
ZXItc2FtcGxlIG9uZXM6CisgICAgaWYgKGNvbG9yLmlzX3ByZXNlbnQoKSkgeworICAgICAgICBh
dXRvJiBjb2xvclZhbHVlID0gY29sb3IudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUu
Y2hyb21hX3N1YnNhbXBsaW5nX3guaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUuY2hyb21hX3N1
YnNhbXBsaW5nX3kuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmNocm9tYVN1YnNh
bXBsaW5nID0gY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKGNvbG9yVmFs
dWUuY2hyb21hX3N1YnNhbXBsaW5nX3gudmFsdWUoKSwgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2Ft
cGxpbmdfeS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUucmFuZ2UuaXNfcHJlc2Vu
dCgpICYmIGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSAhPSBSYW5nZTo6a1Vuc3BlY2lmaWVkKQor
ICAgICAgICAgICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IGNvbG9yVmFsdWUucmFuZ2Uu
dmFsdWUoKSA9PSBSYW5nZTo6a0Z1bGwgPyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdl
IDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7CisgICAgICAgIGlmIChjb2xvclZh
bHVlLmJpdHNfcGVyX2NoYW5uZWwuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmJp
dERlcHRoID0gY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLnZhbHVlKCk7CisgICAgICAgIGlm
IChjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy5pc19wcmVzZW50KCkpCisgICAg
ICAgICAgICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBjb252ZXJ0VG9UcmFuc2Zl
ckNoYXJhY3RlcmlzdGljcyhjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy52YWx1
ZSgpKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy5pc19wcmVz
ZW50KCkpCisgICAgICAgICAgICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gY29udmVydFRv
TWF0cml4Q29lZmZpY2llbnRzKGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy52YWx1ZSgp
KTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUucHJpbWFyaWVzLmlzX3ByZXNlbnQoKSkKKyAgICAg
ICAgICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IGNvbnZlcnRUb0NvbG9yUHJpbWFyaWVzKGNv
bG9yVmFsdWUucHJpbWFyaWVzLnZhbHVlKCkpOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGVG
b3JtYXREZXNjcmlwdGlvbkZyb21WUENvZGVjQ29uZmlndXJhdGlvblJlY29yZChyZWNvcmQsIGhl
YWRlci53aWR0aCwgaGVhZGVyLmhlaWdodCk7Cit9CiAjZW5kaWYKIAogd2VibTo6U3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRh
dGEsIFJlYWRlciogcmVhZGVyLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcpCkBAIC0xMTMwLDcg
KzEyNDYsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShj
b25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgICAgICBkdXJhdGlvbiA9IHRy
YWNrLmRlZmF1bHRfZHVyYXRpb24udmFsdWUoKSAqIG1fdGltZXNjYWxlIC8gMTAwMDAwMDAwMDsK
IAogI2lmIEVOQUJMRShWUDkpCi0gICAgaWYgKHRyYWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSAm
JiB0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOSIpIHsKKyAgICBpZiAodHJhY2suY29k
ZWNfaWQuaXNfcHJlc2VudCgpICYmICh0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOSIg
fHwgdHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAiVl9WUDgiKSkgewogICAgICAgICBpZiAoIXRy
YWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyKSB7CiAgICAgICAgICAgICBDTUJsb2NrQnVmZmVy
UmVmIHJhd0Jsb2NrQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChub0VyciAhPSBD
TUJsb2NrQnVmZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51
bGxwdHIsIG1ldGFkYXRhLnNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIDAsIG1l
dGFkYXRhLnNpemUsIDAsICZyYXdCbG9ja0J1ZmZlcikpCkBAIC0xMTY2LDE0ICsxMjgyLDI5IEBA
IHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1l
TWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgICAgIGlmIChub0VyciAhPSBDTUJsb2NrQnVm
ZmVyR2V0RGF0YVBvaW50ZXIodHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIuZ2V0KCksIDAs
ICZzZWdtZW50U2l6ZUF0UG9zaXRpb24sIG51bGxwdHIsIChjaGFyKiopJmJsb2NrQnVmZmVyRGF0
YSkpCiAgICAgICAgICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKIAot
ICAgICAgICBhdXRvJiBoZWFkZXJQYXJzZXIgPSB0cmFja0RhdGEtPmhlYWRlclBhcnNlcjsKLSAg
ICAgICAgaWYgKCFoZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIoYmxvY2tCdWZm
ZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJuIFNraXAo
cmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisgICAgICAgIGJvb2wgaXNLZXkgPSBmYWxzZTsKKyAg
ICAgICAgaWYgKHRyYWNrLmNvZGVjX2lkLnZhbHVlKCkgPT0gIlZfVlA5IikgeworICAgICAgICAg
ICAgYXV0byYgaGVhZGVyUGFyc2VyID0gdHJhY2tEYXRhLT5oZWFkZXJQYXJzZXI7CisgICAgICAg
ICAgICBpZiAoIWhlYWRlclBhcnNlci5QYXJzZVVuY29tcHJlc3NlZEhlYWRlcihibG9ja0J1ZmZl
ckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNr
aXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgICAgIC8vIE9ubHkgdXBkYXRl
IHRoZSBmb3JtYXQgZGVzY3JpcHRpb24gd2hlbiB0aGUgaGVhZGVyIGluZGljYXRlcyB0aGF0IHRo
ZSBzYW1wbGUgaXMKKyAgICAgICAgICAgIC8vIGEga2V5LWZyYW1lLCBvdGhlcndpc2UgY29sb3Ig
aW5mb3JtYXRpb24gd2lsbCBub3QgYmUgcGFyc2VkLgorICAgICAgICAgICAgaWYgKGhlYWRlclBh
cnNlci5rZXkoKSkgeworICAgICAgICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB0cmFja0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlRm9ybWF0RGVzY3JpcHRp
b25Gcm9tVlA5SGVhZGVyUGFyc2VyKGhlYWRlclBhcnNlciwgdHJhY2sudmlkZW8udmFsdWUoKS5j
b2xvdXIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHRyYWNrLmNvZGVjX2lk
LnZhbHVlKCkgPT0gIlZfVlA4IikgeworICAgICAgICAgICAgYXV0byBoZWFkZXIgPSBwYXJzZVZQ
OEZyYW1lSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGlmICghaGVhZGVyKQorICAgICAgICAgICAgICAgIHJldHVybiBTa2lwKHJlYWRl
ciwgYnl0ZXNSZW1haW5pbmcpOworCisgICAgICAgICAgICBpZiAoaGVhZGVyLT5rZXlmcmFtZSkg
eworICAgICAgICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0cmFja0Rh
dGEtPmZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA4SGVh
ZGVyKCpoZWFkZXIsIHRyYWNrLnZpZGVvLnZhbHVlKCkuY29sb3VyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogCi0gICAgICAgIC8vIE9ubHkgdXBkYXRlIHRoZSBmb3JtYXQgZGVzY3JpcHRp
b24gd2hlbiB0aGUgaGVhZGVyIGluZGljYXRlcyB0aGF0IHRoZSBzYW1wbGUgaXMKLSAgICAgICAg
Ly8gYSBrZXktZnJhbWUsIG90aGVyd2lzZSBjb2xvciBpbmZvcm1hdGlvbiB3aWxsIG5vdCBiZSBw
YXJzZWQuCi0gICAgICAgIGlmIChoZWFkZXJQYXJzZXIua2V5KCkpCi0gICAgICAgICAgICB0cmFj
a0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5
SGVhZGVyUGFyc2VyKGhlYWRlclBhcnNlciwgdHJhY2sudmlkZW8udmFsdWUoKS5jb2xvdXIpOwog
ICAgICAgICBpZiAoIXRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICBy
ZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKIApAQCAtMTE5MCw3ICsxMzIxLDcg
QEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJh
bWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50Qmxv
Y2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZl
clBvc2l0aW9uID0gMDsKIAotICAgICAgICBpZiAoIWhlYWRlclBhcnNlci5rZXkoKSkgeworICAg
ICAgICBpZiAoIWlzS2V5KSB7CiAgICAgICAgICAgICBhdXRvIGF0dGFjaG1lbnRzQXJyYXkgPSBD
TVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxlQnVmZmVyLmdldCgp
LCB0cnVlKTsKICAgICAgICAgICAgIEFTU0VSVChhdHRhY2htZW50c0FycmF5KTsKICAgICAgICAg
ICAgIGlmICghYXR0YWNobWVudHNBcnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCmluZGV4IDE0YzZm
M2FlOTg0MzBhYWVjMmI4ZTgyMmIxZmI1MWI0NzU4YWE5MzAuLmIxN2RhNjM1OTI1OWZjYWM2Mzg1
M2UwZGYxYTVhYTRkYjMwZWUyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaApAQCAtMzksOCArMzks
MTAgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgc2V0T3ZlcnJpZGVWUDlTY3JlZW5TaXpl
QW5kU2NhbGVGb3JUZXN0aW5nKGZsb2F0IHdpZHQKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lk
IHJlc2V0T3ZlcnJpZGVWUDlTY3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5nKCk7CiAKIFdFQkNP
UkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOworV0VCQ09S
RV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7CiBXRUJDT1JF
X0VYUE9SVCBleHRlcm4gdm9pZCByZWdpc3RlclN1cHBsZW1lbnRhbFZQOURlY29kZXIoKTsKIGV4
dGVybiBib29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpOworZXh0ZXJuIGJvb2wgaXNWUDhEZWNv
ZGVyQXZhaWxhYmxlKCk7CiBleHRlcm4gYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
U3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJik7CiBleHRlcm4gYm9vbCB2YWxp
ZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYsIE1lZGlhQ2FwYWJp
bGl0aWVzSW5mbyYsIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLm1tCmluZGV4IGM4MWU5N2FhM2U0NzdkN2M3Yjg5YzE2MTlhOWYzZmYyZjJiZWMwYTEuLmMw
OGZjNjg0ODgzYjYwNjI2NmE1NjcwNDk2OWQzZGQ4OGE2MmM5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLm1tCkBAIC0xMDAsNiArMTAwLDExIEBAIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVy
KCkKICAgICBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCk7CiB9
CiAKK3ZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCkKK3sKKyAgICBMaWJXZWJSVENQcm92
aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7Cit9CisKIHZvaWQgcmVnaXN0ZXJTdXBw
bGVtZW50YWxWUDlEZWNvZGVyKCkKIHsKICAgICBpZiAoIVZpZGVvVG9vbGJveExpYnJhcnkodHJ1
ZSkpCkBAIC0xMTYsNyArMTIxLDE0IEBAIGJvb2wgaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkKICAg
ICByZXR1cm4gbm9FcnIgPT0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZShr
Q01WaWRlb0NvZGVjVHlwZV9WUDksIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIG51bGxw
dHIpOwogfQogCi1ib29sIGlzVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbikKK2Jvb2wgaXNWUDhE
ZWNvZGVyQXZhaWxhYmxlKCkKK3sKKyAgICBpZiAoIVZpZGVvVG9vbGJveExpYnJhcnkodHJ1ZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbm9FcnIgPT0gVlRTZWxlY3RBbmRD
cmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZSgndnAwOCcsIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51
bGxwdHIsIG51bGxwdHIpOworfQorCitzdGF0aWMgYm9vbCBpc1ZQOUNvZGVjQ29uZmlndXJhdGlv
blJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1
cmF0aW9uKQogewogICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE2OCw2ICsxODAsMzcgQEAgYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmYK
ICAgICByZXR1cm4gaGFzNGtTY3JlZW47CiB9CiAKK3N0YXRpYyBib29sIGlzVlA4Q29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2Rl
Y0NvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKCFpc1ZQOERlY29kZXJBdmFpbGFibGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29kZXIgb25seSBzdXBwb3J0cyBQ
cm9maWxlIDA7CisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWUDggZGVjb2RlciBvbmx5IHN1cHBvcnRzIDQyMCBjaHJv
bWEgc3Vic2FtcGxpbmcuCisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5jaHJvbWFTdWJzYW1w
bGluZyA+IFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBf
Q29sb2NhdGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWUDggZGVjb2RlciBv
bmx5IHN1cHBvcnRzIDgtYml0IGNvbG9yOgorICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24uYml0
RGVwdGggPiA4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKGNvZGVjQ29u
ZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDgiIHx8IGNvZGVjQ29uZmlndXJhdGlvbi5jb2Rl
Y05hbWUgPT0gInZwOCIpCisgICAgICAgIHJldHVybiBpc1ZQOENvZGVjQ29uZmlndXJhdGlvblJl
Y29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgaWYgKGNvZGVjQ29uZmln
dXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDkiIHx8IGNvZGVjQ29uZmlndXJhdGlvbi5jb2RlY05h
bWUgPT0gInZwOSIpCisgICAgICAgIHJldHVybiBpc1ZQOUNvZGVjQ29uZmlndXJhdGlvblJlY29y
ZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBj
b2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYgaW5mbywgY29uc3QgVmlk
ZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFpc1ZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbikpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IDIxOTg4N2ZhODFlMmJhZGE5MzViMjI0
YjFiNzBjN2UxMTk2OGVlNGEuLmNhMDA5MjFkYzQ2MWU4ZWJiZWJhZmMyMWRjNTdiN2Q3M2JiZmMz
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC03NSw2ICs3NSw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHdlYlJUQ0F2YWlsYWJsZSgpOwogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyV2ViS2l0VlA4RGVjb2RlcigpOwogICAgIHN0YXRpYyB2b2lkIHNldEgyNjRIYXJkd2FyZUVu
Y29kZXJBbGxvd2VkKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcAppbmRleCA0YTMy
ZDFmZGE3ODgzYThjZGFlMWEwZTM4OGIyNTI2YThjMzQzNTBlLi5lNjhmOTE2MGVmMTg0YmI4MzI0
ZmI5OGUyYTMwMzkzYWVmMmFkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyQ29jb2EuY3BwCkBAIC0zNCw2ICszNCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJT
X0JFR0lOCiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rlci5oPgogI2lu
Y2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4KIEFMTE9XX1VOVVNFRF9Q
QVJBTUVURVJTX0VORAorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29k
ZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvZGFyd2luL1dlYWtMaW5r
aW5nLmg+CkBAIC05OSw2ICsxMDAsMTMgQEAgdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0
ZXJXZWJLaXRWUDlEZWNvZGVyKCkKICAgICBpZiAod2ViUlRDQXZhaWxhYmxlKCkpCiAgICAgICAg
IHdlYnJ0Yzo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCk7CiB9CisKK3ZvaWQgTGliV2ViUlRD
UHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpCit7CisgICAgaWYgKHdlYlJUQ0F2
YWlsYWJsZSgpKQorICAgICAgICB3ZWJydGM6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDBjMjYxNjg2NTdhYThjNDczMzkxOTk0ZWVmMDIzNzJjNmM4OTI3YmYu
LjI4ZGIzNDUxOWExODBhMTg0MjhhM2M2YTAxMjgxNTBhNDE1NzJlYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTUxOSw5ICs1MTksOSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVwZGF0
ZUNhcHR1cmVBY2Nlc3MoYm9vbCBhbGxvd0F1ZGlvQ2FwdHVyZSwgYm9vbAogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVlA5KQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmFibGVWUDlE
ZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5
U1dEZWNvZGVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmFibGVWUDlEZWNv
ZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVj
b2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiB7Ci0gICAgbV9ncHVQcm9jZXNz
LT5lbmFibGVWUDlEZWNvZGVycyhzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBzaG91bGRFbmFibGVW
UDlTV0RlY29kZXIpOworICAgIG1fZ3B1UHJvY2Vzcy0+ZW5hYmxlVlA5RGVjb2RlcnMoc2hvdWxk
RW5hYmxlVlA4RGVjb2Rlciwgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwgc2hvdWxkRW5hYmxlVlA5
U1dEZWNvZGVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBlMzNmNzM4MTNiZjYwMGU3YTkx
YmE2OTI1MzExMjg4Y2Q3OWVhYjAyLi40ZWYyYWM2NWJjODg0NjAzZjkyNzNhYWMzODE5MTYzZTQx
MTBmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgV2ViQ29y
ZTo6Tm93UGxheWluZ0luZm8mJik7CiAKICNpZiBFTkFCTEUoVlA5KQotICAgIHZvaWQgZW5hYmxl
VlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2Rlcik7CisgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVu
YWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRF
bmFibGVWUDlTV0RlY29kZXIpOwogI2VuZGlmCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTE5NGZiNGY2MDg1ZDYyNGQ1OTgzZjYyNTJj
MzY1ZWIzMjcxZjM0NC4uYTFhMGE3NzAyMmUyM2FiM2U4YmZhMTUyYWZhMjJhYmFlYWRkN2VhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDcgKzM0LDcgQEAgbWVzc2FnZXMg
LT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAg
RW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKICNlbmRpZgogI2lmIEVOQUJMRShWUDkpCi0gICAg
RW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3Vs
ZEVuYWJsZVZQOVNXRGVjb2RlcikKKyAgICBFbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVu
YWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRF
bmFibGVWUDlTV0RlY29kZXIpCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VVByb2Nlc3MuY3BwCmluZGV4IGUzZDU2YTg3YzdkZGVhZWYwMGE2ZDE3MjA4ZGI4YWUxZTIyOTEw
ZGIuLmMzYTM2MTlmNjdlYWI0YjRkZTIzZTEwZmQ0Yzk4MGI3YTQ1OWZiNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTI5MiwxMiArMjkyLDE4IEBAIFdvcmtR
dWV1ZSYgR1BVUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUXVldWUoKQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVlA5KQotdm9pZCBHUFVQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3Vs
ZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQordm9pZCBH
UFVQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIs
IGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29k
ZXIpCiB7CiAgICAgaWYgKHNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYgIW1fZW5hYmxlVlA5RGVj
b2RlcikgewogICAgICAgICBtX2VuYWJsZVZQOURlY29kZXIgPSB0cnVlOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICBXZWJDb3JlOjpyZWdpc3RlclN1cHBsZW1lbnRhbFZQOURlY29kZXIo
KTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoc2hvdWxkRW5hYmxlVlA4RGVjb2RlciAmJiAhbV9l
bmFibGVWUDhEZWNvZGVyKSB7CisgICAgICAgIG1fZW5hYmxlVlA4RGVjb2RlciA9IHRydWU7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0VlA4RGVj
b2RlcigpOwogI2VuZGlmCiAgICAgfQogICAgIGlmIChzaG91bGRFbmFibGVWUDlTV0RlY29kZXIg
JiYgIW1fZW5hYmxlVlA5U1dEZWNvZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nl
c3MuaAppbmRleCBiNmVhODE4M2NlNjUxZTQ4ZDExN2UyNDdiNTdmYjA1ODc5MWMyNjlkLi5iZWE1
NjAzYzM2NDhiNzc1YWZhZWUwYjkwMDNiOTJlMjA2Njc4NGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVlA5KQotICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFi
bGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CisgICAgdm9pZCBl
bmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxk
RW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOwogI2VuZGlm
CiAKIHByaXZhdGU6CkBAIC0xNDgsNiArMTQ4LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI+IG1fYXVkaW9TZXNz
aW9uTWFuYWdlcjsKICNlbmRpZgogI2lmIEVOQUJMRShWUDkpCisgICAgYm9vbCBtX2VuYWJsZVZQ
OERlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlEZWNvZGVyIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCAyMWNkNjViMjhkNDZmZGVkYjY2MmM0Y2JmZjc5OWVkZWFiNWU3NTgzLi4zYjVkNzI3ZWRh
ZDI5NDNiMTc3MzQ5NzYxNTc3MTQ3OGQ4MDA5ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTU4LDYgKzE1OCw3IEBA
IHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckNhbnZhc0luR1BVUHJvY2Vz
czsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzczsKICAgICBlbmNv
ZGVyIDw8IHNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzczsKKyAgICBlbmNvZGVyIDw8IHNob3Vs
ZEVuYWJsZVZQOERlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVy
OwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShB
UFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxMyw2ICs1MTQsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3MpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggZmUyOWFmMjBhODhhNTllMWViYTZjZThmYmNiNWQ1YTZjM2EzNTQyNC4uZTI0NDQ2
NzI3ZGFjZTljODc0MDY0NzU0YmU3NWJiNjI5ZDMzOGI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjI5LDYgKzIyOSw3IEBA
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZFJlbmRl
ckNhbnZhc0luR1BVUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRSZW5kZXJET01J
bkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9j
ZXNzIHsgZmFsc2UgfTsKKyAgICBib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIgeyBmYWxzZSB9
OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBz
aG91bGRFbmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuY3BwCmluZGV4IGNjZDMzY2MwMmE3MjI0ODhhZWUxMmIzMjVlNGNjZDkzZmIx
ZTA3ZWIuLjEwYTczZDUzMmU4OThkNDk3MTFlNTNiNjQyZWI5OTdmYWU1OWYzYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNw
cApAQCAtMjc4LDYgKzI3OCwxNSBAQCBib29sIGRlZmF1bHRXZWJYUkVuYWJsZWQoKQogCiAjaWYg
RU5BQkxFKFZQOSkKIAorYm9vbCBkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQoKQoreworI2lmIEhB
VkUoU1lTVEVNX0ZFQVRVUkVfRkxBR1MpCisgICAgcmV0dXJuIGlzRmVhdHVyZUZsYWdFbmFibGVk
KCJ2cDhfZGVjb2RlciIpOworI2VuZGlmCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wg
ZGVmYXVsdFZQOURlY29kZXJFbmFibGVkKCkKIHsKICNpZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZM
QUdTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZh
dWx0VmFsdWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRW
YWx1ZXMuaAppbmRleCBkMDlkNDM5MzkzNzAwNGQzZTEwYjliOTY2ZjhlMzA2YjBhZjg5NThjLi4y
ZmM3ZDhlZDEyNTRkMzQ2NzVkMWUyZThmOWFhMDBkZjUwMDUzYjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaApAQCAtMTAwLDYg
KzEwMCw3IEBAIGJvb2wgZGVmYXVsdFdlYlhSRW5hYmxlZCgpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVlA5KQorYm9vbCBkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFZQ
OURlY29kZXJFbmFibGVkKCk7CiBib29sIGRlZmF1bHRWUDlTV0RlY29kZXJFbmFibGVkT25CYXR0
ZXJ5KCk7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGNkNGMzMmUwODdiYzNiMTE0MzBkODI5YzE5Mzk5ZGQ4YTAw
MTBjNzkuLmEyN2YyYTQ4N2I1OTY4NzA2ZjI0OWU0MThiNzc4ZjFjMTI0ZjNiYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzk0NSw2ICs3OTQ1LDcgQEAg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVy
cyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBsYXlNZWRpYUlu
R1BVUHJvY2VzcyA9IHByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0Zvck1lZGlhRW5hYmxlZCgp
OwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciA9IHByZWZlcmVuY2VzKCku
dnA5RGVjb2RlckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkK
KyAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZw
OURlY29kZXJFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29k
ZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkgJiYgKCFXZWJDb3JlOjpzeXN0
ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0RlY29kZXJFbmFibGVkT25CYXR0
ZXJ5KCkpOwogI2VuZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQ
cm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5zaG91bGRD
YXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDExZmE3MGYyY2U5YjQz
MzUxZTUzYjlhMWYzZjczZmNhNTI4ZDc0YTIuLmEyOTMwN2Y3MGI2ZWRmN2Y4NDkzNmVkYTZkYmNm
YjhkYjNhNmQwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xODUsMTIgKzE4NSwxMyBAQCB2b2lkIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQwogdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6dXBkYXRlUGFyYW1ldGVy
cyhjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogI2lmIEVO
QUJMRShWUDkpCi0gICAgaWYgKG1fZW5hYmxlVlA5RGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZVZQOURlY29kZXIgJiYgbV9lbmFibGVWUDlTV0RlY29kZXIgPT0gcGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDlTV0RlY29kZXIpCisgICAgaWYgKG1fZW5hYmxlVlA4RGVjb2RlciA9PSBw
YXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIgJiYgbV9lbmFibGVWUDlEZWNvZGVyID09
IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciAmJiBtX2VuYWJsZVZQOVNXRGVjb2Rl
ciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKICAgICAgICAgcmV0dXJu
OwogCisgICAgbV9lbmFibGVWUDlEZWNvZGVyID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhE
ZWNvZGVyOwogICAgIG1fZW5hYmxlVlA5RGVjb2RlciA9IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxl
VlA5RGVjb2RlcjsKICAgICBtX2VuYWJsZVZQOVNXRGVjb2RlciA9IHBhcmFtZXRlcnMuc2hvdWxk
RW5hYmxlVlA5U1dEZWNvZGVyOwotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFbmFibGVWUDlEZWNvZGVycyhwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZVZQOURlY29kZXIsIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKSwg
eyB9KTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6RW5hYmxlVlA5RGVjb2RlcnMocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNv
ZGVyLCBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIsIHBhcmFtZXRlcnMuc2hvdWxk
RW5hYmxlVlA5U1dEZWNvZGVyKSwgeyB9KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNmNhY2Zm
YjQ0OWQ5NDZjYjIyMzBlMzAzOThiM2E4N2MzYzZlODY3Mi4uYzA4YTUwYzkxMTUwNTZmZjRmMmVm
YTgyMjU2NmQ4YjE2MTBhZGNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGVQYXJhbWV0ZXJzKGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
KTsKIAogI2lmIEVOQUJMRShWUDkpCisgICAgYm9vbCBpc1ZQOERlY29kZXJFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9lbmFibGVWUDhEZWNvZGVyOyB9CiAgICAgYm9vbCBpc1ZQOURlY29kZXJF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVWUDlEZWNvZGVyOyB9CiAgICAgYm9vbCBp
c1ZQU1dEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5U1dEZWNvZGVy
OyB9CiAjZW5kaWYKQEAgLTEyNyw2ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZW1v
dGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcj4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdl
cjsKICNlbmRpZgogI2lmIEVOQUJMRShWUDkpCisgICAgYm9vbCBtX2VuYWJsZVZQOERlY29kZXIg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fZW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5NzhjYzdkMThkY2UwZjdl
NGU4YTM2NTk1OWY1OGQzNDNhZDIxMDE5Li5kNzUyMmFhZTRhMzJhYmJlZjcxMDRjYWFkZDRhNTk3
YmVlODBhYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtODE1LDYgKzgxNSw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAo
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKQogICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbmFibGVWUDlEZWNvZGVyKCk7CiAKKyAgICBpZiAocGFyYW1ldGVycy5zaG91
bGRFbmFibGVWUDhEZWNvZGVyKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFi
bGVWUDhTV0RlY29kZXIoKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNX
RGVjb2RlcikKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVlA5U1dEZWNv
ZGVyKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCBjM2ZhODFlZGMwMGViNjkyNzczY2M3M2Y5ZjRhYWRjY2UxZGNjMTMyLi41MjJjNjQ1MGU3MWE4
ZGMxMTkxZWFiMTZjMGYyYmIwNzIxZDJmNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0xOTY4LDYgKzE5NjgsMTcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbmFi
bGVWUDlEZWNvZGVyKCkKICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVZQOFNX
RGVjb2RlcigpCit7CisgICAgaWYgKG1fdnA5U1dEZWNvZGVyRW5hYmxlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV92cDhTV0RlY29kZXJFbmFibGVkID0gdHJ1ZTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBXZWJDb3JlOjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKKyNlbmRpZgor
fQorCiB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVZQOVNXRGVjb2RlcigpCiB7CiAgICAgaWYgKG1f
dnA5U1dEZWNvZGVyRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IGU5YzQ3ZGI0YzQ0N2MwZjRhYjYyN2MwOTRiNWY2OGRiNTY1YTlhNmMuLjdkYzE4NWJlNWRi
ZDUzZjc5YjY1ZjY2ODljYWY0MDVjMTk0ZmMwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMzUxLDYgKzM1MSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWUDkp
CiAgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVyKCk7CisgICAgdm9pZCBlbmFibGVWUDhTV0RlY29k
ZXIoKTsKICAgICB2b2lkIGVuYWJsZVZQOVNXRGVjb2RlcigpOwogI2VuZGlmCiAKQEAgLTY5MSw2
ICs2OTIsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZQOSkKICAgICBib29sIG1fdnA5RGVj
b2RlckVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV92cDhTV0RlY29kZXJFbmFibGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fdnA5U1dEZWNvZGVyRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5k
aWYKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNjA3YzQ0YWU4ZTViYzNlZTU0ZjU1MmYzZmJjODdmMTBkNWViM2FkNy4u
MGJiYjMxY2RiMzRkMWUyZDYwYjY0YzMzYjA4YTM3YzdlY2FmNWUzZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBWUDggc3VwcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50
eHQ6CisKIDIwMjAtMTEtMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTm9uLWZ1bGxzY3JlZW4gcGFnZSBjb250ZW50cyB2aXNpYmxlIHdoZW4gcm90YXRpbmcg
ZGV2aWNlIGR1cmluZyBlbGVtZW50IGZ1bGxzY3JlZW4gcHJlc2VudGF0aW9uLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMTg5Yjk4MDdjNTc5YjExNGYz
MjM1YzU1ZGJhNDViYjY1ZWI4M2IxLi43MzU5ZDYzNTYzODhjYjE4NWQ1ODVhNjdkZDgxNzY4NmEw
ZWQ1NGQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
ODU4LDggKzg1OCw2IEBAIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtZXJyCiB3ZWJraXQub3JnL2IvMTYx
NzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWlzLXR5cGUtc3VwcG9ydGVkLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
cmVtb3Zlc291cmNlYnVmZmVyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vl
ay1iZXlvbmQtZHVyYXRpb24uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVr
LWR1cmluZy1wZW5kaW5nLXNlZWsuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE2MTcyNSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1z
ZWVrYWJsZS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlcXVlbmNlbW9kZS1h
cHBlbmQtYnVmZmVyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVm
ZmVyLW1vZGUtdGltZXN0YW1wcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNv
dXJjZWJ1ZmZlci1tb2RlLmh0bWwgWyBTa2lwIF0KQEAgLTg3MCw5ICs4NjgsNiBAQCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWct
Y2hhbmdlLXdlYm0tYS1iaQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLWF2LWF1ZGlvLWJpdHJhdGUuaHRt
bCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLWF2LWZyYW1lc2l6ZS5odG1sIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1jb25maWctY2hhbmdlLXdlYm0tYXYtdmlkZW8tYml0cmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25m
aWctY2hhbmdlLXdlYm0tdi1iaXRyYXRlLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2Vi
bS12LWZyYW1lcmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNp
emUuaHRtbCBbIFNraXAgXQogCiAjIFNraXBwZWQgaW4gVzNDIFdlYiBQbGF0Zm9ybSBUZXN0IG1h
bmlmZXN0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1nZXR2aWRlb3BsYXliYWNrcXVhbGl0eS5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDc0ZTExYzkyMTdiY2Q3MTA5ZTAxMjE0N2Y5YWVhMWEyMWZhZDE3NWUuLjhlMDMzMzk2ZGQw
YzE1YWI1NTIyYTdhMTdiYTc0OTc0MzdkMDk3OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBA
QCBQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBlbXB0eSB0eXBlCiBQQVNTIFRlc3Qg
YWRkU291cmNlQnVmZmVyKCkgd2l0aCBudWxsCiBQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkg
d2l0aCB1bnN1cHBvcnRlZCB0eXBlCiBGQUlMIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBW
b3JiaXMgYW5kIFZQOCBhc3NlcnRfdHJ1ZTogdmlkZW8vd2VibTtjb2RlY3M9InZwOCx2b3JiaXMi
IGlzIHN1cHBvcnRlZCBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBUZXN0IGFkZFNvdXJj
ZUJ1ZmZlcigpIHdpdGggVm9yYmlzIGFuZCBWUDggaW4gc2VwYXJhdGUgU291cmNlQnVmZmVycyBh
c3NlcnRfdHJ1ZTogdmlkZW8vd2VibTtjb2RlY3M9InZwOCIgaXMgc3VwcG9ydGVkIGV4cGVjdGVk
IHRydWUgZ290IGZhbHNlCitGQUlMIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBWb3JiaXMg
YW5kIFZQOCBpbiBzZXBhcmF0ZSBTb3VyY2VCdWZmZXJzIGFzc2VydF90cnVlOiBhdWRpby93ZWJt
O2NvZGVjcz0idm9yYmlzIiBpcyBzdXBwb3J0ZWQgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIFBB
U1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB2aWRlbyBvbmx5CiBQQVNTIFRlc3QgYWRkU291cmNl
QnVmZmVyKCkgYXVkaW8gb25seQogUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggQUFD
IGFuZCBILjI2NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWludmFsaWQt
Y29kZWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWludmFsaWQtY29k
ZWMtZXhwZWN0ZWQudHh0CmluZGV4IDQzMGFhOTgxZDRmZTc2MjIzOTg3YjA3NTczMmFmNThkNDY2
YzQ0NDguLjE5ZTJkNTgxZmY5MDY4NjZlOWNlYTdhYzliYzYyMzViMjFmN2Q4N2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pbnZhbGlkLWNvZGVjLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50eHQK
QEAgLTEsNCArMSw0IEBACiAKIFBBU1MgVGVzdCBhbiBNUDQgd2l0aCBhbiBpbnZhbGlkIGNvZGVj
IHJlc3VsdHMgaW4gYW4gZXJyb3IuCi1GQUlMIFRlc3QgYSBXZWJNIHdpdGggYW4gaW52YWxpZCBj
b2RlYyByZXN1bHRzIGluIGFuIGVycm9yLiBhc3NlcnRfdHJ1ZTogTWVkaWEgdHlwZSBub3Qgc3Vw
cG9ydGVkIGluIHRoaXMgYnJvd3NlcjogaXNUeXBlU3VwcG9ydGVkKCd2aWRlby93ZWJtOyBjb2Rl
Y3M9InZwOCInKSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBUZXN0IGEgV2ViTSB3aXRo
IGFuIGludmFsaWQgY29kZWMgcmVzdWx0cyBpbiBhbiBlcnJvci4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415883</attachid>
            <date>2020-12-10 09:22:22 -0800</date>
            <delta_ts>2020-12-10 09:53:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219732-20201210092221.patch</filename>
            <type>text/plain</type>
            <size>91494</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzZTQ1OWUwMzQ4NDY4MzBiOWQ2MzgxYWJiOGZlYTQ5NjhhMzU2ZThiLi41MDZk
ODc5ZjkwOGFhYWY3YzUzMDc4NTJjMzM4M2QyOThjMDA1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJL
aXREZWNvZGVyUmVjZWl2ZXI6OldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAgICAgICh3ZWJy
dGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6fldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAg
ICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4
ZWxCdWZmZXJQb29sKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpk
ZWNvZGVyRmFpbGVkKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpE
ZWNvZGVkKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmg6IEFkZGVkCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlV2ViS2l0VlA4RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OmludmFsaWRhdGVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6ZmluYWxpemVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y29weVZQOERlY29kZXJE
ZWJ1Z0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6d2ViS2l0VlA4RGVjb2RlckZyb21W
VERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOERlY29kZXJTZXNzaW9uKToKKyAg
ICAgICAgKHdlYnJ0Yzo6ZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jayk6
CisgICAgICAgICh3ZWJydGM6OmRlY29kZVZQOERlY29kZXJGcmFtZSk6CisgICAgICAgICogU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2Vi
cnRjOjpzdGFydFZQOURlY29kZXJTZXNzaW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXRWUDlEZWNvZGVy
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2Rl
ckZhaWxlZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIElDRSBkb2VzIG5vdCByZXNvbHZlIGZvciBgdHVybnNgIHJlbGF5
IGNhbmRpZGF0ZXMgcm9vdGVkIGluIExldHNFbmNyeXB0IENBCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEzMGU1N2I3ZGZiMmU0
NzQ1NTVlMTE3YjdhODI2ZjM3ZWFjMWVlMGMuLmM0YTc2NmI2MDExNjc3MDNjY2RhNTM0YzUwYTg3
ZTI2YWI2MjUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFs
IFZQOCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bDoKKwogMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2F0ZSBWUDkgZXhwb3N1cmUgaW4gTWVkaWFDYXBhYmlsaXRpZXMgb24gVlA5RGVjb2Rl
ckVuYWJsZWQgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDViOGFlOWU1MjFiNmU1YzU2YmFlYThk
ODM5Y2ZkMGQyNmRmNTY5OWUuLjJlN2EwYzFjMjVjZDM4ZGQ4ODQ0NTY2YjkzYjYzYWEwMWI5MjZk
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50YWwg
VlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ld2x5IHBhc3NpbmcgdGVzdHM6CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXIuaHRt
bAorICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwKKyAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LXNlZWthYmxlLmh0bWwKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUu
aHRtbCAKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lcmF0ZS5odG1sCisg
ICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbAorICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtaW52YWxpZC1jb2RlYy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRl
bnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1hdERlc2NyaXB0
aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcik6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZVZQOEZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1h
dERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRW
UDhEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA4RGVjb2RlckF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1ZQOUNvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6
CisgICAgICAgIChXZWJDb3JlOjppc1ZQOENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjppc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9y
dGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKToKKwogMjAyMC0xMS0wNCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tZnVsbHNjcmVlbiBwYWdlIGNv
bnRlbnRzIHZpc2libGUgd2hlbiByb3RhdGluZyBkZXZpY2UgZHVyaW5nIGVsZW1lbnQgZnVsbHNj
cmVlbiBwcmVzZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQyMDQyMTcwYjhjYmUyYmFlNzliY2E1ODU4
MWMyYjZkNzA2YjdjYzAuLjJjMGUzZDA4NjA2NDg2YWRjMzNlNDY4OGQyNjBmMTUwZWQ0ZDZhNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6ZW5hYmxlVlA5RGVjb2RlcnMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZh
dWx0VlA4RGVjb2RlckVuYWJsZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnVwZGF0ZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjppc1ZQOERlY29kZXJFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlVlA4
U1dEZWNvZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAyMC0x
Mi0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBF
bnRlcmluZyBmdWxsc2NyZWVuIGZyb20gbGVzcy10aGFuLWZ1bGxzY3JlZW4gV0tXZWJWaWV3IGRv
ZXMgbm90IGxheW91dCBjb3JyZWN0bHkgdXBvbiBleGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAK
aW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBh
ZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4
cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0Vi
CiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1
RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJL
aXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxs
b3dlZEViCitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2Vi
cnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVy
RnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1
ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFt
ZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZTI4MDU4
ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIx
Y2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAt
MTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pO
NndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlX
ZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5j
b2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0
TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEVi
CitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRy
ZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZy
YW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1t
TlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBf
X0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5
NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMy
ZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9f
Wk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJL
aXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42
d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVn
aXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURl
Y29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0Zy
YW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVF
RQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzYwZTViYzUzNjA4ZDM4NzNhZTc1MWUxY2Q1Nzg2ZjczZThhZjljZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJXZWJLaXRWUDlEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRl
L3ZpZGVvX2Vycm9yX2NvZGVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCitu
YW1lc3BhY2Ugd2VicnRjIHsKKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpXZWJLaXREZWNvZGVy
UmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24o
c2Vzc2lvbikKK3sKK30KKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0RGVjb2RlclJl
Y2VpdmVyKCkKK3sKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmVsZWFz
ZShtX3BpeGVsQnVmZmVyUG9vbCk7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpp
bml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9y
bWF0RGVzY3JpcHRpb24pCit7CisgICAgLy8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1cHBvcnQg
ZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0cHV0Cisg
ICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZmZXIgYXR0
cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKKyAgICAvLyBkZWNvZGVyIHNlc3Npb24gZm9y
IHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29sLCB3aGlj
aCB3ZQorICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgorICAgIG1faXNGdWxsUmFuZ2UgPSBm
YWxzZTsKKyAgICBtX2lzMTBiaXQgPSBmYWxzZTsKKworICAgIGRvIHsKKyAgICAgICAgYXV0byBl
eHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3Jp
cHRpb24pOworICAgICAgICBpZiAoIWV4dGVuc2lvbnMpCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShl
eHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlv
bkV4dGVuc2lvbkF0b21zKTsKKyAgICAgICAgaWYgKCFleHRlbnNpb25BdG9tcyB8fCBDRkdldFR5
cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQgPSBzdGF0aWNf
Y2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0
ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKKyAgICAgICAgaWYgKCFjb25maWd1cmF0aW9u
UmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRpb25SZWNvcmQpICE9IENGRGF0YUdldFR5
cGVJRCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9u
UmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAg
ICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwgMTIpCisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0
cihjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgYXV0byBiaXREZXB0aENocm9tYUFuZFJh
bmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSArIDYpOworCisgICAgICAgIGlmICgoYml0
RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkKKyAgICAgICAgICAgIG1faXMxMGJpdCA9
IHRydWU7CisKKyAgICAgICAgaWYgKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAweDEpCisgICAg
ICAgICAgICBtX2lzRnVsbFJhbmdlID0gdHJ1ZTsKKyAgICB9IHdoaWxlIChmYWxzZSk7Cit9CisK
K0NWUGl4ZWxCdWZmZXJQb29sUmVmIFdlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4ZWxCdWZmZXJQ
b29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJv
b2wgaXMxMGJpdCkKK3sKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wgJiYgbV9waXhlbEJ1ZmZl
cldpZHRoID09IHBpeGVsQnVmZmVyV2lkdGggJiYgbV9waXhlbEJ1ZmZlckhlaWdodCA9PSBwaXhl
bEJ1ZmZlckhlaWdodCAmJiBtX2lzMTBiaXQgPT0gaXMxMGJpdCkKKyAgICAgICAgcmV0dXJuIG1f
cGl4ZWxCdWZmZXJQb29sOworCisgICAgT1NUeXBlIHBpeGVsRm9ybWF0OworICAgIGlmIChpczEw
Yml0KQorICAgICAgICBwaXhlbEZvcm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1h
dFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80
MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZTsKKyAgICBlbHNlCisgICAgICAgIHBpeGVsRm9y
bWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFu
YXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9S
YW5nZTsKKworICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlw
ZSBwaXhlbEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0byBjcmVh
dGVOdW1iZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAgICAgICAg
ICAgIHJldHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJT
SW50MzJUeXBlLCAmZm9ybWF0KTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBpeGVsRm9y
bWF0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpOworICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51
bWJlcihwaXhlbEZvcm1hdCk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9y
bWF0cywgZm9ybWF0TnVtYmVyKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7CisK
KyAgICAgICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7CisKKyAg
ICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0geworICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQ
aXhlbEZvcm1hdFR5cGVLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4
ZWxzTGVmdEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdo
dEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCisg
ICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAorICAgICAg
ICB9OworICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAgIGNmUGl4
ZWxGb3JtYXRzLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBi
b3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAg
ICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgIH07CisgICAgICAgIGF1dG8gYXR0cmli
dXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1
ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIENGUmVsZWFzZShib3JkZXJQ
aXhlbHNWYWx1ZSk7CisgICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7CisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmli
dXRlcyA9IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOworICAg
IFZURGVjb2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhl
bEJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMp
OworCisgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFzZShtX3Bp
eGVsQnVmZmVyUG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1
ZmZlclBvb2wobV9zZXNzaW9uKTsKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAg
IENGUmV0YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKKworICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9
IHBpeGVsQnVmZmVyV2lkdGg7CisgICAgbV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVsQnVmZmVy
SGVpZ2h0OworICAgIG1faXMxMGJpdCA9IGlzMTBiaXQ7CisKKyAgICByZXR1cm4gbV9waXhlbEJ1
ZmZlclBvb2w7Cit9CisKK09TU3RhdHVzIFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZh
aWxlZChpbnQgZXJyb3IpCit7CisgICAgT1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2Rl
ckJhZERhdGFFcnI7CisgICAgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQ
VVQpCisgICAgICAgIHZ0RXJyb3IgPSBub0VycjsKKyAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJS
VENfVklERU9fQ09ERUNfVU5JTklUSUFMSVpFRCkKKyAgICAgICAgdnRFcnJvciA9IGtWVFZpZGVv
RGVjb2Rlck1hbGZ1bmN0aW9uRXJyOworICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJUQ19WSURF
T19DT0RFQ19NRU1PUlkpCisgICAgICAgIHZ0RXJyb3IgPSBrVlRBbGxvY2F0aW9uRmFpbGVkRXJy
OworICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJy
ZW50RnJhbWUsIHZ0RXJyb3IsIDAsIG51bGxwdHIpOworICAgIG1fY3VycmVudEZyYW1lID0gbnVs
bHB0cjsKKworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVjb2RlciBm
YWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVycm9yOwor
ICAgIHJldHVybiB2dEVycm9yOworfQorCitpbnQzMl90IFdlYktpdERlY29kZXJSZWNlaXZlcjo6
RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4
ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAgIGF1dG8g
cGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5
cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9vbENyZWF0
ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLCAmcGl4
ZWxCdWZmZXIpID09IGtDVlJldHVyblN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGl4ZWxC
dWZmZXI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0pOworCisgICAgVlREZWNvZGVy
U2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwgcGl4ZWxC
dWZmZXIgPyBub0VyciA6IC0xLCAwLCBwaXhlbEJ1ZmZlcik7CisgICAgbV9jdXJyZW50RnJhbWUg
PSBudWxscHRyOworICAgIGlmIChwaXhlbEJ1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNlKHBpeGVs
QnVmZmVyKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBXZWJLaXREZWNvZGVyUmVjZWl2
ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYgZnJhbWUsIGludDY0X3QpCit7CisgICAgRGVjb2RlZChm
cmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpE
ZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiwgYWJzbDo6
b3B0aW9uYWw8dWludDhfdD4pCit7CisgICAgRGVjb2RlZChmcmFtZSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg2YTMzODc0NWJiN2ExNjgyNjQxN2E4YzgwMDZlNGI5NWZiYjk3NWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rl
ci5oIgorI2luY2x1ZGUgIlZUVmlkZW9EZWNvZGVyU1BJLmgiCisjaW5jbHVkZSAiV2ViS2l0VXRp
bGl0aWVzLmgiCisjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgorCituYW1l
c3BhY2Ugd2VicnRjIHsKKworY2xhc3MgV2ViS2l0RGVjb2RlclJlY2VpdmVyIGZpbmFsIDogcHVi
bGljIERlY29kZWRJbWFnZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uKTsKKyAgICB+V2ViS2l0RGVjb2Rl
clJlY2VpdmVyKCk7CisKKyAgICBWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CisgICAgdm9pZCBzZXRDdXJyZW50RnJhbWUo
VlRWaWRlb0RlY29kZXJGcmFtZSBjdXJyZW50RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBjdXJy
ZW50RnJhbWU7IH0KKyAgICBPU1N0YXR1cyBkZWNvZGVyRmFpbGVkKGludCBlcnJvcik7CisKKyAg
ICB2b2lkIGluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlv
blJlZik7CisKK3ByaXZhdGU6CisgICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmKSBmaW5h
bDsKKyAgICBpbnQzMl90IERlY29kZWQoVmlkZW9GcmFtZSYsIGludDY0X3QgZGVjb2RlX3RpbWVf
bXMpIGZpbmFsOworICAgIHZvaWQgRGVjb2RlZChWaWRlb0ZyYW1lJiwgYWJzbDo6b3B0aW9uYWw8
aW50MzJfdD4gZGVjb2RlX3RpbWVfbXMsIGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IHFwKSBmaW5h
bDsKKworICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXplX3QgcGl4
ZWxCdWZmZXJXaWR0aCwgc2l6ZV90IHBpeGVsQnVmZmVySGVpZ2h0LCBib29sIGlzMTBiaXQpOwor
CisgICAgVlRWaWRlb0RlY29kZXJTZXNzaW9uIG1fc2Vzc2lvbiB7IG51bGxwdHIgfTsKKyAgICBW
VFZpZGVvRGVjb2RlckZyYW1lIG1fY3VycmVudEZyYW1lIHsgbnVsbHB0ciB9OworICAgIHNpemVf
dCBtX3BpeGVsQnVmZmVyV2lkdGggeyAwIH07CisgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJIZWln
aHQgeyAwIH07CisgICAgYm9vbCBtX2lzMTBiaXQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Z1
bGxSYW5nZSB7IGZhbHNlIH07CisgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgbV9waXhlbEJ1ZmZl
clBvb2wgeyBudWxscHRyIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRWUDhEZWNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGMyNDEyZTE0MTc2MDNkNTg0Yzg5NmUw
ODUyNjg2NmFmZmFkM2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmNwcApAQCAt
MCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJLaXRWUDhEZWNvZGVyLmgi
CisKKyNpbmNsdWRlICJXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRV
dGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+CisjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvY3B1X2luZm8uaCIKKworI2luY2x1ZGUgIkNNQmFzZU9iamVjdFNQSS5oIgor
I2luY2x1ZGUgIlZUVmlkZW9EZWNvZGVyU1BJLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitz
dGF0aWMgT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdWaWRlb0NvZGVjVHlwZSwg
Q0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJlZiopOwordm9pZCByZWdp
c3RlcldlYktpdFZQOERlY29kZXIoKQoreworICAgIFZUUmVnaXN0ZXJWaWRlb0RlY29kZXIoJ3Zw
MDgnLCBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKTsKK30KKwordHlwZWRlZiBzdHJ1Y3QgeworICAg
IHN0ZDo6dW5pcXVlX3B0cjxMaWJ2cHhWcDhEZWNvZGVyPiBtX2luc3RhbmNlOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7Cit9IFdlYktpdFZQ
OERlY29kZXI7CisKK3N0YXRpYyBPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVjb2RlcihDTUJhc2VP
YmplY3RSZWYpOworc3RhdGljIHZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVjdFJl
Zik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9uKENN
QmFzZU9iamVjdFJlZik7CisKK3N0YXRpYyBjb25zdCBDTUJhc2VDbGFzcyBXZWJLaXRWUDhEZWNv
ZGVyX0Jhc2VDbGFzcyA9Cit7CisgICAga0NNQmFzZU9iamVjdF9DbGFzc1ZlcnNpb25fMSwKKyAg
ICBzaXplb2YoV2ViS2l0VlA4RGVjb2RlciksCisgICAgbnVsbHB0ciwgLy8gQ29tcGFyaXNvbiBi
eSBwb2ludGVyIGVxdWFsaXR5CisgICAgaW52YWxpZGF0ZVZQOERlY29kZXIsCisgICAgZmluYWxp
emVWUDhEZWNvZGVyLAorICAgIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbiwKKyAgICBu
dWxscHRyLCAvLyBDb3B5UHJvcGVydHkKKyAgICBudWxscHRyLCAvLyBTZXRQcm9wZXJ0eQorICAg
IG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIE9TU3RhdHVzIHN0YXJ0VlA4RGVj
b2RlclNlc3Npb24oVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiwgQ01W
aWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKK3N0YXRpYyBPU1N0YXR1cyBkZWNvZGVWUDhEZWNv
ZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyRnJhbWUsIENNU2FtcGxl
QnVmZmVyUmVmLCBWVERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKik7CisKK3N0
YXRpYyBjb25zdCBWVFZpZGVvRGVjb2RlckNsYXNzIFdlYktpdFZQOERlY29kZXJfVmlkZW9EZWNv
ZGVyQ2xhc3MgPQoreworICAgIGtWVFZpZGVvRGVjb2Rlcl9DbGFzc1ZlcnNpb25fMSwKKyAgICBz
dGFydFZQOERlY29kZXJTZXNzaW9uLAorICAgIGRlY29kZVZQOERlY29kZXJGcmFtZSwKKyAgICBu
dWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0NvcHlTdXBwb3J0ZWRQcm9wZXJ0eURp
Y3Rpb25hcnksCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9TZXRQcm9w
ZXJ0aWVzCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9Db3B5U2VyaWFs
aXphYmxlUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rpb25f
Q2FuQWNjZXB0Rm9ybWF0RGVzY3JpcHRpb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2Rl
ckZ1bmN0aW9uX0ZpbmlzaERlbGF5ZWRGcmFtZXMKKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVj
b2RlckZ1bmN0aW9uX1N0YXJ0VGlsZVNlc3Npb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVj
b2RlckZ1bmN0aW9uX0RlY29kZVRpbGUKKyAgICBudWxscHRyIC8vIFZUVmlkZW9EZWNvZGVyRnVu
Y3Rpb25fRmluaXNoRGVsYXllZFRpbGVzCit9OworCitzdGF0aWMgY29uc3QgVlRWaWRlb0RlY29k
ZXJWVGFibGUgV2ViS2l0VlA4RGVjb2RlclZUYWJsZSA9Cit7CisgICAgeyBudWxscHRyLCAmV2Vi
S2l0VlA4RGVjb2Rlcl9CYXNlQ2xhc3MgfSwKKyAgICAmV2ViS2l0VlA4RGVjb2Rlcl9WaWRlb0Rl
Y29kZXJDbGFzcworfTsKKworT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdWaWRl
b0NvZGVjVHlwZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJlZiog
ZGVjb2Rlck91dCkKK3sKKyAgICBpZiAoIWRlY29kZXJPdXQpIHsKKyAgICAgICAgUlRDX0xPRyhM
U19FUlJPUikgPDwgIlZQOCBkZWNvZGVyIGNyZWF0aW9uIGZhaWxlZCwgbm8gZGVjb2RlciBvdXRw
dXQiOworICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAgIFZUVmlk
ZW9EZWNvZGVyUmVmIGRlY29kZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTURlcml2
ZWRPYmplY3RDcmVhdGUoYWxsb2NhdG9yLCAmV2ViS2l0VlA4RGVjb2RlclZUYWJsZS5iYXNlLCBW
VFZpZGVvRGVjb2RlckdldENsYXNzSUQoKSwgKENNQmFzZU9iamVjdFJlZiopJmRlY29kZXIpOwor
CisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDgg
ZGVjb2RlciBjcmVhdGlvbiBmYWlsZWQsIENNRGVyaXZlZE9iamVjdENyZWF0ZSBmYWlsZWQgd2l0
aCBlcnJvciAiIDw8IGVycm9yOworICAgICAgICByZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxlZEVy
cjsKKyAgICB9CisKKyAgICBpZihlcnJvcikgeworICAgICAgICBDRlJlbGVhc2UoZGVjb2Rlcik7
CisgICAgICAgIGRlY29kZXIgPSBOVUxMOworICAgIH0KKyAgICAqZGVjb2Rlck91dCA9IGRlY29k
ZXI7CisgICAgcmV0dXJuIGVycm9yOworfQorCitPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVjb2Rl
cihDTUJhc2VPYmplY3RSZWYgaW5zdGFuY2UpCit7CisgICAgYXV0byogZGVjb2RlciA9IHN0YXRp
Y19jYXN0PFdlYktpdFZQOERlY29kZXIqPihDTUJhc2VPYmplY3RHZXREZXJpdmVkU3RvcmFnZShp
bnN0YW5jZSkpOworICAgIGlmICghZGVjb2RlcikKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikg
PDwgIlZQOCBkZWNvZGVyOiBpbnZhbGlkYXRpb24gZmFpbGVkIGFzIGluc3RhbmNlIGhhcyBubyBk
ZWNvZGVyIjsKKyAgICBlbHNlIHsKKyAgICAgICAgZGVjb2Rlci0+bV9pbnN0YW5jZSA9IG51bGxw
dHI7CisgICAgICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBudWxscHRyOworICAgIH0KKyAgICBy
ZXR1cm4gbm9FcnI7Cit9CisKK3ZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVjdFJl
ZiBpbnN0YW5jZSkKK3sKKyAgICBpbnZhbGlkYXRlVlA4RGVjb2RlcihpbnN0YW5jZSk7Cit9CisK
K0NGU3RyaW5nUmVmIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbihDTUJhc2VPYmplY3RS
ZWYpCit7CisgICAgcmV0dXJuIENGU1RSKCJXZWJLaXQgVlA4IGRlY29kZXIiKTsKK30KKworV2Vi
S2l0VlA4RGVjb2Rlciogd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoVlRWaWRlb0RlY29k
ZXJSZWYgZGVjb2RlcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0VlA4RGVjb2Rl
cio+KENNQmFzZU9iamVjdEdldERlcml2ZWRTdG9yYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8Q01CYXNl
T2JqZWN0UmVmPihkZWNvZGVyKSkpOworfQorT1NTdGF0dXMgc3RhcnRWUDhEZWNvZGVyU2Vzc2lv
bihWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNlc3Np
b24sIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sKKyAg
ICBhdXRvKiBkZWNvZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFuY2Up
OworICAgIGlmICghZGVjb2RlcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4
IGRlY29kZXI6IGZhaWxlZCB0byBnZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIHN0YXJ0
aW5nIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBkZWNv
ZGVyLT5tX2luc3RhbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJ2cHhWcDhEZWNvZGVyPigpOwor
ICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdERlY29kZXJS
ZWNlaXZlcj4oc2Vzc2lvbik7CisgICAgZGVjb2Rlci0+bV9yZWNlaXZlci0+aW5pdGlhbGl6ZUZy
b21Gb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBkZWNvZGVyLT5t
X2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVjb2Rlci0+bV9yZWNl
aXZlci5nZXQoKSk7CisKKyAgICBWaWRlb0NvZGVjIGNvZGVjOworICAgIGF1dG8gZGltZW5zaW9u
cyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3JpcHRp
b24pOworICAgIGNvZGVjLndpZHRoID0gZGltZW5zaW9ucy53aWR0aDsKKyAgICBjb2RlYy5oZWln
aHQgPSBkaW1lbnNpb25zLmhlaWdodDsKKworICAgIGRlY29kZXItPm1faW5zdGFuY2UtPkluaXRE
ZWNvZGUoJmNvZGVjLCBDcHVJbmZvOjpEZXRlY3ROdW1iZXJPZkNvcmVzKCkpOworCisgICAgcmV0
dXJuIG5vRXJyOworfQorCitzdGF0aWMgT1NTdGF0dXMgZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJv
bUNvbnRpZ3VvdXNCbG9jayhXZWJLaXRWUDhEZWNvZGVyJiBkZWNvZGVyLCBWVFZpZGVvRGVjb2Rl
ckZyYW1lIGZyYW1lLCBDTUJsb2NrQnVmZmVyUmVmIGVuY29kZWRCdWZmZXIpCit7CisgICAgUlRD
X0RDSEVDSyhDTUJsb2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoZW5jb2RlZEJ1ZmZlciwgMCwg
MCkpOworCisgICAgYXV0byBzaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoZW5jb2Rl
ZEJ1ZmZlcik7CisgICAgY2hhciogZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZXJyb3Ig
PSBDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoZW5jb2RlZEJ1ZmZlciwgMCwgbnVsbHB0ciwg
bnVsbHB0ciwgJmRhdGEpKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDggZGVj
b2RlcjogQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yICIgPDwg
ZXJyb3I7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBSVENfRENIRUNLKCFk
ZWNvZGVyLm1fcmVjZWl2ZXItPmN1cnJlbnRGcmFtZSgpKTsKKyAgICBkZWNvZGVyLm1fcmVjZWl2
ZXItPnNldEN1cnJlbnRGcmFtZShmcmFtZSk7CisKKyAgICBFbmNvZGVkSW1hZ2UgaW1hZ2UgeyBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSwgc2l6ZSB9OworICAgIC8vIFdl
IHNldCB0aG9zZSB2YWx1ZXMgYXMgVlA4RGVjb2RlckltcGwgY2hlY2tzIGZvciBnZXR0aW5nIGEg
ZnVsbCBrZXkgZnJhbWUgYXMgZmlyc3QgZnJhbWUuCisgICAgaW1hZ2UuX2ZyYW1lVHlwZSA9IFZp
ZGVvRnJhbWVUeXBlOjprVmlkZW9GcmFtZUtleTsKKyAgICBpbWFnZS5fY29tcGxldGVGcmFtZSA9
IHRydWU7CisgICAgYXV0byBlcnJvciA9IGRlY29kZXIubV9pbnN0YW5jZS0+RGVjb2RlKGltYWdl
LCBmYWxzZSwgMCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gZGVjb2Rlci5tX3Jl
Y2VpdmVyLT5kZWNvZGVyRmFpbGVkKGVycm9yKTsKKworICAgIFJUQ19EQ0hFQ0soIWRlY29kZXIu
bV9yZWNlaXZlci0+Y3VycmVudEZyYW1lKCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09TU3Rh
dHVzIGRlY29kZVZQOERlY29kZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRW
aWRlb0RlY29kZXJGcmFtZSBmcmFtZSwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBW
VERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKikKK3sKKyAgICBhdXRvKiBkZWNv
ZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFuY2UpOworICAgIGlmICgh
ZGVjb2RlciB8fCAhZGVjb2Rlci0+bV9pbnN0YW5jZSB8fCAhZGVjb2Rlci0+bV9yZWNlaXZlcikg
eworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0byBn
ZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIGRlY29kaW5nIjsKKyAgICAgICAgcmV0dXJu
IGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBDTVNh
bXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWVuY29kZWRC
dWZmZXIpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBmYWls
ZWQgdG8gZ2V0IGRhdGEgYnVmZmVyIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsK
KyAgICB9CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRy
OworICAgIC8vIE1ha2Ugc3VyZSBibG9jayBidWZmZXIgaXMgY29udGlndW91cy4KKyAgICBpZiAo
IUNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhlbmNvZGVkQnVmZmVyLCAwLCAwKSkgewor
ICAgICAgICBhdXRvIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51bGxw
dHIsIGVuY29kZWRCdWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAsICZjb250aWd1b3Vz
QnVmZmVyKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworICAgICAgICAgICAgUlRD
X0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBmYWlsZWQgdG8gY3JlYXRlIGNvbnRpZ3Vv
dXMgYmxvY2sgYnVmZmVyIHdpdGggZXJyb3IgIiA8PCBzdGF0dXM7CisgICAgICAgICAgICByZXR1
cm4ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsKKyAgICAgICAgfQorICAgICAgICBlbmNvZGVkQnVm
ZmVyID0gY29udGlndW91c0J1ZmZlcjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGRlY29k
ZVZQOERlY29kZXJGcmFtZUZyb21Db250aWd1b3VzQmxvY2soKmRlY29kZXIsIGZyYW1lLCBlbmNv
ZGVkQnVmZmVyKTsKKworICAgIGlmIChjb250aWd1b3VzQnVmZmVyKQorICAgICAgICBDRlJlbGVh
c2UoY29udGlndW91c0J1ZmZlcik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFZQOERlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNzMw
Yjk1NmFlNWE3NzA0MzhmODA4ZDUxNTEzN2YxODYxODU5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOERlY29kZXIuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKK25hbWVzcGFjZSB3ZWJydGMgeworCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rlcigp
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcApp
bmRleCA0M2E4ZWM3MmRiZWI5OGFlYzQ0NmI3MTk4N2MzMWQzMGU4ZDUzNzVmLi4zYjM1OWMyNzA1
ODI4OTZhZDIwMjMzOGYxMTY4NGVjZDk1NmUxNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUg
IldlYktpdFZQOURlY29kZXIuaCIKIAorI2luY2x1ZGUgIldlYktpdERlY29kZXJSZWNlaXZlci5o
IgogI2luY2x1ZGUgIldlYktpdFV0aWxpdGllcy5oIgogI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9W
aWRlb1Rvb2xib3guaD4KICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5
L3ZwOV9pbXBsLmgiCkBAIC00MiwzOSArNDMsMTEgQEAgdm9pZCByZWdpc3RlcldlYktpdFZQOURl
Y29kZXIoKQogICAgIFZUUmVnaXN0ZXJWaWRlb0RlY29kZXIoJ3ZwMDknLCBjcmVhdGVXZWJLaXRW
UDlEZWNvZGVyKTsKIH0KIAotY2xhc3MgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOwogdHlwZWRl
ZiBzdHJ1Y3QgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxWUDlEZWNvZGVySW1wbD4gbV9pbnN0YW5j
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyPiBtX3JlY2Vp
dmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2
ZXI7CiB9IFdlYktpdFZQOURlY29kZXI7CiAKLWNsYXNzIFdlYktpdFZQOURlY29kZXJSZWNlaXZl
ciBmaW5hbCA6IHB1YmxpYyBEZWNvZGVkSW1hZ2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgZXhw
bGljaXQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbik7Ci0g
ICAgfldlYktpdFZQOURlY29kZXJSZWNlaXZlcigpOwotCi0gICAgVlRWaWRlb0RlY29kZXJGcmFt
ZSBjdXJyZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQotICAgIHZv
aWQgc2V0Q3VycmVudEZyYW1lKFZUVmlkZW9EZWNvZGVyRnJhbWUgY3VycmVudEZyYW1lKSB7IG1f
Y3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOyB9Ci0gICAgT1NTdGF0dXMgZGVjb2RlckZhaWxl
ZChpbnQgZXJyb3IpOwotCi0gICAgdm9pZCBpbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9u
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYpOwotCi1wcml2YXRlOgotICAgIGludDMyX3QgRGVjb2Rl
ZChWaWRlb0ZyYW1lJikgZmluYWw7Ci0gICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBp
bnQ2NF90IGRlY29kZV90aW1lX21zKSBmaW5hbDsKLSAgICB2b2lkIERlY29kZWQoVmlkZW9GcmFt
ZSYsIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLCBhYnNsOjpvcHRpb25h
bDx1aW50OF90PiBxcCkgZmluYWw7Ci0KLSAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1
ZmZlclBvb2woc2l6ZV90IHBpeGVsQnVmZmVyV2lkdGgsIHNpemVfdCBwaXhlbEJ1ZmZlckhlaWdo
dCwgYm9vbCBpczEwYml0KTsKLQotICAgIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBtX3Nlc3Npb24g
eyBudWxscHRyIH07Ci0gICAgVlRWaWRlb0RlY29kZXJGcmFtZSBtX2N1cnJlbnRGcmFtZSB7IG51
bGxwdHIgfTsKLSAgICBzaXplX3QgbV9waXhlbEJ1ZmZlcldpZHRoIHsgMCB9OwotICAgIHNpemVf
dCBtX3BpeGVsQnVmZmVySGVpZ2h0IHsgMCB9OwotICAgIGJvb2wgbV9pczEwYml0IHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faXNGdWxsUmFuZ2UgeyBmYWxzZSB9OwotICAgIENWUGl4ZWxCdWZmZXJQ
b29sUmVmIG1fcGl4ZWxCdWZmZXJQb29sIHsgbnVsbHB0ciB9OwotfTsKLQogc3RhdGljIE9TU3Rh
dHVzIGludmFsaWRhdGVWUDlEZWNvZGVyKENNQmFzZU9iamVjdFJlZik7CiBzdGF0aWMgdm9pZCBm
aW5hbGl6ZVZQOURlY29kZXIoQ01CYXNlT2JqZWN0UmVmKTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBj
b3B5VlA5RGVjb2RlckRlYnVnRGVzY3JpcHRpb24oQ01CYXNlT2JqZWN0UmVmKTsKQEAgLTE3NSw3
ICsxNDgsNyBAQCBPU1N0YXR1cyBzdGFydFZQOURlY29kZXJTZXNzaW9uKFZUVmlkZW9EZWNvZGVy
UmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3NpbwogICAgIH0KIAogICAgIGRlY29kZXIt
Pm1faW5zdGFuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFZQOURlY29kZXJJbXBsPigpOwotICAgIGRl
Y29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdFZQOURlY29kZXJSZWNl
aXZlcj4oc2Vzc2lvbik7CisgICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0RGVjb2RlclJlY2VpdmVyPihzZXNzaW9uKTsKICAgICBkZWNvZGVyLT5tX3JlY2Vp
dmVyLT5pbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsK
IAogICAgIGRlY29kZXItPm1faW5zdGFuY2UtPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFj
ayhkZWNvZGVyLT5tX3JlY2VpdmVyLmdldCgpKTsKQEAgLTI1MCwxNjEgKzIyMyw0IEBAIE9TU3Rh
dHVzIGRlY29kZVZQOURlY29kZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRW
aWRlb0RlY29kZXJGcmFtZSBmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotV2ViS2l0VlA5RGVj
b2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNz
aW9uIHNlc3Npb24pCi0gICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKLXsKLX0KLQotV2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKLXsKLSAgICBpZiAo
bV9waXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7
Ci19Ci0KLXZvaWQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJvbUZvcm1h
dERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCi17
Ci0gICAgLy8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBz
byB3ZSBtdXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0cHV0Ci0gICAgLy8gYnkgbGlidnB4IHRv
IGJpLXBsYW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0
aG9zZSB0byB0aGUKLSAgICAvLyBkZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBp
dHMgb3duIGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQotICAgIC8vIHdpbGwg
dXNlIHBvc3QtZGVjb2RlLgotICAgIG1faXNGdWxsUmFuZ2UgPSBmYWxzZTsKLSAgICBtX2lzMTBi
aXQgPSBmYWxzZTsKLQotICAgIGRvIHsKLSAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwotICAgICAgICBp
ZiAoIWV4dGVuc2lvbnMpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDRlR5cGVSZWYg
ZXh0ZW5zaW9uQXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3Jt
YXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsK
LSAgICAgICAgaWYgKCFleHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9t
cykgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RS
KCJ2cGNDIikpKTsKLSAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlw
ZUlEKGNvbmZpZ3VyYXRpb25SZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0
YUdldExlbmd0aChjb25maWd1cmF0aW9uUmVjb3JkKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b25SZWNvcmRTaXplIDwgMTIpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBhdXRvIGNv
bmZpZ3VyYXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVj
b3JkKTsKLSAgICAgICAgYXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0
aW9uUmVjb3JkRGF0YSArIDYpOwotCi0gICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5n
ZSA+PiA0KSA9PSAxMCkKLSAgICAgICAgICAgIG1faXMxMGJpdCA9IHRydWU7Ci0KLSAgICAgICAg
aWYgKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAweDEpCi0gICAgICAgICAgICBtX2lzRnVsbFJh
bmdlID0gdHJ1ZTsKLSAgICB9IHdoaWxlIChmYWxzZSk7Ci19Ci0KLUNWUGl4ZWxCdWZmZXJQb29s
UmVmIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhl
bEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCkKLXsK
LSAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wgJiYgbV9waXhlbEJ1ZmZlcldpZHRoID09IHBpeGVs
QnVmZmVyV2lkdGggJiYgbV9waXhlbEJ1ZmZlckhlaWdodCA9PSBwaXhlbEJ1ZmZlckhlaWdodCAm
JiBtX2lzMTBiaXQgPT0gaXMxMGJpdCkKLSAgICAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29s
OwotCi0gICAgT1NUeXBlIHBpeGVsRm9ybWF0OwotICAgIGlmIChpczEwYml0KQotICAgICAgICBw
aXhlbEZvcm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNy
MTBCaVBsYW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxh
bmFyVmlkZW9SYW5nZTsKLSAgICBlbHNlCi0gICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxS
YW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgOiBr
Q1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKLQotICAgIGF1
dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhlbEZvcm1hdCwg
aW50MzJfdCBib3JkZXJQaXhlbHMpIHsKLSAgICAgICAgYXV0byBjcmVhdGVOdW1iZXIgPSBbXSAo
aW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKLSAgICAgICAgICAgIHJldHVybiBDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmZm9y
bWF0KTsKLSAgICAgICAgfTsKLSAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9IENGQXJyYXlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpOwotICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihwaXhlbEZvcm1h
dCk7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywgZm9ybWF0TnVt
YmVyKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7Ci0KLSAgICAgICAgYXV0byBi
b3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7Ci0KLSAgICAgICAgY29uc3Qgdm9p
ZCoga2V5c1tdID0gewotICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVL
ZXksCi0gICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVmdEtleSwKLSAg
ICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwKLSAgICAgICAg
ICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCi0gICAgICAgICAgICBrQ1ZQ
aXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAotICAgICAgICB9OwotICAgICAgICBj
b25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKLSAgICAgICAgICAgIGNmUGl4ZWxGb3JtYXRzLAotICAg
ICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCi0gICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1
ZSwKLSAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAotICAgICAgICAgICAgYm9yZGVyUGl4
ZWxzVmFsdWUsCi0gICAgICAgIH07Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShr
ZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7Ci0gICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNWYWx1ZSk7Ci0g
ICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzOwotICAgIH07Ci0KLSAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9IGNyZWF0ZVBp
eGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOwotICAgIFZURGVjb2RlclNlc3Np
b25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0
ZXMpOwotICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOwotCi0gICAgaWYgKG1f
cGl4ZWxCdWZmZXJQb29sKSB7Ci0gICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7
Ci0gICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBtX3Bp
eGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNz
aW9uKTsKLSAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgIENGUmV0YWluKG1fcGl4
ZWxCdWZmZXJQb29sKTsKLQotICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHBpeGVsQnVmZmVyV2lk
dGg7Ci0gICAgbV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVsQnVmZmVySGVpZ2h0OwotICAgIG1f
aXMxMGJpdCA9IGlzMTBiaXQ7Ci0KLSAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Ci19Ci0K
LU9TU3RhdHVzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJy
b3IpCi17Ci0gICAgT1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2RlckJhZERhdGFFcnI7
Ci0gICAgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQpCi0gICAgICAg
IHZ0RXJyb3IgPSBub0VycjsKLSAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09E
RUNfVU5JTklUSUFMSVpFRCkKLSAgICAgICAgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2Rlck1hbGZ1
bmN0aW9uRXJyOwotICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19NRU1P
UlkpCi0gICAgICAgIHZ0RXJyb3IgPSBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOwotICAgIFZURGVj
b2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHZ0
RXJyb3IsIDAsIG51bGxwdHIpOwotICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLQotICAg
IFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVjb2RlciBmYWlsZWQgd2l0aCBl
cnJvciAiIDw8IGVycm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVycm9yOwotICAgIHJldHVybiB2
dEVycm9yOwotfQotCi1pbnQzMl90IFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChW
aWRlb0ZyYW1lJiBmcmFtZSkKLXsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJG
cm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZl
clR5cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7Ci0gICAgICAgIGF1dG8gcGl4ZWxCdWZm
ZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVm
ZmVyVHlwZTo6STAxMCk7Ci0gICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
ciA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVm
ZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLCAmcGl4ZWxCdWZmZXIp
ID09IGtDVlJldHVyblN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0pOwotCi0gICAgVlREZWNvZGVyU2Vzc2lvbkVt
aXREZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwgcGl4ZWxCdWZmZXIgPyBu
b0VyciA6IC0xLCAwLCBwaXhlbEJ1ZmZlcik7Ci0gICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRy
OwotICAgIGlmIChwaXhlbEJ1ZmZlcikKLSAgICAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotaW50MzJfdCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRl
Y29kZWQoVmlkZW9GcmFtZSYgZnJhbWUsIGludDY0X3QpCi17Ci0gICAgRGVjb2RlZChmcmFtZSk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNv
ZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiwgYWJzbDo6b3B0
aW9uYWw8dWludDhfdD4pCi17Ci0gICAgRGVjb2RlZChmcmFtZSk7Ci19Ci0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMTA4MDQzOTk5NjQ4M2FiMzMxYTI5ZGFlYmUwNjRm
MGZkMGYzZmQzLi40MWMzYjk3YTM2ZjZiNDYxZjAyYjJlOWQwNGM4Zjg1ZTMwYWMzZGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTA5LDYgKzM5MDksMTAgQEAKIAkJNUNG
RDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9uNjQuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QTFFNEJEM0EzMDA0ODI5MDggLyog
cm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxl
X25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUz
OTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242NC5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBz
Y2FsZV9uZW9uNjQuY2MgKi87IH07CisJCUNEMzgxRjI3MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJL
aXRWUDhEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDM4MUYyNTI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5oICovOyB9
OworCQlDRDM4MUYyOTI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyODI1ODE1
OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgKi87IH07CisJCUNEMzgxRjJCMjU4
MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzODFGMkEyNTgxRkVCQTAwNzdERUM4
IC8qIFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgKi87IH07CisJCUNEMzgxRjJEMjU4MUZGMEIw
MDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzgxRjJDMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJL
aXREZWNvZGVyUmVjZWl2ZXIuaCAqLzsgfTsKIAkJQ0RFQkI0QjYyNEMwMTlDNDAwQURCRDQ0IC8q
IHVua25vd25fcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NjQyNEMwMTkxQTAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjICov
OyB9OwogCQlDREVCQjRCNzI0QzAxOUM0MDBBREJENDQgLyogbWFzdGVyX3BhcnNlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDZGMjRDMDE5
MUEwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCODI0QzAxOUM0
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NzYyNEMwMTkxQTAwQURCRDQ0IC8qIGJsb2NrX3BhcnNl
ci5jYyAqLzsgfTsKQEAgLTg0MzIsNiArODQzNiwxMCBAQAogCQk1RDdDNTlDNjEyMDhDNjhCMDAx
Qzg3M0UgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBC
YXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhD
NjhCMDAxQzg3M0UgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2Nv
bmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTFCODlCOEEyMjFFMDA0QzAwRUI0Q0VBIC8qIFNES1ZhcmlhbnQueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gU0RLVmFyaWFudC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0QzODFGMjUyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0VlA4RGVjb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyogV2Vi
S2l0VlA4RGVjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJLaXRWUDhEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFG
MkEyNTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM4MUYyQzI1ODFGRjBCMDA3N0RFQzggLyog
V2ViS2l0RGVjb2RlclJlY2VpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdERlY29kZXJSZWNl
aXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVCQjExOTI0QzAxODc0MDBB
REJENDQgLyogbGlid2VibS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJ3ZWJt
LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNERUJCMTFFMjRDMDE4
OTYwMEFEQkQ0NCAvKiBsaWJ3ZWJtLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxpYndlYm0ueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUJCNDA1MjRDMDE5MUEwMEFE
QkQ0NCAvKiByZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDk2MiwxMCArMTA5NzAsMTQgQEAKIAkJCQk0MTJGRjkzNTI1M0Q4
RjBBMDAxREYwMzYgLyogVlRWaWRlb0RlY29kZXJTUEkuaCAqLywKIAkJCQk0MUU4NEJDOTI0MzRD
NEEyMDBEMzRFNDEgLyogV2ViS2l0RGVjb2Rlci5oICovLAogCQkJCTQxRTg0QkNBMjQzNEM0QTMw
MEQzNEU0MSAvKiBXZWJLaXREZWNvZGVyLm1tICovLAorCQkJCUNEMzgxRjJBMjU4MUZFQkEwMDc3
REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEMzgxRjJDMjU4MUZG
MEIwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCAqLywKIAkJCQk0MTU4NjQ5NjIz
QkUwNUU4MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5oICovLAogCQkJCTQxNTg2NDk3MjNCRTA1
RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLm1tICovLAogCQkJCTQxRUNFQUJCMjA2NDAzQzEw
MDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCAqLywKIAkJCQk0MUVDRUFCRDIwNjQwNDk4MDA5
RDUxNDEgLyogV2ViS2l0VXRpbGl0aWVzLm1tICovLAorCQkJCUNEMzgxRjI4MjU4MTU5MUYwMDc3
REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmNwcCAqLywKKwkJCQlDRDM4MUYyNTI1ODE1OTFGMDA3
N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5oICovLAogCQkJCTQxNDAzN0JBMjRBQzc2RTkwMEJD
RTlCMiAvKiBXZWJLaXRWUDlEZWNvZGVyLmNwcCAqLywKIAkJCQk0MTQwMzdCOTI0QUM3NkU5MDBC
Q0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5oICovLAogCQkJKTsKQEAgLTE3NDk2LDggKzE3NTA4
LDEwIEBACiAJCQkJNUM0QjRDODExRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzRCNEM4NDFFNDMxRjlDMDAyNjUxQzggLyogd2F2X2hlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzMUMxNjMyMzRCODlFMjAwMjhBNjE1IC8qIHdlYWtfcHRyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRDM4MUYyRDI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVj
b2RlclJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU4NjQ5ODIzQkUwNUU5MDBBMEE2
MUUgLyogV2ViS2l0RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFQ0VBQkMyMDY0MDND
MjAwOUQ1MTQxIC8qIFdlYktpdFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzODFG
MjcyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNDAzN0JCMjRBQzc2RUEwMEJDRTlCMiAvKiBXZWJLaXRWUDlEZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REOENBQjFFNDNDNkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE0NUU0OTExRUY4OEVGNzAwRkNGNkU2IC8qIHdlYnJ0Y19saWJ5
dXYuaCBpbiBIZWFkZXJzICovLApAQCAtMjAwMzksOCArMjAwNTMsMTAgQEAKIAkJCQk1QzRCNEM4
MzFFNDMxRjlDMDAyNjUxQzggLyogd2F2X2hlYWRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
MzFDMEY5MjM0Qjg5RTIwMDI4QTYxNSAvKiB3ZWFrX3B0ci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxRTg0QkQ1MjQzNzNGNzIwMEQzNEU0MSAvKiBXZWJLaXREZWNvZGVyLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQ0QzODFGMkIyNTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2Vi
S2l0RW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRUNFQUJFMjA2NDA0OTgwMDlENTE0
MSAvKiBXZWJLaXRVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDM4MUYyOTI1ODE1
OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTQwMzdCQzI0QUM3NkVBMDBCQ0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REOENBQTFFNDNDNkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4MzY3MUU0MzI1RDUwMDYyMUU5MiAvKiB3ZWJydGNfbGlieXV2
LmNjIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGY0YjU2
OTI4YmE2NjlmYzAwMzg1Mjc2ZjU3YTFkOWY3MjMwMjNhMGUuLjQ0YjA4MmI1NjQ0MTIwMDhhNmUx
MjgzMTg2MjQ3ODkyZGRiNzg0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC04
NjQsNiArODY0LDE2IEBAIFVzZXJHZXN0dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDoKICAg
ICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKK1ZQOERlY29kZXJFbmFibGVkOgorICB0
eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiVlA4IGRlY29kZXIiCisgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBWUDggZGVjb2RlciIKKyAgd2ViY29yZUJpbmRpbmc6
IG5vbmUKKyAgY29uZGl0aW9uOiBFTkFCTEUoVlA5KQorICBkZWZhdWx0VmFsdWU6CisgICAgV2Vi
S2l0OgorICAgICAgZGVmYXVsdDogV2ViS2l0OjpkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQoKQor
CiAjIEZJWE1FOiBJcyB0aGlzIGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdhY3k/IElmIG5vdCwg
dGhpcyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBWUDlE
ZWNvZGVyRW5hYmxlZDoKICAgdHlwZTogYm9vbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXggMTQwODc0MWI4MTMzMTBkMjdmNDYw
MDAxOGUzMzFhNTA0YzU0NDBiZC4uNGUyODIyNzIxNTE3YzNiZTY4OTNlMThjODFjN2FmNWEyZGI4
NWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGls
aXRpZXMuY3BwCkBAIC0xMjQsMTIgKzEyNCw2IEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUE1hdHJp
eENvZWZmaWNpZW50cyh1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cykKIAogT3B0aW9uYWw8VlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBjb2RlY1ZpZXcpCiB7Ci0gICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgJ3ZwMDknIGNvZGVjIHN0
cmluZyBpcyBzcGVjaWZpZWQgaW4gdGhlIHdlYm0gR2l0SHViIHJlcG86Ci0gICAgLy8gPGh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWJtcHJvamVjdC92cDktZGFzaC9ibG9iL21hc3Rlci9WUENvZGVjSVNP
TWVkaWFGaWxlRm9ybWF0QmluZGluZy5tZCNjb2RlY3MtcGFyYW1ldGVyLXN0cmluZz4KLQotICAg
IC8vICJzYW1wbGUgZW50cnkgNENDLCBwcm9maWxlLCBsZXZlbCwgYW5kIGJpdERlcHRoIGFyZSBh
bGwgbWFuZGF0b3J5IGZpZWxkcy4gSWYgYW55IG9mIHRoZXNlIGZpZWxkcyBhcmUgZW1wdHksIG9y
IG5vdAotICAgIC8vIHdpdGhpbiB0aGVpciBhbGxvd2VkIHJhbmdlLCB0aGUgcHJvY2Vzc2luZyBk
ZXZpY2UgU0hBTEwgdHJlYXQgaXQgYXMgYW4gZXJyb3IuIgotCiAgICAgYXV0byBjb2RlY1NwbGl0
ID0gY29kZWNWaWV3LnNwbGl0KCcuJyk7CiAgICAgYXV0byBuZXh0RWxlbWVudCA9IGNvZGVjU3Bs
aXQuYmVnaW4oKTsKICAgICBpZiAobmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKQEAg
LTEzNywxMiArMTMxLDI0IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBw
YXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAKICAgICBWUENvZGVj
Q29uZmlndXJhdGlvblJlY29yZCBjb25maWd1cmF0aW9uOwogCi0gICAgLy8gQ29kZWMgaWRlbnRp
ZmllcjogbGVnYWwgdmFsdWVzIGFyZSAndnAwOCcgb3IgJ3ZwMDknLgogICAgIGNvbmZpZ3VyYXRp
b24uY29kZWNOYW1lID0gKCpuZXh0RWxlbWVudCkudG9TdHJpbmcoKTsKKyAgICArK25leHRFbGVt
ZW50OworCisgICAgLy8gU3VwcG9ydCB0aGUgbGVnYWN5IGlkZW50aWZpZXJzICh3aXRoIG5vIHBh
cmFtZXRlcnMpIGZvciBWUDggYW5kIFZQOS4KKyAgICBpZiAoKGNvbmZpZ3VyYXRpb24uY29kZWNO
YW1lID09ICJ2cDgiIHx8IGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDkiKSAmJiBuZXh0
RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKKworICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMgc3Bl
Y2lmaWVkIGluIHRoZSB3ZWJtIEdpdEh1YiByZXBvOgorICAgIC8vIDxodHRwczovL2dpdGh1Yi5j
b20vd2VibXByb2plY3QvdnA5LWRhc2gvYmxvYi9tYXN0ZXIvVlBDb2RlY0lTT01lZGlhRmlsZUZv
cm1hdEJpbmRpbmcubWQjY29kZWNzLXBhcmFtZXRlci1zdHJpbmc+CisKKyAgICAvLyAic2FtcGxl
IGVudHJ5IDRDQywgcHJvZmlsZSwgbGV2ZWwsIGFuZCBiaXREZXB0aCBhcmUgYWxsIG1hbmRhdG9y
eSBmaWVsZHMuIElmIGFueSBvZiB0aGVzZSBmaWVsZHMgYXJlIGVtcHR5LCBvciBub3QKKyAgICAv
LyB3aXRoaW4gdGhlaXIgYWxsb3dlZCByYW5nZSwgdGhlIHByb2Nlc3NpbmcgZGV2aWNlIFNIQUxM
IHRyZWF0IGl0IGFzIGFuIGVycm9yLiIKKworICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxlZ2Fs
IHZhbHVlcyBhcmUgJ3ZwMDgnIG9yICd2cDA5Jy4KICAgICBpZiAoY29uZmlndXJhdGlvbi5jb2Rl
Y05hbWUgIT0gInZwMDgiICYmIGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9ICJ2cDA5IikKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGlmICgrK25leHRFbGVtZW50ID09IGNv
ZGVjU3BsaXQuZW5kKCkpCisgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAvLyBGaXJzdCBlbGVtZW50OiBw
cm9maWxlLiBMZWdhbCB2YWx1ZXMgYXJlIDAtMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggYmUxZTA4NmUwYWM1MjM1NDYzNmEwMDZhYjMyZDFiOTJmNDBiNGQ4MS4uNGEw
Yzk2NDAzOWYyOGNkMDFiMDEwMDc2MTVlNDlkNzEwOTc5ZTM0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRl
ZChjbwogI2lmIEVOQUJMRShWUDkpCiAgICAgYXV0byBzcGxpdFJlc3VsdHMgPSBTdHJpbmdWaWV3
KGNvZGVjc1BhcmFtZXRlcikuc3BsaXQoJywnKTsKICAgICBmb3IgKGF1dG8gc3BsaXQgOiBzcGxp
dFJlc3VsdHMpIHsKLSAgICAgICAgaWYgKHNwbGl0LnN0YXJ0c1dpdGgoInZwMDkiKSkgeworICAg
ICAgICBpZiAoc3BsaXQuc3RhcnRzV2l0aCgidnAwOSIpIHx8IHNwbGl0LnN0YXJ0c1dpdGgoInZw
MDgiKSB8fCBlcXVhbChzcGxpdCwgInZwOCIpIHx8IGVxdWFsKHNwbGl0LCAidnA5IikpIHsKICAg
ICAgICAgICAgIGF1dG8gY29kZWNQYXJhbWV0ZXJzID0gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhz
cGxpdCk7CiAgICAgICAgICAgICBpZiAoIWNvZGVjUGFyYW1ldGVycykKICAgICAgICAgICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
QEAgLTQ4MCw2ICs0ODAsNyBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjbwogCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQorCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgT3B1cyBTdXBw
b3J0CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgVm9yYmlzIFN1cHBvcnQKICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CkBAIC03NDgs
MTAgKzc0OSwyMiBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVn
aW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgYwogU3RhdHVzIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRh
LCBjb25zdCBUcmFja0VudHJ5JiB0cmFja0VudHJ5KQogewogICAgIFVOVVNFRF9QQVJBTShtZXRh
ZGF0YSk7Ci0gICAgaWYgKCF0cmFja0VudHJ5LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpKQorICAg
IGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNlbnQoKSB8fCAhdHJhY2tFbnRyeS5j
b2RlY19pZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tD
b21wbGV0ZWQpOwogCiAgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUu
dmFsdWUoKTsKKyAgICBTdHJpbmcgY29kZWNJZCB7IHRyYWNrRW50cnkuY29kZWNfaWQudmFsdWUo
KS5kYXRhKCksICh1bnNpZ25lZCl0cmFja0VudHJ5LmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkg
fTsKKworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8gJiYgIXN1cHBvcnRl
ZFZpZGVvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKKyAgICAgICAgRVJST1JfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCB2aWRlbyBj
b2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkVmlkZW9Db2RlYykpOworICAg
IH0KKworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8gJiYgIXN1cHBvcnRl
ZEF1ZGlvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKKyAgICAgICAgRVJST1JfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCBhdWRpbyBj
b2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkQXVkaW9Db2RlYykpOworICAg
IH0KKwogICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pCiAgICAgICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0
aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0
ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKICAgICBlbHNlIGlmICh0
cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pCkBAIC0xMDAwLDcgKzEwMTMsNyBAQCBzdGF0
aWMgdWludDhfdCBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcodWludDY0
X3QgeCwgdWludDY0X3QgeSkKICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2Ft
cGxpbmc6OlN1YnNhbXBsaW5nXzQyMF9Db2xvY2F0ZWQ7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8
Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVh
ZGVyUGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6OlZwOUhlYWRlclBhcnNlciYgcGFyc2VyLCBjb25z
dCB3ZWJtOjpFbGVtZW50PENvbG91cj4mIGNvbG9yKQorc3RhdGljIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgcmVjb3JkLCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKIHsKICAgICAvLyBSZWY6ICJWUCBDb2RlYyBJ
U08gTWVkaWEgRmlsZSBGb3JtYXQgQmluZGluZywgdjEuMCwgMjAxNy0wMy0zMSIKICAgICAvLyA8
aHR0cHM6Ly93d3cud2VibXByb2plY3Qub3JnL3ZwOS9tcDQvPgpAQCAtMTAyOSwzNSArMTA0Miw2
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0
RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyCiAgICAgLy8gRklYTUU6IENvbnZlcnQgZXhpc3Rp
bmcgc3RydWN0IHRvIGFuIElTT0JveCBhbmQgcmVwbGFjZSB0aGUgd3JpdGluZyBjb2RlIGJlbG93
CiAgICAgLy8gd2l0aCBhIHN1YmNsYXNzIG9mIElTT0Z1bGxCb3guCiAKLSAgICBWUENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZCByZWNvcmQ7Ci0KLSAgICByZWNvcmQucHJvZmlsZSA9IHBhcnNlci5w
cm9maWxlKCk7Ci0gICAgLy8gQ29yZU1lZGlhIGRvZXMgbmF0IGNhcmUgYWJvdXQgdGhlIFZQOSBj
b2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEuMCBoZXJlOgotICAgIHJlY29yZC5sZXZl
bCA9IDEwOwotICAgIHJlY29yZC5iaXREZXB0aCA9IHBhcnNlci5iaXRfZGVwdGgoKTsKLSAgICBy
ZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gcGFyc2VyLmNvbG9yX3JhbmdlKCkgPyBWUENvbmZp
Z3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFu
Z2U7Ci0gICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNhbXBsaW5nWFlU
b0Nocm9tYVN1YnNhbXBsaW5nKHBhcnNlci5zdWJzYW1wbGluZ194KCksIHBhcnNlci5zdWJzYW1w
bGluZ195KCkpOwotICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IFZQQ29uZmlndXJhdGlvbkNv
bG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsKLSAgICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3MgPSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5zcGVjaWZp
ZWQ7Ci0gICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQ7Ci0KLSAgICAvLyBDb250YWluZXIgY29sb3IgdmFs
dWVzIGNhbiBvdmVycmlkZSBwZXItc2FtcGxlIG9uZXM6Ci0gICAgaWYgKGNvbG9yLmlzX3ByZXNl
bnQoKSkgewotICAgICAgICBhdXRvJiBjb2xvclZhbHVlID0gY29sb3IudmFsdWUoKTsKLSAgICAg
ICAgaWYgKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3guaXNfcHJlc2VudCgpICYmIGNv
bG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAg
cmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1
YnNhbXBsaW5nKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3gudmFsdWUoKSwgY29sb3JW
YWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNvbG9yVmFs
dWUucmFuZ2UuaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSAhPSBSYW5n
ZTo6a1Vuc3BlY2lmaWVkKQotICAgICAgICAgICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9
IGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSA9PSBSYW5nZTo6a0Z1bGwgPyBWUENvbmZpZ3VyYXRp
b25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7Ci0g
ICAgICAgIGlmIChjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwuaXNfcHJlc2VudCgpKQotICAg
ICAgICAgICAgcmVjb3JkLmJpdERlcHRoID0gY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLnZh
bHVlKCk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy5p
c19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mg
PSBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyhjb2xvclZhbHVlLnRyYW5zZmVyX2No
YXJhY3RlcmlzdGljcy52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNvbG9yVmFsdWUubWF0cml4X2Nv
ZWZmaWNpZW50cy5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQubWF0cml4Q29lZmZp
Y2llbnRzID0gY29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKGNvbG9yVmFsdWUubWF0cml4X2Nv
ZWZmaWNpZW50cy52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNvbG9yVmFsdWUucHJpbWFyaWVzLmlz
X3ByZXNlbnQoKSkKLSAgICAgICAgICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IGNvbnZlcnRU
b0NvbG9yUHJpbWFyaWVzKGNvbG9yVmFsdWUucHJpbWFyaWVzLnZhbHVlKCkpOwotICAgIH0KLQog
ICAgIGNvbnN0ZXhwciBzaXplX3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25Db250ZW50c1NpemUgPSAx
MjsKIAogICAgIHVpbnQzMl90IHZlcnNpb25BbmRGbGFncyA9IDEgPDwgMjQ7CkBAIC0xMTA2LDEw
ICsxMDkwLDE1NCBAQCBzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcgogICAgIGF1dG8gZXh0ZW5zaW9u
cyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGV4dGVu
c2lvbnNLZXlzLmRhdGEoKSwgZXh0ZW5zaW9uc1ZhbHVlcy5kYXRhKCksIGV4dGVuc2lvbnNLZXlz
LnNpemUoKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDTVZpZGVvQ29kZWNUeXBl
X1ZQOSwgcGFyc2VyLndpZHRoKCksIHBhcnNlci5oZWlnaHQoKSwgZXh0ZW5zaW9ucy5nZXQoKSwg
JmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjID0gcmVjb3Jk
LmNvZGVjTmFtZSA9PSAidnAwOSIgPyBrQ01WaWRlb0NvZGVjVHlwZV9WUDkgOiAndnAwOCc7Cisg
ICAgaWYgKG5vRXJyICE9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBjb2RlYywgd2lkdGgsIGhlaWdodCwgZXh0ZW5zaW9ucy5nZXQoKSwgJmZvcm1h
dERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGFkb3B0
Q0YoZm9ybWF0RGVzY3JpcHRpb24pOwogfQorCitzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVz
Y3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihj
b25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXJzZXImIHBhcnNlciwgY29uc3Qgd2VibTo6RWxl
bWVudDxDb2xvdXI+JiBjb2xvcikKK3sKKyAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCBy
ZWNvcmQ7CisKKyAgICByZWNvcmQuY29kZWNOYW1lID0gInZwMDkiOworICAgIHJlY29yZC5wcm9m
aWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKKyAgICAvLyBDb3JlTWVkaWEgZG9lcyBuYXQgY2FyZSBh
Ym91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNvZGUgdG8gTGV2ZWwgMS4wIGhlcmU6Cisg
ICAgcmVjb3JkLmxldmVsID0gMTA7CisgICAgcmVjb3JkLmJpdERlcHRoID0gcGFyc2VyLmJpdF9k
ZXB0aCgpOworICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBwYXJzZXIuY29sb3JfcmFu
Z2UoKSA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25S
YW5nZTo6VmlkZW9SYW5nZTsKKyAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0
U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcocGFyc2VyLnN1YnNhbXBsaW5nX3goKSwg
cGFyc2VyLnN1YnNhbXBsaW5nX3koKSk7CisgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gVlBD
b25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVkOworICAgIHJlY29yZC50cmFu
c2ZlckNoYXJhY3RlcmlzdGljcyA9IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzOjpVbnNwZWNpZmllZDsKKyAgICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZDsKKworICAgIC8vIENvbnRh
aW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRlIHBlci1zYW1wbGUgb25lczoKKyAgICBpZiAo
Y29sb3IuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52
YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC5pc19w
cmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS5pc19wcmVzZW50KCkp
CisgICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxp
bmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52
YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LnZhbHVlKCkpOworICAgICAg
ICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52
YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQpCisgICAgICAgICAgICByZWNvcmQudmlkZW9G
dWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/
IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6
VmlkZW9SYW5nZTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC5pc19w
cmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuYml0RGVwdGggPSBjb2xvclZhbHVlLmJpdHNf
cGVyX2NoYW5uZWwudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hh
cmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC50cmFuc2ZlckNo
YXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFs
dWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JW
YWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29y
ZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29sb3JW
YWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1
ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmNvbG9yUHJpbWFy
aWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMoY29sb3JWYWx1ZS5wcmltYXJpZXMudmFsdWUo
KSk7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkKHJlY29yZCwgcGFyc2VyLndpZHRoKCksIHBhcnNlci5oZWln
aHQoKSk7Cit9CisKK3N0cnVjdCBWUDhGcmFtZUhlYWRlciB7CisgICAgYm9vbCBrZXlmcmFtZSB7
IGZhbHNlIH07CisgICAgdWludDhfdCB2ZXJzaW9uIHsgMCB9OworICAgIGJvb2wgc2hvd0ZyYW1l
IHsgdHJ1ZSB9OworICAgIHVpbnQzMl90IHBhcnRpdGlvblNpemUgeyAwIH07CisgICAgdWludDhf
dCBob3Jpem9udGFsU2NhbGUgeyAwIH07CisgICAgdWludDE2X3Qgd2lkdGggeyAwIH07CisgICAg
dWludDhfdCB2ZXJ0aWNhbFNjYWxlIHsgMCB9OworICAgIHVpbnQxNl90IGhlaWdodDsKKyAgICBi
b29sIGNvbG9yU3BhY2UgeyBmYWxzZSB9OworICAgIGJvb2wgbmVlZHNDbGFtcGluZyB7IGZhbHNl
IH07Cit9OworCitzdGF0aWMgT3B0aW9uYWw8VlA4RnJhbWVIZWFkZXI+IHBhcnNlVlA4RnJhbWVI
ZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQoreworICAgIC8vIFZQ
OCBmcmFtZSBoZWFkZXJzIGFyZSBkZWZpbmVkIGluIFJGQyA2Mzg2OiA8aHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzYzODY+LgorCisgICAgLy8gQmFpbCBpZiB0aGUgaGVhZGVyIGlzIGJl
bG93IGEgbWluaW11bSBzaXplCisgICAgaWYgKGZyYW1lU2l6ZSA8IDExKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgVlA4RnJhbWVIZWFkZXIgaGVhZGVyOworICAgIHNpemVf
dCBoZWFkZXJTaXplID0gMTE7CisKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShmcmFtZURhdGEsIGhlYWRlclNpemUpLCAwLCBoZWFkZXJT
aXplKTsKKyAgICBib29sIHN0YXR1cyA9IHRydWU7CisKKyAgICBhdXRvIHVuY29tcHJlc3NlZENo
dW5rID0gdmlldy0+Z2V0PHVpbnQzMl90PigwLCB0cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAoIXN0
YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGhlYWRlci5rZXlmcmFt
ZSA9IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwMDsKKyAgICBoZWFkZXIudmVyc2lvbiA9
ICh1bmNvbXByZXNzZWRDaHVuayA+PiAyOCkgJiAweDc7CisgICAgaGVhZGVyLnNob3dGcmFtZSA9
IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwOworICAgIGhlYWRlci5wYXJ0aXRpb25TaXpl
ID0gKHVuY29tcHJlc3NlZENodW5rID4+IDgpICYgMHg3RkZGRjsKKworICAgIGlmICghaGVhZGVy
LmtleWZyYW1lKQorICAgICAgICByZXR1cm4gaGVhZGVyOworCisgICAgYXV0byBzdGFydENvZGUw
ID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDMsIHRydWUsICZzdGF0dXMpOworICAgIGlmICghc3RhdHVz
IHx8IHN0YXJ0Q29kZTAgIT0gMHg5ZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gc3RhcnRDb2RlMSA9IHZpZXctPmdldDx1aW50OF90Pig0LCB0cnVlLCAmc3RhdHVz
KTsKKyAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENvZGUxICE9IDB4MDEpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIHN0YXJ0Q29kZTIgPSB2aWV3LT5nZXQ8dWludDhf
dD4oNSwgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMgfHwgc3RhcnRDb2RlMiAhPSAw
eDJhKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBob3Jpem9udGFs
QW5kV2lkdGhGaWVsZCA9IHZpZXctPmdldDx1aW50MTZfdD4oNiwgdHJ1ZSwgJnN0YXR1cyk7Cisg
ICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBoZWFk
ZXIuaG9yaXpvbnRhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaG9yaXpvbnRhbEFuZFdp
ZHRoRmllbGQgPj4gMTQpOworICAgIGhlYWRlci53aWR0aCA9IHN0YXRpY19jYXN0PHVpbnQxNl90
Pihob3Jpem9udGFsQW5kV2lkdGhGaWVsZCAmIDB4M0ZGRik7CisKKyAgICBhdXRvIHZlcnRpY2Fs
QW5kSGVpZ2h0RmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDgsIHRydWUsICZzdGF0dXMpOwor
ICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaGVh
ZGVyLnZlcnRpY2FsU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZXJ0aWNhbEFuZEhlaWdo
dEZpZWxkID4+IDE0KTsKKyAgICBoZWFkZXIuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQgJiAweDNGRkYpOworCisgICAgYXV0byBjb2xvclNwYWNl
QW5kQ2xhbXBpbmdGaWVsZCA9IHZpZXctPmdldDx1aW50OF90PigxMCwgdHJ1ZSwgJnN0YXR1cyk7
CisgICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBo
ZWFkZXIuY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkICYgMHg4MDsKKyAg
ICBoZWFkZXIubmVlZHNDbGFtcGluZyA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkICYgMHg0
MDsKKworICAgIHJldHVybiBoZWFkZXI7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA4SGVhZGVyKGNvbnN0
IFZQOEZyYW1lSGVhZGVyJiBoZWFkZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29s
b3IpCit7CisgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOworICAgIHJlY29y
ZC5jb2RlY05hbWUgPSAidnAwOCI7CisgICAgcmVjb3JkLnByb2ZpbGUgPSAwOworICAgIHJlY29y
ZC5sZXZlbCA9IDEwOworICAgIHJlY29yZC5iaXREZXB0aCA9IDg7CisgICAgcmVjb3JkLnZpZGVv
RnVsbFJhbmdlRmxhZyA9IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2U7CisgICAgcmVj
b3JkLmNocm9tYVN1YnNhbXBsaW5nID0gVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6
OlN1YnNhbXBsaW5nXzQyMF9Db2xvY2F0ZWQ7CisgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0g
aGVhZGVyLmNvbG9yU3BhY2UgPyBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6VW5zcGVj
aWZpZWQgOiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNjAxXzc7CisgICAgcmVj
b3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gIGhlYWRlci5jb2xvclNwYWNlID8gVlBDb25m
aWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkIDogVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzYwMV83OworICAgIHJlY29yZC5tYXRy
aXhDb2VmZmljaWVudHMgPSBoZWFkZXIuY29sb3JTcGFjZSA/IFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQgOiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmlj
aWVudHM6OkJUXzYwMV83OworCisgICAgLy8gQ29udGFpbmVyIGNvbG9yIHZhbHVlcyBjYW4gb3Zl
cnJpZGUgcGVyLXNhbXBsZSBvbmVzOgorICAgIGlmIChjb2xvci5pc19wcmVzZW50KCkpIHsKKyAg
ICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIGlmIChjb2xv
clZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLmNo
cm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5jaHJv
bWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhj
b2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVlKCksIGNvbG9yVmFsdWUuY2hyb21h
X3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnJhbmdlLmlz
X3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgIT0gUmFuZ2U6OmtVbnNwZWNp
ZmllZCkKKyAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBjb2xvclZhbHVl
LnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1
bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOworICAgICAgICBpZiAo
Y29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJl
Y29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC52YWx1ZSgpOworICAg
ICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MuaXNfcHJlc2VudCgp
KQorICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gY29udmVydFRv
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3Rp
Y3MudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMu
aXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IGNv
bnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMu
dmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnByaW1hcmllcy5pc19wcmVzZW50KCkp
CisgICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9Db2xvclByaW1h
cmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Y3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQocmVj
b3JkLCBoZWFkZXIud2lkdGgsIGhlYWRlci5oZWlnaHQpOworfQogI2VuZGlmCiAKIHdlYm06OlN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0YWRhdGEm
IG1ldGFkYXRhLCBSZWFkZXIqIHJlYWRlciwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nKQpAQCAt
MTE0NCw3ICsxMjcyLDcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
RnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICAgICAgZHVyYXRp
b24gPSB0cmFjay5kZWZhdWx0X2R1cmF0aW9uLnZhbHVlKCkgKiBtX3RpbWVzY2FsZSAvIDEwMDAw
MDAwMDA7CiAKICNpZiBFTkFCTEUoVlA5KQotICAgIGlmICh0cmFjay5jb2RlY19pZC5pc19wcmVz
ZW50KCkgJiYgdHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAiVl9WUDkiKSB7CisgICAgaWYgKHRy
YWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSAmJiAodHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAi
Vl9WUDkiIHx8IHRyYWNrLmNvZGVjX2lkLnZhbHVlKCkgPT0gIlZfVlA4IikpIHsKICAgICAgICAg
aWYgKCF0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlcikgewogICAgICAgICAgICAgQ01CbG9j
a0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAobm9F
cnIgIT0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBudWxscHRyLCBtZXRhZGF0YS5zaXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRy
LCAwLCBtZXRhZGF0YS5zaXplLCAwLCAmcmF3QmxvY2tCdWZmZXIpKQpAQCAtMTE4MCwxNCArMTMw
OCwyOSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25z
dCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgICAgICBpZiAobm9FcnIgIT0gQ01C
bG9ja0J1ZmZlckdldERhdGFQb2ludGVyKHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyLmdl
dCgpLCAwLCAmc2VnbWVudFNpemVBdFBvc2l0aW9uLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1
ZmZlckRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmlu
Zyk7CiAKLSAgICAgICAgYXV0byYgaGVhZGVyUGFyc2VyID0gdHJhY2tEYXRhLT5oZWFkZXJQYXJz
ZXI7Ci0gICAgICAgIGlmICghaGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJs
b2NrQnVmZmVyRGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICBib29sIGlzS2V5ID0gZmFs
c2U7CisgICAgICAgIGlmICh0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOSIpIHsKKyAg
ICAgICAgICAgIGF1dG8mIGhlYWRlclBhcnNlciA9IHRyYWNrRGF0YS0+aGVhZGVyUGFyc2VyOwor
ICAgICAgICAgICAgaWYgKCFoZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIoYmxv
Y2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICAgICAgICAgIHJl
dHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworCisgICAgICAgICAgICAvLyBPbmx5
IHVwZGF0ZSB0aGUgZm9ybWF0IGRlc2NyaXB0aW9uIHdoZW4gdGhlIGhlYWRlciBpbmRpY2F0ZXMg
dGhhdCB0aGUgc2FtcGxlIGlzCisgICAgICAgICAgICAvLyBhIGtleS1mcmFtZSwgb3RoZXJ3aXNl
IGNvbG9yIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHBhcnNlZC4KKyAgICAgICAgICAgIGlmICho
ZWFkZXJQYXJzZXIua2V5KCkpIHsKKyAgICAgICAgICAgICAgICBpc0tleSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgdHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERl
c2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihoZWFkZXJQYXJzZXIsIHRyYWNrLnZpZGVvLnZh
bHVlKCkuY29sb3VyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh0cmFjay5j
b2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOCIpIHsKKyAgICAgICAgICAgIGF1dG8gaGVhZGVyID0g
cGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlv
bik7CisgICAgICAgICAgICBpZiAoIWhlYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gU2tp
cChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKworICAgICAgICAgICAgaWYgKGhlYWRlci0+a2V5
ZnJhbWUpIHsKKyAgICAgICAgICAgICAgICBpc0tleSA9IHRydWU7CisgICAgICAgICAgICAgICAg
dHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJv
bVZQOEhlYWRlcigqaGVhZGVyLCB0cmFjay52aWRlby52YWx1ZSgpLmNvbG91cik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KIAotICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgZm9ybWF0IGRl
c2NyaXB0aW9uIHdoZW4gdGhlIGhlYWRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgc2FtcGxlIGlzCi0g
ICAgICAgIC8vIGEga2V5LWZyYW1lLCBvdGhlcndpc2UgY29sb3IgaW5mb3JtYXRpb24gd2lsbCBu
b3QgYmUgcGFyc2VkLgotICAgICAgICBpZiAoaGVhZGVyUGFyc2VyLmtleSgpKQotICAgICAgICAg
ICAgdHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9u
RnJvbVZQOUhlYWRlclBhcnNlcihoZWFkZXJQYXJzZXIsIHRyYWNrLnZpZGVvLnZhbHVlKCkuY29s
b3VyKTsKICAgICAgICAgaWYgKCF0cmFja0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAKQEAgLTEyMDQsNyAr
MTM0Nyw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgICAgIHRyYWNrRGF0YS0+Y3Vy
cmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50Qmxv
Y2tCdWZmZXJQb3NpdGlvbiA9IDA7CiAKLSAgICAgICAgaWYgKCFoZWFkZXJQYXJzZXIua2V5KCkp
IHsKKyAgICAgICAgaWYgKCFpc0tleSkgewogICAgICAgICAgICAgYXV0byBhdHRhY2htZW50c0Fy
cmF5ID0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1ZmZl
ci5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoYXR0YWNobWVudHNBcnJheSk7CiAg
ICAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRzQXJyYXkpCkBAIC0xMjI5LDYgKzEzNzIsMTggQEAg
d2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVN
ZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKIH0KIAorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdXBwb3J0ZWRWaWRlb0NvZGVjcygpCit7CisgICAgc3RhdGljIGF1dG8gY29kZWNzID0g
bWFrZU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4oeyAiVl9WUDgiLCAiVl9WUDkiIH0p
OworICAgIHJldHVybiBjb2RlY3M7Cit9CisKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkQXVkaW9Db2RlY3MoKQoreworICAgIHN0YXRpYyBh
dXRvIGNvZGVjcyA9IG1ha2VOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+KHsgfSk7Cisg
ICAgcmV0dXJuIGNvZGVjczsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCAzYTg0NjQ1OWEzZWIzNTUzNjEy
MTI5NzZjOGVhZGU0NjNkNjNiMTk3Li43NzNmNmEwNjRjMzljNTdjM2U1MTE1YzJmNzA4ZjhiNzg0
MTEzMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC04MCw2ICs4MCw4IEBA
IHB1YmxpYzoKICAgICAgICAgSW52YWxpZERvY1R5cGUsCiAgICAgICAgIEludmFsaWRJbml0U2Vn
bWVudCwKICAgICAgICAgUmVjZWl2ZWRFYm1sSW5zaWRlU2VnbWVudCwKKyAgICAgICAgVW5zdXBw
b3J0ZWRWaWRlb0NvZGVjLAorICAgICAgICBVbnN1cHBvcnRlZEF1ZGlvQ29kZWMsCiAgICAgfTsK
IAogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKQEAgLTExMCw2ICsxMTIsOSBAQCBw
cml2YXRlOgogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KICNlbmRpZgogCisgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgc3VwcG9ydGVkVmlkZW9Db2RlY3MoKTsKKyAgICBzdGF0aWMgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBzdXBwb3J0ZWRBdWRpb0NvZGVjcygpOworCiAgICAgLy8gd2VibTo6Q2FsbGJhY2sK
ICAgICB3ZWJtOjpTdGF0dXMgT25FbGVtZW50QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFk
YXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CiAgICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEVu
ZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5o
CmluZGV4IDE0YzZmM2FlOTg0MzBhYWVjMmI4ZTgyMmIxZmI1MWI0NzU4YWE5MzAuLmIxN2RhNjM1
OTI1OWZjYWM2Mzg1M2UwZGYxYTVhYTRkYjMwZWUyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaApA
QCAtMzksOCArMzksMTAgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgc2V0T3ZlcnJpZGVW
UDlTY3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5nKGZsb2F0IHdpZHQKIFdFQkNPUkVfRVhQT1JU
IGV4dGVybiB2b2lkIHJlc2V0T3ZlcnJpZGVWUDlTY3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5n
KCk7CiAKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2Rl
cigpOworV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVy
KCk7CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdpc3RlclN1cHBsZW1lbnRhbFZQOURl
Y29kZXIoKTsKIGV4dGVybiBib29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpOworZXh0ZXJuIGJv
b2wgaXNWUDhEZWNvZGVyQXZhaWxhYmxlKCk7CiBleHRlcm4gYm9vbCBpc1ZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJik7CiBleHRl
cm4gYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYs
IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYsIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLm1tCmluZGV4IGM4MWU5N2FhM2U0NzdkN2M3Yjg5YzE2MTlhOWYzZmYy
ZjJiZWMwYTEuLmMwOGZjNjg0ODgzYjYwNjI2NmE1NjcwNDk2OWQzZGQ4OGE2MmM5MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGll
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLm1tCkBAIC0xMDAsNiArMTAwLDExIEBAIHZvaWQgcmVnaXN0ZXJXZWJL
aXRWUDlEZWNvZGVyKCkKICAgICBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlE
ZWNvZGVyKCk7CiB9CiAKK3ZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCkKK3sKKyAgICBM
aWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7Cit9CisKIHZvaWQg
cmVnaXN0ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCkKIHsKICAgICBpZiAoIVZpZGVvVG9vbGJv
eExpYnJhcnkodHJ1ZSkpCkBAIC0xMTYsNyArMTIxLDE0IEBAIGJvb2wgaXNWUDlEZWNvZGVyQXZh
aWxhYmxlKCkKICAgICByZXR1cm4gbm9FcnIgPT0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29k
ZXJJbnN0YW5jZShrQ01WaWRlb0NvZGVjVHlwZV9WUDksIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51
bGxwdHIsIG51bGxwdHIpOwogfQogCi1ib29sIGlzVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRT
dXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbikK
K2Jvb2wgaXNWUDhEZWNvZGVyQXZhaWxhYmxlKCkKK3sKKyAgICBpZiAoIVZpZGVvVG9vbGJveExp
YnJhcnkodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbm9FcnIgPT0g
VlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZSgndnAwOCcsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIG51bGxwdHIpOworfQorCitzdGF0aWMgYm9vbCBpc1ZQOUNvZGVj
Q29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYg
Y29kZWNDb25maWd1cmF0aW9uKQogewogICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2OCw2ICsxODAsMzcgQEAgYm9vbCBpc1ZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
JiBjb2RlY0NvbmYKICAgICByZXR1cm4gaGFzNGtTY3JlZW47CiB9CiAKK3N0YXRpYyBib29sIGlz
VlA4Q29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9u
UmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKCFpc1ZQOERlY29kZXJBdmFp
bGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29kZXIgb25s
eSBzdXBwb3J0cyBQcm9maWxlIDA7CisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWUDggZGVjb2RlciBvbmx5IHN1cHBv
cnRzIDQyMCBjaHJvbWEgc3Vic2FtcGxpbmcuCisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5j
aHJvbWFTdWJzYW1wbGluZyA+IFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJz
YW1wbGluZ180MjBfQ29sb2NhdGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBW
UDggZGVjb2RlciBvbmx5IHN1cHBvcnRzIDgtYml0IGNvbG9yOgorICAgIGlmIChjb2RlY0NvbmZp
Z3VyYXRpb24uYml0RGVwdGggPiA4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVk
KFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24pCit7CisgICAg
aWYgKGNvZGVjQ29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDgiIHx8IGNvZGVjQ29uZmln
dXJhdGlvbi5jb2RlY05hbWUgPT0gInZwOCIpCisgICAgICAgIHJldHVybiBpc1ZQOENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgaWYg
KGNvZGVjQ29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDkiIHx8IGNvZGVjQ29uZmlndXJh
dGlvbi5jb2RlY05hbWUgPT0gInZwOSIpCisgICAgICAgIHJldHVybiBpc1ZQOUNvZGVjQ29uZmln
dXJhdGlvblJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYgaW5m
bywgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7CiAgICAg
aWYgKCFpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJh
dGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IDIxOTg4N2ZhODFl
MmJhZGE5MzViMjI0YjFiNzBjN2UxMTk2OGVlNGEuLmNhMDA5MjFkYzQ2MWU4ZWJiZWJhZmMyMWRj
NTdiN2Q3M2JiZmMzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHdlYlJUQ0F2YWlsYWJsZSgp
OwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOworICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOwogICAgIHN0YXRpYyB2b2lkIHNldEgy
NjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEFj
dGl2ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNw
cAppbmRleCA0YTMyZDFmZGE3ODgzYThjZGFlMWEwZTM4OGIyNTI2YThjMzQzNTBlLi5lNjhmOTE2
MGVmMTg0YmI4MzI0ZmI5OGUyYTMwMzkzYWVmMmFkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwCkBAIC0zNCw2ICszNCw3IEBAIEFMTE9XX1VOVVNF
RF9QQVJBTUVURVJTX0JFR0lOCiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVj
b2Rlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4KIEFM
TE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlE
ZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvZGFy
d2luL1dlYWtMaW5raW5nLmg+CkBAIC05OSw2ICsxMDAsMTMgQEAgdm9pZCBMaWJXZWJSVENQcm92
aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCkKICAgICBpZiAod2ViUlRDQXZhaWxhYmxl
KCkpCiAgICAgICAgIHdlYnJ0Yzo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCk7CiB9CisKK3Zv
aWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpCit7CisgICAg
aWYgKHdlYlJUQ0F2YWlsYWJsZSgpKQorICAgICAgICB3ZWJydGM6OnJlZ2lzdGVyV2ViS2l0VlA4
RGVjb2RlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0Uo
TElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ4Yjc0ZWFlODAxYzYyNGQxMjE3MzEwOTQ5MDgw
ZWRiYTYzNDA2OTAuLjVjNGNhMjVkNGRhYTdkNTgxMzExNzBjOTcyMDNmNDA2ZWJiMWRiYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTUzOCw5ICs1MzgsOSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnVwZGF0ZUNhcHR1cmVBY2Nlc3MoYm9vbCBhbGxvd0F1ZGlvQ2FwdHVyZSwgYm9vbAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
bmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxk
RW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiB7Ci0gICAg
bV9ncHVQcm9jZXNzLT5lbmFibGVWUDlEZWNvZGVycyhzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBz
aG91bGRFbmFibGVWUDlTV0RlY29kZXIpOworICAgIG1fZ3B1UHJvY2Vzcy0+ZW5hYmxlVlA5RGVj
b2RlcnMoc2hvdWxkRW5hYmxlVlA4RGVjb2Rlciwgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwgc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBhMjhjOGZm
NWY2YzA2NGJlZWIzYjg2YzZlYTU0YzNlNDdiNGFmOWRmLi40ZjJkNDRmZmI1NTBhYTZkZTgxMGI5
YmY5NTI2MjA3ZDU3OWRiNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNh
dGlvbiwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAKICNpZiBFTkFCTEUoVlA5KQotICAg
IHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29s
IHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CisgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVycyhi
b29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwg
Ym9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOwogI2VuZGlmCiAKICNpZiBVU0UoQVVESU9f
U0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOWQ1NGUxNjQ1OTViMGEz
NjFkZmU0Yzc1YmZmNDAxOGE4NTc1OWM4Zi4uOGZjMGVmYWM5MzIxODIyMmJiMGJjN2MyMWFhYjkx
OWU1M2E5NzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM4LDcgKzM4LDcg
QEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVz
c2FnZSB7CiAgICAgRW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKICNlbmRpZgogI2lmIEVOQUJM
RShWUDkpCi0gICAgRW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVy
LCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKKyAgICBFbmFibGVWUDlEZWNvZGVycyhi
b29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwg
Ym9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IGUzZDU2YTg3YzdkZGVhZWYwMGE2ZDE3MjA4
ZGI4YWUxZTIyOTEwZGIuLmMzYTM2MTlmNjdlYWI0YjRkZTIzZTEwZmQ0Yzk4MGI3YTQ1OWZiNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTI5MiwxMiArMjky
LDE4IEBAIFdvcmtRdWV1ZSYgR1BVUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUXVldWUoKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotdm9pZCBHUFVQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVy
cyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyKQordm9pZCBHUFVQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJs
ZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFi
bGVWUDlTV0RlY29kZXIpCiB7CiAgICAgaWYgKHNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYgIW1f
ZW5hYmxlVlA5RGVjb2RlcikgewogICAgICAgICBtX2VuYWJsZVZQOURlY29kZXIgPSB0cnVlOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBXZWJDb3JlOjpyZWdpc3RlclN1cHBsZW1lbnRh
bFZQOURlY29kZXIoKTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoc2hvdWxkRW5hYmxlVlA4RGVj
b2RlciAmJiAhbV9lbmFibGVWUDhEZWNvZGVyKSB7CisgICAgICAgIG1fZW5hYmxlVlA4RGVjb2Rl
ciA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIFdlYkNvcmU6OnJlZ2lzdGVy
V2ViS2l0VlA4RGVjb2RlcigpOwogI2VuZGlmCiAgICAgfQogICAgIGlmIChzaG91bGRFbmFibGVW
UDlTV0RlY29kZXIgJiYgIW1fZW5hYmxlVlA5U1dEZWNvZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3MuaAppbmRleCBiNmVhODE4M2NlNjUxZTQ4ZDExN2UyNDdiNTdmYjA1ODc5
MWMyNjlkLi5iZWE1NjAzYzM2NDhiNzc1YWZhZWUwYjkwMDNiOTJlMjA2Njc4NGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9v
bCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7
CisgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIs
IGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29k
ZXIpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNDgsNiArMTQ4LDcgQEAgcHJpdmF0ZToKICAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI+
IG1fYXVkaW9TZXNzaW9uTWFuYWdlcjsKICNlbmRpZgogI2lmIEVOQUJMRShWUDkpCisgICAgYm9v
bCBtX2VuYWJsZVZQOERlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlEZWNv
ZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCAzOGNhNjg5MjJlYWFjYWNjNmYwYTE1NTQzYmRhNmM5MDAxNDhkYmZh
Li42M2E2NmY3N2UyMWJkNDI4N2FiOWU5MDNlOWU4MjE2OTIwNWZlODhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTYx
LDYgKzE2MSw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZW5jb2RlciA8
PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKICNlbmRpZgorICAgIGVuY29kZXIgPDwg
c2hvdWxkRW5hYmxlVlA4RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOURl
Y29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXI7CiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTIwLDYgKzUyMSw5IEBAIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IGM4NzhlNmQ5ODFmYTk0NDQ5N2YwMjdmYWEzMjEwOTdmMmQ2OWJhYzkuLmEw
OGQ4NGRmOGFhMTkyYjdkNDM0ZDIwNjgzZmE3YjhhODlkMWI2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIzMiw2ICsyMzIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKFdFQkdM
KQogICAgIGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogI2Vu
ZGlmCisgICAgYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29s
IHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxl
VlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
LmNwcAppbmRleCBjY2QzM2NjMDJhNzIyNDg4YWVlMTJiMzI1ZTRjY2Q5M2ZiMWUwN2ViLi4xMGE3
M2Q1MzJlODk4ZDQ5NzExZTUzYjY0MmViOTk3ZmFlNTlmM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKQEAgLTI3OCw2
ICsyNzgsMTUgQEAgYm9vbCBkZWZhdWx0V2ViWFJFbmFibGVkKCkKIAogI2lmIEVOQUJMRShWUDkp
CiAKK2Jvb2wgZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCkKK3sKKyNpZiBIQVZFKFNZU1RFTV9G
RUFUVVJFX0ZMQUdTKQorICAgIHJldHVybiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCgidnA4X2RlY29k
ZXIiKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIGRlZmF1bHRWUDlE
ZWNvZGVyRW5hYmxlZCgpCiB7CiAjaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5k
ZXggZDA5ZDQzOTM5MzcwMDRkM2UxMGI5Yjk2NmY4ZTMwNmIwYWY4OTU4Yy4uMmZjN2Q4ZWQxMjU0
ZDM0Njc1ZDFlMmU4ZjlhYTAwZGY1MDA1M2I2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBi
b29sIGRlZmF1bHRXZWJYUkVuYWJsZWQoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKK2Jv
b2wgZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCk7CiBib29sIGRlZmF1bHRWUDlEZWNvZGVyRW5h
YmxlZCgpOwogYm9vbCBkZWZhdWx0VlA5U1dEZWNvZGVyRW5hYmxlZE9uQmF0dGVyeSgpOwogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBiNWEzY2M3NzEyNjcwNTUzZTVhMjgzYWMzYThiYTQzZmQ2ZDc1YTI3Li41MDhk
NGNmOTg0MWVjNDg4NmUxODg1Mjg0NWU1MGQ2YmJjYmFhZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc5NTMsNiArNzk1Myw3IEBAIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jCiAKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgPSBw
cmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExB
VEZPUk0oQ09DT0EpCisgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyID0gcHJl
ZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYmICgh
V2ViQ29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVy
RW5hYmxlZE9uQmF0dGVyeSgpKTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVy
ZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0
aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAx
MWZhNzBmMmNlOWI0MzM1MWU1M2I5YTFmM2Y3M2ZjYTUyOGQ3NGEyLi5hMjkzMDdmNzBiNmVkZjdm
ODQ5MzZlZGE2ZGJjZmI4ZGIzYTZkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTg1LDEyICsxODUsMTMg
QEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUMKIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnVw
ZGF0ZVBhcmFtZXRlcnMoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKICNpZiBFTkFCTEUoVlA5KQotICAgIGlmIChtX2VuYWJsZVZQOURlY29kZXIgPT0gcGFy
YW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyICYmIG1fZW5hYmxlVlA5U1dEZWNvZGVyID09
IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQorICAgIGlmIChtX2VuYWJsZVZQ
OERlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyICYmIG1fZW5hYmxl
VlA5RGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYgbV9lbmFi
bGVWUDlTV0RlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIG1fZW5hYmxlVlA5RGVjb2RlciA9IHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA4RGVjb2RlcjsKICAgICBtX2VuYWJsZVZQOURlY29kZXIgPSBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgbV9lbmFibGVWUDlTV0RlY29kZXIgPSBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RW5hYmxlVlA5RGVjb2RlcnMocGFy
YW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyLCBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQ
OVNXRGVjb2RlciksIHsgfSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQOURlY29kZXJzKHBhcmFtZXRlcnMuc2hvdWxk
RW5hYmxlVlA4RGVjb2RlciwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyLCBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciksIHsgfSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDJhMDRjNzRmN2ZiNjM3NzFiYWRmYjU2MzZkMzc1Njg1OGNiMzE3YTAuLmZmOTkyNjVh
ZDZiZDIyZDMwZGZhNWY3MTM1NTMwNDY0NjU2N2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTgyLDYgKzgyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVycyhjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAKICNpZiBFTkFCTEUoVlA5KQorICAgIGJvb2wgaXNWUDhEZWNvZGVy
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA4RGVjb2RlcjsgfQogICAgIGJvb2wg
aXNWUDlEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5RGVjb2Rlcjsg
fQogICAgIGJvb2wgaXNWUFNXRGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZVZQOVNXRGVjb2RlcjsgfQogI2VuZGlmCkBAIC0xMjMsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI+IG1fYXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoVlA5KQorICAgIGJvb2wgbV9lbmFi
bGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5RGVjb2RlciB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDYx
ODc5OTMwY2Y3YTg5NjhjODc4OTQyYzZjNTU5MDJkMGU4OTc0Yy4uM2QxNTZlYWRjNTc2MDFmNDVl
MTk3MmQ1ZDVlZjRlZDQ5Njg1ODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgxOCw2ICs4MTgsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikKICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVlA5RGVjb2RlcigpOwogCisgICAgaWYgKHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlcikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5hYmxlVlA4U1dEZWNvZGVyKCk7CisKICAgICBpZiAocGFyYW1ldGVycy5zaG91
bGRFbmFibGVWUDlTV0RlY29kZXIpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
YWJsZVZQOVNXRGVjb2RlcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggNGNhMDk3YTBiYjg1MTM0MjgwZWY0MmRkYWY2ZTg5OWYwMTBhYWY5Mi4u
NzhiNDA5MzAyMWQ4MzFiMTRhMjE0NjY4ZDE5OTY4YTk4MTViMWZjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk4Myw2ICsxOTgzLDE3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcigpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNz
OjplbmFibGVWUDhTV0RlY29kZXIoKQoreworICAgIGlmIChtX3ZwOVNXRGVjb2RlckVuYWJsZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fdnA4U1dEZWNvZGVyRW5hYmxlZCA9IHRydWU7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVy
KCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzOjplbmFibGVWUDlTV0RlY29kZXIoKQog
ewogICAgIGlmIChtX3ZwOVNXRGVjb2RlckVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCBmZGI1NmQ3OWRmMjFmZThjYTEyZTg5MTZlOTc1MWVkOTYyOGIyMTIx
Li4zMWFiZDRmNThhOWE4M2Y2NzQ4MmVkMmQ3NmIwNDA5ZDFjOGJhYWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM1OSw2ICszNTksNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoVlA5KQogICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcigpOworICAgIHZvaWQgZW5h
YmxlVlA4U1dEZWNvZGVyKCk7CiAgICAgdm9pZCBlbmFibGVWUDlTV0RlY29kZXIoKTsKICNlbmRp
ZgogCkBAIC03MDYsNiArNzA3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWUDkpCiAgICAg
Ym9vbCBtX3ZwOURlY29kZXJFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdnA4U1dEZWNv
ZGVyRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ZwOVNXRGVjb2RlckVuYWJsZWQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNGIxY2NjMzFkNjhmMDMwNjg5MmI5ZTg3N2UxOGIw
YzYzZDAyZWE1Li5jNGNmMzM1OTJiOTVkNGQ1MmU4NWI3Mzg5Yjc5MmIyYWY4NjgwYjcyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBzdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1iaWdzdXIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRk
c291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtYmlnc3Vy
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWludmFsaWQtY29kZWMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTExLTA5ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE5vbi1mdWxsc2NyZWVuIHBhZ2UgY29udGVu
dHMgdmlzaWJsZSB3aGVuIHJvdGF0aW5nIGRldmljZSBkdXJpbmcgZWxlbWVudCBmdWxsc2NyZWVu
IHByZXNlbnRhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1iaWdz
dXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy1iaWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVk
aWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTAzMzM5
NmRkMGMxNWFiNTUyMmE3YTE3YmE3NDk3NDM3ZDA5Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIGluICdlbmRl
ZCcgc3RhdGUuCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBlbXB0eSB0eXBlCitQ
QVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBudWxsCitQQVNTIFRlc3QgYWRkU291cmNl
QnVmZmVyKCkgd2l0aCB1bnN1cHBvcnRlZCB0eXBlCitGQUlMIFRlc3QgYWRkU291cmNlQnVmZmVy
KCkgd2l0aCBWb3JiaXMgYW5kIFZQOCBhc3NlcnRfdHJ1ZTogdmlkZW8vd2VibTtjb2RlY3M9InZw
OCx2b3JiaXMiIGlzIHN1cHBvcnRlZCBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBUZXN0
IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggVm9yYmlzIGFuZCBWUDggaW4gc2VwYXJhdGUgU291cmNl
QnVmZmVycyBhc3NlcnRfdHJ1ZTogYXVkaW8vd2VibTtjb2RlY3M9InZvcmJpcyIgaXMgc3VwcG9y
dGVkIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkg
dmlkZW8gb25seQorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIGF1ZGlvIG9ubHkKK1BBU1Mg
VGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIEFBQyBhbmQgSC4yNjQKK1BBU1MgVGVzdCBhZGRT
b3VyY2VCdWZmZXIoKSB3aXRoIEFBQyBhbmQgSC4yNjQgaW4gc2VwYXJhdGUgU291cmNlQnVmZmVy
cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWludmFsaWQt
Y29kZWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pbnZh
bGlkLWNvZGVjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWUyZDU4MWZmOTA2ODY2ZTljZWE3
YWM5YmM2MjM1YjIxZjdkODdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1pbnZhbGlkLWNvZGVjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
KworUEFTUyBUZXN0IGFuIE1QNCB3aXRoIGFuIGludmFsaWQgY29kZWMgcmVzdWx0cyBpbiBhbiBl
cnJvci4KK1BBU1MgVGVzdCBhIFdlYk0gd2l0aCBhbiBpbnZhbGlkIGNvZGVjIHJlc3VsdHMgaW4g
YW4gZXJyb3IuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYmVmNTAzMDY0YTk4YWQwNjYyYTgxZTM5MDEwYTlkNTAyNjQzZGZmMS4uYmRhZTUxZmQ4NWU3
ZTVhZjZjYTEzODE4MzEwNTY3NWYwZmUwZDM1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg1OCw4ICs4NTgsOCBAQCB3ZWJraXQub3JnL2IvMTYxNzI1
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWVycgogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pcy10eXBlLXN1cHBvcnRlZC5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXJlbW92ZXNvdXJjZWJ1ZmZlci5odG1sIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLXNlZWstYmV5b25kLWR1cmF0aW9uLmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vla2FibGUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzE2MTcyNSBbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlZWstZHVyaW5nLXBlbmRpbmctc2Vlay5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTYxNzI1IFsgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vla2Fi
bGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZXF1ZW5jZW1vZGUtYXBwZW5k
LWJ1ZmZlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZlci1t
b2RlLXRpbWVzdGFtcHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2Vi
dWZmZXItbW9kZS5odG1sIFsgU2tpcCBdCkBAIC04NzAsOSArODcwLDkgQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5n
ZS13ZWJtLWEtYmkKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1hdi1hdWRpby1iaXRyYXRlLmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1hdi1mcmFtZXNpemUuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29u
ZmlnLWNoYW5nZS13ZWJtLWF2LXZpZGVvLWJpdHJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNo
YW5nZS13ZWJtLXYtYml0cmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1m
cmFtZXJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtZnJhbWVzaXplLmh0
bWwgWyBTa2lwIF0KK1sgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtYml0
cmF0ZS5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2Vi
bS12LWZyYW1lcmF0ZS5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1j
aGFuZ2Utd2VibS12LWZyYW1lc2l6ZS5odG1sIFsgU2tpcCBdCiAKICMgU2tpcHBlZCBpbiBXM0Mg
V2ViIFBsYXRmb3JtIFRlc3QgbWFuaWZlc3QKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWdldHZpZGVvcGxheWJhY2txdWFsaXR5Lmh0bWwg
WyBTa2lwIF0K
</data>
<flag name="commit-queue"
          id="433222"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415889</attachid>
            <date>2020-12-10 09:48:23 -0800</date>
            <delta_ts>2020-12-10 10:23:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219732-20201210094822.patch</filename>
            <type>text/plain</type>
            <size>92245</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzZTQ1OWUwMzQ4NDY4MzBiOWQ2MzgxYWJiOGZlYTQ5NjhhMzU2ZThiLi41MDZk
ODc5ZjkwOGFhYWY3YzUzMDc4NTJjMzM4M2QyOThjMDA1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJL
aXREZWNvZGVyUmVjZWl2ZXI6OldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAgICAgICh3ZWJy
dGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6fldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAg
ICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4
ZWxCdWZmZXJQb29sKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpk
ZWNvZGVyRmFpbGVkKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpE
ZWNvZGVkKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmg6IEFkZGVkCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlV2ViS2l0VlA4RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OmludmFsaWRhdGVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6ZmluYWxpemVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y29weVZQOERlY29kZXJE
ZWJ1Z0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6d2ViS2l0VlA4RGVjb2RlckZyb21W
VERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOERlY29kZXJTZXNzaW9uKToKKyAg
ICAgICAgKHdlYnJ0Yzo6ZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jayk6
CisgICAgICAgICh3ZWJydGM6OmRlY29kZVZQOERlY29kZXJGcmFtZSk6CisgICAgICAgICogU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2Vi
cnRjOjpzdGFydFZQOURlY29kZXJTZXNzaW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXRWUDlEZWNvZGVy
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2Rl
ckZhaWxlZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIElDRSBkb2VzIG5vdCByZXNvbHZlIGZvciBgdHVybnNgIHJlbGF5
IGNhbmRpZGF0ZXMgcm9vdGVkIGluIExldHNFbmNyeXB0IENBCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEzMGU1N2I3ZGZiMmU0
NzQ1NTVlMTE3YjdhODI2ZjM3ZWFjMWVlMGMuLmM0YTc2NmI2MDExNjc3MDNjY2RhNTM0YzUwYTg3
ZTI2YWI2MjUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFs
IFZQOCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bDoKKwogMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2F0ZSBWUDkgZXhwb3N1cmUgaW4gTWVkaWFDYXBhYmlsaXRpZXMgb24gVlA5RGVjb2Rl
ckVuYWJsZWQgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDViOGFlOWU1MjFiNmU1YzU2YmFlYThk
ODM5Y2ZkMGQyNmRmNTY5OWUuLjJlN2EwYzFjMjVjZDM4ZGQ4ODQ0NTY2YjkzYjYzYWEwMWI5MjZk
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50YWwg
VlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ld2x5IHBhc3NpbmcgdGVzdHM6CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXIuaHRt
bAorICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwKKyAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LXNlZWthYmxlLmh0bWwKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUu
aHRtbCAKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lcmF0ZS5odG1sCisg
ICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbAorICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtaW52YWxpZC1jb2RlYy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRl
bnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1hdERlc2NyaXB0
aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcik6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZVZQOEZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1h
dERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRW
UDhEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA4RGVjb2RlckF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1ZQOUNvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6
CisgICAgICAgIChXZWJDb3JlOjppc1ZQOENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjppc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9y
dGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKToKKwogMjAyMC0xMS0wNCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tZnVsbHNjcmVlbiBwYWdlIGNv
bnRlbnRzIHZpc2libGUgd2hlbiByb3RhdGluZyBkZXZpY2UgZHVyaW5nIGVsZW1lbnQgZnVsbHNj
cmVlbiBwcmVzZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQyMDQyMTcwYjhjYmUyYmFlNzliY2E1ODU4
MWMyYjZkNzA2YjdjYzAuLjJjMGUzZDA4NjA2NDg2YWRjMzNlNDY4OGQyNjBmMTUwZWQ0ZDZhNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6ZW5hYmxlVlA5RGVjb2RlcnMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZh
dWx0VlA4RGVjb2RlckVuYWJsZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnVwZGF0ZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjppc1ZQOERlY29kZXJFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlVlA4
U1dEZWNvZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAyMC0x
Mi0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBF
bnRlcmluZyBmdWxsc2NyZWVuIGZyb20gbGVzcy10aGFuLWZ1bGxzY3JlZW4gV0tXZWJWaWV3IGRv
ZXMgbm90IGxheW91dCBjb3JyZWN0bHkgdXBvbiBleGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAK
aW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBh
ZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4
cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0Vi
CiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1
RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJL
aXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxs
b3dlZEViCitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2Vi
cnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVy
RnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1
ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFt
ZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZTI4MDU4
ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIx
Y2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAt
MTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pO
NndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlX
ZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5j
b2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0
TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEVi
CitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRy
ZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZy
YW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1t
TlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBf
X0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5
NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMy
ZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9f
Wk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJL
aXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42
d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVn
aXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURl
Y29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0Zy
YW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVF
RQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1ZUVmlkZW9EZWNvZGVyU1BJLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1ZUVmlkZW9EZWNvZGVyU1BJLmgKaW5kZXggZjQ4ODkwNWVlNDcx
ZGRkYTRkNGQ5NTA1NTBkNzc4MmU0ODdhMTBhMC4uODkxMjU4YmY4MTlkOTdhN2I4Yzc3ZTI2M2Nm
NTM5ODk2NjNiMzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9WVFZpZGVvRGVjb2RlclNQSS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVlRWaWRlb0RlY29k
ZXJTUEkuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFZp
ZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KKwogI2lmIGRlZmluZWQgX19oYXNfaW5jbHVkZSAm
JiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4pCiAjaW5jbHVkZSA8Vmlk
ZW9Ub29sYm94L1ZUVmlkZW9EZWNvZGVyLmg+CiAjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZUVmlk
ZW9EZWNvZGVyUmVnaXN0cmF0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYwZTViYzUzNjA4ZDM4NzNh
ZTc1MWUxY2Q1Nzg2ZjczZThhZjljZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2Vp
dmVyLmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJLaXRW
UDlEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCisj
aW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworV2Vi
S2l0RGVjb2RlclJlY2VpdmVyOjpXZWJLaXREZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJT
ZXNzaW9uIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViS2l0
RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0RGVjb2RlclJlY2VpdmVyKCkKK3sKKyAgICBpZiAobV9w
aXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Cit9
CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJvbUZvcm1hdERlc2Ny
aXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAg
Ly8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBt
dXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJpLXBs
YW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0
byB0aGUKKyAgICAvLyBkZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3du
IGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNlIHBv
c3QtZGVjb2RlLgorICAgIG1faXNGdWxsUmFuZ2UgPSBmYWxzZTsKKyAgICBtX2lzMTBiaXQgPSBm
YWxzZTsKKworICAgIGRvIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNj
cmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIWV4
dGVuc2lvbnMpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBDRlR5cGVSZWYgZXh0ZW5z
aW9uQXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNj
cmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAgICAg
ICAgaWYgKCFleHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0g
Q0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBh
dXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGND
IikpKTsKKyAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNv
bmZpZ3VyYXRpb25SZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExl
bmd0aChjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNv
cmRTaXplIDwgMTIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsK
KyAgICAgICAgYXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVj
b3JkRGF0YSArIDYpOworCisgICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0
KSA9PSAxMCkKKyAgICAgICAgICAgIG1faXMxMGJpdCA9IHRydWU7CisKKyAgICAgICAgaWYgKGJp
dERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAweDEpCisgICAgICAgICAgICBtX2lzRnVsbFJhbmdlID0g
dHJ1ZTsKKyAgICB9IHdoaWxlIChmYWxzZSk7Cit9CisKK0NWUGl4ZWxCdWZmZXJQb29sUmVmIFdl
YktpdERlY29kZXJSZWNlaXZlcjo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldp
ZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCkKK3sKKyAgICBpZiAo
bV9waXhlbEJ1ZmZlclBvb2wgJiYgbV9waXhlbEJ1ZmZlcldpZHRoID09IHBpeGVsQnVmZmVyV2lk
dGggJiYgbV9waXhlbEJ1ZmZlckhlaWdodCA9PSBwaXhlbEJ1ZmZlckhlaWdodCAmJiBtX2lzMTBi
aXQgPT0gaXMxMGJpdCkKKyAgICAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sOworCisgICAg
T1NUeXBlIHBpeGVsRm9ybWF0OworICAgIGlmIChpczEwYml0KQorICAgICAgICBwaXhlbEZvcm1h
dCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5h
ckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9S
YW5nZTsKKyAgICBlbHNlCisgICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtD
VlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZv
cm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKKworICAgIGF1dG8gY3JlYXRl
UGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhlbEZvcm1hdCwgaW50MzJfdCBi
b3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0byBjcmVhdGVOdW1iZXIgPSBbXSAoaW50MzJfdCBm
b3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAgICAgICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmZm9ybWF0KTsKKyAg
ICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9IENGQXJyYXlDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAg
ICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihwaXhlbEZvcm1hdCk7CisgICAg
ICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywgZm9ybWF0TnVtYmVyKTsKKyAg
ICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7CisKKyAgICAgICAgYXV0byBib3JkZXJQaXhl
bHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7CisKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5c1td
ID0geworICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCisgICAg
ICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVmdEtleSwKKyAgICAgICAgICAg
IGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwKKyAgICAgICAgICAgIGtDVlBp
eGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZl
ckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAorICAgICAgICB9OworICAgICAgICBjb25zdCB2b2lk
KiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAgIGNmUGl4ZWxGb3JtYXRzLAorICAgICAgICAgICAg
Ym9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAg
ICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUs
CisgICAgICAgIH07CisgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcyk7CisgICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNWYWx1ZSk7CisgICAgICAgIENG
UmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAg
IH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9IGNyZWF0ZVBpeGVsRm9ybWF0
QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOworICAgIFZURGVjb2RlclNlc3Npb25TZXRQaXhl
bEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworICAg
IENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworCisgICAgaWYgKG1fcGl4ZWxCdWZm
ZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7CisgICAgICAg
IG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBtX3BpeGVsQnVmZmVy
UG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsKKyAg
ICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmV0YWluKG1fcGl4ZWxCdWZmZXJQ
b29sKTsKKworICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHBpeGVsQnVmZmVyV2lkdGg7CisgICAg
bV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVsQnVmZmVySGVpZ2h0OworICAgIG1faXMxMGJpdCA9
IGlzMTBiaXQ7CisKKyAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Cit9CisKK09TU3RhdHVz
IFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCit7CisgICAg
T1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2RlckJhZERhdGFFcnI7CisgICAgaWYgKGVy
cm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQpCisgICAgICAgIHZ0RXJyb3IgPSBu
b0VycjsKKyAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfVU5JTklUSUFM
SVpFRCkKKyAgICAgICAgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2Rlck1hbGZ1bmN0aW9uRXJyOwor
ICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19NRU1PUlkpCisgICAgICAg
IHZ0RXJyb3IgPSBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOworICAgIFZURGVjb2RlclNlc3Npb25F
bWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHZ0RXJyb3IsIDAsIG51
bGxwdHIpOworICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKKworICAgIFJUQ19MT0coTFNf
RVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVjb2RlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVy
cm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVycm9yOworICAgIHJldHVybiB2dEVycm9yOworfQor
CitpbnQzMl90IFdlYktpdERlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFt
ZSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUs
IFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4g
Q1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+
cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7
CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7Cisg
ICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLCAmcGl4ZWxCdWZmZXIpID09IGtDVlJldHVyblN1
Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0pOworCisgICAgVlREZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUo
bV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwgcGl4ZWxCdWZmZXIgPyBub0VyciA6IC0xLCAwLCBw
aXhlbEJ1ZmZlcik7CisgICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOworICAgIGlmIChwaXhl
bEJ1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsKKyAgICByZXR1cm4gMDsK
K30KKworaW50MzJfdCBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYg
ZnJhbWUsIGludDY0X3QpCit7CisgICAgRGVjb2RlZChmcmFtZSk7CisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1l
LCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiwgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4pCit7Cisg
ICAgRGVjb2RlZChmcmFtZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVy
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNTQ1OTdlM2I0Y2FjMGI5N2Yx
YTM3MDIyOTA4YjkyMmZlNGQ5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZl
ci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9fZGVjb2Rlci5oIgorI2luY2x1ZGUgIlZUVmlkZW9E
ZWNvZGVyU1BJLmgiCisjaW5jbHVkZSAiV2ViS2l0VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSB3
ZWJydGMgeworCitjbGFzcyBXZWJLaXREZWNvZGVyUmVjZWl2ZXIgZmluYWwgOiBwdWJsaWMgRGVj
b2RlZEltYWdlQ2FsbGJhY2sgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYktpdERlY29kZXJS
ZWNlaXZlcihWVFZpZGVvRGVjb2RlclNlc3Npb24pOworICAgIH5XZWJLaXREZWNvZGVyUmVjZWl2
ZXIoKTsKKworICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgY3VycmVudEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KKyAgICB2b2lkIHNldEN1cnJlbnRGcmFtZShWVFZpZGVv
RGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSkgeyBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFt
ZTsgfQorICAgIE9TU3RhdHVzIGRlY29kZXJGYWlsZWQoaW50IGVycm9yKTsKKworICAgIHZvaWQg
aW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmKTsK
KworcHJpdmF0ZToKKyAgICBpbnQzMl90IERlY29kZWQoVmlkZW9GcmFtZSYpIGZpbmFsOworICAg
IGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJiwgaW50NjRfdCBkZWNvZGVfdGltZV9tcykgZmlu
YWw7CisgICAgdm9pZCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90
PiBkZWNvZGVfdGltZV9tcywgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4gcXApIGZpbmFsOworCisg
ICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZl
cldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCk7CisKKyAgICBW
VFZpZGVvRGVjb2RlclNlc3Npb24gbV9zZXNzaW9uIHsgbnVsbHB0ciB9OworICAgIFZUVmlkZW9E
ZWNvZGVyRnJhbWUgbV9jdXJyZW50RnJhbWUgeyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fcGl4
ZWxCdWZmZXJXaWR0aCB7IDAgfTsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlckhlaWdodCB7IDAg
fTsKKyAgICBib29sIG1faXMxMGJpdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzRnVsbFJhbmdl
IHsgZmFsc2UgfTsKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBtX3BpeGVsQnVmZmVyUG9vbCB7
IG51bGxwdHIgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQ
OERlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNzVmMjgxNWUyY2Y0MGY0MDU5NzhkMWYxMzMzZjBh
ZGZjNzNjMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuY3BwCkBAIC0wLDAgKzEs
MjIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYktpdFZQOERlY29kZXIuaCIKKworI2lu
Y2x1ZGUgIldlYktpdERlY29kZXJSZWNlaXZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9f
Y29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jh
c2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZv
LmgiCisKKyNpbmNsdWRlICJDTUJhc2VPYmplY3RTUEkuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7
CisKK3N0YXRpYyBPU1N0YXR1cyBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKEZpZ1ZpZGVvQ29kZWNU
eXBlLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIFZUVmlkZW9EZWNvZGVyUmVmKik7Cit2b2lk
IHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpCit7CisgICAgVlRSZWdpc3RlclZpZGVvRGVjb2Rl
cigndnAwOCcsIGNyZWF0ZVdlYktpdFZQOERlY29kZXIpOworfQorCit0eXBlZGVmIHN0cnVjdCB7
CisgICAgc3RkOjp1bmlxdWVfcHRyPExpYnZweFZwOERlY29kZXI+IG1faW5zdGFuY2U7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYktpdERlY29kZXJSZWNlaXZlcj4gbV9yZWNlaXZlcjsKK30gV2Vi
S2l0VlA4RGVjb2RlcjsKKworc3RhdGljIE9TU3RhdHVzIGludmFsaWRhdGVWUDhEZWNvZGVyKENN
QmFzZU9iamVjdFJlZik7CitzdGF0aWMgdm9pZCBmaW5hbGl6ZVZQOERlY29kZXIoQ01CYXNlT2Jq
ZWN0UmVmKTsKK3N0YXRpYyBDRlN0cmluZ1JlZiBjb3B5VlA4RGVjb2RlckRlYnVnRGVzY3JpcHRp
b24oQ01CYXNlT2JqZWN0UmVmKTsKKworc3RhdGljIGNvbnN0IENNQmFzZUNsYXNzIFdlYktpdFZQ
OERlY29kZXJfQmFzZUNsYXNzID0KK3sKKyAgICBrQ01CYXNlT2JqZWN0X0NsYXNzVmVyc2lvbl8x
LAorICAgIHNpemVvZihXZWJLaXRWUDhEZWNvZGVyKSwKKyAgICBudWxscHRyLCAvLyBDb21wYXJp
c29uIGJ5IHBvaW50ZXIgZXF1YWxpdHkKKyAgICBpbnZhbGlkYXRlVlA4RGVjb2RlciwKKyAgICBm
aW5hbGl6ZVZQOERlY29kZXIsCisgICAgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9uLAor
ICAgIG51bGxwdHIsIC8vIENvcHlQcm9wZXJ0eQorICAgIG51bGxwdHIsIC8vIFNldFByb3BlcnR5
CisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyCit9OworCitzdGF0aWMgT1NTdGF0dXMgc3RhcnRW
UDhEZWNvZGVyU2Vzc2lvbihWVFZpZGVvRGVjb2RlclJlZiwgVlRWaWRlb0RlY29kZXJTZXNzaW9u
LCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYpOworc3RhdGljIE9TU3RhdHVzIGRlY29kZVZQ
OERlY29kZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiwgVlRWaWRlb0RlY29kZXJGcmFtZSwgQ01T
YW1wbGVCdWZmZXJSZWYsIFZURGVjb2RlRnJhbWVGbGFncywgVlREZWNvZGVJbmZvRmxhZ3MqKTsK
Kworc3RhdGljIGNvbnN0IFZUVmlkZW9EZWNvZGVyQ2xhc3MgV2ViS2l0VlA4RGVjb2Rlcl9WaWRl
b0RlY29kZXJDbGFzcyA9Cit7CisgICAga1ZUVmlkZW9EZWNvZGVyX0NsYXNzVmVyc2lvbl8xLAor
ICAgIHN0YXJ0VlA4RGVjb2RlclNlc3Npb24sCisgICAgZGVjb2RlVlA4RGVjb2RlckZyYW1lLAor
ICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rpb25fQ29weVN1cHBvcnRlZFByb3Bl
cnR5RGljdGlvbmFyeSwKKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX1Nl
dFByb3BlcnRpZXMKKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0NvcHlT
ZXJpYWxpemFibGVQcm9wZXJ0aWVzCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5j
dGlvbl9DYW5BY2NlcHRGb3JtYXREZXNjcmlwdGlvbgorICAgIG51bGxwdHIsIC8vIFZUVmlkZW9E
ZWNvZGVyRnVuY3Rpb25fRmluaXNoRGVsYXllZEZyYW1lcworICAgIG51bGxwdHIsIC8vIFZUVmlk
ZW9EZWNvZGVyRnVuY3Rpb25fU3RhcnRUaWxlU2Vzc2lvbgorICAgIG51bGxwdHIsIC8vIFZUVmlk
ZW9EZWNvZGVyRnVuY3Rpb25fRGVjb2RlVGlsZQorICAgIG51bGxwdHIgLy8gVlRWaWRlb0RlY29k
ZXJGdW5jdGlvbl9GaW5pc2hEZWxheWVkVGlsZXMKK307CisKK3N0YXRpYyBjb25zdCBWVFZpZGVv
RGVjb2RlclZUYWJsZSBXZWJLaXRWUDhEZWNvZGVyVlRhYmxlID0KK3sKKyAgICB7IG51bGxwdHIs
ICZXZWJLaXRWUDhEZWNvZGVyX0Jhc2VDbGFzcyB9LAorICAgICZXZWJLaXRWUDhEZWNvZGVyX1Zp
ZGVvRGVjb2RlckNsYXNzCit9OworCitPU1N0YXR1cyBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKEZp
Z1ZpZGVvQ29kZWNUeXBlLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIFZUVmlkZW9EZWNvZGVy
UmVmKiBkZWNvZGVyT3V0KQoreworICAgIGlmICghZGVjb2Rlck91dCkgeworICAgICAgICBSVENf
TE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXIgY3JlYXRpb24gZmFpbGVkLCBubyBkZWNvZGVy
IG91dHB1dCI7CisgICAgICAgIHJldHVybiBrVlRQYXJhbWV0ZXJFcnI7CisgICAgfQorCisgICAg
VlRWaWRlb0RlY29kZXJSZWYgZGVjb2RlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENN
RGVyaXZlZE9iamVjdENyZWF0ZShhbGxvY2F0b3IsICZXZWJLaXRWUDhEZWNvZGVyVlRhYmxlLmJh
c2UsIFZUVmlkZW9EZWNvZGVyR2V0Q2xhc3NJRCgpLCAoQ01CYXNlT2JqZWN0UmVmKikmZGVjb2Rl
cik7CisKKyAgICBpZiAoIWRlY29kZXIpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwg
IlZQOCBkZWNvZGVyIGNyZWF0aW9uIGZhaWxlZCwgQ01EZXJpdmVkT2JqZWN0Q3JlYXRlIGZhaWxl
ZCB3aXRoIGVycm9yICIgPDwgZXJyb3I7CisgICAgICAgIHJldHVybiBrVlRBbGxvY2F0aW9uRmFp
bGVkRXJyOworICAgIH0KKworICAgIGlmKGVycm9yKSB7CisgICAgICAgIENGUmVsZWFzZShkZWNv
ZGVyKTsKKyAgICAgICAgZGVjb2RlciA9IE5VTEw7CisgICAgfQorICAgICpkZWNvZGVyT3V0ID0g
ZGVjb2RlcjsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK09TU3RhdHVzIGludmFsaWRhdGVWUDhE
ZWNvZGVyKENNQmFzZU9iamVjdFJlZiBpbnN0YW5jZSkKK3sKKyAgICBhdXRvKiBkZWNvZGVyID0g
c3RhdGljX2Nhc3Q8V2ViS2l0VlA4RGVjb2Rlcio+KENNQmFzZU9iamVjdEdldERlcml2ZWRTdG9y
YWdlKGluc3RhbmNlKSk7CisgICAgaWYgKCFkZWNvZGVyKQorICAgICAgICBSVENfTE9HKExTX0VS
Uk9SKSA8PCAiVlA4IGRlY29kZXI6IGludmFsaWRhdGlvbiBmYWlsZWQgYXMgaW5zdGFuY2UgaGFz
IG5vIGRlY29kZXIiOworICAgIGVsc2UgeworICAgICAgICBkZWNvZGVyLT5tX2luc3RhbmNlID0g
bnVsbHB0cjsKKyAgICAgICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQor
ICAgIHJldHVybiBub0VycjsKK30KKwordm9pZCBmaW5hbGl6ZVZQOERlY29kZXIoQ01CYXNlT2Jq
ZWN0UmVmIGluc3RhbmNlKQoreworICAgIGludmFsaWRhdGVWUDhEZWNvZGVyKGluc3RhbmNlKTsK
K30KKworQ0ZTdHJpbmdSZWYgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9uKENNQmFzZU9i
amVjdFJlZikKK3sKKyAgICByZXR1cm4gQ0ZTVFIoIldlYktpdCBWUDggZGVjb2RlciIpOworfQor
CitXZWJLaXRWUDhEZWNvZGVyKiB3ZWJLaXRWUDhEZWNvZGVyRnJvbVZURGVjb2RlcihWVFZpZGVv
RGVjb2RlclJlZiBkZWNvZGVyKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRWUDhE
ZWNvZGVyKj4oQ01CYXNlT2JqZWN0R2V0RGVyaXZlZFN0b3JhZ2UocmVpbnRlcnByZXRfY2FzdDxD
TUJhc2VPYmplY3RSZWY+KGRlY29kZXIpKSk7Cit9CitPU1N0YXR1cyBzdGFydFZQOERlY29kZXJT
ZXNzaW9uKFZUVmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3Npb24g
c2Vzc2lvbiwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQor
eworICAgIGF1dG8qIGRlY29kZXIgPSB3ZWJLaXRWUDhEZWNvZGVyRnJvbVZURGVjb2RlcihpbnN0
YW5jZSk7CisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8
ICJWUDggZGVjb2RlcjogZmFpbGVkIHRvIGdldCBkZWNvZGVyIGZyb20gaW5zdGFuY2Ugd2hpbGUg
c3RhcnRpbmciOworICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAg
IGRlY29kZXItPm1faW5zdGFuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYnZweFZwOERlY29kZXI+
KCk7CisgICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RGVj
b2RlclJlY2VpdmVyPihzZXNzaW9uKTsKKyAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5pbml0aWFs
aXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsKKworICAgIGRlY29k
ZXItPm1faW5zdGFuY2UtPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayhkZWNvZGVyLT5t
X3JlY2VpdmVyLmdldCgpKTsKKworICAgIFZpZGVvQ29kZWMgY29kZWM7CisgICAgYXV0byBkaW1l
bnNpb25zID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNj
cmlwdGlvbik7CisgICAgY29kZWMud2lkdGggPSBkaW1lbnNpb25zLndpZHRoOworICAgIGNvZGVj
LmhlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0OworCisgICAgZGVjb2Rlci0+bV9pbnN0YW5jZS0+
SW5pdERlY29kZSgmY29kZWMsIENwdUluZm86OkRldGVjdE51bWJlck9mQ29yZXMoKSk7CisKKyAg
ICByZXR1cm4gbm9FcnI7Cit9CisKK3N0YXRpYyBPU1N0YXR1cyBkZWNvZGVWUDhEZWNvZGVyRnJh
bWVGcm9tQ29udGlndW91c0Jsb2NrKFdlYktpdFZQOERlY29kZXImIGRlY29kZXIsIFZUVmlkZW9E
ZWNvZGVyRnJhbWUgZnJhbWUsIENNQmxvY2tCdWZmZXJSZWYgZW5jb2RlZEJ1ZmZlcikKK3sKKyAg
ICBSVENfRENIRUNLKENNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhlbmNvZGVkQnVmZmVy
LCAwLCAwKSk7CisKKyAgICBhdXRvIHNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChl
bmNvZGVkQnVmZmVyKTsKKyAgICBjaGFyKiBkYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBl
cnJvciA9IENNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihlbmNvZGVkQnVmZmVyLCAwLCBudWxs
cHRyLCBudWxscHRyLCAmZGF0YSkpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQ
OCBkZWNvZGVyOiBDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3Ig
IiA8PCBlcnJvcjsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIFJUQ19EQ0hF
Q0soIWRlY29kZXIubV9yZWNlaXZlci0+Y3VycmVudEZyYW1lKCkpOworICAgIGRlY29kZXIubV9y
ZWNlaXZlci0+c2V0Q3VycmVudEZyYW1lKGZyYW1lKTsKKworICAgIEVuY29kZWRJbWFnZSBpbWFn
ZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpLCBzaXplLCBzaXplIH07CisgICAg
Ly8gV2Ugc2V0IHRob3NlIHZhbHVlcyBhcyBWUDhEZWNvZGVySW1wbCBjaGVja3MgZm9yIGdldHRp
bmcgYSBmdWxsIGtleSBmcmFtZSBhcyBmaXJzdCBmcmFtZS4KKyAgICBpbWFnZS5fZnJhbWVUeXBl
ID0gVmlkZW9GcmFtZVR5cGU6OmtWaWRlb0ZyYW1lS2V5OworICAgIGltYWdlLl9jb21wbGV0ZUZy
YW1lID0gdHJ1ZTsKKyAgICBhdXRvIGVycm9yID0gZGVjb2Rlci5tX2luc3RhbmNlLT5EZWNvZGUo
aW1hZ2UsIGZhbHNlLCAwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBkZWNvZGVy
Lm1fcmVjZWl2ZXItPmRlY29kZXJGYWlsZWQoZXJyb3IpOworCisgICAgUlRDX0RDSEVDSyghZGVj
b2Rlci5tX3JlY2VpdmVyLT5jdXJyZW50RnJhbWUoKSk7CisKKyAgICByZXR1cm4gMDsKK30KKwor
T1NTdGF0dXMgZGVjb2RlVlA4RGVjb2RlckZyYW1lKFZUVmlkZW9EZWNvZGVyUmVmIGluc3RhbmNl
LCBWVFZpZGVvRGVjb2RlckZyYW1lIGZyYW1lLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZm
ZXIsIFZURGVjb2RlRnJhbWVGbGFncywgVlREZWNvZGVJbmZvRmxhZ3MqKQoreworICAgIGF1dG8q
IGRlY29kZXIgPSB3ZWJLaXRWUDhEZWNvZGVyRnJvbVZURGVjb2RlcihpbnN0YW5jZSk7CisgICAg
aWYgKCFkZWNvZGVyIHx8ICFkZWNvZGVyLT5tX2luc3RhbmNlIHx8ICFkZWNvZGVyLT5tX3JlY2Vp
dmVyKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDggZGVjb2RlcjogZmFpbGVk
IHRvIGdldCBkZWNvZGVyIGZyb20gaW5zdGFuY2Ugd2hpbGUgZGVjb2RpbmciOworICAgICAgICBy
ZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9
IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOworICAgIGlmICghZW5j
b2RlZEJ1ZmZlcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6
IGZhaWxlZCB0byBnZXQgZGF0YSBidWZmZXIiOworICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVy
RXJyOworICAgIH0KKworICAgIENNQmxvY2tCdWZmZXJSZWYgY29udGlndW91c0J1ZmZlciA9IG51
bGxwdHI7CisgICAgLy8gTWFrZSBzdXJlIGJsb2NrIGJ1ZmZlciBpcyBjb250aWd1b3VzLgorICAg
IGlmICghQ01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGVuY29kZWRCdWZmZXIsIDAsIDAp
KSB7CisgICAgICAgIGF1dG8gc3RhdHVzID0gQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMo
bnVsbHB0ciwgZW5jb2RlZEJ1ZmZlciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgMCwgMCwgJmNvbnRp
Z3VvdXNCdWZmZXIpOworICAgICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CisgICAgICAgICAg
ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0byBjcmVhdGUgY29u
dGlndW91cyBibG9jayBidWZmZXIgd2l0aCBlcnJvciAiIDw8IHN0YXR1czsKKyAgICAgICAgICAg
IHJldHVybiBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOworICAgICAgICB9CisgICAgICAgIGVuY29k
ZWRCdWZmZXIgPSBjb250aWd1b3VzQnVmZmVyOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0g
ZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jaygqZGVjb2RlciwgZnJhbWUs
IGVuY29kZWRCdWZmZXIpOworCisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXIpCisgICAgICAgIENG
UmVsZWFzZShjb250aWd1b3VzQnVmZmVyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmY3MzBiOTU2YWU1YTc3MDQzOGY4MDhkNTE1MTM3ZjE4NjE4NTllYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VlA4RGVjb2Rlci5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK3ZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNv
ZGVyKCk7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIu
Y3BwCmluZGV4IDQzYThlYzcyZGJlYjk4YWVjNDQ2YjcxOTg3YzMxZDMwZThkNTM3NWYuLjQ1NmE3
Njk5ZDI4MTJiNjBlNTc4ZWU5MjBjYzVlMzE0OTY1YzcyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcApAQCAtMjUsMTQgKzI1LDEyIEBACiAKICNp
bmNsdWRlICJXZWJLaXRWUDlEZWNvZGVyLmgiCiAKLSNpbmNsdWRlICJXZWJLaXRVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+Ci0jaW5jbHVkZSAibW9k
dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlfaW1wbC5oIgorI2luY2x1ZGUgIldlYktp
dERlY29kZXJSZWNlaXZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDgvbGlidnB4X3ZwOF9kZWNvZGVyLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgogI2luY2x1ZGUgInN5c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZvLmgiCiAKICNpbmNs
dWRlICJDTUJhc2VPYmplY3RTUEkuaCIKLSNpbmNsdWRlICJWVFZpZGVvRGVjb2RlclNQSS5oIgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIApAQCAtNDIsMzkgKzQwLDExIEBAIHZvaWQgcmVnaXN0ZXJX
ZWJLaXRWUDlEZWNvZGVyKCkKICAgICBWVFJlZ2lzdGVyVmlkZW9EZWNvZGVyKCd2cDA5JywgY3Jl
YXRlV2ViS2l0VlA5RGVjb2Rlcik7CiB9CiAKLWNsYXNzIFdlYktpdFZQOURlY29kZXJSZWNlaXZl
cjsKIHR5cGVkZWYgc3RydWN0IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VlA5RGVjb2RlckltcGw+
IG1faW5zdGFuY2U7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdFZQOURlY29kZXJSZWNlaXZl
cj4gbV9yZWNlaXZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RGVjb2RlclJlY2VpdmVy
PiBtX3JlY2VpdmVyOwogfSBXZWJLaXRWUDlEZWNvZGVyOwogCi1jbGFzcyBXZWJLaXRWUDlEZWNv
ZGVyUmVjZWl2ZXIgZmluYWwgOiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJhY2sgewotcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYktpdFZQOURlY29kZXJSZWNlaXZlcihWVFZpZGVvRGVjb2RlclNl
c3Npb24pOwotICAgIH5XZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIoKTsKLQotICAgIFZUVmlkZW9E
ZWNvZGVyRnJhbWUgY3VycmVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7
IH0KLSAgICB2b2lkIHNldEN1cnJlbnRGcmFtZShWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRG
cmFtZSkgeyBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsgfQotICAgIE9TU3RhdHVzIGRl
Y29kZXJGYWlsZWQoaW50IGVycm9yKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21Gb3JtYXRE
ZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmKTsKLQotcHJpdmF0ZToKLSAgICBpbnQz
Ml90IERlY29kZWQoVmlkZW9GcmFtZSYpIGZpbmFsOwotICAgIGludDMyX3QgRGVjb2RlZChWaWRl
b0ZyYW1lJiwgaW50NjRfdCBkZWNvZGVfdGltZV9tcykgZmluYWw7Ci0gICAgdm9pZCBEZWNvZGVk
KFZpZGVvRnJhbWUmLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywgYWJz
bDo6b3B0aW9uYWw8dWludDhfdD4gcXApIGZpbmFsOwotCi0gICAgQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxC
dWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCk7Ci0KLSAgICBWVFZpZGVvRGVjb2RlclNlc3Npb24g
bV9zZXNzaW9uIHsgbnVsbHB0ciB9OwotICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgbV9jdXJyZW50
RnJhbWUgeyBudWxscHRyIH07Ci0gICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJXaWR0aCB7IDAgfTsK
LSAgICBzaXplX3QgbV9waXhlbEJ1ZmZlckhlaWdodCB7IDAgfTsKLSAgICBib29sIG1faXMxMGJp
dCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRnVsbFJhbmdlIHsgZmFsc2UgfTsKLSAgICBDVlBp
eGVsQnVmZmVyUG9vbFJlZiBtX3BpeGVsQnVmZmVyUG9vbCB7IG51bGxwdHIgfTsKLX07Ci0KIHN0
YXRpYyBPU1N0YXR1cyBpbnZhbGlkYXRlVlA5RGVjb2RlcihDTUJhc2VPYmplY3RSZWYpOwogc3Rh
dGljIHZvaWQgZmluYWxpemVWUDlEZWNvZGVyKENNQmFzZU9iamVjdFJlZik7CiBzdGF0aWMgQ0ZT
dHJpbmdSZWYgY29weVZQOURlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9uKENNQmFzZU9iamVjdFJlZik7
CkBAIC0xNzUsNyArMTQ1LDcgQEAgT1NTdGF0dXMgc3RhcnRWUDlEZWNvZGVyU2Vzc2lvbihWVFZp
ZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW8KICAgICB9CiAKICAg
ICBkZWNvZGVyLT5tX2luc3RhbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxWUDlEZWNvZGVySW1wbD4o
KTsKLSAgICBkZWNvZGVyLT5tX3JlY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRWUDlE
ZWNvZGVyUmVjZWl2ZXI+KHNlc3Npb24pOworICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdERlY29kZXJSZWNlaXZlcj4oc2Vzc2lvbik7CiAgICAgZGVjb2Rl
ci0+bV9yZWNlaXZlci0+aW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNj
cmlwdGlvbik7CiAKICAgICBkZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBs
ZXRlQ2FsbGJhY2soZGVjb2Rlci0+bV9yZWNlaXZlci5nZXQoKSk7CkBAIC0yNTAsMTYxICsyMjAs
NCBAQCBPU1N0YXR1cyBkZWNvZGVWUDlEZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYgaW5z
dGFuY2UsIFZUVmlkZW9EZWNvZGVyRnJhbWUgZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVdl
YktpdFZQOURlY29kZXJSZWNlaXZlcjo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKFZUVmlkZW9E
ZWNvZGVyU2Vzc2lvbiBzZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCi17Ci19Ci0K
LVdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6fldlYktpdFZQOURlY29kZXJSZWNlaXZlcigpCi17
Ci0gICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1
ZmZlclBvb2wpOwotfQotCi12b2lkIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6
ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2Ny
aXB0aW9uKQotewotICAgIC8vIENvcmVBbmltYXRpb24gZG9lc24ndCBzdXBwb3J0IGZ1bGwtcGxh
bmFyIFlVViwgc28gd2UgbXVzdCBjb252ZXJ0IHRoZSBidWZmZXJzIG91dHB1dAotICAgIC8vIGJ5
IGxpYnZweCB0byBiaS1wbGFuYXIgWVVWLiBDcmVhdGUgcGl4ZWwgYnVmZmVyIGF0dHJpYnV0ZXMg
YW5kIGdpdmUgdGhvc2UgdG8gdGhlCi0gICAgLy8gZGVjb2RlciBzZXNzaW9uIGZvciB1c2UgaW4g
Y3JlYXRpbmcgaXRzIG93biBpbnRlcm5hbCBDVlBpeGVsQnVmZmVyUG9vbCwgd2hpY2ggd2UKLSAg
ICAvLyB3aWxsIHVzZSBwb3N0LWRlY29kZS4KLSAgICBtX2lzRnVsbFJhbmdlID0gZmFsc2U7Ci0g
ICAgbV9pczEwYml0ID0gZmFsc2U7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9u
cyA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsK
LSAgICAgICAgaWYgKCFleHRlbnNpb25zKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Q0ZUeXBlUmVmIGV4dGVuc2lvbkF0b21zID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9u
cywga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNp
b25BdG9tcyk7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9uQXRvbXMgfHwgQ0ZHZXRUeXBlSUQoZXh0
ZW5zaW9uQXRvbXMpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkID0gc3RhdGljX2Nhc3Q8Q0ZE
YXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZSgoQ0ZEaWN0aW9uYXJ5UmVmKWV4dGVuc2lvbkF0
b21zLCBDRlNUUigidnBjQyIpKSk7Ci0gICAgICAgIGlmICghY29uZmlndXJhdGlvblJlY29yZCB8
fCBDRkdldFR5cGVJRChjb25maWd1cmF0aW9uUmVjb3JkKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZFNp
emUgPSBDRkRhdGFHZXRMZW5ndGgoY29uZmlndXJhdGlvblJlY29yZCk7Ci0gICAgICAgIGlmIChj
b25maWd1cmF0aW9uUmVjb3JkU2l6ZSA8IDEyKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkRGF0YSA9IENGRGF0YUdldEJ5dGVQdHIoY29uZmln
dXJhdGlvblJlY29yZCk7Ci0gICAgICAgIGF1dG8gYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA9ICoo
Y29uZmlndXJhdGlvblJlY29yZERhdGEgKyA2KTsKLQotICAgICAgICBpZiAoKGJpdERlcHRoQ2hy
b21hQW5kUmFuZ2UgPj4gNCkgPT0gMTApCi0gICAgICAgICAgICBtX2lzMTBiaXQgPSB0cnVlOwot
Ci0gICAgICAgIGlmIChiaXREZXB0aENocm9tYUFuZFJhbmdlICYgMHgxKQotICAgICAgICAgICAg
bV9pc0Z1bGxSYW5nZSA9IHRydWU7Ci0gICAgfSB3aGlsZSAoZmFsc2UpOwotfQotCi1DVlBpeGVs
QnVmZmVyUG9vbFJlZiBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbChz
aXplX3QgcGl4ZWxCdWZmZXJXaWR0aCwgc2l6ZV90IHBpeGVsQnVmZmVySGVpZ2h0LCBib29sIGlz
MTBiaXQpCi17Ci0gICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sICYmIG1fcGl4ZWxCdWZmZXJXaWR0
aCA9PSBwaXhlbEJ1ZmZlcldpZHRoICYmIG1fcGl4ZWxCdWZmZXJIZWlnaHQgPT0gcGl4ZWxCdWZm
ZXJIZWlnaHQgJiYgbV9pczEwYml0ID09IGlzMTBiaXQpCi0gICAgICAgIHJldHVybiBtX3BpeGVs
QnVmZmVyUG9vbDsKLQotICAgIE9TVHlwZSBwaXhlbEZvcm1hdDsKLSAgICBpZiAoaXMxMGJpdCkK
LSAgICAgICAgcGl4ZWxGb3JtYXQgPSBtX2lzRnVsbFJhbmdlID8ga0NWUGl4ZWxGb3JtYXRUeXBl
XzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBD
YkNyMTBCaVBsYW5hclZpZGVvUmFuZ2U7Ci0gICAgZWxzZQotICAgICAgICBwaXhlbEZvcm1hdCA9
IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVs
bFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U7
Ci0KLSAgICBhdXRvIGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyA9IFtdIChPU1R5cGUgcGl4
ZWxGb3JtYXQsIGludDMyX3QgYm9yZGVyUGl4ZWxzKSB7Ci0gICAgICAgIGF1dG8gY3JlYXRlTnVt
YmVyID0gW10gKGludDMyX3QgZm9ybWF0KSAtPiBDRk51bWJlclJlZiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMy
VHlwZSwgJmZvcm1hdCk7Ci0gICAgICAgIH07Ci0gICAgICAgIGF1dG8gY2ZQaXhlbEZvcm1hdHMg
PSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKTsKLSAgICAgICAgYXV0byBmb3JtYXROdW1iZXIgPSBjcmVhdGVOdW1iZXIo
cGl4ZWxGb3JtYXQpOwotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2ZQaXhlbEZvcm1hdHMs
IGZvcm1hdE51bWJlcik7Ci0gICAgICAgIENGUmVsZWFzZShmb3JtYXROdW1iZXIpOwotCi0gICAg
ICAgIGF1dG8gYm9yZGVyUGl4ZWxzVmFsdWUgPSBjcmVhdGVOdW1iZXIoMzIpOwotCi0gICAgICAg
IGNvbnN0IHZvaWQqIGtleXNbXSA9IHsKLSAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5LAotICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc0xl
ZnRLZXksCi0gICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzUmlnaHRLZXks
Ci0gICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzVG9wS2V5LAotICAgICAg
ICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc0JvdHRvbUtleSwKLSAgICAgICAgfTsK
LSAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzW10gPSB7Ci0gICAgICAgICAgICBjZlBpeGVsRm9y
bWF0cywKLSAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAotICAgICAgICAgICAgYm9yZGVy
UGl4ZWxzVmFsdWUsCi0gICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKLSAgICAgICAgICAg
IGJvcmRlclBpeGVsc1ZhbHVlLAotICAgICAgICB9OwotICAgICAgICBhdXRvIGF0dHJpYnV0ZXMg
PSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBz
dGQ6OnNpemUoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgICAgICBDRlJlbGVhc2UoYm9yZGVyUGl4ZWxz
VmFsdWUpOwotICAgICAgICBDRlJlbGVhc2UoY2ZQaXhlbEZvcm1hdHMpOwotICAgICAgICByZXR1
cm4gYXR0cmlidXRlczsKLSAgICB9OwotCi0gICAgYXV0byBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMg
PSBjcmVhdGVQaXhlbEZvcm1hdEF0dHJpYnV0ZXMocGl4ZWxGb3JtYXQsIDMyKTsKLSAgICBWVERl
Y29kZXJTZXNzaW9uU2V0UGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKG1fc2Vzc2lvbiwgcGl4ZWxCdWZm
ZXJBdHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsKLQot
ICAgIGlmIChtX3BpeGVsQnVmZmVyUG9vbCkgewotICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1
ZmZlclBvb2wpOwotICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IG51bGxwdHI7Ci0gICAgfQot
Ci0gICAgbV9waXhlbEJ1ZmZlclBvb2wgPSBWVERlY29kZXJTZXNzaW9uR2V0UGl4ZWxCdWZmZXJQ
b29sKG1fc2Vzc2lvbik7Ci0gICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICBDRlJl
dGFpbihtX3BpeGVsQnVmZmVyUG9vbCk7Ci0KLSAgICBtX3BpeGVsQnVmZmVyV2lkdGggPSBwaXhl
bEJ1ZmZlcldpZHRoOwotICAgIG1fcGl4ZWxCdWZmZXJIZWlnaHQgPSBwaXhlbEJ1ZmZlckhlaWdo
dDsKLSAgICBtX2lzMTBiaXQgPSBpczEwYml0OwotCi0gICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQ
b29sOwotfQotCi1PU1N0YXR1cyBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OmRlY29kZXJGYWls
ZWQoaW50IGVycm9yKQotewotICAgIE9TU3RhdHVzIHZ0RXJyb3IgPSBrVlRWaWRlb0RlY29kZXJC
YWREYXRhRXJyOwotICAgIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfTk9fT1VUUFVU
KQotICAgICAgICB2dEVycm9yID0gbm9FcnI7Ci0gICAgZWxzZSBpZiAoZXJyb3IgPT0gV0VCUlRD
X1ZJREVPX0NPREVDX1VOSU5JVElBTElaRUQpCi0gICAgICAgIHZ0RXJyb3IgPSBrVlRWaWRlb0Rl
Y29kZXJNYWxmdW5jdGlvbkVycjsKLSAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9f
Q09ERUNfTUVNT1JZKQotICAgICAgICB2dEVycm9yID0ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsK
LSAgICBWVERlY29kZXJTZXNzaW9uRW1pdERlY29kZWRGcmFtZShtX3Nlc3Npb24sIG1fY3VycmVu
dEZyYW1lLCB2dEVycm9yLCAwLCBudWxscHRyKTsKLSAgICBtX2N1cnJlbnRGcmFtZSA9IG51bGxw
dHI7Ci0KLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA5IGRlY29kZXI6IGRlY29kZXIgZmFp
bGVkIHdpdGggZXJyb3IgIiA8PCBlcnJvciA8PCAiLCB2dEVycm9yICIgPDwgdnRFcnJvcjsKLSAg
ICByZXR1cm4gdnRFcnJvcjsKLX0KLQotaW50MzJfdCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6
OkRlY29kZWQoVmlkZW9GcmFtZSYgZnJhbWUpCi17Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBp
eGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVp
Z2h0LCBCdWZmZXJUeXBlIHR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAgICAgICBhdXRv
IHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCB0
eXBlID09IEJ1ZmZlclR5cGU6OkkwMTApOwotICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIgPSBudWxscHRyOwotICAgICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVh
dGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBp
eGVsQnVmZmVyKSA9PSBrQ1ZSZXR1cm5TdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIHBpeGVs
QnVmZmVyOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9KTsKLQotICAgIFZURGVjb2Rl
clNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVs
QnVmZmVyID8gbm9FcnIgOiAtMSwgMCwgcGl4ZWxCdWZmZXIpOwotICAgIG1fY3VycmVudEZyYW1l
ID0gbnVsbHB0cjsKLSAgICBpZiAocGl4ZWxCdWZmZXIpCi0gICAgICAgIENGUmVsZWFzZShwaXhl
bEJ1ZmZlcik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludDMyX3QgV2ViS2l0VlA5RGVjb2RlclJl
Y2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBpbnQ2NF90KQotewotICAgIERlY29k
ZWQoZnJhbWUpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIFdlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSwgYWJzbDo6b3B0aW9uYWw8aW50MzJfdD4s
IGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+KQotewotICAgIERlY29kZWQoZnJhbWUpOwotfQotCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2Vi
cnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTEwODA0Mzk5OTY0ODNhYjMzMWEy
OWRhZWJlMDY0ZjBmZDBmM2ZkMy4uNDFjM2I5N2EzNmY2YjQ2MWYwMmIyZTlkMDRjOGY4NWUzMGFj
M2RjYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzkwOSw2ICszOTA5LDEw
IEBACiAJCTVDRkQ1MzkyMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3dfbmVvbjY0LmNjIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRDUzOEExRTRCRDNBMzAw
NDgyOTA4IC8qIHJvd19uZW9uNjQuY2MgKi87IH07CiAJCTVDRkQ1MzkzMUU0QkQzQTMwMDQ4Mjkw
OCAvKiBzY2FsZV9uZW9uLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNGRDUzOEIxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgKi87IH07
CiAJCTVDRkQ1Mzk0MUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QzFFNEJEM0EzMDA0
ODI5MDggLyogc2NhbGVfbmVvbjY0LmNjICovOyB9OworCQlDRDM4MUYyNzI1ODE1OTFGMDA3N0RF
QzggLyogV2ViS2l0VlA4RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QzODFGMjUyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29k
ZXIuaCAqLzsgfTsKKwkJQ0QzODFGMjkyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29k
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
ODFGMjgyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwICovOyB9OworCQlD
RDM4MUYyQjI1ODFGRUJBMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzgxRjJBMjU4MUZF
QkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwICovOyB9OworCQlDRDM4MUYy
RDI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyQzI1ODFGRjBCMDA3N0RF
QzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggKi87IH07CiAJCUNERUJCNEI2MjRDMDE5QzQw
MEFEQkQ0NCAvKiB1bmtub3duX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDY0MjRDMDE5MUEwMEFEQkQ0NCAvKiB1bmtub3duX3Bh
cnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0QjcyNEMwMTlDNDAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJz
ZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVC
QjQ2RjI0QzAxOTFBMDBBREJENDQgLyogbWFzdGVyX3BhcnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0
QjgyNEMwMTlDNDAwQURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDc2MjRDMDE5MUEwMEFEQkQ0NCAvKiBi
bG9ja19wYXJzZXIuY2MgKi87IH07CkBAIC04NDMyLDYgKzg0MzYsMTAgQEAKIAkJNUQ3QzU5QzYx
MjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3
QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExQjg5QjhBMjIxRTAwNEMwMEVCNENFQSAvKiBTREtWYXJpYW50
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFNES1ZhcmlhbnQueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEMzgxRjI1MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhE
ZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFZQOERlY29k
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMjgyNTgxNTkxRjAwNzdE
RUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViS2l0VlA4RGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEMzgxRjJBMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0RGVjb2RlclJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMkMyNTgxRkYwQjAw
NzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNlaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkIxMTky
NEMwMTg3NDAwQURCRDQ0IC8qIGxpYndlYm0uYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gbGlid2VibS5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDREVC
QjExRTI0QzAxODk2MDBBREJENDQgLyogbGlid2VibS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBs
aWJ3ZWJtLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVCQjQwNTI0
QzAxOTFBMDBBREJENDQgLyogcmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA5NjIsMTAgKzEwOTcwLDE0IEBACiAJCQkJNDEy
RkY5MzUyNTNEOEYwQTAwMURGMDM2IC8qIFZUVmlkZW9EZWNvZGVyU1BJLmggKi8sCiAJCQkJNDFF
ODRCQzkyNDM0QzRBMjAwRDM0RTQxIC8qIFdlYktpdERlY29kZXIuaCAqLywKIAkJCQk0MUU4NEJD
QTI0MzRDNEEzMDBEMzRFNDEgLyogV2ViS2l0RGVjb2Rlci5tbSAqLywKKwkJCQlDRDM4MUYyQTI1
ODFGRUJBMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDM4
MUYyQzI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggKi8sCiAJCQkJ
NDE1ODY0OTYyM0JFMDVFODAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCAqLywKIAkJCQk0MTU4
NjQ5NzIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSAqLywKIAkJCQk0MUVDRUFC
QjIwNjQwM0MxMDA5RDUxNDEgLyogV2ViS2l0VXRpbGl0aWVzLmggKi8sCiAJCQkJNDFFQ0VBQkQy
MDY0MDQ5ODAwOUQ1MTQxIC8qIFdlYktpdFV0aWxpdGllcy5tbSAqLywKKwkJCQlDRDM4MUYyODI1
ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgKi8sCisJCQkJQ0QzODFGMjUy
NTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCAqLywKIAkJCQk0MTQwMzdCQTI0
QUM3NkU5MDBCQ0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5jcHAgKi8sCiAJCQkJNDE0MDM3Qjky
NEFDNzZFOTAwQkNFOUIyIC8qIFdlYktpdFZQOURlY29kZXIuaCAqLywKIAkJCSk7CkBAIC0xNzQ5
Niw4ICsxNzUwOCwxMCBAQAogCQkJCTVDNEI0QzgxMUU0MzFGOUMwMDI2NTFDOCAvKiB3YXZfZmls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0QjRDODQxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9o
ZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDMTYzMjM0Qjg5RTIwMDI4QTYxNSAvKiB3
ZWFrX3B0ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzODFGMkQyNTgxRkYwQjAwNzdERUM4IC8q
IFdlYktpdERlY29kZXJSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1ODY0OTgyM0JF
MDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNF
QUJDMjA2NDAzQzIwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUNEMzgxRjI3MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTQwMzdCQjI0QUM3NkVBMDBCQ0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhDQUIxRTQzQzZGNzAwNjIxRTkyIC8qIHdlYnJ0
Y19jbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDVFNDkxMUVGODhFRjcwMEZDRjZFNiAvKiB3
ZWJydGNfbGlieXV2LmggaW4gSGVhZGVycyAqLywKQEAgLTIwMDM5LDggKzIwMDUzLDEwIEBACiAJ
CQkJNUM0QjRDODMxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk0MTMxQzBGOTIzNEI4OUUyMDAyOEE2MTUgLyogd2Vha19wdHIuY2MgaW4gU291cmNl
cyAqLywKIAkJCQk0MUU4NEJENTI0MzczRjcyMDBEMzRFNDEgLyogV2ViS2l0RGVjb2Rlci5tbSBp
biBTb3VyY2VzICovLAorCQkJCUNEMzgxRjJCMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNv
ZGVyUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1ODY0OTkyM0JFMDVFOTAwQTBB
NjFFIC8qIFdlYktpdEVuY29kZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUVDRUFCRTIwNjQw
NDk4MDA5RDUxNDEgLyogV2ViS2l0VXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Qz
ODFGMjkyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE0MDM3QkMyNEFDNzZFQTAwQkNFOUIyIC8qIFdlYktpdFZQOURlY29kZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNERDhDQUExRTQzQzZGNzAwNjIxRTkyIC8qIHdlYnJ0Y19j
bmcuY2MgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REODM2NzFFNDMyNUQ1MDA2MjFFOTIgLyogd2Vi
cnRjX2xpYnl1di5jYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3Jp
cHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApp
bmRleCBmNGI1NjkyOGJhNjY5ZmMwMDM4NTI3NmY1N2ExZDlmNzIzMDIzYTBlLi40NGIwODJiNTY0
NDEyMDA4YTZlMTI4MzE4NjI0Nzg5MmRkYjc4NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbApAQCAtODY0LDYgKzg2NCwxNiBAQCBVc2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVu
YWJsZWQ6CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitWUDhEZWNvZGVyRW5h
YmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIlZQOCBkZWNvZGVyIgor
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgVlA4IGRlY29kZXIiCisgIHdlYmNv
cmVCaW5kaW5nOiBub25lCisgIGNvbmRpdGlvbjogRU5BQkxFKFZQOSkKKyAgZGVmYXVsdFZhbHVl
OgorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFZQOERlY29kZXJF
bmFibGVkKCkKKwogIyBGSVhNRTogSXMgdGhpcyBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0TGVnYWN5
PyBJZiBub3QsIHRoaXMgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gV2ViS2l0TGVnYWN5IGVudGly
ZWx5LgogVlA5RGVjb2RlckVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDE0MDg3NDFiODEz
MzEwZDI3ZjQ2MDAwMThlMzMxYTUwNGM1NDQwYmQuLjRlMjgyMjcyMTUxN2MzYmU2ODkzZTE4Yzgx
YzdhZjVhMmRiODViNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1ZQOVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVlA5VXRpbGl0aWVzLmNwcApAQCAtMTI0LDEyICsxMjQsNiBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkVlBNYXRyaXhDb2VmZmljaWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCiAKIE9w
dGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJz
KFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogewotICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5
JyBjb2RlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGluIHRoZSB3ZWJtIEdpdEh1YiByZXBvOgotICAg
IC8vIDxodHRwczovL2dpdGh1Yi5jb20vd2VibXByb2plY3QvdnA5LWRhc2gvYmxvYi9tYXN0ZXIv
VlBDb2RlY0lTT01lZGlhRmlsZUZvcm1hdEJpbmRpbmcubWQjY29kZWNzLXBhcmFtZXRlci1zdHJp
bmc+Ci0KLSAgICAvLyAic2FtcGxlIGVudHJ5IDRDQywgcHJvZmlsZSwgbGV2ZWwsIGFuZCBiaXRE
ZXB0aCBhcmUgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIElmIGFueSBvZiB0aGVzZSBmaWVsZHMgYXJl
IGVtcHR5LCBvciBub3QKLSAgICAvLyB3aXRoaW4gdGhlaXIgYWxsb3dlZCByYW5nZSwgdGhlIHBy
b2Nlc3NpbmcgZGV2aWNlIFNIQUxMIHRyZWF0IGl0IGFzIGFuIGVycm9yLiIKLQogICAgIGF1dG8g
Y29kZWNTcGxpdCA9IGNvZGVjVmlldy5zcGxpdCgnLicpOwogICAgIGF1dG8gbmV4dEVsZW1lbnQg
PSBjb2RlY1NwbGl0LmJlZ2luKCk7CiAgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQu
ZW5kKCkpCkBAIC0xMzcsMTIgKzEzMSwyNCBAQCBPcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlv
blJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldwogCiAg
ICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgY29uZmlndXJhdGlvbjsKIAotICAgIC8vIENv
ZGVjIGlkZW50aWZpZXI6IGxlZ2FsIHZhbHVlcyBhcmUgJ3ZwMDgnIG9yICd2cDA5Jy4KICAgICBj
b25maWd1cmF0aW9uLmNvZGVjTmFtZSA9ICgqbmV4dEVsZW1lbnQpLnRvU3RyaW5nKCk7CisgICAg
KytuZXh0RWxlbWVudDsKKworICAgIC8vIFN1cHBvcnQgdGhlIGxlZ2FjeSBpZGVudGlmaWVycyAo
d2l0aCBubyBwYXJhbWV0ZXJzKSBmb3IgVlA4IGFuZCBWUDkuCisgICAgaWYgKChjb25maWd1cmF0
aW9uLmNvZGVjTmFtZSA9PSAidnA4IiB8fCBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAidnA5
IikgJiYgbmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb247CisKKyAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAndnAwOScgY29kZWMgc3Ry
aW5nIGlzIHNwZWNpZmllZCBpbiB0aGUgd2VibSBHaXRIdWIgcmVwbzoKKyAgICAvLyA8aHR0cHM6
Ly9naXRodWIuY29tL3dlYm1wcm9qZWN0L3ZwOS1kYXNoL2Jsb2IvbWFzdGVyL1ZQQ29kZWNJU09N
ZWRpYUZpbGVGb3JtYXRCaW5kaW5nLm1kI2NvZGVjcy1wYXJhbWV0ZXItc3RyaW5nPgorCisgICAg
Ly8gInNhbXBsZSBlbnRyeSA0Q0MsIHByb2ZpbGUsIGxldmVsLCBhbmQgYml0RGVwdGggYXJlIGFs
bCBtYW5kYXRvcnkgZmllbGRzLiBJZiBhbnkgb2YgdGhlc2UgZmllbGRzIGFyZSBlbXB0eSwgb3Ig
bm90CisgICAgLy8gd2l0aGluIHRoZWlyIGFsbG93ZWQgcmFuZ2UsIHRoZSBwcm9jZXNzaW5nIGRl
dmljZSBTSEFMTCB0cmVhdCBpdCBhcyBhbiBlcnJvci4iCisKKyAgICAvLyBDb2RlYyBpZGVudGlm
aWVyOiBsZWdhbCB2YWx1ZXMgYXJlICd2cDA4JyBvciAndnAwOScuCiAgICAgaWYgKGNvbmZpZ3Vy
YXRpb24uY29kZWNOYW1lICE9ICJ2cDA4IiAmJiBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAi
dnAwOSIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBpZiAoKytuZXh0RWxl
bWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQorICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1Nw
bGl0LmVuZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgLy8gRmlyc3Qg
ZWxlbWVudDogcHJvZmlsZS4gTGVnYWwgdmFsdWVzIGFyZSAwLTMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCmluZGV4IGJlMWUwODZlMGFjNTIzNTQ2MzZhMDA2YWIzMmQxYjkyZjQw
YjRkODEuLjRhMGM5NjQwMzlmMjhjZDAxYjAxMDA3NjE1ZTQ5ZDcxMDk3OWUzNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5
cGVTdXBwb3J0ZWQoY28KICNpZiBFTkFCTEUoVlA5KQogICAgIGF1dG8gc3BsaXRSZXN1bHRzID0g
U3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIpLnNwbGl0KCcsJyk7CiAgICAgZm9yIChhdXRvIHNw
bGl0IDogc3BsaXRSZXN1bHRzKSB7Ci0gICAgICAgIGlmIChzcGxpdC5zdGFydHNXaXRoKCJ2cDA5
IikpIHsKKyAgICAgICAgaWYgKHNwbGl0LnN0YXJ0c1dpdGgoInZwMDkiKSB8fCBzcGxpdC5zdGFy
dHNXaXRoKCJ2cDA4IikgfHwgZXF1YWwoc3BsaXQsICJ2cDgiKSB8fCBlcXVhbChzcGxpdCwgInZw
OSIpKSB7CiAgICAgICAgICAgICBhdXRvIGNvZGVjUGFyYW1ldGVycyA9IHBhcnNlVlBDb2RlY1Bh
cmFtZXRlcnMoc3BsaXQpOwogICAgICAgICAgICAgaWYgKCFjb2RlY1BhcmFtZXRlcnMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RT
dXBwb3J0ZWQ7CkBAIC00ODAsNiArNDgwLDcgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY28KIAog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKwogICAgICAgICAvLyBGSVhNRTogQWRk
IE9wdXMgU3VwcG9ydAogICAgICAgICAvLyBGSVhNRTogQWRkIFZvcmJpcyBTdXBwb3J0CiAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVk
OwpAQCAtNzQ4LDEwICs3NDksMjIgQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
Q2x1c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGMKIFN0YXR1cyBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRh
JiBtZXRhZGF0YSwgY29uc3QgVHJhY2tFbnRyeSYgdHJhY2tFbnRyeSkKIHsKICAgICBVTlVTRURf
UEFSQU0obWV0YWRhdGEpOwotICAgIGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNl
bnQoKSkKKyAgICBpZiAoIXRyYWNrRW50cnkudHJhY2tfdHlwZS5pc19wcmVzZW50KCkgfHwgIXRy
YWNrRW50cnkuY29kZWNfaWQuaXNfcHJlc2VudCgpKQogICAgICAgICByZXR1cm4gU3RhdHVzKFN0
YXR1czo6a09rQ29tcGxldGVkKTsKIAogICAgIGF1dG8gdHJhY2tUeXBlID0gdHJhY2tFbnRyeS50
cmFja190eXBlLnZhbHVlKCk7CisgICAgU3RyaW5nIGNvZGVjSWQgeyB0cmFja0VudHJ5LmNvZGVj
X2lkLnZhbHVlKCkuZGF0YSgpLCAodW5zaWduZWQpdHJhY2tFbnRyeS5jb2RlY19pZC52YWx1ZSgp
Lmxlbmd0aCgpIH07CisKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvICYm
ICFzdXBwb3J0ZWRWaWRlb0NvZGVjcygpLmNvbnRhaW5zKGNvZGVjSWQpKSB7CisgICAgICAgIEVS
Uk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgdW5zdXBwb3J0
ZWQgdmlkZW8gY29kZWMgSUQgXCIiLCBjb2RlY0lkLCAiXCIsIGJhaWxpbmciKTsKKyAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpVbnN1cHBvcnRlZFZpZGVvQ29k
ZWMpKTsKKyAgICB9CisKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvICYm
ICFzdXBwb3J0ZWRBdWRpb0NvZGVjcygpLmNvbnRhaW5zKGNvZGVjSWQpKSB7CisgICAgICAgIEVS
Uk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgdW5zdXBwb3J0
ZWQgYXVkaW8gY29kZWMgSUQgXCIiLCBjb2RlY0lkLCAiXCIsIGJhaWxpbmciKTsKKyAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpVbnN1cHBvcnRlZEF1ZGlvQ29k
ZWMpKTsKKyAgICB9CisKICAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQog
ICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+dmlkZW9UcmFja3MuYXBwZW5kKHsgTWVk
aWFEZXNjcmlwdGlvbldlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgVmlkZW9U
cmFja1ByaXZhdGVXZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CiAgICAg
ZWxzZSBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKQpAQCAtMTAwMCw3ICsxMDEz
LDcgQEAgc3RhdGljIHVpbnQ4X3QgY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBs
aW5nKHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkpCiAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNo
cm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVkOwogfQogCi1zdGF0aWMg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9u
RnJvbVZQOUhlYWRlclBhcnNlcihjb25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXJzZXImIHBh
cnNlciwgY29uc3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+JiBjb2xvcikKK3N0YXRpYyBSZXRhaW5Q
dHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQm
IHJlY29yZCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiB7CiAgICAgLy8gUmVmOiAi
VlAgQ29kZWMgSVNPIE1lZGlhIEZpbGUgRm9ybWF0IEJpbmRpbmcsIHYxLjAsIDIwMTctMDMtMzEi
CiAgICAgLy8gPGh0dHBzOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy92cDkvbXA0Lz4KQEAgLTEwMjks
MzUgKzEwNDIsNiBAQCBzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcgogICAgIC8vIEZJWE1FOiBDb252
ZXJ0IGV4aXN0aW5nIHN0cnVjdCB0byBhbiBJU09Cb3ggYW5kIHJlcGxhY2UgdGhlIHdyaXRpbmcg
Y29kZSBiZWxvdwogICAgIC8vIHdpdGggYSBzdWJjbGFzcyBvZiBJU09GdWxsQm94LgogCi0gICAg
VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOwotCi0gICAgcmVjb3JkLnByb2ZpbGUg
PSBwYXJzZXIucHJvZmlsZSgpOwotICAgIC8vIENvcmVNZWRpYSBkb2VzIG5hdCBjYXJlIGFib3V0
IHRoZSBWUDkgY29kZWMgbGV2ZWw7IGhhcmQtY29kZSB0byBMZXZlbCAxLjAgaGVyZToKLSAgICBy
ZWNvcmQubGV2ZWwgPSAxMDsKLSAgICByZWNvcmQuYml0RGVwdGggPSBwYXJzZXIuYml0X2RlcHRo
KCk7Ci0gICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IHBhcnNlci5jb2xvcl9yYW5nZSgp
ID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdl
OjpWaWRlb1JhbmdlOwotICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJz
YW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhwYXJzZXIuc3Vic2FtcGxpbmdfeCgpLCBwYXJz
ZXIuc3Vic2FtcGxpbmdfeSgpKTsKLSAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBWUENvbmZp
Z3VyYXRpb25Db2xvclByaW1hcmllczo6VW5zcGVjaWZpZWQ7Ci0gICAgcmVjb3JkLnRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzID0gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6
OlVuc3BlY2lmaWVkOwotICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBWUENvbmZpZ3Vy
YXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkOwotCi0gICAgLy8gQ29udGFpbmVy
IGNvbG9yIHZhbHVlcyBjYW4gb3ZlcnJpZGUgcGVyLXNhbXBsZSBvbmVzOgotICAgIGlmIChjb2xv
ci5pc19wcmVzZW50KCkpIHsKLSAgICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVl
KCk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNl
bnQoKSAmJiBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKLSAg
ICAgICAgICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZ
VG9DaHJvbWFTdWJzYW1wbGluZyhjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVl
KCksIGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7Ci0gICAgICAgIGlm
IChjb2xvclZhbHVlLnJhbmdlLmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVl
KCkgIT0gUmFuZ2U6OmtVbnNwZWNpZmllZCkKLSAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxS
YW5nZUZsYWcgPSBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBD
b25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRl
b1JhbmdlOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNl
bnQoKSkKLSAgICAgICAgICAgIHJlY29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJf
Y2hhbm5lbC52YWx1ZSgpOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0
ZXJpc3RpY3MuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFj
dGVyaXN0aWNzID0gY29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50
cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MudmFsdWUoKSk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVl
Lm1hdHJpeF9jb2VmZmljaWVudHMuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAgcmVjb3JkLm1h
dHJpeENvZWZmaWNpZW50cyA9IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVl
Lm1hdHJpeF9jb2VmZmljaWVudHMudmFsdWUoKSk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLnBy
aW1hcmllcy5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMg
PSBjb252ZXJ0VG9Db2xvclByaW1hcmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsK
LSAgICB9Ci0KICAgICBjb25zdGV4cHIgc2l6ZV90IFZQQ29kZWNDb25maWd1cmF0aW9uQ29udGVu
dHNTaXplID0gMTI7CiAKICAgICB1aW50MzJfdCB2ZXJzaW9uQW5kRmxhZ3MgPSAxIDw8IDI0OwpA
QCAtMTEwNiwxMCArMTA5MCwxNTQgQEAgc3RhdGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXIKICAgICBhdXRv
IGV4dGVuc2lvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBleHRlbnNpb25zS2V5cy5kYXRhKCksIGV4dGVuc2lvbnNWYWx1ZXMuZGF0YSgpLCBleHRl
bnNpb25zS2V5cy5zaXplKCksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIENNVmlkZW9Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKG5vRXJyICE9IENN
VmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ01WaWRl
b0NvZGVjVHlwZV9WUDksIHBhcnNlci53aWR0aCgpLCBwYXJzZXIuaGVpZ2h0KCksIGV4dGVuc2lv
bnMuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvbikpCisgICAgQ01WaWRlb0NvZGVjVHlwZSBjb2Rl
YyA9IHJlY29yZC5jb2RlY05hbWUgPT0gInZwMDkiID8ga0NNVmlkZW9Db2RlY1R5cGVfVlA5IDog
J3ZwMDgnOworICAgIGlmIChub0VyciAhPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgY29kZWMsIHdpZHRoLCBoZWlnaHQsIGV4dGVuc2lvbnMuZ2V0
KCksICZmb3JtYXREZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBhZG9wdENGKGZvcm1hdERlc2NyaXB0aW9uKTsKIH0KKworc3RhdGljIFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFk
ZXJQYXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2VyJiBwYXJzZXIsIGNvbnN0
IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCit7CisgICAgVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQgcmVjb3JkOworCisgICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA5IjsKKyAgICBy
ZWNvcmQucHJvZmlsZSA9IHBhcnNlci5wcm9maWxlKCk7CisgICAgLy8gQ29yZU1lZGlhIGRvZXMg
bmF0IGNhcmUgYWJvdXQgdGhlIFZQOSBjb2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEu
MCBoZXJlOgorICAgIHJlY29yZC5sZXZlbCA9IDEwOworICAgIHJlY29yZC5iaXREZXB0aCA9IHBh
cnNlci5iaXRfZGVwdGgoKTsKKyAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gcGFyc2Vy
LmNvbG9yX3JhbmdlKCkgPyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25m
aWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7CisgICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5n
ID0gY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHBhcnNlci5zdWJzYW1w
bGluZ194KCksIHBhcnNlci5zdWJzYW1wbGluZ195KCkpOworICAgIHJlY29yZC5jb2xvclByaW1h
cmllcyA9IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsKKyAgICBy
ZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNo
YXJhY3RlcmlzdGljczo6VW5zcGVjaWZpZWQ7CisgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50
cyA9IFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQ7CisKKyAg
ICAvLyBDb250YWluZXIgY29sb3IgdmFsdWVzIGNhbiBvdmVycmlkZSBwZXItc2FtcGxlIG9uZXM6
CisgICAgaWYgKGNvbG9yLmlzX3ByZXNlbnQoKSkgeworICAgICAgICBhdXRvJiBjb2xvclZhbHVl
ID0gY29sb3IudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBs
aW5nX3guaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kuaXNf
cHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVy
dFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNh
bXBsaW5nX3gudmFsdWUoKSwgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS52YWx1ZSgp
KTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUucmFuZ2UuaXNfcHJlc2VudCgpICYmIGNvbG9yVmFs
dWUucmFuZ2UudmFsdWUoKSAhPSBSYW5nZTo6a1Vuc3BlY2lmaWVkKQorICAgICAgICAgICAgcmVj
b3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSA9PSBSYW5n
ZTo6a0Z1bGwgPyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0
aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7CisgICAgICAgIGlmIChjb2xvclZhbHVlLmJpdHNfcGVyX2No
YW5uZWwuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmJpdERlcHRoID0gY29sb3JW
YWx1ZS5iaXRzX3Blcl9jaGFubmVsLnZhbHVlKCk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnRy
YW5zZmVyX2NoYXJhY3RlcmlzdGljcy5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQu
dHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cyhjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy52YWx1ZSgpKTsKKyAgICAgICAg
aWYgKGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy5pc19wcmVzZW50KCkpCisgICAgICAg
ICAgICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gY29udmVydFRvTWF0cml4Q29lZmZpY2ll
bnRzKGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy52YWx1ZSgpKTsKKyAgICAgICAgaWYg
KGNvbG9yVmFsdWUucHJpbWFyaWVzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5j
b2xvclByaW1hcmllcyA9IGNvbnZlcnRUb0NvbG9yUHJpbWFyaWVzKGNvbG9yVmFsdWUucHJpbWFy
aWVzLnZhbHVlKCkpOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGVGb3JtYXREZXNjcmlwdGlv
bkZyb21WUENvZGVjQ29uZmlndXJhdGlvblJlY29yZChyZWNvcmQsIHBhcnNlci53aWR0aCgpLCBw
YXJzZXIuaGVpZ2h0KCkpOworfQorCitzdHJ1Y3QgVlA4RnJhbWVIZWFkZXIgeworICAgIGJvb2wg
a2V5ZnJhbWUgeyBmYWxzZSB9OworICAgIHVpbnQ4X3QgdmVyc2lvbiB7IDAgfTsKKyAgICBib29s
IHNob3dGcmFtZSB7IHRydWUgfTsKKyAgICB1aW50MzJfdCBwYXJ0aXRpb25TaXplIHsgMCB9Owor
ICAgIHVpbnQ4X3QgaG9yaXpvbnRhbFNjYWxlIHsgMCB9OworICAgIHVpbnQxNl90IHdpZHRoIHsg
MCB9OworICAgIHVpbnQ4X3QgdmVydGljYWxTY2FsZSB7IDAgfTsKKyAgICB1aW50MTZfdCBoZWln
aHQ7CisgICAgYm9vbCBjb2xvclNwYWNlIHsgZmFsc2UgfTsKKyAgICBib29sIG5lZWRzQ2xhbXBp
bmcgeyBmYWxzZSB9OworfTsKKworc3RhdGljIE9wdGlvbmFsPFZQOEZyYW1lSGVhZGVyPiBwYXJz
ZVZQOEZyYW1lSGVhZGVyKHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sK
KyAgICAvLyBWUDggZnJhbWUgaGVhZGVycyBhcmUgZGVmaW5lZCBpbiBSRkMgNjM4NjogPGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2Mzg2Pi4KKworICAgIC8vIEJhaWwgaWYgdGhlIGhl
YWRlciBpcyBiZWxvdyBhIG1pbmltdW0gc2l6ZQorICAgIGlmIChmcmFtZVNpemUgPCAxMSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFZQOEZyYW1lSGVhZGVyIGhlYWRlcjsK
KyAgICBzaXplX3QgaGVhZGVyU2l6ZSA9IDExOworCisgICAgYXV0byB2aWV3ID0gSlNDOjpEYXRh
Vmlldzo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZnJhbWVEYXRhLCBoZWFkZXJTaXplKSwg
MCwgaGVhZGVyU2l6ZSk7CisgICAgYm9vbCBzdGF0dXMgPSB0cnVlOworCisgICAgYXV0byB1bmNv
bXByZXNzZWRDaHVuayA9IHZpZXctPmdldDx1aW50MzJfdD4oMCwgdHJ1ZSwgJnN0YXR1cyk7Cisg
ICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBoZWFk
ZXIua2V5ZnJhbWUgPSB1bmNvbXByZXNzZWRDaHVuayAmIDB4ODAwMDAwMDA7CisgICAgaGVhZGVy
LnZlcnNpb24gPSAodW5jb21wcmVzc2VkQ2h1bmsgPj4gMjgpICYgMHg3OworICAgIGhlYWRlci5z
aG93RnJhbWUgPSB1bmNvbXByZXNzZWRDaHVuayAmIDB4ODAwMDAwMDsKKyAgICBoZWFkZXIucGFy
dGl0aW9uU2l6ZSA9ICh1bmNvbXByZXNzZWRDaHVuayA+PiA4KSAmIDB4N0ZGRkY7CisKKyAgICBp
ZiAoIWhlYWRlci5rZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuIGhlYWRlcjsKKworICAgIGF1dG8g
c3RhcnRDb2RlMCA9IHZpZXctPmdldDx1aW50OF90PigzLCB0cnVlLCAmc3RhdHVzKTsKKyAgICBp
ZiAoIXN0YXR1cyB8fCBzdGFydENvZGUwICE9IDB4OWQpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBhdXRvIHN0YXJ0Q29kZTEgPSB2aWV3LT5nZXQ8dWludDhfdD4oNCwgdHJ1
ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMgfHwgc3RhcnRDb2RlMSAhPSAweDAxKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBzdGFydENvZGUyID0gdmlldy0+
Z2V0PHVpbnQ4X3Q+KDUsIHRydWUsICZzdGF0dXMpOworICAgIGlmICghc3RhdHVzIHx8IHN0YXJ0
Q29kZTIgIT0gMHgyYSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8g
aG9yaXpvbnRhbEFuZFdpZHRoRmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDYsIHRydWUsICZz
dGF0dXMpOworICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgaGVhZGVyLmhvcml6b250YWxTY2FsZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGhvcml6
b250YWxBbmRXaWR0aEZpZWxkID4+IDE0KTsKKyAgICBoZWFkZXIud2lkdGggPSBzdGF0aWNfY2Fz
dDx1aW50MTZfdD4oaG9yaXpvbnRhbEFuZFdpZHRoRmllbGQgJiAweDNGRkYpOworCisgICAgYXV0
byB2ZXJ0aWNhbEFuZEhlaWdodEZpZWxkID0gdmlldy0+Z2V0PHVpbnQxNl90Pig4LCB0cnVlLCAm
c3RhdHVzKTsKKyAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGhlYWRlci52ZXJ0aWNhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmVydGlj
YWxBbmRIZWlnaHRGaWVsZCA+PiAxNCk7CisgICAgaGVhZGVyLmhlaWdodCA9IHN0YXRpY19jYXN0
PHVpbnQxNl90Pih2ZXJ0aWNhbEFuZEhlaWdodEZpZWxkICYgMHgzRkZGKTsKKworICAgIGF1dG8g
Y29sb3JTcGFjZUFuZENsYW1waW5nRmllbGQgPSB2aWV3LT5nZXQ8dWludDhfdD4oMTAsIHRydWUs
ICZzdGF0dXMpOworICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgaGVhZGVyLmNvbG9yU3BhY2UgPSBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCAm
IDB4ODA7CisgICAgaGVhZGVyLm5lZWRzQ2xhbXBpbmcgPSBjb2xvclNwYWNlQW5kQ2xhbXBpbmdG
aWVsZCAmIDB4NDA7CisKKyAgICByZXR1cm4gaGVhZGVyOworfQorCitzdGF0aWMgUmV0YWluUHRy
PENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhl
YWRlcihjb25zdCBWUDhGcmFtZUhlYWRlciYgaGVhZGVyLCBjb25zdCB3ZWJtOjpFbGVtZW50PENv
bG91cj4mIGNvbG9yKQoreworICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJlY29yZDsK
KyAgICByZWNvcmQuY29kZWNOYW1lID0gInZwMDgiOworICAgIHJlY29yZC5wcm9maWxlID0gMDsK
KyAgICByZWNvcmQubGV2ZWwgPSAxMDsKKyAgICByZWNvcmQuYml0RGVwdGggPSA4OworICAgIHJl
Y29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdl
OworICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IFZQQ29uZmlndXJhdGlvbkNocm9tYVN1
YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVkOworICAgIHJlY29yZC5jb2xvclBy
aW1hcmllcyA9IGhlYWRlci5jb2xvclNwYWNlID8gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJp
ZXM6OlVuc3BlY2lmaWVkIDogVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzYwMV83
OworICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9ICBoZWFkZXIuY29sb3JTcGFj
ZSA/IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZCA6
IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF82MDFfNzsKKyAgICBy
ZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gaGVhZGVyLmNvbG9yU3BhY2UgPyBWUENvbmZpZ3Vy
YXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkIDogVlBDb25maWd1cmF0aW9uTWF0
cml4Q29lZmZpY2llbnRzOjpCVF82MDFfNzsKKworICAgIC8vIENvbnRhaW5lciBjb2xvciB2YWx1
ZXMgY2FuIG92ZXJyaWRlIHBlci1zYW1wbGUgb25lczoKKyAgICBpZiAoY29sb3IuaXNfcHJlc2Vu
dCgpKSB7CisgICAgICAgIGF1dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52YWx1ZSgpOworICAgICAg
ICBpZiAoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC5pc19wcmVzZW50KCkgJiYgY29s
b3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS5pc19wcmVzZW50KCkpCisgICAgICAgICAgICBy
ZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vi
c2FtcGxpbmcoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52YWx1ZSgpLCBjb2xvclZh
bHVlLmNocm9tYV9zdWJzYW1wbGluZ195LnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1
ZS5yYW5nZS5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdl
OjprVW5zcGVjaWZpZWQpCisgICAgICAgICAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0g
Y29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/IFZQQ29uZmlndXJhdGlv
blJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAg
ICAgICAgaWYgKGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC5pc19wcmVzZW50KCkpCisgICAg
ICAgICAgICByZWNvcmQuYml0RGVwdGggPSBjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwudmFs
dWUoKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlz
X3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9
IGNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hh
cmFjdGVyaXN0aWNzLnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29l
ZmZpY2llbnRzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5tYXRyaXhDb2VmZmlj
aWVudHMgPSBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29sb3JWYWx1ZS5tYXRyaXhfY29l
ZmZpY2llbnRzLnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5wcmltYXJpZXMuaXNf
cHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gY29udmVydFRv
Q29sb3JQcmltYXJpZXMoY29sb3JWYWx1ZS5wcmltYXJpZXMudmFsdWUoKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9u
UmVjb3JkKHJlY29yZCwgaGVhZGVyLndpZHRoLCBoZWFkZXIuaGVpZ2h0KTsKK30KICNlbmRpZgog
CiB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFt
ZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZGVyKiByZWFkZXIsIHVpbnQ2NF90KiBieXRlc1JlbWFp
bmluZykKQEAgLTExNDQsNyArMTI3Miw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAg
ICAgIGR1cmF0aW9uID0gdHJhY2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICogbV90aW1lc2Nh
bGUgLyAxMDAwMDAwMDAwOwogCiAjaWYgRU5BQkxFKFZQOSkKLSAgICBpZiAodHJhY2suY29kZWNf
aWQuaXNfcHJlc2VudCgpICYmIHRyYWNrLmNvZGVjX2lkLnZhbHVlKCkgPT0gIlZfVlA5Iikgewor
ICAgIGlmICh0cmFjay5jb2RlY19pZC5pc19wcmVzZW50KCkgJiYgKHRyYWNrLmNvZGVjX2lkLnZh
bHVlKCkgPT0gIlZfVlA5IiB8fCB0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOCIpKSB7
CiAgICAgICAgIGlmICghdHJhY2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIpIHsKICAgICAgICAg
ICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAg
ICAgaWYgKG5vRXJyICE9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbWV0YWRhdGEuc2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVs
dCwgbnVsbHB0ciwgMCwgbWV0YWRhdGEuc2l6ZSwgMCwgJnJhd0Jsb2NrQnVmZmVyKSkKQEAgLTEx
ODAsMTQgKzEzMDgsMjkgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
RnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICAgICAgaWYgKG5v
RXJyICE9IENNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcih0cmFja0RhdGEtPmN1cnJlbnRCbG9j
a0J1ZmZlci5nZXQoKSwgMCwgJnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0ciwgKGNoYXIq
KikmYmxvY2tCdWZmZXJEYXRhKSkKICAgICAgICAgICAgIHJldHVybiBTa2lwKHJlYWRlciwgYnl0
ZXNSZW1haW5pbmcpOwogCi0gICAgICAgIGF1dG8mIGhlYWRlclBhcnNlciA9IHRyYWNrRGF0YS0+
aGVhZGVyUGFyc2VyOwotICAgICAgICBpZiAoIWhlYWRlclBhcnNlci5QYXJzZVVuY29tcHJlc3Nl
ZEhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgYm9vbCBp
c0tleSA9IGZhbHNlOworICAgICAgICBpZiAodHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAiVl9W
UDkiKSB7CisgICAgICAgICAgICBhdXRvJiBoZWFkZXJQYXJzZXIgPSB0cmFja0RhdGEtPmhlYWRl
clBhcnNlcjsKKyAgICAgICAgICAgIGlmICghaGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2Vk
SGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKworICAgICAgICAg
ICAgLy8gT25seSB1cGRhdGUgdGhlIGZvcm1hdCBkZXNjcmlwdGlvbiB3aGVuIHRoZSBoZWFkZXIg
aW5kaWNhdGVzIHRoYXQgdGhlIHNhbXBsZSBpcworICAgICAgICAgICAgLy8gYSBrZXktZnJhbWUs
IG90aGVyd2lzZSBjb2xvciBpbmZvcm1hdGlvbiB3aWxsIG5vdCBiZSBwYXJzZWQuCisgICAgICAg
ICAgICBpZiAoaGVhZGVyUGFyc2VyLmtleSgpKSB7CisgICAgICAgICAgICAgICAgaXNLZXkgPSB0
cnVlOworICAgICAgICAgICAgICAgIHRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVh
dGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoaGVhZGVyUGFyc2VyLCB0cmFj
ay52aWRlby52YWx1ZSgpLmNvbG91cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBp
ZiAodHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAiVl9WUDgiKSB7CisgICAgICAgICAgICBhdXRv
IGhlYWRlciA9IHBhcnNlVlA4RnJhbWVIZWFkZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6
ZUF0UG9zaXRpb24pOworICAgICAgICAgICAgaWYgKCFoZWFkZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgICAgIGlmICho
ZWFkZXItPmtleWZyYW1lKSB7CisgICAgICAgICAgICAgICAgaXNLZXkgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXREZXNj
cmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRlciwgdHJhY2sudmlkZW8udmFsdWUoKS5jb2xvdXIp
OworICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICAgICAgLy8gT25seSB1cGRhdGUgdGhl
IGZvcm1hdCBkZXNjcmlwdGlvbiB3aGVuIHRoZSBoZWFkZXIgaW5kaWNhdGVzIHRoYXQgdGhlIHNh
bXBsZSBpcwotICAgICAgICAvLyBhIGtleS1mcmFtZSwgb3RoZXJ3aXNlIGNvbG9yIGluZm9ybWF0
aW9uIHdpbGwgbm90IGJlIHBhcnNlZC4KLSAgICAgICAgaWYgKGhlYWRlclBhcnNlci5rZXkoKSkK
LSAgICAgICAgICAgIHRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXRE
ZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoaGVhZGVyUGFyc2VyLCB0cmFjay52aWRlby52
YWx1ZSgpLmNvbG91cik7CiAgICAgICAgIGlmICghdHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlv
bikKICAgICAgICAgICAgIHJldHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogCkBA
IC0xMjA0LDcgKzEzNDcsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgICAgICB0cmFj
a0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIHRyYWNrRGF0YS0+
Y3VycmVudEJsb2NrQnVmZmVyUG9zaXRpb24gPSAwOwogCi0gICAgICAgIGlmICghaGVhZGVyUGFy
c2VyLmtleSgpKSB7CisgICAgICAgIGlmICghaXNLZXkpIHsKICAgICAgICAgICAgIGF1dG8gYXR0
YWNobWVudHNBcnJheSA9IENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShz
YW1wbGVCdWZmZXIuZ2V0KCksIHRydWUpOwogICAgICAgICAgICAgQVNTRVJUKGF0dGFjaG1lbnRz
QXJyYXkpOwogICAgICAgICAgICAgaWYgKCFhdHRhY2htZW50c0FycmF5KQpAQCAtMTIyOSw2ICsx
MzcyLDE4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgcmV0dXJuIFNraXAocmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CiB9CiAKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkVmlkZW9Db2RlY3MoKQoreworICAgIHN0YXRpYyBhdXRv
IGNvZGVjcyA9IG1ha2VOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+KHsgIlZfVlA4Iiwg
IlZfVlA5IiB9KTsKKyAgICByZXR1cm4gY29kZWNzOworfQorCitjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZEF1ZGlvQ29kZWNzKCkKK3sKKyAg
ICBzdGF0aWMgYXV0byBjb2RlY3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+
Pih7IH0pOworICAgIHJldHVybiBjb2RlY3M7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggM2E4NDY0NTlh
M2ViMzU1MzYxMjEyOTc2YzhlYWRlNDYzZDYzYjE5Ny4uNzczZjZhMDY0YzM5YzU3YzNlNTExNWMy
ZjcwOGY4Yjc4NDExMzEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtODAs
NiArODAsOCBAQCBwdWJsaWM6CiAgICAgICAgIEludmFsaWREb2NUeXBlLAogICAgICAgICBJbnZh
bGlkSW5pdFNlZ21lbnQsCiAgICAgICAgIFJlY2VpdmVkRWJtbEluc2lkZVNlZ21lbnQsCisgICAg
ICAgIFVuc3VwcG9ydGVkVmlkZW9Db2RlYywKKyAgICAgICAgVW5zdXBwb3J0ZWRBdWRpb0NvZGVj
LAogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CkBAIC0xMTAsNiAr
MTEyLDkgQEAgcHJpdmF0ZToKICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAjZW5kaWYKIAorICAgIHN0YXRpYyBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFZpZGVvQ29kZWNzKCk7CisgICAgc3RhdGljIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkQXVkaW9Db2RlY3MoKTsKKwogICAgIC8vIHdlYm06
OkNhbGxiYWNrCiAgICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEJlZ2luKGNvbnN0IHdlYm06OkVs
ZW1lbnRNZXRhZGF0YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOwogICAgIHdlYm06OlN0YXR1cyBP
bkVsZW1lbnRFbmQoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXND
b2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0
aWVzQ29jb2EuaAppbmRleCAxNGM2ZjNhZTk4NDMwYWFlYzJiOGU4MjJiMWZiNTFiNDc1OGFhOTMw
Li5iMTdkYTYzNTkyNTlmY2FjNjM4NTNlMGRmMWE1YWE0ZGIzMGVlMjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGll
c0NvY29hLmgKQEAgLTM5LDggKzM5LDEwIEBAIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHNl
dE92ZXJyaWRlVlA5U2NyZWVuU2l6ZUFuZFNjYWxlRm9yVGVzdGluZyhmbG9hdCB3aWR0CiBXRUJD
T1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZXNldE92ZXJyaWRlVlA5U2NyZWVuU2l6ZUFuZFNjYWxl
Rm9yVGVzdGluZygpOwogCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdpc3RlcldlYktp
dFZQOURlY29kZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyV2ViS2l0
VlA4RGVjb2RlcigpOwogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJTdXBwbGVt
ZW50YWxWUDlEZWNvZGVyKCk7CiBleHRlcm4gYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFibGUoKTsK
K2V4dGVybiBib29sIGlzVlA4RGVjb2RlckF2YWlsYWJsZSgpOwogZXh0ZXJuIGJvb2wgaXNWUENv
ZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29y
ZCYpOwogZXh0ZXJuIGJvb2wgdmFsaWRhdGVWUFBhcmFtZXRlcnMoVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQmLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mLCBjb25zdCBWaWRlb0NvbmZpZ3VyYXRp
b24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQppbmRleCBjODFlOTdhYTNlNDc3ZDdjN2I4OWMx
NjE5YTlmM2ZmMmYyYmVjMGExLi5jMDhmYzY4NDg4M2I2MDYyNjZhNTY3MDQ5NjlkM2RkODhhNjJj
OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMTAwLDYgKzEwMCwxMSBAQCB2b2lkIHJl
Z2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpCiAgICAgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVy
V2ViS2l0VlA5RGVjb2RlcigpOwogfQogCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rlcigp
Cit7CisgICAgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOwor
fQorCiB2b2lkIHJlZ2lzdGVyU3VwcGxlbWVudGFsVlA5RGVjb2RlcigpCiB7CiAgICAgaWYgKCFW
aWRlb1Rvb2xib3hMaWJyYXJ5KHRydWUpKQpAQCAtMTE2LDcgKzEyMSwxNCBAQCBib29sIGlzVlA5
RGVjb2RlckF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIG5vRXJyID09IFZUU2VsZWN0QW5kQ3JlYXRl
VmlkZW9EZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKIH0KIAotYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZp
Z3VyYXRpb24pCitib29sIGlzVlA4RGVjb2RlckF2YWlsYWJsZSgpCit7CisgICAgaWYgKCFWaWRl
b1Rvb2xib3hMaWJyYXJ5KHRydWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IG5vRXJyID09IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoJ3ZwMDgnLCBr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKK30KKworc3RhdGljIGJvb2wg
aXNWUDlDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbikKIHsKICAgICBpZiAoIWlzVlA5RGVjb2RlckF2
YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjgsNiArMTgwLDM3IEBAIGJv
b2wgaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZCYgY29kZWNDb25mCiAgICAgcmV0dXJuIGhhczRrU2NyZWVuOwogfQogCitzdGF0
aWMgYm9vbCBpc1ZQOENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uKQoreworICAgIGlmICghaXNWUDhE
ZWNvZGVyQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFZQOCBk
ZWNvZGVyIG9ubHkgc3VwcG9ydHMgUHJvZmlsZSAwOworICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRp
b24ucHJvZmlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29kZXIg
b25seSBzdXBwb3J0cyA0MjAgY2hyb21hIHN1YnNhbXBsaW5nLgorICAgIGlmIChjb2RlY0NvbmZp
Z3VyYXRpb24uY2hyb21hU3Vic2FtcGxpbmcgPiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1w
bGluZzo6U3Vic2FtcGxpbmdfNDIwX0NvbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVlA4IGRlY29kZXIgb25seSBzdXBwb3J0cyA4LWJpdCBjb2xvcjoKKyAgICBpZiAo
Y29kZWNDb25maWd1cmF0aW9uLmJpdERlcHRoID4gOCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29y
ZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9u
KQoreworICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDA4IiB8fCBj
b2RlY0NvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDgiKQorICAgICAgICByZXR1cm4gaXNW
UDhDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9uKTsK
KworICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDA5IiB8fCBjb2Rl
Y0NvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDkiKQorICAgICAgICByZXR1cm4gaXNWUDlD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9uKTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVj
Q29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uLCBNZWRpYUNhcGFiaWxpdGll
c0luZm8mIGluZm8sIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYgdmlkZW9Db25maWd1cmF0aW9u
KQogewogICAgIGlmICghaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChjb2Rl
Y0NvbmZpZ3VyYXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCAy
MTk4ODdmYTgxZTJiYWRhOTM1YjIyNGIxYjcwYzdlMTE5NjhlZTRhLi5jYTAwOTIxZGM0NjFlOGVi
YmViYWZjMjFkYzU3YjdkNzNiYmZjMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuaApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCB3ZWJSVENB
dmFpbGFibGUoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlcldlYktpdFZQOURlY29kZXIoKTsK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKICAgICBzdGF0aWMg
dm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRBY3RpdmUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXJDb2NvYS5jcHAKaW5kZXggNGEzMmQxZmRhNzg4M2E4Y2RhZTFhMGUzODhiMjUyNmE4YzM0MzUw
ZS4uZTY4ZjkxNjBlZjE4NGJiODMyNGZiOThlMmEzMDM5M2FlZjJhZDk4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcApAQCAtMzQsNiArMzQsNyBAQCBB
TExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNv
ZGVyLmg+CiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKKyNpbmNsdWRlIDx3ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VlA5RGVjb2Rlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL2Rhcndpbi9XZWFrTGlua2luZy5oPgpAQCAtOTksNiArMTAwLDEzIEBAIHZvaWQgTGli
V2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpCiAgICAgaWYgKHdlYlJU
Q0F2YWlsYWJsZSgpKQogICAgICAgICB3ZWJydGM6OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2Rlcigp
OwogfQorCit2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIo
KQoreworICAgIGlmICh3ZWJSVENBdmFpbGFibGUoKSkKKyAgICAgICAgd2VicnRjOjpyZWdpc3Rl
cldlYktpdFZQOERlY29kZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0OGI3NGVhZTgwMWM2MjRkMTIx
NzMxMDk0OTA4MGVkYmE2MzQwNjkwLi41YzRjYTI1ZDRkYWE3ZDU4MTMxMTcwYzk3MjAzZjQwNmVi
YjFkYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MzgsOSArNTM4LDkgQEAgdm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp1cGRhdGVDYXB0dXJlQWNjZXNzKGJvb2wgYWxsb3dBdWRpb0NhcHR1
cmUsIGJvb2wKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKLXZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVy
LCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBi
b29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
KQogewotICAgIG1fZ3B1UHJvY2Vzcy0+ZW5hYmxlVlA5RGVjb2RlcnMoc2hvdWxkRW5hYmxlVlA5
RGVjb2Rlciwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKKyAgICBtX2dwdVByb2Nlc3MtPmVu
YWJsZVZQOURlY29kZXJzKHNob3VsZEVuYWJsZVZQOERlY29kZXIsIHNob3VsZEVuYWJsZVZQOURl
Y29kZXIsIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5k
ZXggYTI4YzhmZjVmNmMwNjRiZWViM2I4NmM2ZWE1NGMzZTQ3YjRhZjlkZi4uNGYyZDQ0ZmZiNTUw
YWE2ZGU4MTBiOWJmOTUyNjIwN2Q1NzlkYjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzYsNyArMTM2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5
aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCiAjaWYgRU5BQkxF
KFZQOSkKLSAgICB2b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVj
b2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOworICAgIHZvaWQgZW5hYmxlVlA5
RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQ
OURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKICNlbmRpZgogCiAjaWYg
VVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDlkNTRl
MTY0NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYuLjhmYzBlZmFjOTMyMTgyMjJiYjBi
YzdjMjFhYWI5MTllNTNhOTczNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0z
OCw3ICszOCw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNE
aXNwYXRjaE1lc3NhZ2UgewogICAgIEVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBlcigpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoVlA5KQotICAgIEVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxl
VlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCisgICAgRW5hYmxlVlA5
RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQ
OURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCBlM2Q1NmE4N2M3ZGRlYWVm
MDBhNmQxNzIwOGRiOGFlMWUyMjkxMGRiLi5jM2EzNjE5ZjY3ZWFiNGI0ZGUyM2UxMGZkNGM5ODBi
N2E0NTlmYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC0y
OTIsMTIgKzI5MiwxOCBAQCBXb3JrUXVldWUmIEdQVVByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1F1
ZXVlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKLXZvaWQgR1BVUHJvY2Vzczo6ZW5hYmxl
VlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2RlcikKK3ZvaWQgR1BVUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBz
aG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wg
c2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogewogICAgIGlmIChzaG91bGRFbmFibGVWUDlEZWNv
ZGVyICYmICFtX2VuYWJsZVZQOURlY29kZXIpIHsKICAgICAgICAgbV9lbmFibGVWUDlEZWNvZGVy
ID0gdHJ1ZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgV2ViQ29yZTo6cmVnaXN0ZXJT
dXBwbGVtZW50YWxWUDlEZWNvZGVyKCk7CisjZW5kaWYKKyAgICB9CisgICAgaWYgKHNob3VsZEVu
YWJsZVZQOERlY29kZXIgJiYgIW1fZW5hYmxlVlA4RGVjb2RlcikgeworICAgICAgICBtX2VuYWJs
ZVZQOERlY29kZXIgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBXZWJDb3Jl
OjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKICNlbmRpZgogICAgIH0KICAgICBpZiAoc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyICYmICFtX2VuYWJsZVZQOVNXRGVjb2RlcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggYjZlYTgxODNjZTY1MWU0OGQxMTdlMjQ3
YjU3ZmIwNTg3OTFjMjY5ZC4uYmVhNTYwM2MzNjQ4Yjc3NWFmYWVlMGI5MDAzYjkyZTIwNjY3ODRj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKLSAgICB2b2lkIGVuYWJsZVZQOURl
Y29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlT
V0RlY29kZXIpOworICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVW
UDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxl
VlA5U1dEZWNvZGVyKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTQ4LDYgKzE0OCw3IEBAIHBy
aXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyPiBtX2F1ZGlvU2Vzc2lvbk1hbmFnZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoVlA5
KQorICAgIGJvb2wgbV9lbmFibGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5h
YmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOVNXRGVjb2RlciB7
IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMzhjYTY4OTIyZWFhY2FjYzZmMGExNTU0M2JkYTZj
OTAwMTQ4ZGJmYS4uNjNhNjZmNzdlMjFiZDQyODdhYjllOTAzZTllODIxNjkyMDVmZTg4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTE2MSw2ICsxNjEsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKFdFQkdMKQogICAg
IGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CiAjZW5kaWYKKyAgICBl
bmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOERlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRF
bmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVy
OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUyMCw2ICs1MjEsOSBAQCBPcHRp
b25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlm
CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVj
b2RlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCBjODc4ZTZkOTgxZmE5NDQ0OTdmMDI3ZmFhMzIxMDk3ZjJk
NjliYWM5Li5hMDhkODRkZjhhYTE5MmI3ZDQzNGQyMDY4M2ZhN2I4YTg5ZDFiNjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0y
MzIsNiArMjMyLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lmIEVO
QUJMRShXRUJHTCkKICAgICBib29sIHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFs
c2UgfTsKICNlbmRpZgorICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciB7IGZhbHNlIH07
CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNo
b3VsZEVuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNE
ZWZhdWx0VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlcy5jcHAKaW5kZXggY2NkMzNjYzAyYTcyMjQ4OGFlZTEyYjMyNWU0Y2NkOTNmYjFl
MDdlYi4uMTBhNzNkNTMyZTg5OGQ0OTcxMWU1M2I2NDJlYjk5N2ZhZTU5ZjNjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3Bw
CkBAIC0yNzgsNiArMjc4LDE1IEBAIGJvb2wgZGVmYXVsdFdlYlhSRW5hYmxlZCgpCiAKICNpZiBF
TkFCTEUoVlA5KQogCitib29sIGRlZmF1bHRWUDhEZWNvZGVyRW5hYmxlZCgpCit7CisjaWYgSEFW
RShTWVNURU1fRkVBVFVSRV9GTEFHUykKKyAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJsZWQo
InZwOF9kZWNvZGVyIik7CisjZW5kaWYKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBk
ZWZhdWx0VlA5RGVjb2RlckVuYWJsZWQoKQogewogI2lmIEhBVkUoU1lTVEVNX0ZFQVRVUkVfRkxB
R1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1
bHRWYWx1ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZh
bHVlcy5oCmluZGV4IGQwOWQ0MzkzOTM3MDA0ZDNlMTBiOWI5NjZmOGUzMDZiMGFmODk1OGMuLjJm
YzdkOGVkMTI1NGQzNDY3NWQxZTJlOGY5YWEwMGRmNTAwNTNiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCkBAIC0xMDAsNiAr
MTAwLDcgQEAgYm9vbCBkZWZhdWx0V2ViWFJFbmFibGVkKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShWUDkpCitib29sIGRlZmF1bHRWUDhEZWNvZGVyRW5hYmxlZCgpOwogYm9vbCBkZWZhdWx0VlA5
RGVjb2RlckVuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFZQOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRl
cnkoKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggYjVhM2NjNzcxMjY3MDU1M2U1YTI4M2FjM2E4YmE0M2ZkNmQ3
NWEyNy4uNTA4ZDRjZjk4NDFlYzQ4ODZlMTg4NTI4NDVlNTBkNmJiY2JhYWZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03OTUzLDYgKzc5NTMsNyBAQCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJz
KFdlYlByb2Nlc3NQcm94eSYgcHJvYwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlE
ZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShW
UDkpICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVj
b2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2RlckVuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2RlckVuYWJs
ZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVmZXJlbmNlcygpLnZw
OVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CiAjZW5kaWYKICAgICBwYXJhbWV0ZXJzLnNo
b3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
Y29uZmlndXJhdGlvbigpLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggMTFmYTcwZjJjZTliNDMzNTFlNTNiOWExZjNmNzNmY2E1MjhkNzRhMi4uYTI5MzA3
ZjcwYjZlZGY3Zjg0OTM2ZWRhNmRiY2ZiOGRiM2E2ZDAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTE4NSwx
MiArMTg1LDEzIEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVSZW1vdGVD
b21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDCiB2b2lkIEdQVVByb2Nlc3NDb25u
ZWN0aW9uOjp1cGRhdGVQYXJhbWV0ZXJzKGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7CiAjaWYgRU5BQkxFKFZQOSkKLSAgICBpZiAobV9lbmFibGVWUDlEZWNv
ZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciAmJiBtX2VuYWJsZVZQOVNX
RGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKKyAgICBpZiAo
bV9lbmFibGVWUDhEZWNvZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlciAm
JiBtX2VuYWJsZVZQOURlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVy
ICYmIG1fZW5hYmxlVlA5U1dEZWNvZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dE
ZWNvZGVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2VuYWJsZVZQOURlY29kZXIgPSBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXI7CiAgICAgbV9lbmFibGVWUDlEZWNvZGVyID0g
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIG1fZW5hYmxlVlA5U1dEZWNv
ZGVyID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXI7Ci0gICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQOURl
Y29kZXJzKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgcGFyYW1ldGVycy5zaG91
bGRFbmFibGVWUDlTV0RlY29kZXIpLCB7IH0pOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFbmFibGVWUDlEZWNvZGVycyhwYXJhbWV0
ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIsIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVj
b2RlciwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIpLCB7IH0pOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCAyYTA0Yzc0ZjdmYjYzNzcxYmFkZmI1NjM2ZDM3NTY4NThjYjMxN2Ew
Li5mZjk5MjY1YWQ2YmQyMmQzMGRmYTVmNzEzNTUzMDQ2NDY1NjdjOGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC04
Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVBhcmFtZXRlcnMoY29uc3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAjaWYgRU5BQkxFKFZQOSkKKyAgICBib29sIGlz
VlA4RGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZVZQOERlY29kZXI7IH0K
ICAgICBib29sIGlzVlA5RGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZVZQ
OURlY29kZXI7IH0KICAgICBib29sIGlzVlBTV0RlY29kZXJFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9lbmFibGVWUDlTV0RlY29kZXI7IH0KICNlbmRpZgpAQCAtMTIzLDYgKzEyNCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyPiBtX2F1
ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZQOSkKKyAgICBi
b29sIG1fZW5hYmxlVlA4RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOURl
Y29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDA2MTg3OTkzMGNmN2E4OTY4Yzg3ODk0MmM2YzU1OTAyZDBlODk3NGMuLjNkMTU2ZWFk
YzU3NjAxZjQ1ZTE5NzJkNWQ1ZWY0ZWQ0OTY4NTg4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MTgsNiArODE4LDkgQEAgV2ViUGFnZTo6
V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIp
CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVZQOURlY29kZXIoKTsKIAor
ICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIpCisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVZQOFNXRGVjb2RlcigpOworCiAgICAgaWYgKHBhcmFt
ZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbmFibGVWUDlTV0RlY29kZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRjYTA5N2EwYmI4NTEzNDI4MGVmNDJkZGFmNmU4OTlm
MDEwYWFmOTIuLjc4YjQwOTMwMjFkODMxYjE0YTIxNDY2OGQxOTk2OGE5ODE1YjFmY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5ODMsNiArMTk4MywxNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXIoKQogI2VuZGlmCiB9CiAKK3ZvaWQg
V2ViUHJvY2Vzczo6ZW5hYmxlVlA4U1dEZWNvZGVyKCkKK3sKKyAgICBpZiAobV92cDlTV0RlY29k
ZXJFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZwOFNXRGVjb2RlckVuYWJsZWQg
PSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0
VlA4RGVjb2RlcigpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlVlA5U1dE
ZWNvZGVyKCkKIHsKICAgICBpZiAobV92cDlTV0RlY29kZXJFbmFibGVkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZmRiNTZkNzlkZjIxZmU4Y2ExMmU4OTE2ZTk3NTFl
ZDk2MjhiMjEyMS4uMzFhYmQ0ZjU4YTlhODNmNjc0ODJlZDJkNzZiMDQwOWQxYzhiYWFlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNTksNiArMzU5LDcgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFZQOSkKICAgICB2b2lkIGVuYWJsZVZQOURlY29kZXIoKTsKKyAg
ICB2b2lkIGVuYWJsZVZQOFNXRGVjb2RlcigpOwogICAgIHZvaWQgZW5hYmxlVlA5U1dEZWNvZGVy
KCk7CiAjZW5kaWYKIApAQCAtNzA2LDYgKzcwNyw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
VlA5KQogICAgIGJvb2wgbV92cDlEZWNvZGVyRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBt
X3ZwOFNXRGVjb2RlckVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV92cDlTV0RlY29kZXJF
bmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjRiMWNjYzMxZDY4ZjAzMDY4OTJi
OWU4NzdlMThiMGM2M2QwMmVhNS4uYzRjZjMzNTkyYjk1ZDRkNTJlODViNzM4OWI3OTJiMmFmODY4
MGI3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBWUDgg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
Ymlnc3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
bWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1pbnZhbGlkLWNvZGVjLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0xMS0wOSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tZnVsbHNjcmVlbiBw
YWdlIGNvbnRlbnRzIHZpc2libGUgd2hlbiByb3RhdGluZyBkZXZpY2UgZHVyaW5nIGVsZW1lbnQg
ZnVsbHNjcmVlbiBwcmVzZW50YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtYmlnc3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGUwMzMzOTZkZDBjMTVhYjU1MjJhN2ExN2JhNzQ5NzQzN2QwOTc5OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1iaWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIo
KSBpbiAnZW5kZWQnIHN0YXRlLgorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggZW1w
dHkgdHlwZQorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggbnVsbAorUEFTUyBUZXN0
IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggdW5zdXBwb3J0ZWQgdHlwZQorRkFJTCBUZXN0IGFkZFNv
dXJjZUJ1ZmZlcigpIHdpdGggVm9yYmlzIGFuZCBWUDggYXNzZXJ0X3RydWU6IHZpZGVvL3dlYm07
Y29kZWNzPSJ2cDgsdm9yYmlzIiBpcyBzdXBwb3J0ZWQgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UK
K0ZBSUwgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIFZvcmJpcyBhbmQgVlA4IGluIHNlcGFy
YXRlIFNvdXJjZUJ1ZmZlcnMgYXNzZXJ0X3RydWU6IGF1ZGlvL3dlYm07Y29kZWNzPSJ2b3JiaXMi
IGlzIHN1cHBvcnRlZCBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBUZXN0IGFkZFNvdXJj
ZUJ1ZmZlcigpIHZpZGVvIG9ubHkKK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSBhdWRpbyBv
bmx5CitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBBQUMgYW5kIEguMjY0CitQQVNT
IFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBBQUMgYW5kIEguMjY0IGluIHNlcGFyYXRlIFNv
dXJjZUJ1ZmZlcnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1
ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1pbnZhbGlkLWNvZGVjLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1i
aWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTllMmQ1ODFmZjkw
Njg2NmU5Y2VhN2FjOWJjNjIzNWIyMWY3ZDg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1iaWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKK1BBU1MgVGVzdCBhbiBNUDQgd2l0aCBhbiBpbnZhbGlkIGNvZGVjIHJlc3Vs
dHMgaW4gYW4gZXJyb3IuCitQQVNTIFRlc3QgYSBXZWJNIHdpdGggYW4gaW52YWxpZCBjb2RlYyBy
ZXN1bHRzIGluIGFuIGVycm9yLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGJlZjUwMzA2NGE5OGFkMDY2MmE4MWUzOTAxMGE5ZDUwMjY0M2RmZjEuLmJk
YWU1MWZkODVlN2U1YWY2Y2ExMzgxODMxMDU2NzVmMGZlMGQzNWMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC04NTgsOCArODU4LDggQEAgd2Via2l0Lm9y
Zy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1lcnIKIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtaXMtdHlwZS1zdXBwb3J0ZWQuaHRt
bCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmVzb3VyY2VidWZmZXIuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrLWJleW9uZC1kdXJhdGlvbi5odG1sIFsg
U2tpcCBdCi13ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlZWstZHVyaW5nLXBlbmRpbmctc2Vlay5odG1s
IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlZWthYmxlLmh0bWwgWyBTa2lwIF0KK3dl
YmtpdC5vcmcvYi8xNjE3MjUgWyBNb2phdmUgQ2F0YWxpbmEgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrLWR1cmluZy1wZW5kaW5n
LXNlZWsuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE2MTcyNSBbIE1vamF2ZSBDYXRhbGlu
YSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLXNlZWthYmxlLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2VxdWVuY2Vt
b2RlLWFwcGVuZC1idWZmZXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3Vy
Y2VidWZmZXItbW9kZS10aW1lc3RhbXBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3
MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2Utc291cmNlYnVmZmVyLW1vZGUuaHRtbCBbIFNraXAgXQpAQCAtODcwLDkgKzg3MCw5IEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNv
bmZpZy1jaGFuZ2Utd2VibS1hLWJpCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tYXYtYXVkaW8tYml0cmF0
ZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tYXYtZnJhbWVzaXplLmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1hdi12aWRlby1iaXRyYXRlLmh0bWwgWyBTa2lwIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5n
ZS13ZWJtLXYtZnJhbWVyYXRlLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZy
YW1lc2l6ZS5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Ut
d2VibS12LWJpdHJhdGUuaHRtbCBbIFNraXAgXQorWyBNb2phdmUgQ2F0YWxpbmEgXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWct
Y2hhbmdlLXdlYm0tdi1mcmFtZXJhdGUuaHRtbCBbIFNraXAgXQorWyBNb2phdmUgQ2F0YWxpbmEg
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbCBbIFNraXAgXQogCiAjIFNraXBw
ZWQgaW4gVzNDIFdlYiBQbGF0Zm9ybSBUZXN0IG1hbmlmZXN0CiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1nZXR2aWRlb3BsYXliYWNrcXVh
bGl0eS5odG1sIFsgU2tpcCBdCg==
</data>
<flag name="commit-queue"
          id="433233"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415895</attachid>
            <date>2020-12-10 10:20:45 -0800</date>
            <delta_ts>2020-12-10 10:54:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219732-20201210102045.patch</filename>
            <type>text/plain</type>
            <size>92349</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzZTQ1OWUwMzQ4NDY4MzBiOWQ2MzgxYWJiOGZlYTQ5NjhhMzU2ZThiLi41MDZk
ODc5ZjkwOGFhYWY3YzUzMDc4NTJjMzM4M2QyOThjMDA1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJL
aXREZWNvZGVyUmVjZWl2ZXI6OldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAgICAgICh3ZWJy
dGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6fldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAg
ICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4
ZWxCdWZmZXJQb29sKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpk
ZWNvZGVyRmFpbGVkKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpE
ZWNvZGVkKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmg6IEFkZGVkCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlV2ViS2l0VlA4RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OmludmFsaWRhdGVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6ZmluYWxpemVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y29weVZQOERlY29kZXJE
ZWJ1Z0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6d2ViS2l0VlA4RGVjb2RlckZyb21W
VERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOERlY29kZXJTZXNzaW9uKToKKyAg
ICAgICAgKHdlYnJ0Yzo6ZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jayk6
CisgICAgICAgICh3ZWJydGM6OmRlY29kZVZQOERlY29kZXJGcmFtZSk6CisgICAgICAgICogU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2Vi
cnRjOjpzdGFydFZQOURlY29kZXJTZXNzaW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXRWUDlEZWNvZGVy
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2Rl
ckZhaWxlZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIElDRSBkb2VzIG5vdCByZXNvbHZlIGZvciBgdHVybnNgIHJlbGF5
IGNhbmRpZGF0ZXMgcm9vdGVkIGluIExldHNFbmNyeXB0IENBCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEzMGU1N2I3ZGZiMmU0
NzQ1NTVlMTE3YjdhODI2ZjM3ZWFjMWVlMGMuLmM0YTc2NmI2MDExNjc3MDNjY2RhNTM0YzUwYTg3
ZTI2YWI2MjUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFs
IFZQOCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bDoKKwogMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2F0ZSBWUDkgZXhwb3N1cmUgaW4gTWVkaWFDYXBhYmlsaXRpZXMgb24gVlA5RGVjb2Rl
ckVuYWJsZWQgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDViOGFlOWU1MjFiNmU1YzU2YmFlYThk
ODM5Y2ZkMGQyNmRmNTY5OWUuLjJlN2EwYzFjMjVjZDM4ZGQ4ODQ0NTY2YjkzYjYzYWEwMWI5MjZk
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50YWwg
VlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ld2x5IHBhc3NpbmcgdGVzdHM6CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXIuaHRt
bAorICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwKKyAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LXNlZWthYmxlLmh0bWwKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUu
aHRtbCAKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lcmF0ZS5odG1sCisg
ICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbAorICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtaW52YWxpZC1jb2RlYy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRl
bnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1hdERlc2NyaXB0
aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcik6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZVZQOEZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1h
dERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRW
UDhEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA4RGVjb2RlckF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1ZQOUNvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6
CisgICAgICAgIChXZWJDb3JlOjppc1ZQOENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjppc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9y
dGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKToKKwogMjAyMC0xMS0wNCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tZnVsbHNjcmVlbiBwYWdlIGNv
bnRlbnRzIHZpc2libGUgd2hlbiByb3RhdGluZyBkZXZpY2UgZHVyaW5nIGVsZW1lbnQgZnVsbHNj
cmVlbiBwcmVzZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQyMDQyMTcwYjhjYmUyYmFlNzliY2E1ODU4
MWMyYjZkNzA2YjdjYzAuLjJjMGUzZDA4NjA2NDg2YWRjMzNlNDY4OGQyNjBmMTUwZWQ0ZDZhNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6ZW5hYmxlVlA5RGVjb2RlcnMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZh
dWx0VlA4RGVjb2RlckVuYWJsZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnVwZGF0ZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjppc1ZQOERlY29kZXJFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlVlA4
U1dEZWNvZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAyMC0x
Mi0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBF
bnRlcmluZyBmdWxsc2NyZWVuIGZyb20gbGVzcy10aGFuLWZ1bGxzY3JlZW4gV0tXZWJWaWV3IGRv
ZXMgbm90IGxheW91dCBjb3JyZWN0bHkgdXBvbiBleGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAK
aW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBh
ZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4
cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0Vi
CiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1
RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJL
aXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxs
b3dlZEViCitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2Vi
cnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVy
RnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1
ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFt
ZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZTI4MDU4
ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIx
Y2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAt
MTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pO
NndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlX
ZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5j
b2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0
TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEVi
CitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRy
ZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZy
YW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1t
TlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBf
X0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5
NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMy
ZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9f
Wk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJL
aXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42
d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVn
aXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURl
Y29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0Zy
YW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVF
RQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1ZUVmlkZW9EZWNvZGVyU1BJLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1ZUVmlkZW9EZWNvZGVyU1BJLmgKaW5kZXggZjQ4ODkwNWVlNDcx
ZGRkYTRkNGQ5NTA1NTBkNzc4MmU0ODdhMTBhMC4uNjgwZTBkOGE1ZTRkZTZkMzliYmY2NTdmM2U2
YzM1ZTExMmFlYTc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9WVFZpZGVvRGVjb2RlclNQSS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVlRWaWRlb0RlY29k
ZXJTUEkuaApAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFZp
ZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KKyNpbmNsdWRlICJDTUJhc2VPYmplY3RTUEkuaCIK
KwogI2lmIGRlZmluZWQgX19oYXNfaW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRh
dGlvbi9DRlByaXYuaD4pCiAjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZUVmlkZW9EZWNvZGVyLmg+
CiAjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZUVmlkZW9EZWNvZGVyUmVnaXN0cmF0aW9uLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzYwZTViYzUzNjA4ZDM4NzNhZTc1MWUxY2Q1Nzg2ZjczZThhZjljZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcApAQCAtMCwwICsxLDE5MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJXZWJLaXRWUDlEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJX
ZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNlc3Npb24pCisgICAgOiBtX3Nl
c3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0RGVj
b2RlclJlY2VpdmVyKCkKK3sKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENG
UmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2Vp
dmVyOjppbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgLy8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1
cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0
cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZm
ZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKKyAgICAvLyBkZWNvZGVyIHNlc3Np
b24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29s
LCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgorICAgIG1faXNGdWxsUmFu
Z2UgPSBmYWxzZTsKKyAgICBtX2lzMTBiaXQgPSBmYWxzZTsKKworICAgIGRvIHsKKyAgICAgICAg
YXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0
RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIWV4dGVuc2lvbnMpCisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRW
YWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNj
cmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAgICAgICAgaWYgKCFleHRlbnNpb25BdG9tcyB8fCBD
RkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQgPSBz
dGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlS
ZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKKyAgICAgICAgaWYgKCFjb25maWd1
cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRpb25SZWNvcmQpICE9IENGRGF0
YUdldFR5cGVJRCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBjb25maWd1
cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25maWd1cmF0aW9uUmVjb3JkKTsK
KyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwgMTIpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0
Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgYXV0byBiaXREZXB0aENocm9t
YUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSArIDYpOworCisgICAgICAgIGlm
ICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkKKyAgICAgICAgICAgIG1faXMx
MGJpdCA9IHRydWU7CisKKyAgICAgICAgaWYgKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAweDEp
CisgICAgICAgICAgICBtX2lzRnVsbFJhbmdlID0gdHJ1ZTsKKyAgICB9IHdoaWxlIChmYWxzZSk7
Cit9CisKK0NWUGl4ZWxCdWZmZXJQb29sUmVmIFdlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4ZWxC
dWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWln
aHQsIGJvb2wgaXMxMGJpdCkKK3sKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wgJiYgbV9waXhl
bEJ1ZmZlcldpZHRoID09IHBpeGVsQnVmZmVyV2lkdGggJiYgbV9waXhlbEJ1ZmZlckhlaWdodCA9
PSBwaXhlbEJ1ZmZlckhlaWdodCAmJiBtX2lzMTBiaXQgPT0gaXMxMGJpdCkKKyAgICAgICAgcmV0
dXJuIG1fcGl4ZWxCdWZmZXJQb29sOworCisgICAgT1NUeXBlIHBpeGVsRm9ybWF0OworICAgIGlm
IChpczEwYml0KQorICAgICAgICBwaXhlbEZvcm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0
VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZTsKKyAgICBlbHNlCisgICAgICAgIHBp
eGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4
QmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFy
VmlkZW9SYW5nZTsKKworICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10g
KE9TVHlwZSBwaXhlbEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0
byBjcmVhdGVOdW1iZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAg
ICAgICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJTSW50MzJUeXBlLCAmZm9ybWF0KTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBp
eGVsRm9ybWF0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNy
ZWF0ZU51bWJlcihwaXhlbEZvcm1hdCk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBp
eGVsRm9ybWF0cywgZm9ybWF0TnVtYmVyKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJl
cik7CisKKyAgICAgICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7
CisKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0geworICAgICAgICAgICAga0NWUGl4ZWxC
dWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVu
ZGVkUGl4ZWxzTGVmdEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhl
bHNSaWdodEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BL
ZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAor
ICAgICAgICB9OworICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAg
IGNmUGl4ZWxGb3JtYXRzLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAg
ICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAor
ICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgIH07CisgICAgICAgIGF1dG8g
YXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlz
LCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIENGUmVsZWFzZShi
b3JkZXJQaXhlbHNWYWx1ZSk7CisgICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7Cisg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVy
QXR0cmlidXRlcyA9IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIp
OworICAgIFZURGVjb2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9u
LCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJp
YnV0ZXMpOworCisgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFz
ZShtX3BpeGVsQnVmZmVyUG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQ
aXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisg
ICAgICAgIENGUmV0YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKKworICAgIG1fcGl4ZWxCdWZmZXJX
aWR0aCA9IHBpeGVsQnVmZmVyV2lkdGg7CisgICAgbV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVs
QnVmZmVySGVpZ2h0OworICAgIG1faXMxMGJpdCA9IGlzMTBiaXQ7CisKKyAgICByZXR1cm4gbV9w
aXhlbEJ1ZmZlclBvb2w7Cit9CisKK09TU3RhdHVzIFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVj
b2RlckZhaWxlZChpbnQgZXJyb3IpCit7CisgICAgT1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVv
RGVjb2RlckJhZERhdGFFcnI7CisgICAgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19O
T19PVVRQVVQpCisgICAgICAgIHZ0RXJyb3IgPSBub0VycjsKKyAgICBlbHNlIGlmIChlcnJvciA9
PSBXRUJSVENfVklERU9fQ09ERUNfVU5JTklUSUFMSVpFRCkKKyAgICAgICAgdnRFcnJvciA9IGtW
VFZpZGVvRGVjb2Rlck1hbGZ1bmN0aW9uRXJyOworICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJU
Q19WSURFT19DT0RFQ19NRU1PUlkpCisgICAgICAgIHZ0RXJyb3IgPSBrVlRBbGxvY2F0aW9uRmFp
bGVkRXJyOworICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwg
bV9jdXJyZW50RnJhbWUsIHZ0RXJyb3IsIDAsIG51bGxwdHIpOworICAgIG1fY3VycmVudEZyYW1l
ID0gbnVsbHB0cjsKKworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVj
b2RlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVy
cm9yOworICAgIHJldHVybiB2dEVycm9yOworfQorCitpbnQzMl90IFdlYktpdERlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gcGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAg
IGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWln
aHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQ
b29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9v
bENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29s
LCAmcGl4ZWxCdWZmZXIpID09IGtDVlJldHVyblN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4g
cGl4ZWxCdWZmZXI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0pOworCisgICAgVlRE
ZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwg
cGl4ZWxCdWZmZXIgPyBub0VyciA6IC0xLCAwLCBwaXhlbEJ1ZmZlcik7CisgICAgbV9jdXJyZW50
RnJhbWUgPSBudWxscHRyOworICAgIGlmIChwaXhlbEJ1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNl
KHBpeGVsQnVmZmVyKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBXZWJLaXREZWNvZGVy
UmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYgZnJhbWUsIGludDY0X3QpCit7CisgICAgRGVj
b2RlZChmcmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2Vp
dmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90Piwg
YWJzbDo6b3B0aW9uYWw8dWludDhfdD4pCit7CisgICAgRGVjb2RlZChmcmFtZSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhNTQ1OTdlM2I0Y2FjMGI5N2YxYTM3MDIyOTA4YjkyMmZlNGQ5MzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZGVjb2Rlci5oIgorI2luY2x1ZGUgIlZUVmlkZW9EZWNvZGVyU1BJLmgiCisjaW5jbHVkZSAiV2Vi
S2l0VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBXZWJLaXREZWNv
ZGVyUmVjZWl2ZXIgZmluYWwgOiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJhY2sgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFdlYktpdERlY29kZXJSZWNlaXZlcihWVFZpZGVvRGVjb2RlclNlc3Np
b24pOworICAgIH5XZWJLaXREZWNvZGVyUmVjZWl2ZXIoKTsKKworICAgIFZUVmlkZW9EZWNvZGVy
RnJhbWUgY3VycmVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KKyAg
ICB2b2lkIHNldEN1cnJlbnRGcmFtZShWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSkg
eyBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsgfQorICAgIE9TU3RhdHVzIGRlY29kZXJG
YWlsZWQoaW50IGVycm9yKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlw
dGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmKTsKKworcHJpdmF0ZToKKyAgICBpbnQzMl90IERl
Y29kZWQoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1l
JiwgaW50NjRfdCBkZWNvZGVfdGltZV9tcykgZmluYWw7CisgICAgdm9pZCBEZWNvZGVkKFZpZGVv
RnJhbWUmLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywgYWJzbDo6b3B0
aW9uYWw8dWludDhfdD4gcXApIGZpbmFsOworCisgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4
ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJI
ZWlnaHQsIGJvb2wgaXMxMGJpdCk7CisKKyAgICBWVFZpZGVvRGVjb2RlclNlc3Npb24gbV9zZXNz
aW9uIHsgbnVsbHB0ciB9OworICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgbV9jdXJyZW50RnJhbWUg
eyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJXaWR0aCB7IDAgfTsKKyAgICBz
aXplX3QgbV9waXhlbEJ1ZmZlckhlaWdodCB7IDAgfTsKKyAgICBib29sIG1faXMxMGJpdCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzRnVsbFJhbmdlIHsgZmFsc2UgfTsKKyAgICBDVlBpeGVsQnVm
ZmVyUG9vbFJlZiBtX3BpeGVsQnVmZmVyUG9vbCB7IG51bGxwdHIgfTsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VlA4RGVjb2Rlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
Mjg2YTIwOGRkMGZiYzRlZWQxZWFmNDgwMDJmYWM1ZDYwNDQ5YTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIldlYktpdFZQOERlY29kZXIuaCIKKworI2luY2x1ZGUgIldlYktpdERlY29kZXJSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3Zw
OF9kZWNvZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZvLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitzdGF0aWMgT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdWaWRlb0NvZGVjVHlw
ZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJlZiopOwordm9pZCBy
ZWdpc3RlcldlYktpdFZQOERlY29kZXIoKQoreworICAgIFZUUmVnaXN0ZXJWaWRlb0RlY29kZXIo
J3ZwMDgnLCBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKTsKK30KKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJ2cHhWcDhEZWNvZGVyPiBtX2luc3RhbmNlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7Cit9IFdlYktp
dFZQOERlY29kZXI7CisKK3N0YXRpYyBPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVjb2RlcihDTUJh
c2VPYmplY3RSZWYpOworc3RhdGljIHZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVj
dFJlZik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9u
KENNQmFzZU9iamVjdFJlZik7CisKK3N0YXRpYyBjb25zdCBDTUJhc2VDbGFzcyBXZWJLaXRWUDhE
ZWNvZGVyX0Jhc2VDbGFzcyA9Cit7CisgICAga0NNQmFzZU9iamVjdF9DbGFzc1ZlcnNpb25fMSwK
KyAgICBzaXplb2YoV2ViS2l0VlA4RGVjb2RlciksCisgICAgbnVsbHB0ciwgLy8gQ29tcGFyaXNv
biBieSBwb2ludGVyIGVxdWFsaXR5CisgICAgaW52YWxpZGF0ZVZQOERlY29kZXIsCisgICAgZmlu
YWxpemVWUDhEZWNvZGVyLAorICAgIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbiwKKyAg
ICBudWxscHRyLCAvLyBDb3B5UHJvcGVydHkKKyAgICBudWxscHRyLCAvLyBTZXRQcm9wZXJ0eQor
ICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIE9TU3RhdHVzIHN0YXJ0VlA4
RGVjb2RlclNlc3Npb24oVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiwg
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKK3N0YXRpYyBPU1N0YXR1cyBkZWNvZGVWUDhE
ZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyRnJhbWUsIENNU2Ft
cGxlQnVmZmVyUmVmLCBWVERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKik7CisK
K3N0YXRpYyBjb25zdCBWVFZpZGVvRGVjb2RlckNsYXNzIFdlYktpdFZQOERlY29kZXJfVmlkZW9E
ZWNvZGVyQ2xhc3MgPQoreworICAgIGtWVFZpZGVvRGVjb2Rlcl9DbGFzc1ZlcnNpb25fMSwKKyAg
ICBzdGFydFZQOERlY29kZXJTZXNzaW9uLAorICAgIGRlY29kZVZQOERlY29kZXJGcmFtZSwKKyAg
ICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0NvcHlTdXBwb3J0ZWRQcm9wZXJ0
eURpY3Rpb25hcnksCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9TZXRQ
cm9wZXJ0aWVzCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9Db3B5U2Vy
aWFsaXphYmxlUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rp
b25fQ2FuQWNjZXB0Rm9ybWF0RGVzY3JpcHRpb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVj
b2RlckZ1bmN0aW9uX0ZpbmlzaERlbGF5ZWRGcmFtZXMKKyAgICBudWxscHRyLCAvLyBWVFZpZGVv
RGVjb2RlckZ1bmN0aW9uX1N0YXJ0VGlsZVNlc3Npb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVv
RGVjb2RlckZ1bmN0aW9uX0RlY29kZVRpbGUKKyAgICBudWxscHRyIC8vIFZUVmlkZW9EZWNvZGVy
RnVuY3Rpb25fRmluaXNoRGVsYXllZFRpbGVzCit9OworCitzdGF0aWMgY29uc3QgVlRWaWRlb0Rl
Y29kZXJWVGFibGUgV2ViS2l0VlA4RGVjb2RlclZUYWJsZSA9Cit7CisgICAgeyBudWxscHRyLCAm
V2ViS2l0VlA4RGVjb2Rlcl9CYXNlQ2xhc3MgfSwKKyAgICAmV2ViS2l0VlA4RGVjb2Rlcl9WaWRl
b0RlY29kZXJDbGFzcworfTsKKworT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdW
aWRlb0NvZGVjVHlwZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJl
ZiogZGVjb2Rlck91dCkKK3sKKyAgICBpZiAoIWRlY29kZXJPdXQpIHsKKyAgICAgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyIGNyZWF0aW9uIGZhaWxlZCwgbm8gZGVjb2RlciBv
dXRwdXQiOworICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAgIFZU
VmlkZW9EZWNvZGVyUmVmIGRlY29kZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTURl
cml2ZWRPYmplY3RDcmVhdGUoYWxsb2NhdG9yLCAmV2ViS2l0VlA4RGVjb2RlclZUYWJsZS5iYXNl
LCBWVFZpZGVvRGVjb2RlckdldENsYXNzSUQoKSwgKENNQmFzZU9iamVjdFJlZiopJmRlY29kZXIp
OworCisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJW
UDggZGVjb2RlciBjcmVhdGlvbiBmYWlsZWQsIENNRGVyaXZlZE9iamVjdENyZWF0ZSBmYWlsZWQg
d2l0aCBlcnJvciAiIDw8IGVycm9yOworICAgICAgICByZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxl
ZEVycjsKKyAgICB9CisKKyAgICBpZihlcnJvcikgeworICAgICAgICBDRlJlbGVhc2UoZGVjb2Rl
cik7CisgICAgICAgIGRlY29kZXIgPSBOVUxMOworICAgIH0KKyAgICAqZGVjb2Rlck91dCA9IGRl
Y29kZXI7CisgICAgcmV0dXJuIGVycm9yOworfQorCitPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVj
b2RlcihDTUJhc2VPYmplY3RSZWYgaW5zdGFuY2UpCit7CisgICAgYXV0byogZGVjb2RlciA9IHN0
YXRpY19jYXN0PFdlYktpdFZQOERlY29kZXIqPihDTUJhc2VPYmplY3RHZXREZXJpdmVkU3RvcmFn
ZShpbnN0YW5jZSkpOworICAgIGlmICghZGVjb2RlcikKKyAgICAgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIlZQOCBkZWNvZGVyOiBpbnZhbGlkYXRpb24gZmFpbGVkIGFzIGluc3RhbmNlIGhhcyBu
byBkZWNvZGVyIjsKKyAgICBlbHNlIHsKKyAgICAgICAgZGVjb2Rlci0+bV9pbnN0YW5jZSA9IG51
bGxwdHI7CisgICAgICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBudWxscHRyOworICAgIH0KKyAg
ICByZXR1cm4gbm9FcnI7Cit9CisKK3ZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVj
dFJlZiBpbnN0YW5jZSkKK3sKKyAgICBpbnZhbGlkYXRlVlA4RGVjb2RlcihpbnN0YW5jZSk7Cit9
CisKK0NGU3RyaW5nUmVmIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbihDTUJhc2VPYmpl
Y3RSZWYpCit7CisgICAgcmV0dXJuIENGU1RSKCJXZWJLaXQgVlA4IGRlY29kZXIiKTsKK30KKwor
V2ViS2l0VlA4RGVjb2Rlciogd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoVlRWaWRlb0Rl
Y29kZXJSZWYgZGVjb2RlcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0VlA4RGVj
b2Rlcio+KENNQmFzZU9iamVjdEdldERlcml2ZWRTdG9yYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8Q01C
YXNlT2JqZWN0UmVmPihkZWNvZGVyKSkpOworfQorT1NTdGF0dXMgc3RhcnRWUDhEZWNvZGVyU2Vz
c2lvbihWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNl
c3Npb24sIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sK
KyAgICBhdXRvKiBkZWNvZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFu
Y2UpOworICAgIGlmICghZGVjb2RlcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
VlA4IGRlY29kZXI6IGZhaWxlZCB0byBnZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIHN0
YXJ0aW5nIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBk
ZWNvZGVyLT5tX2luc3RhbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJ2cHhWcDhEZWNvZGVyPigp
OworICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdERlY29k
ZXJSZWNlaXZlcj4oc2Vzc2lvbik7CisgICAgZGVjb2Rlci0+bV9yZWNlaXZlci0+aW5pdGlhbGl6
ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBkZWNvZGVy
LT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVjb2Rlci0+bV9y
ZWNlaXZlci5nZXQoKSk7CisKKyAgICBWaWRlb0NvZGVjIGNvZGVjOworICAgIGF1dG8gZGltZW5z
aW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3Jp
cHRpb24pOworICAgIGNvZGVjLndpZHRoID0gZGltZW5zaW9ucy53aWR0aDsKKyAgICBjb2RlYy5o
ZWlnaHQgPSBkaW1lbnNpb25zLmhlaWdodDsKKworICAgIGRlY29kZXItPm1faW5zdGFuY2UtPklu
aXREZWNvZGUoJmNvZGVjLCBDcHVJbmZvOjpEZXRlY3ROdW1iZXJPZkNvcmVzKCkpOworCisgICAg
cmV0dXJuIG5vRXJyOworfQorCitzdGF0aWMgT1NTdGF0dXMgZGVjb2RlVlA4RGVjb2RlckZyYW1l
RnJvbUNvbnRpZ3VvdXNCbG9jayhXZWJLaXRWUDhEZWNvZGVyJiBkZWNvZGVyLCBWVFZpZGVvRGVj
b2RlckZyYW1lIGZyYW1lLCBDTUJsb2NrQnVmZmVyUmVmIGVuY29kZWRCdWZmZXIpCit7CisgICAg
UlRDX0RDSEVDSyhDTUJsb2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoZW5jb2RlZEJ1ZmZlciwg
MCwgMCkpOworCisgICAgYXV0byBzaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoZW5j
b2RlZEJ1ZmZlcik7CisgICAgY2hhciogZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoZW5jb2RlZEJ1ZmZlciwgMCwgbnVsbHB0
ciwgbnVsbHB0ciwgJmRhdGEpKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDgg
ZGVjb2RlcjogQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yICIg
PDwgZXJyb3I7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBSVENfRENIRUNL
KCFkZWNvZGVyLm1fcmVjZWl2ZXItPmN1cnJlbnRGcmFtZSgpKTsKKyAgICBkZWNvZGVyLm1fcmVj
ZWl2ZXItPnNldEN1cnJlbnRGcmFtZShmcmFtZSk7CisKKyAgICBFbmNvZGVkSW1hZ2UgaW1hZ2Ug
eyByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSwgc2l6ZSB9OworICAgIC8v
IFdlIHNldCB0aG9zZSB2YWx1ZXMgYXMgVlA4RGVjb2RlckltcGwgY2hlY2tzIGZvciBnZXR0aW5n
IGEgZnVsbCBrZXkgZnJhbWUgYXMgZmlyc3QgZnJhbWUuCisgICAgaW1hZ2UuX2ZyYW1lVHlwZSA9
IFZpZGVvRnJhbWVUeXBlOjprVmlkZW9GcmFtZUtleTsKKyAgICBpbWFnZS5fY29tcGxldGVGcmFt
ZSA9IHRydWU7CisgICAgYXV0byBlcnJvciA9IGRlY29kZXIubV9pbnN0YW5jZS0+RGVjb2RlKGlt
YWdlLCBmYWxzZSwgMCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gZGVjb2Rlci5t
X3JlY2VpdmVyLT5kZWNvZGVyRmFpbGVkKGVycm9yKTsKKworICAgIFJUQ19EQ0hFQ0soIWRlY29k
ZXIubV9yZWNlaXZlci0+Y3VycmVudEZyYW1lKCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09T
U3RhdHVzIGRlY29kZVZQOERlY29kZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwg
VlRWaWRlb0RlY29kZXJGcmFtZSBmcmFtZSwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
LCBWVERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKikKK3sKKyAgICBhdXRvKiBk
ZWNvZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFuY2UpOworICAgIGlm
ICghZGVjb2RlciB8fCAhZGVjb2Rlci0+bV9pbnN0YW5jZSB8fCAhZGVjb2Rlci0+bV9yZWNlaXZl
cikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0
byBnZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIGRlY29kaW5nIjsKKyAgICAgICAgcmV0
dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBD
TVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWVuY29k
ZWRCdWZmZXIpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBm
YWlsZWQgdG8gZ2V0IGRhdGEgYnVmZmVyIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVy
cjsKKyAgICB9CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNCdWZmZXIgPSBudWxs
cHRyOworICAgIC8vIE1ha2Ugc3VyZSBibG9jayBidWZmZXIgaXMgY29udGlndW91cy4KKyAgICBp
ZiAoIUNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhlbmNvZGVkQnVmZmVyLCAwLCAwKSkg
eworICAgICAgICBhdXRvIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51
bGxwdHIsIGVuY29kZWRCdWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAsICZjb250aWd1
b3VzQnVmZmVyKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworICAgICAgICAgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBmYWlsZWQgdG8gY3JlYXRlIGNvbnRp
Z3VvdXMgYmxvY2sgYnVmZmVyIHdpdGggZXJyb3IgIiA8PCBzdGF0dXM7CisgICAgICAgICAgICBy
ZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsKKyAgICAgICAgfQorICAgICAgICBlbmNvZGVk
QnVmZmVyID0gY29udGlndW91c0J1ZmZlcjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGRl
Y29kZVZQOERlY29kZXJGcmFtZUZyb21Db250aWd1b3VzQmxvY2soKmRlY29kZXIsIGZyYW1lLCBl
bmNvZGVkQnVmZmVyKTsKKworICAgIGlmIChjb250aWd1b3VzQnVmZmVyKQorICAgICAgICBDRlJl
bGVhc2UoY29udGlndW91c0J1ZmZlcik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdFZQOERlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJm
NzMwYjk1NmFlNWE3NzA0MzhmODA4ZDUxNTEzN2YxODYxODU5ZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSB3ZWJydGMgeworCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rl
cigpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNw
cAppbmRleCA0M2E4ZWM3MmRiZWI5OGFlYzQ0NmI3MTk4N2MzMWQzMGU4ZDUzNzVmLi4wZGUwYWI3
NjViNGNjMGE4NGI2ZjUwNWJhNGVkZGM0NzU1M2NkODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAKQEAgLTI1LDE1ICsyNSwxMSBAQAogCiAjaW5j
bHVkZSAiV2ViS2l0VlA5RGVjb2Rlci5oIgogCi0jaW5jbHVkZSAiV2ViS2l0VXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgotI2luY2x1ZGUgIm1vZHVs
ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDkvdnA5X2ltcGwuaCIKKyNpbmNsdWRlICJXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv
dnA4L2xpYnZweF92cDhfZGVjb2Rlci5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIK
ICNpbmNsdWRlICJzeXN0ZW1fd3JhcHBlcnMvaW5jbHVkZS9jcHVfaW5mby5oIgogCi0jaW5jbHVk
ZSAiQ01CYXNlT2JqZWN0U1BJLmgiCi0jaW5jbHVkZSAiVlRWaWRlb0RlY29kZXJTUEkuaCIKLQog
bmFtZXNwYWNlIHdlYnJ0YyB7CiAKIHN0YXRpYyBPU1N0YXR1cyBjcmVhdGVXZWJLaXRWUDlEZWNv
ZGVyKEZpZ1ZpZGVvQ29kZWNUeXBlLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIFZUVmlkZW9E
ZWNvZGVyUmVmKik7CkBAIC00MiwzOSArMzgsMTEgQEAgdm9pZCByZWdpc3RlcldlYktpdFZQOURl
Y29kZXIoKQogICAgIFZUUmVnaXN0ZXJWaWRlb0RlY29kZXIoJ3ZwMDknLCBjcmVhdGVXZWJLaXRW
UDlEZWNvZGVyKTsKIH0KIAotY2xhc3MgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOwogdHlwZWRl
ZiBzdHJ1Y3QgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxWUDlEZWNvZGVySW1wbD4gbV9pbnN0YW5j
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyPiBtX3JlY2Vp
dmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2
ZXI7CiB9IFdlYktpdFZQOURlY29kZXI7CiAKLWNsYXNzIFdlYktpdFZQOURlY29kZXJSZWNlaXZl
ciBmaW5hbCA6IHB1YmxpYyBEZWNvZGVkSW1hZ2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgZXhw
bGljaXQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbik7Ci0g
ICAgfldlYktpdFZQOURlY29kZXJSZWNlaXZlcigpOwotCi0gICAgVlRWaWRlb0RlY29kZXJGcmFt
ZSBjdXJyZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQotICAgIHZv
aWQgc2V0Q3VycmVudEZyYW1lKFZUVmlkZW9EZWNvZGVyRnJhbWUgY3VycmVudEZyYW1lKSB7IG1f
Y3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lOyB9Ci0gICAgT1NTdGF0dXMgZGVjb2RlckZhaWxl
ZChpbnQgZXJyb3IpOwotCi0gICAgdm9pZCBpbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9u
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYpOwotCi1wcml2YXRlOgotICAgIGludDMyX3QgRGVjb2Rl
ZChWaWRlb0ZyYW1lJikgZmluYWw7Ci0gICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBp
bnQ2NF90IGRlY29kZV90aW1lX21zKSBmaW5hbDsKLSAgICB2b2lkIERlY29kZWQoVmlkZW9GcmFt
ZSYsIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLCBhYnNsOjpvcHRpb25h
bDx1aW50OF90PiBxcCkgZmluYWw7Ci0KLSAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1
ZmZlclBvb2woc2l6ZV90IHBpeGVsQnVmZmVyV2lkdGgsIHNpemVfdCBwaXhlbEJ1ZmZlckhlaWdo
dCwgYm9vbCBpczEwYml0KTsKLQotICAgIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBtX3Nlc3Npb24g
eyBudWxscHRyIH07Ci0gICAgVlRWaWRlb0RlY29kZXJGcmFtZSBtX2N1cnJlbnRGcmFtZSB7IG51
bGxwdHIgfTsKLSAgICBzaXplX3QgbV9waXhlbEJ1ZmZlcldpZHRoIHsgMCB9OwotICAgIHNpemVf
dCBtX3BpeGVsQnVmZmVySGVpZ2h0IHsgMCB9OwotICAgIGJvb2wgbV9pczEwYml0IHsgZmFsc2Ug
fTsKLSAgICBib29sIG1faXNGdWxsUmFuZ2UgeyBmYWxzZSB9OwotICAgIENWUGl4ZWxCdWZmZXJQ
b29sUmVmIG1fcGl4ZWxCdWZmZXJQb29sIHsgbnVsbHB0ciB9OwotfTsKLQogc3RhdGljIE9TU3Rh
dHVzIGludmFsaWRhdGVWUDlEZWNvZGVyKENNQmFzZU9iamVjdFJlZik7CiBzdGF0aWMgdm9pZCBm
aW5hbGl6ZVZQOURlY29kZXIoQ01CYXNlT2JqZWN0UmVmKTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBj
b3B5VlA5RGVjb2RlckRlYnVnRGVzY3JpcHRpb24oQ01CYXNlT2JqZWN0UmVmKTsKQEAgLTE3NSw3
ICsxNDMsNyBAQCBPU1N0YXR1cyBzdGFydFZQOURlY29kZXJTZXNzaW9uKFZUVmlkZW9EZWNvZGVy
UmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3NpbwogICAgIH0KIAogICAgIGRlY29kZXIt
Pm1faW5zdGFuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFZQOURlY29kZXJJbXBsPigpOwotICAgIGRl
Y29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdFZQOURlY29kZXJSZWNl
aXZlcj4oc2Vzc2lvbik7CisgICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0RGVjb2RlclJlY2VpdmVyPihzZXNzaW9uKTsKICAgICBkZWNvZGVyLT5tX3JlY2Vp
dmVyLT5pbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsK
IAogICAgIGRlY29kZXItPm1faW5zdGFuY2UtPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFj
ayhkZWNvZGVyLT5tX3JlY2VpdmVyLmdldCgpKTsKQEAgLTI1MCwxNjEgKzIxOCw0IEBAIE9TU3Rh
dHVzIGRlY29kZVZQOURlY29kZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRW
aWRlb0RlY29kZXJGcmFtZSBmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotV2ViS2l0VlA5RGVj
b2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNz
aW9uIHNlc3Npb24pCi0gICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKLXsKLX0KLQotV2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKLXsKLSAgICBpZiAo
bV9waXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7
Ci19Ci0KLXZvaWQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJvbUZvcm1h
dERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCi17
Ci0gICAgLy8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBz
byB3ZSBtdXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0cHV0Ci0gICAgLy8gYnkgbGlidnB4IHRv
IGJpLXBsYW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0
aG9zZSB0byB0aGUKLSAgICAvLyBkZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBp
dHMgb3duIGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQotICAgIC8vIHdpbGwg
dXNlIHBvc3QtZGVjb2RlLgotICAgIG1faXNGdWxsUmFuZ2UgPSBmYWxzZTsKLSAgICBtX2lzMTBi
aXQgPSBmYWxzZTsKLQotICAgIGRvIHsKLSAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3Jt
YXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwotICAgICAgICBp
ZiAoIWV4dGVuc2lvbnMpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDRlR5cGVSZWYg
ZXh0ZW5zaW9uQXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3Jt
YXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsK
LSAgICAgICAgaWYgKCFleHRlbnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9t
cykgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RS
KCJ2cGNDIikpKTsKLSAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlw
ZUlEKGNvbmZpZ3VyYXRpb25SZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0
YUdldExlbmd0aChjb25maWd1cmF0aW9uUmVjb3JkKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b25SZWNvcmRTaXplIDwgMTIpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBhdXRvIGNv
bmZpZ3VyYXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVj
b3JkKTsKLSAgICAgICAgYXV0byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0
aW9uUmVjb3JkRGF0YSArIDYpOwotCi0gICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5n
ZSA+PiA0KSA9PSAxMCkKLSAgICAgICAgICAgIG1faXMxMGJpdCA9IHRydWU7Ci0KLSAgICAgICAg
aWYgKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAweDEpCi0gICAgICAgICAgICBtX2lzRnVsbFJh
bmdlID0gdHJ1ZTsKLSAgICB9IHdoaWxlIChmYWxzZSk7Ci19Ci0KLUNWUGl4ZWxCdWZmZXJQb29s
UmVmIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhl
bEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCkKLXsK
LSAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wgJiYgbV9waXhlbEJ1ZmZlcldpZHRoID09IHBpeGVs
QnVmZmVyV2lkdGggJiYgbV9waXhlbEJ1ZmZlckhlaWdodCA9PSBwaXhlbEJ1ZmZlckhlaWdodCAm
JiBtX2lzMTBiaXQgPT0gaXMxMGJpdCkKLSAgICAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29s
OwotCi0gICAgT1NUeXBlIHBpeGVsRm9ybWF0OwotICAgIGlmIChpczEwYml0KQotICAgICAgICBw
aXhlbEZvcm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNy
MTBCaVBsYW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxh
bmFyVmlkZW9SYW5nZTsKLSAgICBlbHNlCi0gICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxS
YW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgOiBr
Q1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKLQotICAgIGF1
dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhlbEZvcm1hdCwg
aW50MzJfdCBib3JkZXJQaXhlbHMpIHsKLSAgICAgICAgYXV0byBjcmVhdGVOdW1iZXIgPSBbXSAo
aW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKLSAgICAgICAgICAgIHJldHVybiBDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmZm9y
bWF0KTsKLSAgICAgICAgfTsKLSAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9IENGQXJyYXlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpOwotICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihwaXhlbEZvcm1h
dCk7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywgZm9ybWF0TnVt
YmVyKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJlcik7Ci0KLSAgICAgICAgYXV0byBi
b3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7Ci0KLSAgICAgICAgY29uc3Qgdm9p
ZCoga2V5c1tdID0gewotICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVL
ZXksCi0gICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVmdEtleSwKLSAg
ICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwKLSAgICAgICAg
ICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BLZXksCi0gICAgICAgICAgICBrQ1ZQ
aXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAotICAgICAgICB9OwotICAgICAgICBj
b25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKLSAgICAgICAgICAgIGNmUGl4ZWxGb3JtYXRzLAotICAg
ICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCi0gICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1
ZSwKLSAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAotICAgICAgICAgICAgYm9yZGVyUGl4
ZWxzVmFsdWUsCi0gICAgICAgIH07Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShr
ZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7Ci0gICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNWYWx1ZSk7Ci0g
ICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzOwotICAgIH07Ci0KLSAgICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9IGNyZWF0ZVBp
eGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIpOwotICAgIFZURGVjb2RlclNlc3Np
b25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0
ZXMpOwotICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOwotCi0gICAgaWYgKG1f
cGl4ZWxCdWZmZXJQb29sKSB7Ci0gICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7
Ci0gICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBtX3Bp
eGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNz
aW9uKTsKLSAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgIENGUmV0YWluKG1fcGl4
ZWxCdWZmZXJQb29sKTsKLQotICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHBpeGVsQnVmZmVyV2lk
dGg7Ci0gICAgbV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVsQnVmZmVySGVpZ2h0OwotICAgIG1f
aXMxMGJpdCA9IGlzMTBiaXQ7Ci0KLSAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Ci19Ci0K
LU9TU3RhdHVzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJy
b3IpCi17Ci0gICAgT1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2RlckJhZERhdGFFcnI7
Ci0gICAgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQpCi0gICAgICAg
IHZ0RXJyb3IgPSBub0VycjsKLSAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09E
RUNfVU5JTklUSUFMSVpFRCkKLSAgICAgICAgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2Rlck1hbGZ1
bmN0aW9uRXJyOwotICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19NRU1P
UlkpCi0gICAgICAgIHZ0RXJyb3IgPSBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOwotICAgIFZURGVj
b2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHZ0
RXJyb3IsIDAsIG51bGxwdHIpOwotICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLQotICAg
IFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVjb2RlciBmYWlsZWQgd2l0aCBl
cnJvciAiIDw8IGVycm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVycm9yOwotICAgIHJldHVybiB2
dEVycm9yOwotfQotCi1pbnQzMl90IFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChW
aWRlb0ZyYW1lJiBmcmFtZSkKLXsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJG
cm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZl
clR5cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7Ci0gICAgICAgIGF1dG8gcGl4ZWxCdWZm
ZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVm
ZmVyVHlwZTo6STAxMCk7Ci0gICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
ciA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVm
ZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLCAmcGl4ZWxCdWZmZXIp
ID09IGtDVlJldHVyblN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0pOwotCi0gICAgVlREZWNvZGVyU2Vzc2lvbkVt
aXREZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwgcGl4ZWxCdWZmZXIgPyBu
b0VyciA6IC0xLCAwLCBwaXhlbEJ1ZmZlcik7Ci0gICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRy
OwotICAgIGlmIChwaXhlbEJ1ZmZlcikKLSAgICAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotaW50MzJfdCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRl
Y29kZWQoVmlkZW9GcmFtZSYgZnJhbWUsIGludDY0X3QpCi17Ci0gICAgRGVjb2RlZChmcmFtZSk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNv
ZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiwgYWJzbDo6b3B0
aW9uYWw8dWludDhfdD4pCi17Ci0gICAgRGVjb2RlZChmcmFtZSk7Ci19Ci0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMTA4MDQzOTk5NjQ4M2FiMzMxYTI5ZGFlYmUwNjRm
MGZkMGYzZmQzLi40MWMzYjk3YTM2ZjZiNDYxZjAyYjJlOWQwNGM4Zjg1ZTMwYWMzZGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTA5LDYgKzM5MDksMTAgQEAKIAkJNUNG
RDUzOTIxRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9uNjQuY2MgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QTFFNEJEM0EzMDA0ODI5MDggLyog
cm93X25lb242NC5jYyAqLzsgfTsKIAkJNUNGRDUzOTMxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxl
X25lb24uY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0ZENTM4QjFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUz
OTQxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242NC5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBz
Y2FsZV9uZW9uNjQuY2MgKi87IH07CisJCUNEMzgxRjI3MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJL
aXRWUDhEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDM4MUYyNTI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5oICovOyB9
OworCQlDRDM4MUYyOTI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyODI1ODE1
OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgKi87IH07CisJCUNEMzgxRjJCMjU4
MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzODFGMkEyNTgxRkVCQTAwNzdERUM4
IC8qIFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgKi87IH07CisJCUNEMzgxRjJEMjU4MUZGMEIw
MDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzgxRjJDMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJL
aXREZWNvZGVyUmVjZWl2ZXIuaCAqLzsgfTsKIAkJQ0RFQkI0QjYyNEMwMTlDNDAwQURCRDQ0IC8q
IHVua25vd25fcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQkI0NjQyNEMwMTkxQTAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjICov
OyB9OwogCQlDREVCQjRCNzI0QzAxOUM0MDBBREJENDQgLyogbWFzdGVyX3BhcnNlci5jYyBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDZGMjRDMDE5
MUEwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCODI0QzAxOUM0
MDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NzYyNEMwMTkxQTAwQURCRDQ0IC8qIGJsb2NrX3BhcnNl
ci5jYyAqLzsgfTsKQEAgLTg0MzIsNiArODQzNiwxMCBAQAogCQk1RDdDNTlDNjEyMDhDNjhCMDAx
Qzg3M0UgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBC
YXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhD
NjhCMDAxQzg3M0UgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2Nv
bmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTFCODlCOEEyMjFFMDA0QzAwRUI0Q0VBIC8qIFNES1ZhcmlhbnQueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gU0RLVmFyaWFudC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0QzODFGMjUyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0VlA4RGVjb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyogV2Vi
S2l0VlA4RGVjb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJLaXRWUDhEZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFG
MkEyNTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM4MUYyQzI1ODFGRjBCMDA3N0RFQzggLyog
V2ViS2l0RGVjb2RlclJlY2VpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdERlY29kZXJSZWNl
aXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVCQjExOTI0QzAxODc0MDBB
REJENDQgLyogbGlid2VibS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJ3ZWJt
LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNERUJCMTFFMjRDMDE4
OTYwMEFEQkQ0NCAvKiBsaWJ3ZWJtLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxpYndlYm0ueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUJCNDA1MjRDMDE5MUEwMEFE
QkQ0NCAvKiByZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDk2MiwxMCArMTA5NzAsMTQgQEAKIAkJCQk0MTJGRjkzNTI1M0Q4
RjBBMDAxREYwMzYgLyogVlRWaWRlb0RlY29kZXJTUEkuaCAqLywKIAkJCQk0MUU4NEJDOTI0MzRD
NEEyMDBEMzRFNDEgLyogV2ViS2l0RGVjb2Rlci5oICovLAogCQkJCTQxRTg0QkNBMjQzNEM0QTMw
MEQzNEU0MSAvKiBXZWJLaXREZWNvZGVyLm1tICovLAorCQkJCUNEMzgxRjJBMjU4MUZFQkEwMDc3
REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEMzgxRjJDMjU4MUZG
MEIwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCAqLywKIAkJCQk0MTU4NjQ5NjIz
QkUwNUU4MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5oICovLAogCQkJCTQxNTg2NDk3MjNCRTA1
RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLm1tICovLAogCQkJCTQxRUNFQUJCMjA2NDAzQzEw
MDlENTE0MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCAqLywKIAkJCQk0MUVDRUFCRDIwNjQwNDk4MDA5
RDUxNDEgLyogV2ViS2l0VXRpbGl0aWVzLm1tICovLAorCQkJCUNEMzgxRjI4MjU4MTU5MUYwMDc3
REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmNwcCAqLywKKwkJCQlDRDM4MUYyNTI1ODE1OTFGMDA3
N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5oICovLAogCQkJCTQxNDAzN0JBMjRBQzc2RTkwMEJD
RTlCMiAvKiBXZWJLaXRWUDlEZWNvZGVyLmNwcCAqLywKIAkJCQk0MTQwMzdCOTI0QUM3NkU5MDBC
Q0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5oICovLAogCQkJKTsKQEAgLTE3NDk2LDggKzE3NTA4
LDEwIEBACiAJCQkJNUM0QjRDODExRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzRCNEM4NDFFNDMxRjlDMDAyNjUxQzggLyogd2F2X2hlYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDEzMUMxNjMyMzRCODlFMjAwMjhBNjE1IC8qIHdlYWtfcHRyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlDRDM4MUYyRDI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVj
b2RlclJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU4NjQ5ODIzQkUwNUU5MDBBMEE2
MUUgLyogV2ViS2l0RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFQ0VBQkMyMDY0MDND
MjAwOUQ1MTQxIC8qIFdlYktpdFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzODFG
MjcyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNDAzN0JCMjRBQzc2RUEwMEJDRTlCMiAvKiBXZWJLaXRWUDlEZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0REOENBQjFFNDNDNkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE0NUU0OTExRUY4OEVGNzAwRkNGNkU2IC8qIHdlYnJ0Y19saWJ5
dXYuaCBpbiBIZWFkZXJzICovLApAQCAtMjAwMzksOCArMjAwNTMsMTAgQEAKIAkJCQk1QzRCNEM4
MzFFNDMxRjlDMDAyNjUxQzggLyogd2F2X2hlYWRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQx
MzFDMEY5MjM0Qjg5RTIwMDI4QTYxNSAvKiB3ZWFrX3B0ci5jYyBpbiBTb3VyY2VzICovLAogCQkJ
CTQxRTg0QkQ1MjQzNzNGNzIwMEQzNEU0MSAvKiBXZWJLaXREZWNvZGVyLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQ0QzODFGMkIyNTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2Vi
S2l0RW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRUNFQUJFMjA2NDA0OTgwMDlENTE0
MSAvKiBXZWJLaXRVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDM4MUYyOTI1ODE1
OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTQwMzdCQzI0QUM3NkVBMDBCQ0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1Q0REOENBQTFFNDNDNkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTVDREQ4MzY3MUU0MzI1RDUwMDYyMUU5MiAvKiB3ZWJydGNfbGlieXV2
LmNjIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IGY0YjU2
OTI4YmE2NjlmYzAwMzg1Mjc2ZjU3YTFkOWY3MjMwMjNhMGUuLjQ0YjA4MmI1NjQ0MTIwMDhhNmUx
MjgzMTg2MjQ3ODkyZGRiNzg0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC04
NjQsNiArODY0LDE2IEBAIFVzZXJHZXN0dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDoKICAg
ICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKK1ZQOERlY29kZXJFbmFibGVkOgorICB0
eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiVlA4IGRlY29kZXIiCisgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBWUDggZGVjb2RlciIKKyAgd2ViY29yZUJpbmRpbmc6
IG5vbmUKKyAgY29uZGl0aW9uOiBFTkFCTEUoVlA5KQorICBkZWZhdWx0VmFsdWU6CisgICAgV2Vi
S2l0OgorICAgICAgZGVmYXVsdDogV2ViS2l0OjpkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQoKQor
CiAjIEZJWE1FOiBJcyB0aGlzIGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdhY3k/IElmIG5vdCwg
dGhpcyBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBWUDlE
ZWNvZGVyRW5hYmxlZDoKICAgdHlwZTogYm9vbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXggMTQwODc0MWI4MTMzMTBkMjdmNDYw
MDAxOGUzMzFhNTA0YzU0NDBiZC4uNGUyODIyNzIxNTE3YzNiZTY4OTNlMThjODFjN2FmNWEyZGI4
NWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGls
aXRpZXMuY3BwCkBAIC0xMjQsMTIgKzEyNCw2IEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUE1hdHJp
eENvZWZmaWNpZW50cyh1aW50OF90IG1hdHJpeENvZWZmaWNpZW50cykKIAogT3B0aW9uYWw8VlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmll
dyBjb2RlY1ZpZXcpCiB7Ci0gICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgJ3ZwMDknIGNvZGVjIHN0
cmluZyBpcyBzcGVjaWZpZWQgaW4gdGhlIHdlYm0gR2l0SHViIHJlcG86Ci0gICAgLy8gPGh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWJtcHJvamVjdC92cDktZGFzaC9ibG9iL21hc3Rlci9WUENvZGVjSVNP
TWVkaWFGaWxlRm9ybWF0QmluZGluZy5tZCNjb2RlY3MtcGFyYW1ldGVyLXN0cmluZz4KLQotICAg
IC8vICJzYW1wbGUgZW50cnkgNENDLCBwcm9maWxlLCBsZXZlbCwgYW5kIGJpdERlcHRoIGFyZSBh
bGwgbWFuZGF0b3J5IGZpZWxkcy4gSWYgYW55IG9mIHRoZXNlIGZpZWxkcyBhcmUgZW1wdHksIG9y
IG5vdAotICAgIC8vIHdpdGhpbiB0aGVpciBhbGxvd2VkIHJhbmdlLCB0aGUgcHJvY2Vzc2luZyBk
ZXZpY2UgU0hBTEwgdHJlYXQgaXQgYXMgYW4gZXJyb3IuIgotCiAgICAgYXV0byBjb2RlY1NwbGl0
ID0gY29kZWNWaWV3LnNwbGl0KCcuJyk7CiAgICAgYXV0byBuZXh0RWxlbWVudCA9IGNvZGVjU3Bs
aXQuYmVnaW4oKTsKICAgICBpZiAobmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKQEAg
LTEzNywxMiArMTMxLDI0IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBw
YXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAKICAgICBWUENvZGVj
Q29uZmlndXJhdGlvblJlY29yZCBjb25maWd1cmF0aW9uOwogCi0gICAgLy8gQ29kZWMgaWRlbnRp
ZmllcjogbGVnYWwgdmFsdWVzIGFyZSAndnAwOCcgb3IgJ3ZwMDknLgogICAgIGNvbmZpZ3VyYXRp
b24uY29kZWNOYW1lID0gKCpuZXh0RWxlbWVudCkudG9TdHJpbmcoKTsKKyAgICArK25leHRFbGVt
ZW50OworCisgICAgLy8gU3VwcG9ydCB0aGUgbGVnYWN5IGlkZW50aWZpZXJzICh3aXRoIG5vIHBh
cmFtZXRlcnMpIGZvciBWUDggYW5kIFZQOS4KKyAgICBpZiAoKGNvbmZpZ3VyYXRpb24uY29kZWNO
YW1lID09ICJ2cDgiIHx8IGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDkiKSAmJiBuZXh0
RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKKworICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMgc3Bl
Y2lmaWVkIGluIHRoZSB3ZWJtIEdpdEh1YiByZXBvOgorICAgIC8vIDxodHRwczovL2dpdGh1Yi5j
b20vd2VibXByb2plY3QvdnA5LWRhc2gvYmxvYi9tYXN0ZXIvVlBDb2RlY0lTT01lZGlhRmlsZUZv
cm1hdEJpbmRpbmcubWQjY29kZWNzLXBhcmFtZXRlci1zdHJpbmc+CisKKyAgICAvLyAic2FtcGxl
IGVudHJ5IDRDQywgcHJvZmlsZSwgbGV2ZWwsIGFuZCBiaXREZXB0aCBhcmUgYWxsIG1hbmRhdG9y
eSBmaWVsZHMuIElmIGFueSBvZiB0aGVzZSBmaWVsZHMgYXJlIGVtcHR5LCBvciBub3QKKyAgICAv
LyB3aXRoaW4gdGhlaXIgYWxsb3dlZCByYW5nZSwgdGhlIHByb2Nlc3NpbmcgZGV2aWNlIFNIQUxM
IHRyZWF0IGl0IGFzIGFuIGVycm9yLiIKKworICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxlZ2Fs
IHZhbHVlcyBhcmUgJ3ZwMDgnIG9yICd2cDA5Jy4KICAgICBpZiAoY29uZmlndXJhdGlvbi5jb2Rl
Y05hbWUgIT0gInZwMDgiICYmIGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9ICJ2cDA5IikKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGlmICgrK25leHRFbGVtZW50ID09IGNv
ZGVjU3BsaXQuZW5kKCkpCisgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAvLyBGaXJzdCBlbGVtZW50OiBw
cm9maWxlLiBMZWdhbCB2YWx1ZXMgYXJlIDAtMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggYmUxZTA4NmUwYWM1MjM1NDYzNmEwMDZhYjMyZDFiOTJmNDBiNGQ4MS4uNGEw
Yzk2NDAzOWYyOGNkMDFiMDEwMDc2MTVlNDlkNzEwOTc5ZTM0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBNZWRpYVBsYXllckVudW1zOjpT
dXBwb3J0c1R5cGUgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRl
ZChjbwogI2lmIEVOQUJMRShWUDkpCiAgICAgYXV0byBzcGxpdFJlc3VsdHMgPSBTdHJpbmdWaWV3
KGNvZGVjc1BhcmFtZXRlcikuc3BsaXQoJywnKTsKICAgICBmb3IgKGF1dG8gc3BsaXQgOiBzcGxp
dFJlc3VsdHMpIHsKLSAgICAgICAgaWYgKHNwbGl0LnN0YXJ0c1dpdGgoInZwMDkiKSkgeworICAg
ICAgICBpZiAoc3BsaXQuc3RhcnRzV2l0aCgidnAwOSIpIHx8IHNwbGl0LnN0YXJ0c1dpdGgoInZw
MDgiKSB8fCBlcXVhbChzcGxpdCwgInZwOCIpIHx8IGVxdWFsKHNwbGl0LCAidnA5IikpIHsKICAg
ICAgICAgICAgIGF1dG8gY29kZWNQYXJhbWV0ZXJzID0gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhz
cGxpdCk7CiAgICAgICAgICAgICBpZiAoIWNvZGVjUGFyYW1ldGVycykKICAgICAgICAgICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsK
QEAgLTQ4MCw2ICs0ODAsNyBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjbwogCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQorCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgT3B1cyBTdXBw
b3J0CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgVm9yYmlzIFN1cHBvcnQKICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CkBAIC03NDgs
MTAgKzc0OSwyMiBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVn
aW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgYwogU3RhdHVzIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRh
LCBjb25zdCBUcmFja0VudHJ5JiB0cmFja0VudHJ5KQogewogICAgIFVOVVNFRF9QQVJBTShtZXRh
ZGF0YSk7Ci0gICAgaWYgKCF0cmFja0VudHJ5LnRyYWNrX3R5cGUuaXNfcHJlc2VudCgpKQorICAg
IGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNlbnQoKSB8fCAhdHJhY2tFbnRyeS5j
b2RlY19pZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tD
b21wbGV0ZWQpOwogCiAgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUu
dmFsdWUoKTsKKyAgICBTdHJpbmcgY29kZWNJZCB7IHRyYWNrRW50cnkuY29kZWNfaWQudmFsdWUo
KS5kYXRhKCksICh1bnNpZ25lZCl0cmFja0VudHJ5LmNvZGVjX2lkLnZhbHVlKCkubGVuZ3RoKCkg
fTsKKworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8gJiYgIXN1cHBvcnRl
ZFZpZGVvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKKyAgICAgICAgRVJST1JfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCB2aWRlbyBj
b2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkVmlkZW9Db2RlYykpOworICAg
IH0KKworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8gJiYgIXN1cHBvcnRl
ZEF1ZGlvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKKyAgICAgICAgRVJST1JfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1cHBvcnRlZCBhdWRpbyBj
b2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAgICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkQXVkaW9Db2RlYykpOworICAg
IH0KKwogICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pCiAgICAgICAgIG1f
aW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0
aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBWaWRlb1RyYWNrUHJpdmF0
ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKICAgICBlbHNlIGlmICh0
cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pCkBAIC0xMDAwLDcgKzEwMTMsNyBAQCBzdGF0
aWMgdWludDhfdCBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcodWludDY0
X3QgeCwgdWludDY0X3QgeSkKICAgICByZXR1cm4gVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2Ft
cGxpbmc6OlN1YnNhbXBsaW5nXzQyMF9Db2xvY2F0ZWQ7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8
Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVh
ZGVyUGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6OlZwOUhlYWRlclBhcnNlciYgcGFyc2VyLCBjb25z
dCB3ZWJtOjpFbGVtZW50PENvbG91cj4mIGNvbG9yKQorc3RhdGljIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgcmVjb3JkLCBp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKIHsKICAgICAvLyBSZWY6ICJWUCBDb2RlYyBJ
U08gTWVkaWEgRmlsZSBGb3JtYXQgQmluZGluZywgdjEuMCwgMjAxNy0wMy0zMSIKICAgICAvLyA8
aHR0cHM6Ly93d3cud2VibXByb2plY3Qub3JnL3ZwOS9tcDQvPgpAQCAtMTAyOSwzNSArMTA0Miw2
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0
RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyCiAgICAgLy8gRklYTUU6IENvbnZlcnQgZXhpc3Rp
bmcgc3RydWN0IHRvIGFuIElTT0JveCBhbmQgcmVwbGFjZSB0aGUgd3JpdGluZyBjb2RlIGJlbG93
CiAgICAgLy8gd2l0aCBhIHN1YmNsYXNzIG9mIElTT0Z1bGxCb3guCiAKLSAgICBWUENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZCByZWNvcmQ7Ci0KLSAgICByZWNvcmQucHJvZmlsZSA9IHBhcnNlci5w
cm9maWxlKCk7Ci0gICAgLy8gQ29yZU1lZGlhIGRvZXMgbmF0IGNhcmUgYWJvdXQgdGhlIFZQOSBj
b2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEuMCBoZXJlOgotICAgIHJlY29yZC5sZXZl
bCA9IDEwOwotICAgIHJlY29yZC5iaXREZXB0aCA9IHBhcnNlci5iaXRfZGVwdGgoKTsKLSAgICBy
ZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gcGFyc2VyLmNvbG9yX3JhbmdlKCkgPyBWUENvbmZp
Z3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFu
Z2U7Ci0gICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNhbXBsaW5nWFlU
b0Nocm9tYVN1YnNhbXBsaW5nKHBhcnNlci5zdWJzYW1wbGluZ194KCksIHBhcnNlci5zdWJzYW1w
bGluZ195KCkpOwotICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IFZQQ29uZmlndXJhdGlvbkNv
bG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsKLSAgICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3MgPSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5zcGVjaWZp
ZWQ7Ci0gICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQ7Ci0KLSAgICAvLyBDb250YWluZXIgY29sb3IgdmFs
dWVzIGNhbiBvdmVycmlkZSBwZXItc2FtcGxlIG9uZXM6Ci0gICAgaWYgKGNvbG9yLmlzX3ByZXNl
bnQoKSkgewotICAgICAgICBhdXRvJiBjb2xvclZhbHVlID0gY29sb3IudmFsdWUoKTsKLSAgICAg
ICAgaWYgKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3guaXNfcHJlc2VudCgpICYmIGNv
bG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAg
cmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1
YnNhbXBsaW5nKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3gudmFsdWUoKSwgY29sb3JW
YWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNvbG9yVmFs
dWUucmFuZ2UuaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSAhPSBSYW5n
ZTo6a1Vuc3BlY2lmaWVkKQotICAgICAgICAgICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9
IGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSA9PSBSYW5nZTo6a0Z1bGwgPyBWUENvbmZpZ3VyYXRp
b25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7Ci0g
ICAgICAgIGlmIChjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwuaXNfcHJlc2VudCgpKQotICAg
ICAgICAgICAgcmVjb3JkLmJpdERlcHRoID0gY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLnZh
bHVlKCk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy5p
c19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3Mg
PSBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyhjb2xvclZhbHVlLnRyYW5zZmVyX2No
YXJhY3RlcmlzdGljcy52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNvbG9yVmFsdWUubWF0cml4X2Nv
ZWZmaWNpZW50cy5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQubWF0cml4Q29lZmZp
Y2llbnRzID0gY29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKGNvbG9yVmFsdWUubWF0cml4X2Nv
ZWZmaWNpZW50cy52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNvbG9yVmFsdWUucHJpbWFyaWVzLmlz
X3ByZXNlbnQoKSkKLSAgICAgICAgICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IGNvbnZlcnRU
b0NvbG9yUHJpbWFyaWVzKGNvbG9yVmFsdWUucHJpbWFyaWVzLnZhbHVlKCkpOwotICAgIH0KLQog
ICAgIGNvbnN0ZXhwciBzaXplX3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25Db250ZW50c1NpemUgPSAx
MjsKIAogICAgIHVpbnQzMl90IHZlcnNpb25BbmRGbGFncyA9IDEgPDwgMjQ7CkBAIC0xMTA2LDEw
ICsxMDkwLDE1NCBAQCBzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcgogICAgIGF1dG8gZXh0ZW5zaW9u
cyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGV4dGVu
c2lvbnNLZXlzLmRhdGEoKSwgZXh0ZW5zaW9uc1ZhbHVlcy5kYXRhKCksIGV4dGVuc2lvbnNLZXlz
LnNpemUoKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDTVZpZGVvQ29kZWNUeXBl
X1ZQOSwgcGFyc2VyLndpZHRoKCksIHBhcnNlci5oZWlnaHQoKSwgZXh0ZW5zaW9ucy5nZXQoKSwg
JmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjID0gcmVjb3Jk
LmNvZGVjTmFtZSA9PSAidnAwOSIgPyBrQ01WaWRlb0NvZGVjVHlwZV9WUDkgOiAndnAwOCc7Cisg
ICAgaWYgKG5vRXJyICE9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBjb2RlYywgd2lkdGgsIGhlaWdodCwgZXh0ZW5zaW9ucy5nZXQoKSwgJmZvcm1h
dERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGFkb3B0
Q0YoZm9ybWF0RGVzY3JpcHRpb24pOwogfQorCitzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVz
Y3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihj
b25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXJzZXImIHBhcnNlciwgY29uc3Qgd2VibTo6RWxl
bWVudDxDb2xvdXI+JiBjb2xvcikKK3sKKyAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCBy
ZWNvcmQ7CisKKyAgICByZWNvcmQuY29kZWNOYW1lID0gInZwMDkiOworICAgIHJlY29yZC5wcm9m
aWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKKyAgICAvLyBDb3JlTWVkaWEgZG9lcyBuYXQgY2FyZSBh
Ym91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNvZGUgdG8gTGV2ZWwgMS4wIGhlcmU6Cisg
ICAgcmVjb3JkLmxldmVsID0gMTA7CisgICAgcmVjb3JkLmJpdERlcHRoID0gcGFyc2VyLmJpdF9k
ZXB0aCgpOworICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBwYXJzZXIuY29sb3JfcmFu
Z2UoKSA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25S
YW5nZTo6VmlkZW9SYW5nZTsKKyAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0
U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcocGFyc2VyLnN1YnNhbXBsaW5nX3goKSwg
cGFyc2VyLnN1YnNhbXBsaW5nX3koKSk7CisgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gVlBD
b25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVkOworICAgIHJlY29yZC50cmFu
c2ZlckNoYXJhY3RlcmlzdGljcyA9IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzOjpVbnNwZWNpZmllZDsKKyAgICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gVlBDb25m
aWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZDsKKworICAgIC8vIENvbnRh
aW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRlIHBlci1zYW1wbGUgb25lczoKKyAgICBpZiAo
Y29sb3IuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52
YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC5pc19w
cmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS5pc19wcmVzZW50KCkp
CisgICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxp
bmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52
YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LnZhbHVlKCkpOworICAgICAg
ICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52
YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQpCisgICAgICAgICAgICByZWNvcmQudmlkZW9G
dWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/
IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6
VmlkZW9SYW5nZTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC5pc19w
cmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuYml0RGVwdGggPSBjb2xvclZhbHVlLmJpdHNf
cGVyX2NoYW5uZWwudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hh
cmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC50cmFuc2ZlckNo
YXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFs
dWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JW
YWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29y
ZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVudHMoY29sb3JW
YWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1
ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmNvbG9yUHJpbWFy
aWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMoY29sb3JWYWx1ZS5wcmltYXJpZXMudmFsdWUo
KSk7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkKHJlY29yZCwgcGFyc2VyLndpZHRoKCksIHBhcnNlci5oZWln
aHQoKSk7Cit9CisKK3N0cnVjdCBWUDhGcmFtZUhlYWRlciB7CisgICAgYm9vbCBrZXlmcmFtZSB7
IGZhbHNlIH07CisgICAgdWludDhfdCB2ZXJzaW9uIHsgMCB9OworICAgIGJvb2wgc2hvd0ZyYW1l
IHsgdHJ1ZSB9OworICAgIHVpbnQzMl90IHBhcnRpdGlvblNpemUgeyAwIH07CisgICAgdWludDhf
dCBob3Jpem9udGFsU2NhbGUgeyAwIH07CisgICAgdWludDE2X3Qgd2lkdGggeyAwIH07CisgICAg
dWludDhfdCB2ZXJ0aWNhbFNjYWxlIHsgMCB9OworICAgIHVpbnQxNl90IGhlaWdodDsKKyAgICBi
b29sIGNvbG9yU3BhY2UgeyBmYWxzZSB9OworICAgIGJvb2wgbmVlZHNDbGFtcGluZyB7IGZhbHNl
IH07Cit9OworCitzdGF0aWMgT3B0aW9uYWw8VlA4RnJhbWVIZWFkZXI+IHBhcnNlVlA4RnJhbWVI
ZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQoreworICAgIC8vIFZQ
OCBmcmFtZSBoZWFkZXJzIGFyZSBkZWZpbmVkIGluIFJGQyA2Mzg2OiA8aHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzYzODY+LgorCisgICAgLy8gQmFpbCBpZiB0aGUgaGVhZGVyIGlzIGJl
bG93IGEgbWluaW11bSBzaXplCisgICAgaWYgKGZyYW1lU2l6ZSA8IDExKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgVlA4RnJhbWVIZWFkZXIgaGVhZGVyOworICAgIHNpemVf
dCBoZWFkZXJTaXplID0gMTE7CisKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShmcmFtZURhdGEsIGhlYWRlclNpemUpLCAwLCBoZWFkZXJT
aXplKTsKKyAgICBib29sIHN0YXR1cyA9IHRydWU7CisKKyAgICBhdXRvIHVuY29tcHJlc3NlZENo
dW5rID0gdmlldy0+Z2V0PHVpbnQzMl90PigwLCB0cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAoIXN0
YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGhlYWRlci5rZXlmcmFt
ZSA9IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwMDsKKyAgICBoZWFkZXIudmVyc2lvbiA9
ICh1bmNvbXByZXNzZWRDaHVuayA+PiAyOCkgJiAweDc7CisgICAgaGVhZGVyLnNob3dGcmFtZSA9
IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwOworICAgIGhlYWRlci5wYXJ0aXRpb25TaXpl
ID0gKHVuY29tcHJlc3NlZENodW5rID4+IDgpICYgMHg3RkZGRjsKKworICAgIGlmICghaGVhZGVy
LmtleWZyYW1lKQorICAgICAgICByZXR1cm4gaGVhZGVyOworCisgICAgYXV0byBzdGFydENvZGUw
ID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDMsIHRydWUsICZzdGF0dXMpOworICAgIGlmICghc3RhdHVz
IHx8IHN0YXJ0Q29kZTAgIT0gMHg5ZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gc3RhcnRDb2RlMSA9IHZpZXctPmdldDx1aW50OF90Pig0LCB0cnVlLCAmc3RhdHVz
KTsKKyAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENvZGUxICE9IDB4MDEpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIHN0YXJ0Q29kZTIgPSB2aWV3LT5nZXQ8dWludDhf
dD4oNSwgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMgfHwgc3RhcnRDb2RlMiAhPSAw
eDJhKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBob3Jpem9udGFs
QW5kV2lkdGhGaWVsZCA9IHZpZXctPmdldDx1aW50MTZfdD4oNiwgdHJ1ZSwgJnN0YXR1cyk7Cisg
ICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBoZWFk
ZXIuaG9yaXpvbnRhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaG9yaXpvbnRhbEFuZFdp
ZHRoRmllbGQgPj4gMTQpOworICAgIGhlYWRlci53aWR0aCA9IHN0YXRpY19jYXN0PHVpbnQxNl90
Pihob3Jpem9udGFsQW5kV2lkdGhGaWVsZCAmIDB4M0ZGRik7CisKKyAgICBhdXRvIHZlcnRpY2Fs
QW5kSGVpZ2h0RmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDgsIHRydWUsICZzdGF0dXMpOwor
ICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaGVh
ZGVyLnZlcnRpY2FsU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZXJ0aWNhbEFuZEhlaWdo
dEZpZWxkID4+IDE0KTsKKyAgICBoZWFkZXIuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQgJiAweDNGRkYpOworCisgICAgYXV0byBjb2xvclNwYWNl
QW5kQ2xhbXBpbmdGaWVsZCA9IHZpZXctPmdldDx1aW50OF90PigxMCwgdHJ1ZSwgJnN0YXR1cyk7
CisgICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBo
ZWFkZXIuY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkICYgMHg4MDsKKyAg
ICBoZWFkZXIubmVlZHNDbGFtcGluZyA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkICYgMHg0
MDsKKworICAgIHJldHVybiBoZWFkZXI7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA4SGVhZGVyKGNvbnN0
IFZQOEZyYW1lSGVhZGVyJiBoZWFkZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29s
b3IpCit7CisgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOworICAgIHJlY29y
ZC5jb2RlY05hbWUgPSAidnAwOCI7CisgICAgcmVjb3JkLnByb2ZpbGUgPSAwOworICAgIHJlY29y
ZC5sZXZlbCA9IDEwOworICAgIHJlY29yZC5iaXREZXB0aCA9IDg7CisgICAgcmVjb3JkLnZpZGVv
RnVsbFJhbmdlRmxhZyA9IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2U7CisgICAgcmVj
b3JkLmNocm9tYVN1YnNhbXBsaW5nID0gVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6
OlN1YnNhbXBsaW5nXzQyMF9Db2xvY2F0ZWQ7CisgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0g
aGVhZGVyLmNvbG9yU3BhY2UgPyBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6VW5zcGVj
aWZpZWQgOiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNjAxXzc7CisgICAgcmVj
b3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gIGhlYWRlci5jb2xvclNwYWNlID8gVlBDb25m
aWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkIDogVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzYwMV83OworICAgIHJlY29yZC5tYXRy
aXhDb2VmZmljaWVudHMgPSBoZWFkZXIuY29sb3JTcGFjZSA/IFZQQ29uZmlndXJhdGlvbk1hdHJp
eENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQgOiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmlj
aWVudHM6OkJUXzYwMV83OworCisgICAgLy8gQ29udGFpbmVyIGNvbG9yIHZhbHVlcyBjYW4gb3Zl
cnJpZGUgcGVyLXNhbXBsZSBvbmVzOgorICAgIGlmIChjb2xvci5pc19wcmVzZW50KCkpIHsKKyAg
ICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIGlmIChjb2xv
clZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLmNo
cm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5jaHJv
bWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhj
b2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVlKCksIGNvbG9yVmFsdWUuY2hyb21h
X3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnJhbmdlLmlz
X3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgIT0gUmFuZ2U6OmtVbnNwZWNp
ZmllZCkKKyAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBjb2xvclZhbHVl
LnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1
bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOworICAgICAgICBpZiAo
Y29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJl
Y29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC52YWx1ZSgpOworICAg
ICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MuaXNfcHJlc2VudCgp
KQorICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gY29udmVydFRv
VHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3Rp
Y3MudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMu
aXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IGNv
bnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMu
dmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnByaW1hcmllcy5pc19wcmVzZW50KCkp
CisgICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9Db2xvclByaW1h
cmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Y3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQocmVj
b3JkLCBoZWFkZXIud2lkdGgsIGhlYWRlci5oZWlnaHQpOworfQogI2VuZGlmCiAKIHdlYm06OlN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0YWRhdGEm
IG1ldGFkYXRhLCBSZWFkZXIqIHJlYWRlciwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nKQpAQCAt
MTE0NCw3ICsxMjcyLDcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
RnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICAgICAgZHVyYXRp
b24gPSB0cmFjay5kZWZhdWx0X2R1cmF0aW9uLnZhbHVlKCkgKiBtX3RpbWVzY2FsZSAvIDEwMDAw
MDAwMDA7CiAKICNpZiBFTkFCTEUoVlA5KQotICAgIGlmICh0cmFjay5jb2RlY19pZC5pc19wcmVz
ZW50KCkgJiYgdHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAiVl9WUDkiKSB7CisgICAgaWYgKHRy
YWNrLmNvZGVjX2lkLmlzX3ByZXNlbnQoKSAmJiAodHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAi
Vl9WUDkiIHx8IHRyYWNrLmNvZGVjX2lkLnZhbHVlKCkgPT0gIlZfVlA4IikpIHsKICAgICAgICAg
aWYgKCF0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlcikgewogICAgICAgICAgICAgQ01CbG9j
a0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAobm9F
cnIgIT0gQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBudWxscHRyLCBtZXRhZGF0YS5zaXplLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRy
LCAwLCBtZXRhZGF0YS5zaXplLCAwLCAmcmF3QmxvY2tCdWZmZXIpKQpAQCAtMTE4MCwxNCArMTMw
OCwyOSBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25z
dCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgICAgICBpZiAobm9FcnIgIT0gQ01C
bG9ja0J1ZmZlckdldERhdGFQb2ludGVyKHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVyLmdl
dCgpLCAwLCAmc2VnbWVudFNpemVBdFBvc2l0aW9uLCBudWxscHRyLCAoY2hhcioqKSZibG9ja0J1
ZmZlckRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmlu
Zyk7CiAKLSAgICAgICAgYXV0byYgaGVhZGVyUGFyc2VyID0gdHJhY2tEYXRhLT5oZWFkZXJQYXJz
ZXI7Ci0gICAgICAgIGlmICghaGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJs
b2NrQnVmZmVyRGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworICAgICAgICBib29sIGlzS2V5ID0gZmFs
c2U7CisgICAgICAgIGlmICh0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOSIpIHsKKyAg
ICAgICAgICAgIGF1dG8mIGhlYWRlclBhcnNlciA9IHRyYWNrRGF0YS0+aGVhZGVyUGFyc2VyOwor
ICAgICAgICAgICAgaWYgKCFoZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIoYmxv
Y2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAgICAgICAgICAgIHJl
dHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOworCisgICAgICAgICAgICAvLyBPbmx5
IHVwZGF0ZSB0aGUgZm9ybWF0IGRlc2NyaXB0aW9uIHdoZW4gdGhlIGhlYWRlciBpbmRpY2F0ZXMg
dGhhdCB0aGUgc2FtcGxlIGlzCisgICAgICAgICAgICAvLyBhIGtleS1mcmFtZSwgb3RoZXJ3aXNl
IGNvbG9yIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHBhcnNlZC4KKyAgICAgICAgICAgIGlmICho
ZWFkZXJQYXJzZXIua2V5KCkpIHsKKyAgICAgICAgICAgICAgICBpc0tleSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgdHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERl
c2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihoZWFkZXJQYXJzZXIsIHRyYWNrLnZpZGVvLnZh
bHVlKCkuY29sb3VyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh0cmFjay5j
b2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOCIpIHsKKyAgICAgICAgICAgIGF1dG8gaGVhZGVyID0g
cGFyc2VWUDhGcmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlv
bik7CisgICAgICAgICAgICBpZiAoIWhlYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gU2tp
cChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKworICAgICAgICAgICAgaWYgKGhlYWRlci0+a2V5
ZnJhbWUpIHsKKyAgICAgICAgICAgICAgICBpc0tleSA9IHRydWU7CisgICAgICAgICAgICAgICAg
dHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJv
bVZQOEhlYWRlcigqaGVhZGVyLCB0cmFjay52aWRlby52YWx1ZSgpLmNvbG91cik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KIAotICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgZm9ybWF0IGRl
c2NyaXB0aW9uIHdoZW4gdGhlIGhlYWRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgc2FtcGxlIGlzCi0g
ICAgICAgIC8vIGEga2V5LWZyYW1lLCBvdGhlcndpc2UgY29sb3IgaW5mb3JtYXRpb24gd2lsbCBu
b3QgYmUgcGFyc2VkLgotICAgICAgICBpZiAoaGVhZGVyUGFyc2VyLmtleSgpKQotICAgICAgICAg
ICAgdHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9u
RnJvbVZQOUhlYWRlclBhcnNlcihoZWFkZXJQYXJzZXIsIHRyYWNrLnZpZGVvLnZhbHVlKCkuY29s
b3VyKTsKICAgICAgICAgaWYgKCF0cmFja0RhdGEtPmZvcm1hdERlc2NyaXB0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAKQEAgLTEyMDQsNyAr
MTM0Nyw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgICAgIHRyYWNrRGF0YS0+Y3Vy
cmVudEJsb2NrQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgdHJhY2tEYXRhLT5jdXJyZW50Qmxv
Y2tCdWZmZXJQb3NpdGlvbiA9IDA7CiAKLSAgICAgICAgaWYgKCFoZWFkZXJQYXJzZXIua2V5KCkp
IHsKKyAgICAgICAgaWYgKCFpc0tleSkgewogICAgICAgICAgICAgYXV0byBhdHRhY2htZW50c0Fy
cmF5ID0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1ZmZl
ci5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoYXR0YWNobWVudHNBcnJheSk7CiAg
ICAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRzQXJyYXkpCkBAIC0xMjI5LDYgKzEzNzIsMTggQEAg
d2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVN
ZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICByZXR1cm4gU2tpcChyZWFkZXIsIGJ5dGVzUmVt
YWluaW5nKTsKIH0KIAorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzdXBwb3J0ZWRWaWRlb0NvZGVjcygpCit7CisgICAgc3RhdGljIGF1dG8gY29kZWNzID0g
bWFrZU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4oeyAiVl9WUDgiLCAiVl9WUDkiIH0p
OworICAgIHJldHVybiBjb2RlY3M7Cit9CisKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkQXVkaW9Db2RlY3MoKQoreworICAgIHN0YXRpYyBh
dXRvIGNvZGVjcyA9IG1ha2VOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+KHsgfSk7Cisg
ICAgcmV0dXJuIGNvZGVjczsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCAzYTg0NjQ1OWEzZWIzNTUzNjEy
MTI5NzZjOGVhZGU0NjNkNjNiMTk3Li43NzNmNmEwNjRjMzljNTdjM2U1MTE1YzJmNzA4ZjhiNzg0
MTEzMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC04MCw2ICs4MCw4IEBA
IHB1YmxpYzoKICAgICAgICAgSW52YWxpZERvY1R5cGUsCiAgICAgICAgIEludmFsaWRJbml0U2Vn
bWVudCwKICAgICAgICAgUmVjZWl2ZWRFYm1sSW5zaWRlU2VnbWVudCwKKyAgICAgICAgVW5zdXBw
b3J0ZWRWaWRlb0NvZGVjLAorICAgICAgICBVbnN1cHBvcnRlZEF1ZGlvQ29kZWMsCiAgICAgfTsK
IAogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKQEAgLTExMCw2ICsxMTIsOSBAQCBw
cml2YXRlOgogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KICNlbmRpZgogCisgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgc3VwcG9ydGVkVmlkZW9Db2RlY3MoKTsKKyAgICBzdGF0aWMgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBzdXBwb3J0ZWRBdWRpb0NvZGVjcygpOworCiAgICAgLy8gd2VibTo6Q2FsbGJhY2sK
ICAgICB3ZWJtOjpTdGF0dXMgT25FbGVtZW50QmVnaW4oY29uc3Qgd2VibTo6RWxlbWVudE1ldGFk
YXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CiAgICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEVu
ZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5o
CmluZGV4IDE0YzZmM2FlOTg0MzBhYWVjMmI4ZTgyMmIxZmI1MWI0NzU4YWE5MzAuLmIxN2RhNjM1
OTI1OWZjYWM2Mzg1M2UwZGYxYTVhYTRkYjMwZWUyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaApA
QCAtMzksOCArMzksMTAgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgc2V0T3ZlcnJpZGVW
UDlTY3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5nKGZsb2F0IHdpZHQKIFdFQkNPUkVfRVhQT1JU
IGV4dGVybiB2b2lkIHJlc2V0T3ZlcnJpZGVWUDlTY3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5n
KCk7CiAKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2Rl
cigpOworV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVy
KCk7CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdpc3RlclN1cHBsZW1lbnRhbFZQOURl
Y29kZXIoKTsKIGV4dGVybiBib29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgpOworZXh0ZXJuIGJv
b2wgaXNWUDhEZWNvZGVyQXZhaWxhYmxlKCk7CiBleHRlcm4gYm9vbCBpc1ZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJik7CiBleHRl
cm4gYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYs
IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYsIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLm1tCmluZGV4IGM4MWU5N2FhM2U0NzdkN2M3Yjg5YzE2MTlhOWYzZmYy
ZjJiZWMwYTEuLmMwOGZjNjg0ODgzYjYwNjI2NmE1NjcwNDk2OWQzZGQ4OGE2MmM5MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGll
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLm1tCkBAIC0xMDAsNiArMTAwLDExIEBAIHZvaWQgcmVnaXN0ZXJXZWJL
aXRWUDlEZWNvZGVyKCkKICAgICBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlE
ZWNvZGVyKCk7CiB9CiAKK3ZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCkKK3sKKyAgICBM
aWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7Cit9CisKIHZvaWQg
cmVnaXN0ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCkKIHsKICAgICBpZiAoIVZpZGVvVG9vbGJv
eExpYnJhcnkodHJ1ZSkpCkBAIC0xMTYsNyArMTIxLDE0IEBAIGJvb2wgaXNWUDlEZWNvZGVyQXZh
aWxhYmxlKCkKICAgICByZXR1cm4gbm9FcnIgPT0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29k
ZXJJbnN0YW5jZShrQ01WaWRlb0NvZGVjVHlwZV9WUDksIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51
bGxwdHIsIG51bGxwdHIpOwogfQogCi1ib29sIGlzVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRT
dXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbikK
K2Jvb2wgaXNWUDhEZWNvZGVyQXZhaWxhYmxlKCkKK3sKKyAgICBpZiAoIVZpZGVvVG9vbGJveExp
YnJhcnkodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbm9FcnIgPT0g
VlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZSgndnAwOCcsIGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG51bGxwdHIsIG51bGxwdHIpOworfQorCitzdGF0aWMgYm9vbCBpc1ZQOUNvZGVj
Q29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYg
Y29kZWNDb25maWd1cmF0aW9uKQogewogICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2OCw2ICsxODAsMzcgQEAgYm9vbCBpc1ZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
JiBjb2RlY0NvbmYKICAgICByZXR1cm4gaGFzNGtTY3JlZW47CiB9CiAKK3N0YXRpYyBib29sIGlz
VlA4Q29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9u
UmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKCFpc1ZQOERlY29kZXJBdmFp
bGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29kZXIgb25s
eSBzdXBwb3J0cyBQcm9maWxlIDA7CisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWUDggZGVjb2RlciBvbmx5IHN1cHBv
cnRzIDQyMCBjaHJvbWEgc3Vic2FtcGxpbmcuCisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5j
aHJvbWFTdWJzYW1wbGluZyA+IFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJz
YW1wbGluZ180MjBfQ29sb2NhdGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBW
UDggZGVjb2RlciBvbmx5IHN1cHBvcnRzIDgtYml0IGNvbG9yOgorICAgIGlmIChjb2RlY0NvbmZp
Z3VyYXRpb24uYml0RGVwdGggPiA4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVk
KFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24pCit7CisgICAg
aWYgKGNvZGVjQ29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDgiIHx8IGNvZGVjQ29uZmln
dXJhdGlvbi5jb2RlY05hbWUgPT0gInZwOCIpCisgICAgICAgIHJldHVybiBpc1ZQOENvZGVjQ29u
ZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgaWYg
KGNvZGVjQ29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDkiIHx8IGNvZGVjQ29uZmlndXJh
dGlvbi5jb2RlY05hbWUgPT0gInZwOSIpCisgICAgICAgIHJldHVybiBpc1ZQOUNvZGVjQ29uZmln
dXJhdGlvblJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYgaW5m
bywgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7CiAgICAg
aWYgKCFpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJh
dGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IDIxOTg4N2ZhODFl
MmJhZGE5MzViMjI0YjFiNzBjN2UxMTk2OGVlNGEuLmNhMDA5MjFkYzQ2MWU4ZWJiZWJhZmMyMWRj
NTdiN2Q3M2JiZmMzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHdlYlJUQ0F2YWlsYWJsZSgp
OwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOworICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOwogICAgIHN0YXRpYyB2b2lkIHNldEgy
NjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEFj
dGl2ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNw
cAppbmRleCA0YTMyZDFmZGE3ODgzYThjZGFlMWEwZTM4OGIyNTI2YThjMzQzNTBlLi5lNjhmOTE2
MGVmMTg0YmI4MzI0ZmI5OGUyYTMwMzkzYWVmMmFkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwCkBAIC0zNCw2ICszNCw3IEBAIEFMTE9XX1VOVVNF
RF9QQVJBTUVURVJTX0JFR0lOCiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVj
b2Rlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4KIEFM
TE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlE
ZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvZGFy
d2luL1dlYWtMaW5raW5nLmg+CkBAIC05OSw2ICsxMDAsMTMgQEAgdm9pZCBMaWJXZWJSVENQcm92
aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCkKICAgICBpZiAod2ViUlRDQXZhaWxhYmxl
KCkpCiAgICAgICAgIHdlYnJ0Yzo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCk7CiB9CisKK3Zv
aWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpCit7CisgICAg
aWYgKHdlYlJUQ0F2YWlsYWJsZSgpKQorICAgICAgICB3ZWJydGM6OnJlZ2lzdGVyV2ViS2l0VlA4
RGVjb2RlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0Uo
TElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ4Yjc0ZWFlODAxYzYyNGQxMjE3MzEwOTQ5MDgw
ZWRiYTYzNDA2OTAuLjVjNGNhMjVkNGRhYTdkNTgxMzExNzBjOTcyMDNmNDA2ZWJiMWRiYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTUzOCw5ICs1MzgsOSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnVwZGF0ZUNhcHR1cmVBY2Nlc3MoYm9vbCBhbGxvd0F1ZGlvQ2FwdHVyZSwgYm9vbAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
bmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxk
RW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiB7Ci0gICAg
bV9ncHVQcm9jZXNzLT5lbmFibGVWUDlEZWNvZGVycyhzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBz
aG91bGRFbmFibGVWUDlTV0RlY29kZXIpOworICAgIG1fZ3B1UHJvY2Vzcy0+ZW5hYmxlVlA5RGVj
b2RlcnMoc2hvdWxkRW5hYmxlVlA4RGVjb2Rlciwgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwgc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBhMjhjOGZm
NWY2YzA2NGJlZWIzYjg2YzZlYTU0YzNlNDdiNGFmOWRmLi40ZjJkNDRmZmI1NTBhYTZkZTgxMGI5
YmY5NTI2MjA3ZDU3OWRiNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNh
dGlvbiwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAKICNpZiBFTkFCTEUoVlA5KQotICAg
IHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29s
IHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CisgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVycyhi
b29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwg
Ym9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOwogI2VuZGlmCiAKICNpZiBVU0UoQVVESU9f
U0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOWQ1NGUxNjQ1OTViMGEz
NjFkZmU0Yzc1YmZmNDAxOGE4NTc1OWM4Zi4uOGZjMGVmYWM5MzIxODIyMmJiMGJjN2MyMWFhYjkx
OWU1M2E5NzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM4LDcgKzM4LDcg
QEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVz
c2FnZSB7CiAgICAgRW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKICNlbmRpZgogI2lmIEVOQUJM
RShWUDkpCi0gICAgRW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVy
LCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKKyAgICBFbmFibGVWUDlEZWNvZGVycyhi
b29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwg
Ym9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IGUzZDU2YTg3YzdkZGVhZWYwMGE2ZDE3MjA4
ZGI4YWUxZTIyOTEwZGIuLmMzYTM2MTlmNjdlYWI0YjRkZTIzZTEwZmQ0Yzk4MGI3YTQ1OWZiNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTI5MiwxMiArMjky
LDE4IEBAIFdvcmtRdWV1ZSYgR1BVUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUXVldWUoKQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotdm9pZCBHUFVQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVy
cyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyKQordm9pZCBHUFVQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJs
ZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFi
bGVWUDlTV0RlY29kZXIpCiB7CiAgICAgaWYgKHNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYgIW1f
ZW5hYmxlVlA5RGVjb2RlcikgewogICAgICAgICBtX2VuYWJsZVZQOURlY29kZXIgPSB0cnVlOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBXZWJDb3JlOjpyZWdpc3RlclN1cHBsZW1lbnRh
bFZQOURlY29kZXIoKTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoc2hvdWxkRW5hYmxlVlA4RGVj
b2RlciAmJiAhbV9lbmFibGVWUDhEZWNvZGVyKSB7CisgICAgICAgIG1fZW5hYmxlVlA4RGVjb2Rl
ciA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIFdlYkNvcmU6OnJlZ2lzdGVy
V2ViS2l0VlA4RGVjb2RlcigpOwogI2VuZGlmCiAgICAgfQogICAgIGlmIChzaG91bGRFbmFibGVW
UDlTV0RlY29kZXIgJiYgIW1fZW5hYmxlVlA5U1dEZWNvZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3MuaAppbmRleCBiNmVhODE4M2NlNjUxZTQ4ZDExN2UyNDdiNTdmYjA1ODc5
MWMyNjlkLi5iZWE1NjAzYzM2NDhiNzc1YWZhZWUwYjkwMDNiOTJlMjA2Njc4NGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9v
bCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7
CisgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIs
IGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29k
ZXIpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNDgsNiArMTQ4LDcgQEAgcHJpdmF0ZToKICAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI+
IG1fYXVkaW9TZXNzaW9uTWFuYWdlcjsKICNlbmRpZgogI2lmIEVOQUJMRShWUDkpCisgICAgYm9v
bCBtX2VuYWJsZVZQOERlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlEZWNv
ZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCAzOGNhNjg5MjJlYWFjYWNjNmYwYTE1NTQzYmRhNmM5MDAxNDhkYmZh
Li42M2E2NmY3N2UyMWJkNDI4N2FiOWU5MDNlOWU4MjE2OTIwNWZlODhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTYx
LDYgKzE2MSw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZW5jb2RlciA8
PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKICNlbmRpZgorICAgIGVuY29kZXIgPDwg
c2hvdWxkRW5hYmxlVlA4RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOURl
Y29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXI7CiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTIwLDYgKzUyMSw5IEBAIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IGM4NzhlNmQ5ODFmYTk0NDQ5N2YwMjdmYWEzMjEwOTdmMmQ2OWJhYzkuLmEw
OGQ4NGRmOGFhMTkyYjdkNDM0ZDIwNjgzZmE3YjhhODlkMWI2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIzMiw2ICsyMzIs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKFdFQkdM
KQogICAgIGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9OwogI2Vu
ZGlmCisgICAgYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29s
IHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5hYmxl
VlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
LmNwcAppbmRleCBjY2QzM2NjMDJhNzIyNDg4YWVlMTJiMzI1ZTRjY2Q5M2ZiMWUwN2ViLi4xMGE3
M2Q1MzJlODk4ZDQ5NzExZTUzYjY0MmViOTk3ZmFlNTlmM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKQEAgLTI3OCw2
ICsyNzgsMTUgQEAgYm9vbCBkZWZhdWx0V2ViWFJFbmFibGVkKCkKIAogI2lmIEVOQUJMRShWUDkp
CiAKK2Jvb2wgZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCkKK3sKKyNpZiBIQVZFKFNZU1RFTV9G
RUFUVVJFX0ZMQUdTKQorICAgIHJldHVybiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCgidnA4X2RlY29k
ZXIiKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIGRlZmF1bHRWUDlE
ZWNvZGVyRW5hYmxlZCgpCiB7CiAjaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKaW5k
ZXggZDA5ZDQzOTM5MzcwMDRkM2UxMGI5Yjk2NmY4ZTMwNmIwYWY4OTU4Yy4uMmZjN2Q4ZWQxMjU0
ZDM0Njc1ZDFlMmU4ZjlhYTAwZGY1MDA1M2I2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBi
b29sIGRlZmF1bHRXZWJYUkVuYWJsZWQoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKK2Jv
b2wgZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCk7CiBib29sIGRlZmF1bHRWUDlEZWNvZGVyRW5h
YmxlZCgpOwogYm9vbCBkZWZhdWx0VlA5U1dEZWNvZGVyRW5hYmxlZE9uQmF0dGVyeSgpOwogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBiNWEzY2M3NzEyNjcwNTUzZTVhMjgzYWMzYThiYTQzZmQ2ZDc1YTI3Li41MDhk
NGNmOTg0MWVjNDg4NmUxODg1Mjg0NWU1MGQ2YmJjYmFhZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc5NTMsNiArNzk1Myw3IEBAIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jCiAKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgPSBw
cmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkgJiYgUExB
VEZPUk0oQ09DT0EpCisgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyID0gcHJl
ZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYmICgh
V2ViQ29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNvZGVy
RW5hYmxlZE9uQmF0dGVyeSgpKTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVy
ZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0
aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAx
MWZhNzBmMmNlOWI0MzM1MWU1M2I5YTFmM2Y3M2ZjYTUyOGQ3NGEyLi5hMjkzMDdmNzBiNmVkZjdm
ODQ5MzZlZGE2ZGJjZmI4ZGIzYTZkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTg1LDEyICsxODUsMTMg
QEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUMKIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnVw
ZGF0ZVBhcmFtZXRlcnMoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKICNpZiBFTkFCTEUoVlA5KQotICAgIGlmIChtX2VuYWJsZVZQOURlY29kZXIgPT0gcGFy
YW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyICYmIG1fZW5hYmxlVlA5U1dEZWNvZGVyID09
IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQorICAgIGlmIChtX2VuYWJsZVZQ
OERlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyICYmIG1fZW5hYmxl
VlA5RGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYgbV9lbmFi
bGVWUDlTV0RlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIG1fZW5hYmxlVlA5RGVjb2RlciA9IHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA4RGVjb2RlcjsKICAgICBtX2VuYWJsZVZQOURlY29kZXIgPSBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgbV9lbmFibGVWUDlTV0RlY29kZXIgPSBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RW5hYmxlVlA5RGVjb2RlcnMocGFy
YW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyLCBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQ
OVNXRGVjb2RlciksIHsgfSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQOURlY29kZXJzKHBhcmFtZXRlcnMuc2hvdWxk
RW5hYmxlVlA4RGVjb2RlciwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyLCBwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciksIHsgfSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5o
CmluZGV4IDJhMDRjNzRmN2ZiNjM3NzFiYWRmYjU2MzZkMzc1Njg1OGNiMzE3YTAuLmZmOTkyNjVh
ZDZiZDIyZDMwZGZhNWY3MTM1NTMwNDY0NjU2N2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTgyLDYgKzgyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVycyhjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAKICNpZiBFTkFCTEUoVlA5KQorICAgIGJvb2wgaXNWUDhEZWNvZGVy
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA4RGVjb2RlcjsgfQogICAgIGJvb2wg
aXNWUDlEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5RGVjb2Rlcjsg
fQogICAgIGJvb2wgaXNWUFNXRGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZVZQOVNXRGVjb2RlcjsgfQogI2VuZGlmCkBAIC0xMjMsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI+IG1fYXVkaW9Tb3VyY2VQ
cm92aWRlck1hbmFnZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoVlA5KQorICAgIGJvb2wgbV9lbmFi
bGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5RGVjb2RlciB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDYx
ODc5OTMwY2Y3YTg5NjhjODc4OTQyYzZjNTU5MDJkMGU4OTc0Yy4uM2QxNTZlYWRjNTc2MDFmNDVl
MTk3MmQ1ZDVlZjRlZDQ5Njg1ODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgxOCw2ICs4MTgsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikKICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVlA5RGVjb2RlcigpOwogCisgICAgaWYgKHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlcikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5hYmxlVlA4U1dEZWNvZGVyKCk7CisKICAgICBpZiAocGFyYW1ldGVycy5zaG91
bGRFbmFibGVWUDlTV0RlY29kZXIpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
YWJsZVZQOVNXRGVjb2RlcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggNGNhMDk3YTBiYjg1MTM0MjgwZWY0MmRkYWY2ZTg5OWYwMTBhYWY5Mi4u
NzhiNDA5MzAyMWQ4MzFiMTRhMjE0NjY4ZDE5OTY4YTk4MTViMWZjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk4Myw2ICsxOTgzLDE3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcigpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNz
OjplbmFibGVWUDhTV0RlY29kZXIoKQoreworICAgIGlmIChtX3ZwOVNXRGVjb2RlckVuYWJsZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fdnA4U1dEZWNvZGVyRW5hYmxlZCA9IHRydWU7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVy
KCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzOjplbmFibGVWUDlTV0RlY29kZXIoKQog
ewogICAgIGlmIChtX3ZwOVNXRGVjb2RlckVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCBmZGI1NmQ3OWRmMjFmZThjYTEyZTg5MTZlOTc1MWVkOTYyOGIyMTIx
Li4zMWFiZDRmNThhOWE4M2Y2NzQ4MmVkMmQ3NmIwNDA5ZDFjOGJhYWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM1OSw2ICszNTksNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoVlA5KQogICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcigpOworICAgIHZvaWQgZW5h
YmxlVlA4U1dEZWNvZGVyKCk7CiAgICAgdm9pZCBlbmFibGVWUDlTV0RlY29kZXIoKTsKICNlbmRp
ZgogCkBAIC03MDYsNiArNzA3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWUDkpCiAgICAg
Ym9vbCBtX3ZwOURlY29kZXJFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdnA4U1dEZWNv
ZGVyRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ZwOVNXRGVjb2RlckVuYWJsZWQgeyBm
YWxzZSB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNGIxY2NjMzFkNjhmMDMwNjg5MmI5ZTg3N2UxOGIw
YzYzZDAyZWE1Li5jNGNmMzM1OTJiOTVkNGQ1MmU4NWI3Mzg5Yjc5MmIyYWY4NjgwYjcyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBzdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1iaWdzdXIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRk
c291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtYmlnc3Vy
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWludmFsaWQtY29kZWMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTExLTA5ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE5vbi1mdWxsc2NyZWVuIHBhZ2UgY29udGVu
dHMgdmlzaWJsZSB3aGVuIHJvdGF0aW5nIGRldmljZSBkdXJpbmcgZWxlbWVudCBmdWxsc2NyZWVu
IHByZXNlbnRhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1iaWdz
dXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy1iaWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVk
aWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTAzMzM5
NmRkMGMxNWFiNTUyMmE3YTE3YmE3NDk3NDM3ZDA5Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIGluICdlbmRl
ZCcgc3RhdGUuCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBlbXB0eSB0eXBlCitQ
QVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBudWxsCitQQVNTIFRlc3QgYWRkU291cmNl
QnVmZmVyKCkgd2l0aCB1bnN1cHBvcnRlZCB0eXBlCitGQUlMIFRlc3QgYWRkU291cmNlQnVmZmVy
KCkgd2l0aCBWb3JiaXMgYW5kIFZQOCBhc3NlcnRfdHJ1ZTogdmlkZW8vd2VibTtjb2RlY3M9InZw
OCx2b3JiaXMiIGlzIHN1cHBvcnRlZCBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBUZXN0
IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggVm9yYmlzIGFuZCBWUDggaW4gc2VwYXJhdGUgU291cmNl
QnVmZmVycyBhc3NlcnRfdHJ1ZTogYXVkaW8vd2VibTtjb2RlY3M9InZvcmJpcyIgaXMgc3VwcG9y
dGVkIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkg
dmlkZW8gb25seQorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIGF1ZGlvIG9ubHkKK1BBU1Mg
VGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIEFBQyBhbmQgSC4yNjQKK1BBU1MgVGVzdCBhZGRT
b3VyY2VCdWZmZXIoKSB3aXRoIEFBQyBhbmQgSC4yNjQgaW4gc2VwYXJhdGUgU291cmNlQnVmZmVy
cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWludmFsaWQt
Y29kZWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pbnZh
bGlkLWNvZGVjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWUyZDU4MWZmOTA2ODY2ZTljZWE3
YWM5YmM2MjM1YjIxZjdkODdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1pbnZhbGlkLWNvZGVjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
KworUEFTUyBUZXN0IGFuIE1QNCB3aXRoIGFuIGludmFsaWQgY29kZWMgcmVzdWx0cyBpbiBhbiBl
cnJvci4KK1BBU1MgVGVzdCBhIFdlYk0gd2l0aCBhbiBpbnZhbGlkIGNvZGVjIHJlc3VsdHMgaW4g
YW4gZXJyb3IuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYmVmNTAzMDY0YTk4YWQwNjYyYTgxZTM5MDEwYTlkNTAyNjQzZGZmMS4uYmRhZTUxZmQ4NWU3
ZTVhZjZjYTEzODE4MzEwNTY3NWYwZmUwZDM1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg1OCw4ICs4NTgsOCBAQCB3ZWJraXQub3JnL2IvMTYxNzI1
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWVycgogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pcy10eXBlLXN1cHBvcnRlZC5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXJlbW92ZXNvdXJjZWJ1ZmZlci5odG1sIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLXNlZWstYmV5b25kLWR1cmF0aW9uLmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vla2FibGUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzE2MTcyNSBbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlZWstZHVyaW5nLXBlbmRpbmctc2Vlay5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTYxNzI1IFsgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vla2Fi
bGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZXF1ZW5jZW1vZGUtYXBwZW5k
LWJ1ZmZlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZlci1t
b2RlLXRpbWVzdGFtcHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2Vi
dWZmZXItbW9kZS5odG1sIFsgU2tpcCBdCkBAIC04NzAsOSArODcwLDkgQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5n
ZS13ZWJtLWEtYmkKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1hdi1hdWRpby1iaXRyYXRlLmh0bWwgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1hdi1mcmFtZXNpemUuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29u
ZmlnLWNoYW5nZS13ZWJtLWF2LXZpZGVvLWJpdHJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNo
YW5nZS13ZWJtLXYtYml0cmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1m
cmFtZXJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtZnJhbWVzaXplLmh0
bWwgWyBTa2lwIF0KK1sgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtYml0
cmF0ZS5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2Vi
bS12LWZyYW1lcmF0ZS5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1j
aGFuZ2Utd2VibS12LWZyYW1lc2l6ZS5odG1sIFsgU2tpcCBdCiAKICMgU2tpcHBlZCBpbiBXM0Mg
V2ViIFBsYXRmb3JtIFRlc3QgbWFuaWZlc3QKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWdldHZpZGVvcGxheWJhY2txdWFsaXR5Lmh0bWwg
WyBTa2lwIF0K
</data>
<flag name="commit-queue"
          id="433243"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415900</attachid>
            <date>2020-12-10 10:40:50 -0800</date>
            <delta_ts>2020-12-11 12:46:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219732-20201210104049.patch</filename>
            <type>text/plain</type>
            <size>92284</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzZTQ1OWUwMzQ4NDY4MzBiOWQ2MzgxYWJiOGZlYTQ5NjhhMzU2ZThiLi41MDZk
ODc5ZjkwOGFhYWY3YzUzMDc4NTJjMzM4M2QyOThjMDA1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJL
aXREZWNvZGVyUmVjZWl2ZXI6OldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAgICAgICh3ZWJy
dGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6fldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAg
ICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4
ZWxCdWZmZXJQb29sKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpk
ZWNvZGVyRmFpbGVkKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpE
ZWNvZGVkKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmg6IEFkZGVkCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlV2ViS2l0VlA4RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OmludmFsaWRhdGVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6ZmluYWxpemVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y29weVZQOERlY29kZXJE
ZWJ1Z0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6d2ViS2l0VlA4RGVjb2RlckZyb21W
VERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOERlY29kZXJTZXNzaW9uKToKKyAg
ICAgICAgKHdlYnJ0Yzo6ZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jayk6
CisgICAgICAgICh3ZWJydGM6OmRlY29kZVZQOERlY29kZXJGcmFtZSk6CisgICAgICAgICogU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2Vi
cnRjOjpzdGFydFZQOURlY29kZXJTZXNzaW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXRWUDlEZWNvZGVy
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2Rl
ckZhaWxlZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIElDRSBkb2VzIG5vdCByZXNvbHZlIGZvciBgdHVybnNgIHJlbGF5
IGNhbmRpZGF0ZXMgcm9vdGVkIGluIExldHNFbmNyeXB0IENBCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEzMGU1N2I3ZGZiMmU0
NzQ1NTVlMTE3YjdhODI2ZjM3ZWFjMWVlMGMuLmM0YTc2NmI2MDExNjc3MDNjY2RhNTM0YzUwYTg3
ZTI2YWI2MjUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFs
IFZQOCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bDoKKwogMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2F0ZSBWUDkgZXhwb3N1cmUgaW4gTWVkaWFDYXBhYmlsaXRpZXMgb24gVlA5RGVjb2Rl
ckVuYWJsZWQgcHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDViOGFlOWU1MjFiNmU1YzU2YmFlYThk
ODM5Y2ZkMGQyNmRmNTY5OWUuLjJlN2EwYzFjMjVjZDM4ZGQ4ODQ0NTY2YjkzYjYzYWEwMWI5MjZk
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50YWwg
VlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5ld2x5IHBhc3NpbmcgdGVzdHM6CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXIuaHRt
bAorICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwKKyAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LXNlZWthYmxlLmh0bWwKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUu
aHRtbCAKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lcmF0ZS5odG1sCisg
ICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbAorICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtaW52YWxpZC1jb2RlYy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWUENvZGVjUGFyYW1ldGVycyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRl
bnRUeXBlU3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1hdERlc2NyaXB0
aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcik6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZVZQOEZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvcm1h
dERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZQOVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRW
UDhEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVlA4RGVjb2RlckF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjppc1ZQOUNvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6
CisgICAgICAgIChXZWJDb3JlOjppc1ZQOENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjppc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9y
dGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKToKKwogMjAyMC0xMS0wNCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tZnVsbHNjcmVlbiBwYWdlIGNv
bnRlbnRzIHZpc2libGUgd2hlbiByb3RhdGluZyBkZXZpY2UgZHVyaW5nIGVsZW1lbnQgZnVsbHNj
cmVlbiBwcmVzZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQyMDQyMTcwYjhjYmUyYmFlNzliY2E1ODU4
MWMyYjZkNzA2YjdjYzAuLjJjMGUzZDA4NjA2NDg2YWRjMzNlNDY4OGQyNjBmMTUwZWQ0ZDZhNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6ZW5hYmxlVlA5RGVjb2RlcnMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZh
dWx0VlA4RGVjb2RlckVuYWJsZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnVwZGF0ZVBhcmFtZXRlcnMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NDb25uZWN0aW9uOjppc1ZQOERlY29kZXJFbmFibGVkIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlVlA4
U1dEZWNvZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAyMC0x
Mi0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBF
bnRlcmluZyBmdWxsc2NyZWVuIGZyb20gbGVzcy10aGFuLWZ1bGxzY3JlZW4gV0tXZWJWaWV3IGRv
ZXMgbm90IGxheW91dCBjb3JyZWN0bHkgdXBvbiBleGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAK
aW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBh
ZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4
cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0Vi
CiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1
RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJL
aXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxs
b3dlZEViCitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2Vi
cnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVy
RnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1
ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFt
ZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZTI4MDU4
ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIx
Y2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAt
MTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pO
NndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlX
ZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5j
b2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0
TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEVi
CitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRy
ZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZy
YW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1t
TlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBf
X0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKaW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5
NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMy
ZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9f
Wk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJL
aXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42
d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVn
aXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURl
Y29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0Zy
YW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVF
RQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1ZUVmlkZW9EZWNvZGVyU1BJLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1ZUVmlkZW9EZWNvZGVyU1BJLmgKaW5kZXggZjQ4ODkwNWVlNDcx
ZGRkYTRkNGQ5NTA1NTBkNzc4MmU0ODdhMTBhMC4uNjgwZTBkOGE1ZTRkZTZkMzliYmY2NTdmM2U2
YzM1ZTExMmFlYTc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9WVFZpZGVvRGVjb2RlclNQSS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVlRWaWRlb0RlY29k
ZXJTUEkuaApAQCAtMjUsNiArMjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFZp
ZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KKyNpbmNsdWRlICJDTUJhc2VPYmplY3RTUEkuaCIK
KwogI2lmIGRlZmluZWQgX19oYXNfaW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRh
dGlvbi9DRlByaXYuaD4pCiAjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZUVmlkZW9EZWNvZGVyLmg+
CiAjaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZUVmlkZW9EZWNvZGVyUmVnaXN0cmF0aW9uLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzYwZTViYzUzNjA4ZDM4NzNhZTc1MWUxY2Q1Nzg2ZjczZThhZjljZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcApAQCAtMCwwICsxLDE5MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJXZWJLaXRWUDlEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJX
ZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9p
bmNsdWRlL3ZpZGVvX2Vycm9yX2NvZGVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5o
IgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNlc3Npb24pCisgICAgOiBtX3Nl
c3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0RGVj
b2RlclJlY2VpdmVyKCkKK3sKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENG
UmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2Vp
dmVyOjppbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgLy8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1
cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0
cHV0CisgICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZm
ZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKKyAgICAvLyBkZWNvZGVyIHNlc3Np
b24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29s
LCB3aGljaCB3ZQorICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgorICAgIG1faXNGdWxsUmFu
Z2UgPSBmYWxzZTsKKyAgICBtX2lzMTBiaXQgPSBmYWxzZTsKKworICAgIGRvIHsKKyAgICAgICAg
YXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMoZm9ybWF0
RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIWV4dGVuc2lvbnMpCisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMgPSBDRkRpY3Rpb25hcnlHZXRW
YWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVEZXNj
cmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKKyAgICAgICAgaWYgKCFleHRlbnNpb25BdG9tcyB8fCBD
RkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQgPSBz
dGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlS
ZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKKyAgICAgICAgaWYgKCFjb25maWd1
cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRpb25SZWNvcmQpICE9IENGRGF0
YUdldFR5cGVJRCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBjb25maWd1
cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25maWd1cmF0aW9uUmVjb3JkKTsK
KyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwgMTIpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmREYXRhID0gQ0ZEYXRhR2V0
Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsKKyAgICAgICAgYXV0byBiaXREZXB0aENocm9t
YUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSArIDYpOworCisgICAgICAgIGlm
ICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkKKyAgICAgICAgICAgIG1faXMx
MGJpdCA9IHRydWU7CisKKyAgICAgICAgaWYgKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgJiAweDEp
CisgICAgICAgICAgICBtX2lzRnVsbFJhbmdlID0gdHJ1ZTsKKyAgICB9IHdoaWxlIChmYWxzZSk7
Cit9CisKK0NWUGl4ZWxCdWZmZXJQb29sUmVmIFdlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4ZWxC
dWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWln
aHQsIGJvb2wgaXMxMGJpdCkKK3sKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wgJiYgbV9waXhl
bEJ1ZmZlcldpZHRoID09IHBpeGVsQnVmZmVyV2lkdGggJiYgbV9waXhlbEJ1ZmZlckhlaWdodCA9
PSBwaXhlbEJ1ZmZlckhlaWdodCAmJiBtX2lzMTBiaXQgPT0gaXMxMGJpdCkKKyAgICAgICAgcmV0
dXJuIG1fcGl4ZWxCdWZmZXJQb29sOworCisgICAgT1NUeXBlIHBpeGVsRm9ybWF0OworICAgIGlm
IChpczEwYml0KQorICAgICAgICBwaXhlbEZvcm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0
VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZTsKKyAgICBlbHNlCisgICAgICAgIHBp
eGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4
QmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFy
VmlkZW9SYW5nZTsKKworICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzID0gW10g
KE9TVHlwZSBwaXhlbEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhlbHMpIHsKKyAgICAgICAgYXV0
byBjcmVhdGVOdW1iZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+IENGTnVtYmVyUmVmIHsKKyAg
ICAgICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJTSW50MzJUeXBlLCAmZm9ybWF0KTsKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBjZlBp
eGVsRm9ybWF0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworICAgICAgICBhdXRvIGZvcm1hdE51bWJlciA9IGNy
ZWF0ZU51bWJlcihwaXhlbEZvcm1hdCk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjZlBp
eGVsRm9ybWF0cywgZm9ybWF0TnVtYmVyKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZvcm1hdE51bWJl
cik7CisKKyAgICAgICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9IGNyZWF0ZU51bWJlcigzMik7
CisKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0geworICAgICAgICAgICAga0NWUGl4ZWxC
dWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVu
ZGVkUGl4ZWxzTGVmdEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhl
bHNSaWdodEtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNUb3BL
ZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzQm90dG9tS2V5LAor
ICAgICAgICB9OworICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgICAg
IGNmUGl4ZWxGb3JtYXRzLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAg
ICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAor
ICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgIH07CisgICAgICAgIGF1dG8g
YXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlz
LCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIENGUmVsZWFzZShi
b3JkZXJQaXhlbHNWYWx1ZSk7CisgICAgICAgIENGUmVsZWFzZShjZlBpeGVsRm9ybWF0cyk7Cisg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH07CisKKyAgICBhdXRvIHBpeGVsQnVmZmVy
QXR0cmlidXRlcyA9IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyhwaXhlbEZvcm1hdCwgMzIp
OworICAgIFZURGVjb2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9u
LCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJp
YnV0ZXMpOworCisgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFz
ZShtX3BpeGVsQnVmZmVyUG9vbCk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQ
aXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsKKyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisg
ICAgICAgIENGUmV0YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKKworICAgIG1fcGl4ZWxCdWZmZXJX
aWR0aCA9IHBpeGVsQnVmZmVyV2lkdGg7CisgICAgbV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVs
QnVmZmVySGVpZ2h0OworICAgIG1faXMxMGJpdCA9IGlzMTBiaXQ7CisKKyAgICByZXR1cm4gbV9w
aXhlbEJ1ZmZlclBvb2w7Cit9CisKK09TU3RhdHVzIFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVj
b2RlckZhaWxlZChpbnQgZXJyb3IpCit7CisgICAgT1NTdGF0dXMgdnRFcnJvciA9IGtWVFZpZGVv
RGVjb2RlckJhZERhdGFFcnI7CisgICAgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19O
T19PVVRQVVQpCisgICAgICAgIHZ0RXJyb3IgPSBub0VycjsKKyAgICBlbHNlIGlmIChlcnJvciA9
PSBXRUJSVENfVklERU9fQ09ERUNfVU5JTklUSUFMSVpFRCkKKyAgICAgICAgdnRFcnJvciA9IGtW
VFZpZGVvRGVjb2Rlck1hbGZ1bmN0aW9uRXJyOworICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJU
Q19WSURFT19DT0RFQ19NRU1PUlkpCisgICAgICAgIHZ0RXJyb3IgPSBrVlRBbGxvY2F0aW9uRmFp
bGVkRXJyOworICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwg
bV9jdXJyZW50RnJhbWUsIHZ0RXJyb3IsIDAsIG51bGxwdHIpOworICAgIG1fY3VycmVudEZyYW1l
ID0gbnVsbHB0cjsKKworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVj
b2RlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVy
cm9yOworICAgIHJldHVybiB2dEVycm9yOworfQorCitpbnQzMl90IFdlYktpdERlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gcGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAg
IGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWln
aHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQ
b29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9v
bENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29s
LCAmcGl4ZWxCdWZmZXIpID09IGtDVlJldHVyblN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4g
cGl4ZWxCdWZmZXI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0pOworCisgICAgVlRE
ZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwg
cGl4ZWxCdWZmZXIgPyBub0VyciA6IC0xLCAwLCBwaXhlbEJ1ZmZlcik7CisgICAgbV9jdXJyZW50
RnJhbWUgPSBudWxscHRyOworICAgIGlmIChwaXhlbEJ1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNl
KHBpeGVsQnVmZmVyKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBXZWJLaXREZWNvZGVy
UmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYgZnJhbWUsIGludDY0X3QpCit7CisgICAgRGVj
b2RlZChmcmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2Vp
dmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90Piwg
YWJzbDo6b3B0aW9uYWw8dWludDhfdD4pCit7CisgICAgRGVjb2RlZChmcmFtZSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhNTQ1OTdlM2I0Y2FjMGI5N2YxYTM3MDIyOTA4YjkyMmZlNGQ5MzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZGVjb2Rlci5oIgorI2luY2x1ZGUgIlZUVmlkZW9EZWNvZGVyU1BJLmgiCisjaW5jbHVkZSAiV2Vi
S2l0VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBXZWJLaXREZWNv
ZGVyUmVjZWl2ZXIgZmluYWwgOiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJhY2sgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFdlYktpdERlY29kZXJSZWNlaXZlcihWVFZpZGVvRGVjb2RlclNlc3Np
b24pOworICAgIH5XZWJLaXREZWNvZGVyUmVjZWl2ZXIoKTsKKworICAgIFZUVmlkZW9EZWNvZGVy
RnJhbWUgY3VycmVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KKyAg
ICB2b2lkIHNldEN1cnJlbnRGcmFtZShWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSkg
eyBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsgfQorICAgIE9TU3RhdHVzIGRlY29kZXJG
YWlsZWQoaW50IGVycm9yKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlw
dGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmKTsKKworcHJpdmF0ZToKKyAgICBpbnQzMl90IERl
Y29kZWQoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1l
JiwgaW50NjRfdCBkZWNvZGVfdGltZV9tcykgZmluYWw7CisgICAgdm9pZCBEZWNvZGVkKFZpZGVv
RnJhbWUmLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywgYWJzbDo6b3B0
aW9uYWw8dWludDhfdD4gcXApIGZpbmFsOworCisgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4
ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJI
ZWlnaHQsIGJvb2wgaXMxMGJpdCk7CisKKyAgICBWVFZpZGVvRGVjb2RlclNlc3Npb24gbV9zZXNz
aW9uIHsgbnVsbHB0ciB9OworICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgbV9jdXJyZW50RnJhbWUg
eyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJXaWR0aCB7IDAgfTsKKyAgICBz
aXplX3QgbV9waXhlbEJ1ZmZlckhlaWdodCB7IDAgfTsKKyAgICBib29sIG1faXMxMGJpdCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzRnVsbFJhbmdlIHsgZmFsc2UgfTsKKyAgICBDVlBpeGVsQnVm
ZmVyUG9vbFJlZiBtX3BpeGVsQnVmZmVyUG9vbCB7IG51bGxwdHIgfTsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VlA4RGVjb2Rlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
Mjg2YTIwOGRkMGZiYzRlZWQxZWFmNDgwMDJmYWM1ZDYwNDQ5YTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIldlYktpdFZQOERlY29kZXIuaCIKKworI2luY2x1ZGUgIldlYktpdERlY29kZXJSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3Zw
OF9kZWNvZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZvLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitzdGF0aWMgT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdWaWRlb0NvZGVjVHlw
ZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJlZiopOwordm9pZCBy
ZWdpc3RlcldlYktpdFZQOERlY29kZXIoKQoreworICAgIFZUUmVnaXN0ZXJWaWRlb0RlY29kZXIo
J3ZwMDgnLCBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKTsKK30KKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJ2cHhWcDhEZWNvZGVyPiBtX2luc3RhbmNlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7Cit9IFdlYktp
dFZQOERlY29kZXI7CisKK3N0YXRpYyBPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVjb2RlcihDTUJh
c2VPYmplY3RSZWYpOworc3RhdGljIHZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVj
dFJlZik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9u
KENNQmFzZU9iamVjdFJlZik7CisKK3N0YXRpYyBjb25zdCBDTUJhc2VDbGFzcyBXZWJLaXRWUDhE
ZWNvZGVyX0Jhc2VDbGFzcyA9Cit7CisgICAga0NNQmFzZU9iamVjdF9DbGFzc1ZlcnNpb25fMSwK
KyAgICBzaXplb2YoV2ViS2l0VlA4RGVjb2RlciksCisgICAgbnVsbHB0ciwgLy8gQ29tcGFyaXNv
biBieSBwb2ludGVyIGVxdWFsaXR5CisgICAgaW52YWxpZGF0ZVZQOERlY29kZXIsCisgICAgZmlu
YWxpemVWUDhEZWNvZGVyLAorICAgIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbiwKKyAg
ICBudWxscHRyLCAvLyBDb3B5UHJvcGVydHkKKyAgICBudWxscHRyLCAvLyBTZXRQcm9wZXJ0eQor
ICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIE9TU3RhdHVzIHN0YXJ0VlA4
RGVjb2RlclNlc3Npb24oVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiwg
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKK3N0YXRpYyBPU1N0YXR1cyBkZWNvZGVWUDhE
ZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyRnJhbWUsIENNU2Ft
cGxlQnVmZmVyUmVmLCBWVERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKik7CisK
K3N0YXRpYyBjb25zdCBWVFZpZGVvRGVjb2RlckNsYXNzIFdlYktpdFZQOERlY29kZXJfVmlkZW9E
ZWNvZGVyQ2xhc3MgPQoreworICAgIGtWVFZpZGVvRGVjb2Rlcl9DbGFzc1ZlcnNpb25fMSwKKyAg
ICBzdGFydFZQOERlY29kZXJTZXNzaW9uLAorICAgIGRlY29kZVZQOERlY29kZXJGcmFtZSwKKyAg
ICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0NvcHlTdXBwb3J0ZWRQcm9wZXJ0
eURpY3Rpb25hcnksCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9TZXRQ
cm9wZXJ0aWVzCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9Db3B5U2Vy
aWFsaXphYmxlUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rp
b25fQ2FuQWNjZXB0Rm9ybWF0RGVzY3JpcHRpb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVj
b2RlckZ1bmN0aW9uX0ZpbmlzaERlbGF5ZWRGcmFtZXMKKyAgICBudWxscHRyLCAvLyBWVFZpZGVv
RGVjb2RlckZ1bmN0aW9uX1N0YXJ0VGlsZVNlc3Npb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVv
RGVjb2RlckZ1bmN0aW9uX0RlY29kZVRpbGUKKyAgICBudWxscHRyIC8vIFZUVmlkZW9EZWNvZGVy
RnVuY3Rpb25fRmluaXNoRGVsYXllZFRpbGVzCit9OworCitzdGF0aWMgY29uc3QgVlRWaWRlb0Rl
Y29kZXJWVGFibGUgV2ViS2l0VlA4RGVjb2RlclZUYWJsZSA9Cit7CisgICAgeyBudWxscHRyLCAm
V2ViS2l0VlA4RGVjb2Rlcl9CYXNlQ2xhc3MgfSwKKyAgICAmV2ViS2l0VlA4RGVjb2Rlcl9WaWRl
b0RlY29kZXJDbGFzcworfTsKKworT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdW
aWRlb0NvZGVjVHlwZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJl
ZiogZGVjb2Rlck91dCkKK3sKKyAgICBpZiAoIWRlY29kZXJPdXQpIHsKKyAgICAgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyIGNyZWF0aW9uIGZhaWxlZCwgbm8gZGVjb2RlciBv
dXRwdXQiOworICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAgIFZU
VmlkZW9EZWNvZGVyUmVmIGRlY29kZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTURl
cml2ZWRPYmplY3RDcmVhdGUoYWxsb2NhdG9yLCAmV2ViS2l0VlA4RGVjb2RlclZUYWJsZS5iYXNl
LCBWVFZpZGVvRGVjb2RlckdldENsYXNzSUQoKSwgKENNQmFzZU9iamVjdFJlZiopJmRlY29kZXIp
OworCisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJW
UDggZGVjb2RlciBjcmVhdGlvbiBmYWlsZWQsIENNRGVyaXZlZE9iamVjdENyZWF0ZSBmYWlsZWQg
d2l0aCBlcnJvciAiIDw8IGVycm9yOworICAgICAgICByZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxl
ZEVycjsKKyAgICB9CisKKyAgICBpZihlcnJvcikgeworICAgICAgICBDRlJlbGVhc2UoZGVjb2Rl
cik7CisgICAgICAgIGRlY29kZXIgPSBOVUxMOworICAgIH0KKyAgICAqZGVjb2Rlck91dCA9IGRl
Y29kZXI7CisgICAgcmV0dXJuIGVycm9yOworfQorCitPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVj
b2RlcihDTUJhc2VPYmplY3RSZWYgaW5zdGFuY2UpCit7CisgICAgYXV0byogZGVjb2RlciA9IHN0
YXRpY19jYXN0PFdlYktpdFZQOERlY29kZXIqPihDTUJhc2VPYmplY3RHZXREZXJpdmVkU3RvcmFn
ZShpbnN0YW5jZSkpOworICAgIGlmICghZGVjb2RlcikKKyAgICAgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIlZQOCBkZWNvZGVyOiBpbnZhbGlkYXRpb24gZmFpbGVkIGFzIGluc3RhbmNlIGhhcyBu
byBkZWNvZGVyIjsKKyAgICBlbHNlIHsKKyAgICAgICAgZGVjb2Rlci0+bV9pbnN0YW5jZSA9IG51
bGxwdHI7CisgICAgICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBudWxscHRyOworICAgIH0KKyAg
ICByZXR1cm4gbm9FcnI7Cit9CisKK3ZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVj
dFJlZiBpbnN0YW5jZSkKK3sKKyAgICBpbnZhbGlkYXRlVlA4RGVjb2RlcihpbnN0YW5jZSk7Cit9
CisKK0NGU3RyaW5nUmVmIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbihDTUJhc2VPYmpl
Y3RSZWYpCit7CisgICAgcmV0dXJuIENGU1RSKCJXZWJLaXQgVlA4IGRlY29kZXIiKTsKK30KKwor
V2ViS2l0VlA4RGVjb2Rlciogd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoVlRWaWRlb0Rl
Y29kZXJSZWYgZGVjb2RlcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0VlA4RGVj
b2Rlcio+KENNQmFzZU9iamVjdEdldERlcml2ZWRTdG9yYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8Q01C
YXNlT2JqZWN0UmVmPihkZWNvZGVyKSkpOworfQorT1NTdGF0dXMgc3RhcnRWUDhEZWNvZGVyU2Vz
c2lvbihWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNl
c3Npb24sIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sK
KyAgICBhdXRvKiBkZWNvZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFu
Y2UpOworICAgIGlmICghZGVjb2RlcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
VlA4IGRlY29kZXI6IGZhaWxlZCB0byBnZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIHN0
YXJ0aW5nIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBk
ZWNvZGVyLT5tX2luc3RhbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJ2cHhWcDhEZWNvZGVyPigp
OworICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdERlY29k
ZXJSZWNlaXZlcj4oc2Vzc2lvbik7CisgICAgZGVjb2Rlci0+bV9yZWNlaXZlci0+aW5pdGlhbGl6
ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBkZWNvZGVy
LT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVjb2Rlci0+bV9y
ZWNlaXZlci5nZXQoKSk7CisKKyAgICBWaWRlb0NvZGVjIGNvZGVjOworICAgIGF1dG8gZGltZW5z
aW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3Jp
cHRpb24pOworICAgIGNvZGVjLndpZHRoID0gZGltZW5zaW9ucy53aWR0aDsKKyAgICBjb2RlYy5o
ZWlnaHQgPSBkaW1lbnNpb25zLmhlaWdodDsKKworICAgIGRlY29kZXItPm1faW5zdGFuY2UtPklu
aXREZWNvZGUoJmNvZGVjLCBDcHVJbmZvOjpEZXRlY3ROdW1iZXJPZkNvcmVzKCkpOworCisgICAg
cmV0dXJuIG5vRXJyOworfQorCitzdGF0aWMgT1NTdGF0dXMgZGVjb2RlVlA4RGVjb2RlckZyYW1l
RnJvbUNvbnRpZ3VvdXNCbG9jayhXZWJLaXRWUDhEZWNvZGVyJiBkZWNvZGVyLCBWVFZpZGVvRGVj
b2RlckZyYW1lIGZyYW1lLCBDTUJsb2NrQnVmZmVyUmVmIGVuY29kZWRCdWZmZXIpCit7CisgICAg
UlRDX0RDSEVDSyhDTUJsb2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoZW5jb2RlZEJ1ZmZlciwg
MCwgMCkpOworCisgICAgYXV0byBzaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoZW5j
b2RlZEJ1ZmZlcik7CisgICAgY2hhciogZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoZW5jb2RlZEJ1ZmZlciwgMCwgbnVsbHB0
ciwgbnVsbHB0ciwgJmRhdGEpKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDgg
ZGVjb2RlcjogQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yICIg
PDwgZXJyb3I7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBSVENfRENIRUNL
KCFkZWNvZGVyLm1fcmVjZWl2ZXItPmN1cnJlbnRGcmFtZSgpKTsKKyAgICBkZWNvZGVyLm1fcmVj
ZWl2ZXItPnNldEN1cnJlbnRGcmFtZShmcmFtZSk7CisKKyAgICBFbmNvZGVkSW1hZ2UgaW1hZ2Ug
eyByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSwgc2l6ZSB9OworICAgIC8v
IFdlIHNldCB0aG9zZSB2YWx1ZXMgYXMgVlA4RGVjb2RlckltcGwgY2hlY2tzIGZvciBnZXR0aW5n
IGEgZnVsbCBrZXkgZnJhbWUgYXMgZmlyc3QgZnJhbWUuCisgICAgaW1hZ2UuX2ZyYW1lVHlwZSA9
IFZpZGVvRnJhbWVUeXBlOjprVmlkZW9GcmFtZUtleTsKKyAgICBpbWFnZS5fY29tcGxldGVGcmFt
ZSA9IHRydWU7CisgICAgYXV0byBlcnJvciA9IGRlY29kZXIubV9pbnN0YW5jZS0+RGVjb2RlKGlt
YWdlLCBmYWxzZSwgMCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gZGVjb2Rlci5t
X3JlY2VpdmVyLT5kZWNvZGVyRmFpbGVkKGVycm9yKTsKKworICAgIFJUQ19EQ0hFQ0soIWRlY29k
ZXIubV9yZWNlaXZlci0+Y3VycmVudEZyYW1lKCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09T
U3RhdHVzIGRlY29kZVZQOERlY29kZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwg
VlRWaWRlb0RlY29kZXJGcmFtZSBmcmFtZSwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
LCBWVERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKikKK3sKKyAgICBhdXRvKiBk
ZWNvZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFuY2UpOworICAgIGlm
ICghZGVjb2RlciB8fCAhZGVjb2Rlci0+bV9pbnN0YW5jZSB8fCAhZGVjb2Rlci0+bV9yZWNlaXZl
cikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0
byBnZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIGRlY29kaW5nIjsKKyAgICAgICAgcmV0
dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBD
TVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWVuY29k
ZWRCdWZmZXIpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBm
YWlsZWQgdG8gZ2V0IGRhdGEgYnVmZmVyIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVy
cjsKKyAgICB9CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNCdWZmZXIgPSBudWxs
cHRyOworICAgIC8vIE1ha2Ugc3VyZSBibG9jayBidWZmZXIgaXMgY29udGlndW91cy4KKyAgICBp
ZiAoIUNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhlbmNvZGVkQnVmZmVyLCAwLCAwKSkg
eworICAgICAgICBhdXRvIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51
bGxwdHIsIGVuY29kZWRCdWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAsICZjb250aWd1
b3VzQnVmZmVyKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworICAgICAgICAgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBmYWlsZWQgdG8gY3JlYXRlIGNvbnRp
Z3VvdXMgYmxvY2sgYnVmZmVyIHdpdGggZXJyb3IgIiA8PCBzdGF0dXM7CisgICAgICAgICAgICBy
ZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsKKyAgICAgICAgfQorICAgICAgICBlbmNvZGVk
QnVmZmVyID0gY29udGlndW91c0J1ZmZlcjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGRl
Y29kZVZQOERlY29kZXJGcmFtZUZyb21Db250aWd1b3VzQmxvY2soKmRlY29kZXIsIGZyYW1lLCBl
bmNvZGVkQnVmZmVyKTsKKworICAgIGlmIChjb250aWd1b3VzQnVmZmVyKQorICAgICAgICBDRlJl
bGVhc2UoY29udGlndW91c0J1ZmZlcik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdFZQOERlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJm
NzMwYjk1NmFlNWE3NzA0MzhmODA4ZDUxNTEzN2YxODYxODU5ZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSB3ZWJydGMgeworCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rl
cigpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNw
cAppbmRleCA0M2E4ZWM3MmRiZWI5OGFlYzQ0NmI3MTk4N2MzMWQzMGU4ZDUzNzVmLi44NzU5ZWQx
ZmJlMTkxZjVhZDAxYjI1ZTQ1ODVmNzY0NTlmZGUwMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAKQEAgLTI1LDE1ICsyNSwxMSBAQAogCiAjaW5j
bHVkZSAiV2ViS2l0VlA5RGVjb2Rlci5oIgogCi0jaW5jbHVkZSAiV2ViS2l0VXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgorI2luY2x1ZGUgIldlYktp
dERlY29kZXJSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDkvdnA5X2ltcGwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2luZm8uaCIKIAotI2luY2x1ZGUgIkNNQmFz
ZU9iamVjdFNQSS5oIgotI2luY2x1ZGUgIlZUVmlkZW9EZWNvZGVyU1BJLmgiCi0KIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBzdGF0aWMgT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA5RGVjb2RlcihGaWdW
aWRlb0NvZGVjVHlwZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJl
ZiopOwpAQCAtNDIsMzkgKzM4LDExIEBAIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCkK
ICAgICBWVFJlZ2lzdGVyVmlkZW9EZWNvZGVyKCd2cDA5JywgY3JlYXRlV2ViS2l0VlA5RGVjb2Rl
cik7CiB9CiAKLWNsYXNzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjsKIHR5cGVkZWYgc3RydWN0
IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VlA5RGVjb2RlckltcGw+IG1faW5zdGFuY2U7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYktpdFZQOURlY29kZXJSZWNlaXZlcj4gbV9yZWNlaXZlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RGVjb2RlclJlY2VpdmVyPiBtX3JlY2VpdmVyOwogfSBX
ZWJLaXRWUDlEZWNvZGVyOwogCi1jbGFzcyBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIgZmluYWwg
OiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJhY2sgewotcHVibGljOgotICAgIGV4cGxpY2l0IFdl
YktpdFZQOURlY29kZXJSZWNlaXZlcihWVFZpZGVvRGVjb2RlclNlc3Npb24pOwotICAgIH5XZWJL
aXRWUDlEZWNvZGVyUmVjZWl2ZXIoKTsKLQotICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgY3VycmVu
dEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KLSAgICB2b2lkIHNldEN1
cnJlbnRGcmFtZShWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSkgeyBtX2N1cnJlbnRG
cmFtZSA9IGN1cnJlbnRGcmFtZTsgfQotICAgIE9TU3RhdHVzIGRlY29kZXJGYWlsZWQoaW50IGVy
cm9yKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1h
dERlc2NyaXB0aW9uUmVmKTsKLQotcHJpdmF0ZToKLSAgICBpbnQzMl90IERlY29kZWQoVmlkZW9G
cmFtZSYpIGZpbmFsOwotICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJiwgaW50NjRfdCBk
ZWNvZGVfdGltZV9tcykgZmluYWw7Ci0gICAgdm9pZCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBhYnNs
OjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywgYWJzbDo6b3B0aW9uYWw8dWludDhf
dD4gcXApIGZpbmFsOwotCi0gICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29s
KHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wg
aXMxMGJpdCk7Ci0KLSAgICBWVFZpZGVvRGVjb2RlclNlc3Npb24gbV9zZXNzaW9uIHsgbnVsbHB0
ciB9OwotICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgbV9jdXJyZW50RnJhbWUgeyBudWxscHRyIH07
Ci0gICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJXaWR0aCB7IDAgfTsKLSAgICBzaXplX3QgbV9waXhl
bEJ1ZmZlckhlaWdodCB7IDAgfTsKLSAgICBib29sIG1faXMxMGJpdCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2lzRnVsbFJhbmdlIHsgZmFsc2UgfTsKLSAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBt
X3BpeGVsQnVmZmVyUG9vbCB7IG51bGxwdHIgfTsKLX07Ci0KIHN0YXRpYyBPU1N0YXR1cyBpbnZh
bGlkYXRlVlA5RGVjb2RlcihDTUJhc2VPYmplY3RSZWYpOwogc3RhdGljIHZvaWQgZmluYWxpemVW
UDlEZWNvZGVyKENNQmFzZU9iamVjdFJlZik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29weVZQOURl
Y29kZXJEZWJ1Z0Rlc2NyaXB0aW9uKENNQmFzZU9iamVjdFJlZik7CkBAIC0xNzUsNyArMTQzLDcg
QEAgT1NTdGF0dXMgc3RhcnRWUDlEZWNvZGVyU2Vzc2lvbihWVFZpZGVvRGVjb2RlclJlZiBpbnN0
YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW8KICAgICB9CiAKICAgICBkZWNvZGVyLT5tX2luc3Rh
bmNlID0gc3RkOjptYWtlX3VuaXF1ZTxWUDlEZWNvZGVySW1wbD4oKTsKLSAgICBkZWNvZGVyLT5t
X3JlY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI+KHNl
c3Npb24pOworICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dERlY29kZXJSZWNlaXZlcj4oc2Vzc2lvbik7CiAgICAgZGVjb2Rlci0+bV9yZWNlaXZlci0+aW5p
dGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CiAKICAgICBk
ZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVjb2Rl
ci0+bV9yZWNlaXZlci5nZXQoKSk7CkBAIC0yNTAsMTYxICsyMTgsNCBAQCBPU1N0YXR1cyBkZWNv
ZGVWUDlEZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYgaW5zdGFuY2UsIFZUVmlkZW9EZWNv
ZGVyRnJhbWUgZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVdlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBzZXNz
aW9uKQotICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCi17Ci19Ci0KLVdlYktpdFZQOURlY29kZXJS
ZWNlaXZlcjo6fldlYktpdFZQOURlY29kZXJSZWNlaXZlcigpCi17Ci0gICAgaWYgKG1fcGl4ZWxC
dWZmZXJQb29sKQotICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1ZmZlclBvb2wpOwotfQotCi12
b2lkIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlw
dGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQotewotICAgIC8v
IENvcmVBbmltYXRpb24gZG9lc24ndCBzdXBwb3J0IGZ1bGwtcGxhbmFyIFlVViwgc28gd2UgbXVz
dCBjb252ZXJ0IHRoZSBidWZmZXJzIG91dHB1dAotICAgIC8vIGJ5IGxpYnZweCB0byBiaS1wbGFu
YXIgWVVWLiBDcmVhdGUgcGl4ZWwgYnVmZmVyIGF0dHJpYnV0ZXMgYW5kIGdpdmUgdGhvc2UgdG8g
dGhlCi0gICAgLy8gZGVjb2RlciBzZXNzaW9uIGZvciB1c2UgaW4gY3JlYXRpbmcgaXRzIG93biBp
bnRlcm5hbCBDVlBpeGVsQnVmZmVyUG9vbCwgd2hpY2ggd2UKLSAgICAvLyB3aWxsIHVzZSBwb3N0
LWRlY29kZS4KLSAgICBtX2lzRnVsbFJhbmdlID0gZmFsc2U7Ci0gICAgbV9pczEwYml0ID0gZmFs
c2U7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IENNRm9ybWF0RGVzY3Jp
cHRpb25HZXRFeHRlbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsKLSAgICAgICAgaWYgKCFleHRl
bnNpb25zKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgQ0ZUeXBlUmVmIGV4dGVuc2lv
bkF0b21zID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9ucywga0NNRm9ybWF0RGVzY3Jp
cHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcyk7Ci0gICAgICAg
IGlmICghZXh0ZW5zaW9uQXRvbXMgfHwgQ0ZHZXRUeXBlSUQoZXh0ZW5zaW9uQXRvbXMpICE9IENG
RGljdGlvbmFyeUdldFR5cGVJRCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgYXV0
byBjb25maWd1cmF0aW9uUmVjb3JkID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25h
cnlHZXRWYWx1ZSgoQ0ZEaWN0aW9uYXJ5UmVmKWV4dGVuc2lvbkF0b21zLCBDRlNUUigidnBjQyIp
KSk7Ci0gICAgICAgIGlmICghY29uZmlndXJhdGlvblJlY29yZCB8fCBDRkdldFR5cGVJRChjb25m
aWd1cmF0aW9uUmVjb3JkKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZFNpemUgPSBDRkRhdGFHZXRMZW5n
dGgoY29uZmlndXJhdGlvblJlY29yZCk7Ci0gICAgICAgIGlmIChjb25maWd1cmF0aW9uUmVjb3Jk
U2l6ZSA8IDEyKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uUmVjb3JkRGF0YSA9IENGRGF0YUdldEJ5dGVQdHIoY29uZmlndXJhdGlvblJlY29yZCk7Ci0g
ICAgICAgIGF1dG8gYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA9ICooY29uZmlndXJhdGlvblJlY29y
ZERhdGEgKyA2KTsKLQotICAgICAgICBpZiAoKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgPj4gNCkg
PT0gMTApCi0gICAgICAgICAgICBtX2lzMTBiaXQgPSB0cnVlOwotCi0gICAgICAgIGlmIChiaXRE
ZXB0aENocm9tYUFuZFJhbmdlICYgMHgxKQotICAgICAgICAgICAgbV9pc0Z1bGxSYW5nZSA9IHRy
dWU7Ci0gICAgfSB3aGlsZSAoZmFsc2UpOwotfQotCi1DVlBpeGVsQnVmZmVyUG9vbFJlZiBXZWJL
aXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbChzaXplX3QgcGl4ZWxCdWZmZXJX
aWR0aCwgc2l6ZV90IHBpeGVsQnVmZmVySGVpZ2h0LCBib29sIGlzMTBiaXQpCi17Ci0gICAgaWYg
KG1fcGl4ZWxCdWZmZXJQb29sICYmIG1fcGl4ZWxCdWZmZXJXaWR0aCA9PSBwaXhlbEJ1ZmZlcldp
ZHRoICYmIG1fcGl4ZWxCdWZmZXJIZWlnaHQgPT0gcGl4ZWxCdWZmZXJIZWlnaHQgJiYgbV9pczEw
Yml0ID09IGlzMTBiaXQpCi0gICAgICAgIHJldHVybiBtX3BpeGVsQnVmZmVyUG9vbDsKLQotICAg
IE9TVHlwZSBwaXhlbEZvcm1hdDsKLSAgICBpZiAoaXMxMGJpdCkKLSAgICAgICAgcGl4ZWxGb3Jt
YXQgPSBtX2lzRnVsbFJhbmdlID8ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFu
YXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hclZpZGVv
UmFuZ2U7Ci0gICAgZWxzZQotICAgICAgICBwaXhlbEZvcm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBr
Q1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U7Ci0KLSAgICBhdXRvIGNyZWF0
ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyA9IFtdIChPU1R5cGUgcGl4ZWxGb3JtYXQsIGludDMyX3Qg
Ym9yZGVyUGl4ZWxzKSB7Ci0gICAgICAgIGF1dG8gY3JlYXRlTnVtYmVyID0gW10gKGludDMyX3Qg
Zm9ybWF0KSAtPiBDRk51bWJlclJlZiB7Ci0gICAgICAgICAgICByZXR1cm4gQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJmZvcm1hdCk7Ci0g
ICAgICAgIH07Ci0gICAgICAgIGF1dG8gY2ZQaXhlbEZvcm1hdHMgPSBDRkFycmF5Q3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAg
ICAgICAgYXV0byBmb3JtYXROdW1iZXIgPSBjcmVhdGVOdW1iZXIocGl4ZWxGb3JtYXQpOwotICAg
ICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2ZQaXhlbEZvcm1hdHMsIGZvcm1hdE51bWJlcik7Ci0g
ICAgICAgIENGUmVsZWFzZShmb3JtYXROdW1iZXIpOwotCi0gICAgICAgIGF1dG8gYm9yZGVyUGl4
ZWxzVmFsdWUgPSBjcmVhdGVOdW1iZXIoMzIpOwotCi0gICAgICAgIGNvbnN0IHZvaWQqIGtleXNb
XSA9IHsKLSAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LAotICAg
ICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc0xlZnRLZXksCi0gICAgICAgICAg
ICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzUmlnaHRLZXksCi0gICAgICAgICAgICBrQ1ZQ
aXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzVG9wS2V5LAotICAgICAgICAgICAga0NWUGl4ZWxCdWZm
ZXJFeHRlbmRlZFBpeGVsc0JvdHRvbUtleSwKLSAgICAgICAgfTsKLSAgICAgICAgY29uc3Qgdm9p
ZCogdmFsdWVzW10gPSB7Ci0gICAgICAgICAgICBjZlBpeGVsRm9ybWF0cywKLSAgICAgICAgICAg
IGJvcmRlclBpeGVsc1ZhbHVlLAotICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCi0gICAg
ICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKLSAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVl
LAotICAgICAgICB9OwotICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBzdGQ6OnNpemUoa2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpOwotICAgICAgICBDRlJlbGVhc2UoYm9yZGVyUGl4ZWxzVmFsdWUpOwotICAgICAgICBD
RlJlbGVhc2UoY2ZQaXhlbEZvcm1hdHMpOwotICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKLSAg
ICB9OwotCi0gICAgYXV0byBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMgPSBjcmVhdGVQaXhlbEZvcm1h
dEF0dHJpYnV0ZXMocGl4ZWxGb3JtYXQsIDMyKTsKLSAgICBWVERlY29kZXJTZXNzaW9uU2V0UGl4
ZWxCdWZmZXJBdHRyaWJ1dGVzKG1fc2Vzc2lvbiwgcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsKLSAg
ICBDRlJlbGVhc2UocGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsKLQotICAgIGlmIChtX3BpeGVsQnVm
ZmVyUG9vbCkgewotICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1ZmZlclBvb2wpOwotICAgICAg
ICBtX3BpeGVsQnVmZmVyUG9vbCA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgbV9waXhlbEJ1ZmZl
clBvb2wgPSBWVERlY29kZXJTZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKG1fc2Vzc2lvbik7Ci0g
ICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICBDRlJldGFpbihtX3BpeGVsQnVmZmVy
UG9vbCk7Ci0KLSAgICBtX3BpeGVsQnVmZmVyV2lkdGggPSBwaXhlbEJ1ZmZlcldpZHRoOwotICAg
IG1fcGl4ZWxCdWZmZXJIZWlnaHQgPSBwaXhlbEJ1ZmZlckhlaWdodDsKLSAgICBtX2lzMTBiaXQg
PSBpczEwYml0OwotCi0gICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sOwotfQotCi1PU1N0YXR1
cyBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OmRlY29kZXJGYWlsZWQoaW50IGVycm9yKQotewot
ICAgIE9TU3RhdHVzIHZ0RXJyb3IgPSBrVlRWaWRlb0RlY29kZXJCYWREYXRhRXJyOwotICAgIGlm
IChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfTk9fT1VUUFVUKQotICAgICAgICB2dEVycm9y
ID0gbm9FcnI7Ci0gICAgZWxzZSBpZiAoZXJyb3IgPT0gV0VCUlRDX1ZJREVPX0NPREVDX1VOSU5J
VElBTElaRUQpCi0gICAgICAgIHZ0RXJyb3IgPSBrVlRWaWRlb0RlY29kZXJNYWxmdW5jdGlvbkVy
cjsKLSAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfTUVNT1JZKQotICAg
ICAgICB2dEVycm9yID0ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsKLSAgICBWVERlY29kZXJTZXNz
aW9uRW1pdERlY29kZWRGcmFtZShtX3Nlc3Npb24sIG1fY3VycmVudEZyYW1lLCB2dEVycm9yLCAw
LCBudWxscHRyKTsKLSAgICBtX2N1cnJlbnRGcmFtZSA9IG51bGxwdHI7Ci0KLSAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiVlA5IGRlY29kZXI6IGRlY29kZXIgZmFpbGVkIHdpdGggZXJyb3IgIiA8
PCBlcnJvciA8PCAiLCB2dEVycm9yICIgPDwgdnRFcnJvcjsKLSAgICByZXR1cm4gdnRFcnJvcjsK
LX0KLQotaW50MzJfdCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFt
ZSYgZnJhbWUpCi17Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbUZyYW1l
KGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBCdWZmZXJUeXBlIHR5
cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9
IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCB0eXBlID09IEJ1ZmZlclR5cGU6
OkkwMTApOwotICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxs
cHRyOwotICAgICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVsQnVmZmVyKSA9PSBrQ1ZS
ZXR1cm5TdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9KTsKLQotICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2Rl
ZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVsQnVmZmVyID8gbm9FcnIgOiAt
MSwgMCwgcGl4ZWxCdWZmZXIpOwotICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLSAgICBp
ZiAocGl4ZWxCdWZmZXIpCi0gICAgICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlcik7Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLWludDMyX3QgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZp
ZGVvRnJhbWUmIGZyYW1lLCBpbnQ2NF90KQotewotICAgIERlY29kZWQoZnJhbWUpOwotICAgIHJl
dHVybiAwOwotfQotCi12b2lkIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChWaWRl
b0ZyYW1lJiBmcmFtZSwgYWJzbDo6b3B0aW9uYWw8aW50MzJfdD4sIGFic2w6Om9wdGlvbmFsPHVp
bnQ4X3Q+KQotewotICAgIERlY29kZWQoZnJhbWUpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZTEwODA0Mzk5OTY0ODNhYjMzMWEyOWRhZWJlMDY0ZjBmZDBmM2Zk
My4uNDFjM2I5N2EzNmY2YjQ2MWYwMmIyZTlkMDRjOGY4NWUzMGFjM2RjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzkwOSw2ICszOTA5LDEwIEBACiAJCTVDRkQ1MzkyMUU0
QkQzQTMwMDQ4MjkwOCAvKiByb3dfbmVvbjY0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRDUzOEExRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgKi87IH07CiAJCTVDRkQ1MzkzMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRDUzOEIx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgKi87IH07CiAJCTVDRkQ1Mzk0MUU0QkQz
QTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QzFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVv
bjY0LmNjICovOyB9OworCQlDRDM4MUYyNzI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVj
b2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
ODFGMjUyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCAqLzsgfTsKKwkJQ0Qz
ODFGMjkyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzODFGMjgyNTgxNTkxRjAwNzdE
RUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwICovOyB9OworCQlDRDM4MUYyQjI1ODFGRUJBMDA3
N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzgxRjJBMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJL
aXREZWNvZGVyUmVjZWl2ZXIuY3BwICovOyB9OworCQlDRDM4MUYyRDI1ODFGRjBCMDA3N0RFQzgg
LyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyQzI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmggKi87IH07CiAJCUNERUJCNEI2MjRDMDE5QzQwMEFEQkQ0NCAvKiB1bmtub3du
X3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDY0MjRDMDE5MUEwMEFEQkQ0NCAvKiB1bmtub3duX3BhcnNlci5jYyAqLzsgfTsKIAkJ
Q0RFQkI0QjcyNEMwMTlDNDAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2RjI0QzAxOTFBMDBBREJE
NDQgLyogbWFzdGVyX3BhcnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0QjgyNEMwMTlDNDAwQURCRDQ0
IC8qIGJsb2NrX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENERUJCNDc2MjRDMDE5MUEwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgKi87
IH07CkBAIC04NDMyLDYgKzg0MzYsMTAgQEAKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8q
IEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4
NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExQjg5QjhBMjIxRTAwNEMwMEVCNENFQSAvKiBTREtWYXJpYW50LnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IFNES1ZhcmlhbnQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMzgxRjI1MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFZQOERlY29kZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMjgyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERl
Y29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0VlA4
RGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMzgxRjJBMjU4MUZF
QkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMkMyNTgxRkYwQjAwNzdERUM4IC8qIFdlYktpdERl
Y29kZXJSZWNlaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkIxMTkyNEMwMTg3NDAwQURCRDQ0IC8q
IGxpYndlYm0uYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlid2VibS5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDREVCQjExRTI0QzAxODk2MDBBREJE
NDQgLyogbGlid2VibS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBsaWJ3ZWJtLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyog
cmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA5NjIsMTAgKzEwOTcwLDE0IEBACiAJCQkJNDEyRkY5MzUyNTNEOEYwQTAwMURG
MDM2IC8qIFZUVmlkZW9EZWNvZGVyU1BJLmggKi8sCiAJCQkJNDFFODRCQzkyNDM0QzRBMjAwRDM0
RTQxIC8qIFdlYktpdERlY29kZXIuaCAqLywKIAkJCQk0MUU4NEJDQTI0MzRDNEEzMDBEMzRFNDEg
LyogV2ViS2l0RGVjb2Rlci5tbSAqLywKKwkJCQlDRDM4MUYyQTI1ODFGRUJBMDA3N0RFQzggLyog
V2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDM4MUYyQzI1ODFGRjBCMDA3N0RF
QzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggKi8sCiAJCQkJNDE1ODY0OTYyM0JFMDVFODAw
QTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCAqLywKIAkJCQk0MTU4NjQ5NzIzQkUwNUU5MDBBMEE2
MUUgLyogV2ViS2l0RW5jb2Rlci5tbSAqLywKIAkJCQk0MUVDRUFCQjIwNjQwM0MxMDA5RDUxNDEg
LyogV2ViS2l0VXRpbGl0aWVzLmggKi8sCiAJCQkJNDFFQ0VBQkQyMDY0MDQ5ODAwOUQ1MTQxIC8q
IFdlYktpdFV0aWxpdGllcy5tbSAqLywKKwkJCQlDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyog
V2ViS2l0VlA4RGVjb2Rlci5jcHAgKi8sCisJCQkJQ0QzODFGMjUyNTgxNTkxRjAwNzdERUM4IC8q
IFdlYktpdFZQOERlY29kZXIuaCAqLywKIAkJCQk0MTQwMzdCQTI0QUM3NkU5MDBCQ0U5QjIgLyog
V2ViS2l0VlA5RGVjb2Rlci5jcHAgKi8sCiAJCQkJNDE0MDM3QjkyNEFDNzZFOTAwQkNFOUIyIC8q
IFdlYktpdFZQOURlY29kZXIuaCAqLywKIAkJCSk7CkBAIC0xNzQ5Niw4ICsxNzUwOCwxMCBAQAog
CQkJCTVDNEI0QzgxMUU0MzFGOUMwMDI2NTFDOCAvKiB3YXZfZmlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0QjRDODQxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxMzFDMTYzMjM0Qjg5RTIwMDI4QTYxNSAvKiB3ZWFrX3B0ci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0QzODFGMkQyNTgxRkYwQjAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNl
aXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1ODY0OTgyM0JFMDVFOTAwQTBBNjFFIC8qIFdl
YktpdEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNFQUJDMjA2NDAzQzIwMDlENTE0
MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzgxRjI3MjU4MTU5
MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQw
MzdCQjI0QUM3NkVBMDBCQ0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDhDQUIxRTQzQzZGNzAwNjIxRTkyIC8qIHdlYnJ0Y19jbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxNDVFNDkxMUVGODhFRjcwMEZDRjZFNiAvKiB3ZWJydGNfbGlieXV2LmggaW4g
SGVhZGVycyAqLywKQEAgLTIwMDM5LDggKzIwMDUzLDEwIEBACiAJCQkJNUM0QjRDODMxRTQzMUY5
QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTMxQzBGOTIz
NEI4OUUyMDAyOEE2MTUgLyogd2Vha19wdHIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUU4NEJE
NTI0MzczRjcyMDBEMzRFNDEgLyogV2ViS2l0RGVjb2Rlci5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUNEMzgxRjJCMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE1ODY0OTkyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29k
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUVDRUFCRTIwNjQwNDk4MDA5RDUxNDEgLyogV2Vi
S2l0VXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QzODFGMjkyNTgxNTkxRjAwNzdE
RUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MDM3QkMy
NEFDNzZFQTAwQkNFOUIyIC8qIFdlYktpdFZQOURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNERDhDQUExRTQzQzZGNzAwNjIxRTkyIC8qIHdlYnJ0Y19jbmcuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REODM2NzFFNDMyNUQ1MDA2MjFFOTIgLyogd2VicnRjX2xpYnl1di5jYyBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCBmNGI1NjkyOGJhNjY5
ZmMwMDM4NTI3NmY1N2ExZDlmNzIzMDIzYTBlLi40NGIwODJiNTY0NDEyMDA4YTZlMTI4MzE4NjI0
Nzg5MmRkYjc4NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtODY0LDYgKzg2
NCwxNiBAQCBVc2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ6CiAgICAgV2ViS2l0
OgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitWUDhEZWNvZGVyRW5hYmxlZDoKKyAgdHlwZTogYm9v
bAorICBodW1hblJlYWRhYmxlTmFtZTogIlZQOCBkZWNvZGVyIgorICBodW1hblJlYWRhYmxlRGVz
Y3JpcHRpb246ICJFbmFibGUgVlA4IGRlY29kZXIiCisgIHdlYmNvcmVCaW5kaW5nOiBub25lCisg
IGNvbmRpdGlvbjogRU5BQkxFKFZQOSkKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdDoKKyAg
ICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCkKKwogIyBGSVhN
RTogSXMgdGhpcyBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0TGVnYWN5PyBJZiBub3QsIHRoaXMgc2hv
dWxkIGJlIGV4Y2x1ZGVkIGZyb20gV2ViS2l0TGVnYWN5IGVudGlyZWx5LgogVlA5RGVjb2RlckVu
YWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDE0MDg3NDFiODEzMzEwZDI3ZjQ2MDAwMThlMzMx
YTUwNGM1NDQwYmQuLjRlMjgyMjcyMTUxN2MzYmU2ODkzZTE4YzgxYzdhZjVhMmRiODViNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNw
cApAQCAtMTI0LDEyICsxMjQsNiBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmlj
aWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCiAKIE9wdGlvbmFsPFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNW
aWV3KQogewotICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMg
c3BlY2lmaWVkIGluIHRoZSB3ZWJtIEdpdEh1YiByZXBvOgotICAgIC8vIDxodHRwczovL2dpdGh1
Yi5jb20vd2VibXByb2plY3QvdnA5LWRhc2gvYmxvYi9tYXN0ZXIvVlBDb2RlY0lTT01lZGlhRmls
ZUZvcm1hdEJpbmRpbmcubWQjY29kZWNzLXBhcmFtZXRlci1zdHJpbmc+Ci0KLSAgICAvLyAic2Ft
cGxlIGVudHJ5IDRDQywgcHJvZmlsZSwgbGV2ZWwsIGFuZCBiaXREZXB0aCBhcmUgYWxsIG1hbmRh
dG9yeSBmaWVsZHMuIElmIGFueSBvZiB0aGVzZSBmaWVsZHMgYXJlIGVtcHR5LCBvciBub3QKLSAg
ICAvLyB3aXRoaW4gdGhlaXIgYWxsb3dlZCByYW5nZSwgdGhlIHByb2Nlc3NpbmcgZGV2aWNlIFNI
QUxMIHRyZWF0IGl0IGFzIGFuIGVycm9yLiIKLQogICAgIGF1dG8gY29kZWNTcGxpdCA9IGNvZGVj
Vmlldy5zcGxpdCgnLicpOwogICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2lu
KCk7CiAgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCkBAIC0xMzcsMTIg
KzEzMSwyNCBAQCBPcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldwogCiAgICAgVlBDb2RlY0NvbmZpZ3Vy
YXRpb25SZWNvcmQgY29uZmlndXJhdGlvbjsKIAotICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxl
Z2FsIHZhbHVlcyBhcmUgJ3ZwMDgnIG9yICd2cDA5Jy4KICAgICBjb25maWd1cmF0aW9uLmNvZGVj
TmFtZSA9ICgqbmV4dEVsZW1lbnQpLnRvU3RyaW5nKCk7CisgICAgKytuZXh0RWxlbWVudDsKKwor
ICAgIC8vIFN1cHBvcnQgdGhlIGxlZ2FjeSBpZGVudGlmaWVycyAod2l0aCBubyBwYXJhbWV0ZXJz
KSBmb3IgVlA4IGFuZCBWUDkuCisgICAgaWYgKChjb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAi
dnA4IiB8fCBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAidnA5IikgJiYgbmV4dEVsZW1lbnQg
PT0gY29kZWNTcGxpdC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisKKyAg
ICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAndnAwOScgY29kZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBp
biB0aGUgd2VibSBHaXRIdWIgcmVwbzoKKyAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3dlYm1w
cm9qZWN0L3ZwOS1kYXNoL2Jsb2IvbWFzdGVyL1ZQQ29kZWNJU09NZWRpYUZpbGVGb3JtYXRCaW5k
aW5nLm1kI2NvZGVjcy1wYXJhbWV0ZXItc3RyaW5nPgorCisgICAgLy8gInNhbXBsZSBlbnRyeSA0
Q0MsIHByb2ZpbGUsIGxldmVsLCBhbmQgYml0RGVwdGggYXJlIGFsbCBtYW5kYXRvcnkgZmllbGRz
LiBJZiBhbnkgb2YgdGhlc2UgZmllbGRzIGFyZSBlbXB0eSwgb3Igbm90CisgICAgLy8gd2l0aGlu
IHRoZWlyIGFsbG93ZWQgcmFuZ2UsIHRoZSBwcm9jZXNzaW5nIGRldmljZSBTSEFMTCB0cmVhdCBp
dCBhcyBhbiBlcnJvci4iCisKKyAgICAvLyBDb2RlYyBpZGVudGlmaWVyOiBsZWdhbCB2YWx1ZXMg
YXJlICd2cDA4JyBvciAndnAwOScuCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9
ICJ2cDA4IiAmJiBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAidnAwOSIpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0
LmVuZCgpKQorICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgLy8gRmlyc3QgZWxlbWVudDogcHJvZmlsZS4g
TGVnYWwgdmFsdWVzIGFyZSAwLTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmlu
ZGV4IGJlMWUwODZlMGFjNTIzNTQ2MzZhMDA2YWIzMmQxYjkyZjQwYjRkODEuLjRhMGM5NjQwMzlm
MjhjZDAxYjAxMDA3NjE1ZTQ5ZDcxMDk3OWUzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY28KICNp
ZiBFTkFCTEUoVlA5KQogICAgIGF1dG8gc3BsaXRSZXN1bHRzID0gU3RyaW5nVmlldyhjb2RlY3NQ
YXJhbWV0ZXIpLnNwbGl0KCcsJyk7CiAgICAgZm9yIChhdXRvIHNwbGl0IDogc3BsaXRSZXN1bHRz
KSB7Ci0gICAgICAgIGlmIChzcGxpdC5zdGFydHNXaXRoKCJ2cDA5IikpIHsKKyAgICAgICAgaWYg
KHNwbGl0LnN0YXJ0c1dpdGgoInZwMDkiKSB8fCBzcGxpdC5zdGFydHNXaXRoKCJ2cDA4IikgfHwg
ZXF1YWwoc3BsaXQsICJ2cDgiKSB8fCBlcXVhbChzcGxpdCwgInZwOSIpKSB7CiAgICAgICAgICAg
ICBhdXRvIGNvZGVjUGFyYW1ldGVycyA9IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoc3BsaXQpOwog
ICAgICAgICAgICAgaWYgKCFjb2RlY1BhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CkBAIC00ODAs
NiArNDgwLDcgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY28KIAogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KKwogICAgICAgICAvLyBGSVhNRTogQWRkIE9wdXMgU3VwcG9ydAogICAg
ICAgICAvLyBGSVhNRTogQWRkIFZvcmJpcyBTdXBwb3J0CiAgICAgICAgIHJldHVybiBNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwpAQCAtNzQ4LDEwICs3NDks
MjIgQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKGNvbnN0
IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGMKIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uc3Qg
VHJhY2tFbnRyeSYgdHJhY2tFbnRyeSkKIHsKICAgICBVTlVTRURfUEFSQU0obWV0YWRhdGEpOwot
ICAgIGlmICghdHJhY2tFbnRyeS50cmFja190eXBlLmlzX3ByZXNlbnQoKSkKKyAgICBpZiAoIXRy
YWNrRW50cnkudHJhY2tfdHlwZS5pc19wcmVzZW50KCkgfHwgIXRyYWNrRW50cnkuY29kZWNfaWQu
aXNfcHJlc2VudCgpKQogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVk
KTsKIAogICAgIGF1dG8gdHJhY2tUeXBlID0gdHJhY2tFbnRyeS50cmFja190eXBlLnZhbHVlKCk7
CisgICAgU3RyaW5nIGNvZGVjSWQgeyB0cmFja0VudHJ5LmNvZGVjX2lkLnZhbHVlKCkuZGF0YSgp
LCAodW5zaWduZWQpdHJhY2tFbnRyeS5jb2RlY19pZC52YWx1ZSgpLmxlbmd0aCgpIH07CisKKyAg
ICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvICYmICFzdXBwb3J0ZWRWaWRlb0Nv
ZGVjcygpLmNvbnRhaW5zKGNvZGVjSWQpKSB7CisgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgdW5zdXBwb3J0ZWQgdmlkZW8gY29kZWMgSUQg
XCIiLCBjb2RlY0lkLCAiXCIsIGJhaWxpbmciKTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0
dXM6OkNvZGUoRXJyb3JDb2RlOjpVbnN1cHBvcnRlZFZpZGVvQ29kZWMpKTsKKyAgICB9CisKKyAg
ICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvICYmICFzdXBwb3J0ZWRBdWRpb0Nv
ZGVjcygpLmNvbnRhaW5zKGNvZGVjSWQpKSB7CisgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgdW5zdXBwb3J0ZWQgYXVkaW8gY29kZWMgSUQg
XCIiLCBjb2RlY0lkLCAiXCIsIGJhaWxpbmciKTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0
dXM6OkNvZGUoRXJyb3JDb2RlOjpVbnN1cHBvcnRlZEF1ZGlvQ29kZWMpKTsKKyAgICB9CisKICAg
ICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQogICAgICAgICBtX2luaXRpYWxp
emF0aW9uU2VnbWVudC0+dmlkZW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlvbldlYk06
OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjpj
cmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CiAgICAgZWxzZSBpZiAodHJhY2tUeXBl
ID09IFRyYWNrVHlwZTo6a0F1ZGlvKQpAQCAtMTAwMCw3ICsxMDEzLDcgQEAgc3RhdGljIHVpbnQ4
X3QgY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHVpbnQ2NF90IHgsIHVp
bnQ2NF90IHkpCiAgICAgcmV0dXJuIFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpT
dWJzYW1wbGluZ180MjBfQ29sb2NhdGVkOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0
RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNl
cihjb25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXJzZXImIHBhcnNlciwgY29uc3Qgd2VibTo6
RWxlbWVudDxDb2xvdXI+JiBjb2xvcikKK3N0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlw
dGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIHJlY29yZCwgaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCiB7CiAgICAgLy8gUmVmOiAiVlAgQ29kZWMgSVNPIE1lZGlh
IEZpbGUgRm9ybWF0IEJpbmRpbmcsIHYxLjAsIDIwMTctMDMtMzEiCiAgICAgLy8gPGh0dHBzOi8v
d3d3LndlYm1wcm9qZWN0Lm9yZy92cDkvbXA0Lz4KQEAgLTEwMjksMzUgKzEwNDIsNiBAQCBzdGF0
aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0
aW9uRnJvbVZQOUhlYWRlclBhcgogICAgIC8vIEZJWE1FOiBDb252ZXJ0IGV4aXN0aW5nIHN0cnVj
dCB0byBhbiBJU09Cb3ggYW5kIHJlcGxhY2UgdGhlIHdyaXRpbmcgY29kZSBiZWxvdwogICAgIC8v
IHdpdGggYSBzdWJjbGFzcyBvZiBJU09GdWxsQm94LgogCi0gICAgVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQgcmVjb3JkOwotCi0gICAgcmVjb3JkLnByb2ZpbGUgPSBwYXJzZXIucHJvZmlsZSgp
OwotICAgIC8vIENvcmVNZWRpYSBkb2VzIG5hdCBjYXJlIGFib3V0IHRoZSBWUDkgY29kZWMgbGV2
ZWw7IGhhcmQtY29kZSB0byBMZXZlbCAxLjAgaGVyZToKLSAgICByZWNvcmQubGV2ZWwgPSAxMDsK
LSAgICByZWNvcmQuYml0RGVwdGggPSBwYXJzZXIuYml0X2RlcHRoKCk7Ci0gICAgcmVjb3JkLnZp
ZGVvRnVsbFJhbmdlRmxhZyA9IHBhcnNlci5jb2xvcl9yYW5nZSgpID8gVlBDb25maWd1cmF0aW9u
UmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOwotICAg
IHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFT
dWJzYW1wbGluZyhwYXJzZXIuc3Vic2FtcGxpbmdfeCgpLCBwYXJzZXIuc3Vic2FtcGxpbmdfeSgp
KTsKLSAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1h
cmllczo6VW5zcGVjaWZpZWQ7Ci0gICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0g
VlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkOwotICAg
IHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmlj
aWVudHM6OlVuc3BlY2lmaWVkOwotCi0gICAgLy8gQ29udGFpbmVyIGNvbG9yIHZhbHVlcyBjYW4g
b3ZlcnJpZGUgcGVyLXNhbXBsZSBvbmVzOgotICAgIGlmIChjb2xvci5pc19wcmVzZW50KCkpIHsK
LSAgICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7Ci0gICAgICAgIGlmIChj
b2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVl
LmNocm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKLSAgICAgICAgICAgIHJlY29yZC5j
aHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGlu
Zyhjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVlKCksIGNvbG9yVmFsdWUuY2hy
b21hX3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLnJhbmdl
LmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgIT0gUmFuZ2U6OmtVbnNw
ZWNpZmllZCkKLSAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBjb2xvclZh
bHVlLnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6
OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOwotICAgICAgICBp
ZiAoY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNlbnQoKSkKLSAgICAgICAgICAg
IHJlY29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC52YWx1ZSgpOwot
ICAgICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MuaXNfcHJlc2Vu
dCgpKQotICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gY29udmVy
dFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJp
c3RpY3MudmFsdWUoKSk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVu
dHMuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9
IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVu
dHMudmFsdWUoKSk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLnByaW1hcmllcy5pc19wcmVzZW50
KCkpCi0gICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9Db2xvclBy
aW1hcmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsKLSAgICB9Ci0KICAgICBjb25z
dGV4cHIgc2l6ZV90IFZQQ29kZWNDb25maWd1cmF0aW9uQ29udGVudHNTaXplID0gMTI7CiAKICAg
ICB1aW50MzJfdCB2ZXJzaW9uQW5kRmxhZ3MgPSAxIDw8IDI0OwpAQCAtMTEwNiwxMCArMTA5MCwx
NTQgQEAgc3RhdGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3Jt
YXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXIKICAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBleHRlbnNpb25zS2V5
cy5kYXRhKCksIGV4dGVuc2lvbnNWYWx1ZXMuZGF0YSgpLCBleHRlbnNpb25zS2V5cy5zaXplKCks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAogICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNj
cmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKG5vRXJyICE9IENNVmlkZW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ01WaWRlb0NvZGVjVHlwZV9WUDksIHBh
cnNlci53aWR0aCgpLCBwYXJzZXIuaGVpZ2h0KCksIGV4dGVuc2lvbnMuZ2V0KCksICZmb3JtYXRE
ZXNjcmlwdGlvbikpCisgICAgQ01WaWRlb0NvZGVjVHlwZSBjb2RlYyA9IHJlY29yZC5jb2RlY05h
bWUgPT0gInZwMDkiID8ga0NNVmlkZW9Db2RlY1R5cGVfVlA5IDogJ3ZwMDgnOworICAgIGlmIChu
b0VyciAhPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgY29kZWMsIHdpZHRoLCBoZWlnaHQsIGV4dGVuc2lvbnMuZ2V0KCksICZmb3JtYXREZXNjcmlw
dGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBhZG9wdENGKGZvcm1h
dERlc2NyaXB0aW9uKTsKIH0KKworc3RhdGljIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uc3QgdnA5
X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2VyJiBwYXJzZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29s
b3VyPiYgY29sb3IpCit7CisgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOwor
CisgICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA5IjsKKyAgICByZWNvcmQucHJvZmlsZSA9IHBh
cnNlci5wcm9maWxlKCk7CisgICAgLy8gQ29yZU1lZGlhIGRvZXMgbmF0IGNhcmUgYWJvdXQgdGhl
IFZQOSBjb2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEuMCBoZXJlOgorICAgIHJlY29y
ZC5sZXZlbCA9IDEwOworICAgIHJlY29yZC5iaXREZXB0aCA9IHBhcnNlci5iaXRfZGVwdGgoKTsK
KyAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gcGFyc2VyLmNvbG9yX3JhbmdlKCkgPyBW
UENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZp
ZGVvUmFuZ2U7CisgICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNhbXBs
aW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHBhcnNlci5zdWJzYW1wbGluZ194KCksIHBhcnNlci5z
dWJzYW1wbGluZ195KCkpOworICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IFZQQ29uZmlndXJh
dGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsKKyAgICByZWNvcmQudHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3MgPSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5z
cGVjaWZpZWQ7CisgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IFZQQ29uZmlndXJhdGlv
bk1hdHJpeENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQ7CisKKyAgICAvLyBDb250YWluZXIgY29s
b3IgdmFsdWVzIGNhbiBvdmVycmlkZSBwZXItc2FtcGxlIG9uZXM6CisgICAgaWYgKGNvbG9yLmlz
X3ByZXNlbnQoKSkgeworICAgICAgICBhdXRvJiBjb2xvclZhbHVlID0gY29sb3IudmFsdWUoKTsK
KyAgICAgICAgaWYgKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3guaXNfcHJlc2VudCgp
ICYmIGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kuaXNfcHJlc2VudCgpKQorICAgICAg
ICAgICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNhbXBsaW5nWFlUb0No
cm9tYVN1YnNhbXBsaW5nKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3gudmFsdWUoKSwg
Y29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNv
bG9yVmFsdWUucmFuZ2UuaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSAh
PSBSYW5nZTo6a1Vuc3BlY2lmaWVkKQorICAgICAgICAgICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdl
RmxhZyA9IGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSA9PSBSYW5nZTo6a0Z1bGwgPyBWUENvbmZp
Z3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFu
Z2U7CisgICAgICAgIGlmIChjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwuaXNfcHJlc2VudCgp
KQorICAgICAgICAgICAgcmVjb3JkLmJpdERlcHRoID0gY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFu
bmVsLnZhbHVlKCk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3Rlcmlz
dGljcy5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3MgPSBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyhjb2xvclZhbHVlLnRyYW5z
ZmVyX2NoYXJhY3RlcmlzdGljcy52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUubWF0
cml4X2NvZWZmaWNpZW50cy5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQubWF0cml4
Q29lZmZpY2llbnRzID0gY29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKGNvbG9yVmFsdWUubWF0
cml4X2NvZWZmaWNpZW50cy52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUucHJpbWFy
aWVzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IGNv
bnZlcnRUb0NvbG9yUHJpbWFyaWVzKGNvbG9yVmFsdWUucHJpbWFyaWVzLnZhbHVlKCkpOworICAg
IH0KKworICAgIHJldHVybiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZChyZWNvcmQsIHBhcnNlci53aWR0aCgpLCBwYXJzZXIuaGVpZ2h0KCkpOwor
fQorCitzdHJ1Y3QgVlA4RnJhbWVIZWFkZXIgeworICAgIGJvb2wga2V5ZnJhbWUgeyBmYWxzZSB9
OworICAgIHVpbnQ4X3QgdmVyc2lvbiB7IDAgfTsKKyAgICBib29sIHNob3dGcmFtZSB7IHRydWUg
fTsKKyAgICB1aW50MzJfdCBwYXJ0aXRpb25TaXplIHsgMCB9OworICAgIHVpbnQ4X3QgaG9yaXpv
bnRhbFNjYWxlIHsgMCB9OworICAgIHVpbnQxNl90IHdpZHRoIHsgMCB9OworICAgIHVpbnQ4X3Qg
dmVydGljYWxTY2FsZSB7IDAgfTsKKyAgICB1aW50MTZfdCBoZWlnaHQ7CisgICAgYm9vbCBjb2xv
clNwYWNlIHsgZmFsc2UgfTsKKyAgICBib29sIG5lZWRzQ2xhbXBpbmcgeyBmYWxzZSB9OworfTsK
Kworc3RhdGljIE9wdGlvbmFsPFZQOEZyYW1lSGVhZGVyPiBwYXJzZVZQOEZyYW1lSGVhZGVyKHVp
bnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICAvLyBWUDggZnJhbWUg
aGVhZGVycyBhcmUgZGVmaW5lZCBpbiBSRkMgNjM4NjogPGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmM2Mzg2Pi4KKworICAgIC8vIEJhaWwgaWYgdGhlIGhlYWRlciBpcyBiZWxvdyBhIG1p
bmltdW0gc2l6ZQorICAgIGlmIChmcmFtZVNpemUgPCAxMSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIFZQOEZyYW1lSGVhZGVyIGhlYWRlcjsKKyAgICBzaXplX3QgaGVhZGVy
U2l6ZSA9IDExOworCisgICAgYXV0byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKEFycmF5
QnVmZmVyOjpjcmVhdGUoZnJhbWVEYXRhLCBoZWFkZXJTaXplKSwgMCwgaGVhZGVyU2l6ZSk7Cisg
ICAgYm9vbCBzdGF0dXMgPSB0cnVlOworCisgICAgYXV0byB1bmNvbXByZXNzZWRDaHVuayA9IHZp
ZXctPmdldDx1aW50MzJfdD4oMCwgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBoZWFkZXIua2V5ZnJhbWUgPSB1bmNv
bXByZXNzZWRDaHVuayAmIDB4ODAwMDAwMDA7CisgICAgaGVhZGVyLnZlcnNpb24gPSAodW5jb21w
cmVzc2VkQ2h1bmsgPj4gMjgpICYgMHg3OworICAgIGhlYWRlci5zaG93RnJhbWUgPSB1bmNvbXBy
ZXNzZWRDaHVuayAmIDB4ODAwMDAwMDsKKyAgICBoZWFkZXIucGFydGl0aW9uU2l6ZSA9ICh1bmNv
bXByZXNzZWRDaHVuayA+PiA4KSAmIDB4N0ZGRkY7CisKKyAgICBpZiAoIWhlYWRlci5rZXlmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGhlYWRlcjsKKworICAgIGF1dG8gc3RhcnRDb2RlMCA9IHZpZXct
PmdldDx1aW50OF90PigzLCB0cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAoIXN0YXR1cyB8fCBzdGFy
dENvZGUwICE9IDB4OWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRv
IHN0YXJ0Q29kZTEgPSB2aWV3LT5nZXQ8dWludDhfdD4oNCwgdHJ1ZSwgJnN0YXR1cyk7CisgICAg
aWYgKCFzdGF0dXMgfHwgc3RhcnRDb2RlMSAhPSAweDAxKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgYXV0byBzdGFydENvZGUyID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDUsIHRy
dWUsICZzdGF0dXMpOworICAgIGlmICghc3RhdHVzIHx8IHN0YXJ0Q29kZTIgIT0gMHgyYSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaG9yaXpvbnRhbEFuZFdpZHRo
RmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDYsIHRydWUsICZzdGF0dXMpOworICAgIGlmICgh
c3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaGVhZGVyLmhvcml6
b250YWxTY2FsZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGhvcml6b250YWxBbmRXaWR0aEZpZWxk
ID4+IDE0KTsKKyAgICBoZWFkZXIud2lkdGggPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4oaG9yaXpv
bnRhbEFuZFdpZHRoRmllbGQgJiAweDNGRkYpOworCisgICAgYXV0byB2ZXJ0aWNhbEFuZEhlaWdo
dEZpZWxkID0gdmlldy0+Z2V0PHVpbnQxNl90Pig4LCB0cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAo
IXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGhlYWRlci52ZXJ0
aWNhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmVydGljYWxBbmRIZWlnaHRGaWVsZCA+
PiAxNCk7CisgICAgaGVhZGVyLmhlaWdodCA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pih2ZXJ0aWNh
bEFuZEhlaWdodEZpZWxkICYgMHgzRkZGKTsKKworICAgIGF1dG8gY29sb3JTcGFjZUFuZENsYW1w
aW5nRmllbGQgPSB2aWV3LT5nZXQ8dWludDhfdD4oMTAsIHRydWUsICZzdGF0dXMpOworICAgIGlm
ICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaGVhZGVyLmNv
bG9yU3BhY2UgPSBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCAmIDB4ODA7CisgICAgaGVhZGVy
Lm5lZWRzQ2xhbXBpbmcgPSBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCAmIDB4NDA7CisKKyAg
ICByZXR1cm4gaGVhZGVyOworfQorCitzdGF0aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRp
b25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcihjb25zdCBWUDhGcmFt
ZUhlYWRlciYgaGVhZGVyLCBjb25zdCB3ZWJtOjpFbGVtZW50PENvbG91cj4mIGNvbG9yKQorewor
ICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJlY29yZDsKKyAgICByZWNvcmQuY29kZWNO
YW1lID0gInZwMDgiOworICAgIHJlY29yZC5wcm9maWxlID0gMDsKKyAgICByZWNvcmQubGV2ZWwg
PSAxMDsKKyAgICByZWNvcmQuYml0RGVwdGggPSA4OworICAgIHJlY29yZC52aWRlb0Z1bGxSYW5n
ZUZsYWcgPSBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlOworICAgIHJlY29yZC5jaHJv
bWFTdWJzYW1wbGluZyA9IFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1w
bGluZ180MjBfQ29sb2NhdGVkOworICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IGhlYWRlci5j
b2xvclNwYWNlID8gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVkIDog
VlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzYwMV83OworICAgIHJlY29yZC50cmFu
c2ZlckNoYXJhY3RlcmlzdGljcyA9ICBoZWFkZXIuY29sb3JTcGFjZSA/IFZQQ29uZmlndXJhdGlv
blRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZCA6IFZQQ29uZmlndXJhdGlvblRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF82MDFfNzsKKyAgICByZWNvcmQubWF0cml4Q29lZmZp
Y2llbnRzID0gaGVhZGVyLmNvbG9yU3BhY2UgPyBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmlj
aWVudHM6OlVuc3BlY2lmaWVkIDogVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpC
VF82MDFfNzsKKworICAgIC8vIENvbnRhaW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRlIHBl
ci1zYW1wbGUgb25lczoKKyAgICBpZiAoY29sb3IuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1
dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5j
aHJvbWFfc3Vic2FtcGxpbmdfeC5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFfc3Vi
c2FtcGxpbmdfeS5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vic2Ft
cGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JWYWx1
ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1w
bGluZ195LnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVzZW50
KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQpCisg
ICAgICAgICAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5nZS52
YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2Ug
OiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICAgICAgaWYgKGNvbG9yVmFs
dWUuYml0c19wZXJfY2hhbm5lbC5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuYml0
RGVwdGggPSBjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwudmFsdWUoKTsKKyAgICAgICAgaWYg
KGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKKyAgICAg
ICAgICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZhbHVl
KCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0VG9N
YXRyaXhDb2VmZmljaWVudHMoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVlKCkp
OworICAgICAgICBpZiAoY29sb3JWYWx1ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQorICAgICAg
ICAgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMoY29s
b3JWYWx1ZS5wcmltYXJpZXMudmFsdWUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZUZv
cm1hdERlc2NyaXB0aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKHJlY29yZCwgaGVh
ZGVyLndpZHRoLCBoZWFkZXIuaGVpZ2h0KTsKK30KICNlbmRpZgogCiB3ZWJtOjpTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0
YSwgUmVhZGVyKiByZWFkZXIsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykKQEAgLTExNDQsNyAr
MTI3Miw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNv
bnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAgICAgICAgIGR1cmF0aW9uID0gdHJh
Y2suZGVmYXVsdF9kdXJhdGlvbi52YWx1ZSgpICogbV90aW1lc2NhbGUgLyAxMDAwMDAwMDAwOwog
CiAjaWYgRU5BQkxFKFZQOSkKLSAgICBpZiAodHJhY2suY29kZWNfaWQuaXNfcHJlc2VudCgpICYm
IHRyYWNrLmNvZGVjX2lkLnZhbHVlKCkgPT0gIlZfVlA5IikgeworICAgIGlmICh0cmFjay5jb2Rl
Y19pZC5pc19wcmVzZW50KCkgJiYgKHRyYWNrLmNvZGVjX2lkLnZhbHVlKCkgPT0gIlZfVlA5IiB8
fCB0cmFjay5jb2RlY19pZC52YWx1ZSgpID09ICJWX1ZQOCIpKSB7CiAgICAgICAgIGlmICghdHJh
Y2tEYXRhLT5jdXJyZW50QmxvY2tCdWZmZXIpIHsKICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJS
ZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKG5vRXJyICE9IENN
QmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVs
bHB0ciwgbWV0YWRhdGEuc2l6ZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgMCwgbWV0
YWRhdGEuc2l6ZSwgMCwgJnJhd0Jsb2NrQnVmZmVyKSkKQEAgLTExODAsMTQgKzEzMDgsMjkgQEAg
d2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVN
ZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICAgICAgaWYgKG5vRXJyICE9IENNQmxvY2tCdWZm
ZXJHZXREYXRhUG9pbnRlcih0cmFja0RhdGEtPmN1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgMCwg
JnNlZ21lbnRTaXplQXRQb3NpdGlvbiwgbnVsbHB0ciwgKGNoYXIqKikmYmxvY2tCdWZmZXJEYXRh
KSkKICAgICAgICAgICAgIHJldHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogCi0g
ICAgICAgIGF1dG8mIGhlYWRlclBhcnNlciA9IHRyYWNrRGF0YS0+aGVhZGVyUGFyc2VyOwotICAg
ICAgICBpZiAoIWhlYWRlclBhcnNlci5QYXJzZVVuY29tcHJlc3NlZEhlYWRlcihibG9ja0J1ZmZl
ckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gU2tpcChy
ZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKyAgICAgICAgYm9vbCBpc0tleSA9IGZhbHNlOworICAg
ICAgICBpZiAodHJhY2suY29kZWNfaWQudmFsdWUoKSA9PSAiVl9WUDkiKSB7CisgICAgICAgICAg
ICBhdXRvJiBoZWFkZXJQYXJzZXIgPSB0cmFja0RhdGEtPmhlYWRlclBhcnNlcjsKKyAgICAgICAg
ICAgIGlmICghaGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVy
RGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2tp
cChyZWFkZXIsIGJ5dGVzUmVtYWluaW5nKTsKKworICAgICAgICAgICAgLy8gT25seSB1cGRhdGUg
dGhlIGZvcm1hdCBkZXNjcmlwdGlvbiB3aGVuIHRoZSBoZWFkZXIgaW5kaWNhdGVzIHRoYXQgdGhl
IHNhbXBsZSBpcworICAgICAgICAgICAgLy8gYSBrZXktZnJhbWUsIG90aGVyd2lzZSBjb2xvciBp
bmZvcm1hdGlvbiB3aWxsIG5vdCBiZSBwYXJzZWQuCisgICAgICAgICAgICBpZiAoaGVhZGVyUGFy
c2VyLmtleSgpKSB7CisgICAgICAgICAgICAgICAgaXNLZXkgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHRyYWNrRGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlv
bkZyb21WUDlIZWFkZXJQYXJzZXIoaGVhZGVyUGFyc2VyLCB0cmFjay52aWRlby52YWx1ZSgpLmNv
bG91cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodHJhY2suY29kZWNfaWQu
dmFsdWUoKSA9PSAiVl9WUDgiKSB7CisgICAgICAgICAgICBhdXRvIGhlYWRlciA9IHBhcnNlVlA4
RnJhbWVIZWFkZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pOworICAg
ICAgICAgICAgaWYgKCFoZWFkZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNraXAocmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CisKKyAgICAgICAgICAgIGlmIChoZWFkZXItPmtleWZyYW1lKSB7
CisgICAgICAgICAgICAgICAgaXNLZXkgPSB0cnVlOworICAgICAgICAgICAgICAgIHRyYWNrRGF0
YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFk
ZXIoKmhlYWRlciwgdHJhY2sudmlkZW8udmFsdWUoKS5jb2xvdXIpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAKLSAgICAgICAgLy8gT25seSB1cGRhdGUgdGhlIGZvcm1hdCBkZXNjcmlwdGlv
biB3aGVuIHRoZSBoZWFkZXIgaW5kaWNhdGVzIHRoYXQgdGhlIHNhbXBsZSBpcwotICAgICAgICAv
LyBhIGtleS1mcmFtZSwgb3RoZXJ3aXNlIGNvbG9yIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHBh
cnNlZC4KLSAgICAgICAgaWYgKGhlYWRlclBhcnNlci5rZXkoKSkKLSAgICAgICAgICAgIHRyYWNr
RGF0YS0+Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlI
ZWFkZXJQYXJzZXIoaGVhZGVyUGFyc2VyLCB0cmFjay52aWRlby52YWx1ZSgpLmNvbG91cik7CiAg
ICAgICAgIGlmICghdHJhY2tEYXRhLT5mb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBTa2lwKHJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogCkBAIC0xMjA0LDcgKzEzNDcsNyBA
QCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFt
ZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgICAgICB0cmFja0RhdGEtPmN1cnJlbnRCbG9j
a0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIHRyYWNrRGF0YS0+Y3VycmVudEJsb2NrQnVmZmVy
UG9zaXRpb24gPSAwOwogCi0gICAgICAgIGlmICghaGVhZGVyUGFyc2VyLmtleSgpKSB7CisgICAg
ICAgIGlmICghaXNLZXkpIHsKICAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudHNBcnJheSA9IENN
U2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIuZ2V0KCks
IHRydWUpOwogICAgICAgICAgICAgQVNTRVJUKGF0dGFjaG1lbnRzQXJyYXkpOwogICAgICAgICAg
ICAgaWYgKCFhdHRhY2htZW50c0FycmF5KQpAQCAtMTIyOSw2ICsxMzcyLDE4IEBAIHdlYm06OlN0
YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0YWRhdGEm
IG1ldGFkYXRhLCBSZWFkCiAgICAgcmV0dXJuIFNraXAocmVhZGVyLCBieXRlc1JlbWFpbmluZyk7
CiB9CiAKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3Vw
cG9ydGVkVmlkZW9Db2RlY3MoKQoreworICAgIHN0YXRpYyBhdXRvIGNvZGVjcyA9IG1ha2VOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+KHsgIlZfVlA4IiwgIlZfVlA5IiB9KTsKKyAgICBy
ZXR1cm4gY29kZWNzOworfQorCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OnN1cHBvcnRlZEF1ZGlvQ29kZWNzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBjb2Rl
Y3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+Pih7IH0pOworICAgIHJldHVy
biBjb2RlY3M7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggM2E4NDY0NTlhM2ViMzU1MzYxMjEyOTc2Yzhl
YWRlNDYzZDYzYjE5Ny4uNzczZjZhMDY0YzM5YzU3YzNlNTExNWMyZjcwOGY4Yjc4NDExMzEzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtODAsNiArODAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIEludmFsaWREb2NUeXBlLAogICAgICAgICBJbnZhbGlkSW5pdFNlZ21lbnQsCiAg
ICAgICAgIFJlY2VpdmVkRWJtbEluc2lkZVNlZ21lbnQsCisgICAgICAgIFVuc3VwcG9ydGVkVmlk
ZW9Db2RlYywKKyAgICAgICAgVW5zdXBwb3J0ZWRBdWRpb0NvZGVjLAogICAgIH07CiAKICAgICBl
bnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CkBAIC0xMTAsNiArMTEyLDkgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9CiAjZW5kaWYKIAorICAgIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1
cHBvcnRlZFZpZGVvQ29kZWNzKCk7CisgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
c3VwcG9ydGVkQXVkaW9Db2RlY3MoKTsKKwogICAgIC8vIHdlYm06OkNhbGxiYWNrCiAgICAgd2Vi
bTo6U3RhdHVzIE9uRWxlbWVudEJlZ2luKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIHdl
Ym06OkFjdGlvbiopIGZpbmFsOwogICAgIHdlYm06OlN0YXR1cyBPbkVsZW1lbnRFbmQoY29uc3Qg
d2VibTo6RWxlbWVudE1ldGFkYXRhJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaAppbmRleCAx
NGM2ZjNhZTk4NDMwYWFlYzJiOGU4MjJiMWZiNTFiNDc1OGFhOTMwLi5iMTdkYTYzNTkyNTlmY2Fj
NjM4NTNlMGRmMWE1YWE0ZGIzMGVlMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgKQEAgLTM5LDgg
KzM5LDEwIEBAIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHNldE92ZXJyaWRlVlA5U2NyZWVu
U2l6ZUFuZFNjYWxlRm9yVGVzdGluZyhmbG9hdCB3aWR0CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4g
dm9pZCByZXNldE92ZXJyaWRlVlA5U2NyZWVuU2l6ZUFuZFNjYWxlRm9yVGVzdGluZygpOwogCiBX
RUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdpc3RlcldlYktpdFZQOURlY29kZXIoKTsKK1dF
QkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOwogV0VC
Q09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCk7
CiBleHRlcm4gYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFibGUoKTsKK2V4dGVybiBib29sIGlzVlA4
RGVjb2RlckF2YWlsYWJsZSgpOwogZXh0ZXJuIGJvb2wgaXNWUENvZGVjQ29uZmlndXJhdGlvblJl
Y29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYpOwogZXh0ZXJuIGJvb2wg
dmFsaWRhdGVWUFBhcmFtZXRlcnMoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmLCBNZWRpYUNh
cGFiaWxpdGllc0luZm8mLCBjb25zdCBWaWRlb0NvbmZpZ3VyYXRpb24mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbQppbmRleCBjODFlOTdhYTNlNDc3ZDdjN2I4OWMxNjE5YTlmM2ZmMmYyYmVjMGEx
Li5jMDhmYzY4NDg4M2I2MDYyNjZhNTY3MDQ5NjlkM2RkODhhNjJjOTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbQpAQCAtMTAwLDYgKzEwMCwxMSBAQCB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVj
b2RlcigpCiAgICAgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2Rlcigp
OwogfQogCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpCit7CisgICAgTGliV2ViUlRD
UHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOworfQorCiB2b2lkIHJlZ2lzdGVy
U3VwcGxlbWVudGFsVlA5RGVjb2RlcigpCiB7CiAgICAgaWYgKCFWaWRlb1Rvb2xib3hMaWJyYXJ5
KHRydWUpKQpAQCAtMTE2LDcgKzEyMSwxNCBAQCBib29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgp
CiAgICAgcmV0dXJuIG5vRXJyID09IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFu
Y2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBu
dWxscHRyKTsKIH0KIAotYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVk
KFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24pCitib29sIGlz
VlA4RGVjb2RlckF2YWlsYWJsZSgpCit7CisgICAgaWYgKCFWaWRlb1Rvb2xib3hMaWJyYXJ5KHRy
dWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG5vRXJyID09IFZUU2VsZWN0
QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoJ3ZwMDgnLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBudWxscHRyLCBudWxscHRyKTsKK30KKworc3RhdGljIGJvb2wgaXNWUDlDb2RlY0NvbmZpZ3Vy
YXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29u
ZmlndXJhdGlvbikKIHsKICAgICBpZiAoIWlzVlA5RGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNjgsNiArMTgwLDM3IEBAIGJvb2wgaXNWUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWND
b25mCiAgICAgcmV0dXJuIGhhczRrU2NyZWVuOwogfQogCitzdGF0aWMgYm9vbCBpc1ZQOENvZGVj
Q29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYg
Y29kZWNDb25maWd1cmF0aW9uKQoreworICAgIGlmICghaXNWUDhEZWNvZGVyQXZhaWxhYmxlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFZQOCBkZWNvZGVyIG9ubHkgc3VwcG9y
dHMgUHJvZmlsZSAwOworICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24ucHJvZmlsZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29kZXIgb25seSBzdXBwb3J0cyA0MjAg
Y2hyb21hIHN1YnNhbXBsaW5nLgorICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24uY2hyb21hU3Vi
c2FtcGxpbmcgPiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdf
NDIwX0NvbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29k
ZXIgb25seSBzdXBwb3J0cyA4LWJpdCBjb2xvcjoKKyAgICBpZiAoY29kZWNDb25maWd1cmF0aW9u
LmJpdERlcHRoID4gOCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVj
Q29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uKQoreworICAgIGlmIChjb2Rl
Y0NvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDA4IiB8fCBjb2RlY0NvbmZpZ3VyYXRpb24u
Y29kZWNOYW1lID09ICJ2cDgiKQorICAgICAgICByZXR1cm4gaXNWUDhDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9uKTsKKworICAgIGlmIChjb2RlY0Nv
bmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDA5IiB8fCBjb2RlY0NvbmZpZ3VyYXRpb24uY29k
ZWNOYW1lID09ICJ2cDkiKQorICAgICAgICByZXR1cm4gaXNWUDlDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9uKTsKKworICAgIHJldHVybiBmYWxzZTsK
K30KKwogYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJhdGlvblJlY29y
ZCYgY29kZWNDb25maWd1cmF0aW9uLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mIGluZm8sIGNvbnN0
IFZpZGVvQ29uZmlndXJhdGlvbiYgdmlkZW9Db25maWd1cmF0aW9uKQogewogICAgIGlmICghaXNW
UENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCAyMTk4ODdmYTgxZTJiYWRhOTM1
YjIyNGIxYjcwYzdlMTE5NjhlZTRhLi5jYTAwOTIxZGM0NjFlOGViYmViYWZjMjFkYzU3YjdkNzNi
YmZjMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaApAQCAtNzUsNiArNzUs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCB3ZWJSVENBdmFpbGFibGUoKTsKICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlcldlYktpdFZQOURlY29kZXIoKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKICAgICBzdGF0aWMgdm9pZCBzZXRIMjY0SGFyZHdh
cmVFbmNvZGVyQWxsb3dlZChib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKaW5kZXgg
NGEzMmQxZmRhNzg4M2E4Y2RhZTFhMGUzODhiMjUyNmE4YzM0MzUwZS4uZTY4ZjkxNjBlZjE4NGJi
ODMyNGZiOThlMmEzMDM5M2FlZjJhZDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlckNvY29hLmNwcApAQCAtMzQsNiArMzQsNyBAQCBBTExPV19VTlVTRURfUEFSQU1F
VEVSU19CRUdJTgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXIuaD4K
ICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRFbmNvZGVyLmg+CiBBTExPV19VTlVT
RURfUEFSQU1FVEVSU19FTkQKKyNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDhE
ZWNvZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL2Rhcndpbi9XZWFr
TGlua2luZy5oPgpAQCAtOTksNiArMTAwLDEzIEBAIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJl
Z2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpCiAgICAgaWYgKHdlYlJUQ0F2YWlsYWJsZSgpKQogICAg
ICAgICB3ZWJydGM6OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOwogfQorCit2b2lkIExpYldl
YlJUQ1Byb3ZpZGVyOjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIoKQoreworICAgIGlmICh3ZWJS
VENBdmFpbGFibGUoKSkKKyAgICAgICAgd2VicnRjOjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKExJQldFQlJU
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCA0OGI3NGVhZTgwMWM2MjRkMTIxNzMxMDk0OTA4MGVkYmE2MzQw
NjkwLi41YzRjYTI1ZDRkYWE3ZDU4MTMxMTcwYzk3MjAzZjQwNmViYjFkYmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC01MzgsOSArNTM4LDkgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1
cGRhdGVDYXB0dXJlQWNjZXNzKGJvb2wgYWxsb3dBdWRpb0NhcHR1cmUsIGJvb2wKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZQOSkKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5hYmxl
VlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2RlcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5hYmxlVlA5
RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQ
OURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogewotICAgIG1fZ3B1UHJv
Y2Vzcy0+ZW5hYmxlVlA5RGVjb2RlcnMoc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwgc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyKTsKKyAgICBtX2dwdVByb2Nlc3MtPmVuYWJsZVZQOURlY29kZXJzKHNo
b3VsZEVuYWJsZVZQOERlY29kZXIsIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2Rlcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYTI4YzhmZjVmNmMwNjRi
ZWViM2I4NmM2ZWE1NGMzZTQ3YjRhZjlkZi4uNGYyZDQ0ZmZiNTUwYWE2ZGU4MTBiOWJmOTUyNjIw
N2Q1NzlkYjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFdl
YkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCiAjaWYgRU5BQkxFKFZQOSkKLSAgICB2b2lkIGVu
YWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRF
bmFibGVWUDlTV0RlY29kZXIpOworICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91
bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKICNlbmRpZgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDlkNTRlMTY0NTk1YjBhMzYxZGZlNGM3
NWJmZjQwMThhODU3NTljOGYuLjhmYzBlZmFjOTMyMTgyMjJiYjBiYzdjMjFhYWI5MTllNTNhOTcz
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOCw3ICszOCw3IEBAIG1lc3Nh
Z2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2Ugewog
ICAgIEVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBlcigpCiAjZW5kaWYKICNpZiBFTkFCTEUoVlA5KQot
ICAgIEVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBz
aG91bGRFbmFibGVWUDlTV0RlY29kZXIpCisgICAgRW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91
bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hv
dWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzLmNwcAppbmRleCBlM2Q1NmE4N2M3ZGRlYWVmMDBhNmQxNzIwOGRiOGFlMWUy
MjkxMGRiLi5jM2EzNjE5ZjY3ZWFiNGI0ZGUyM2UxMGZkNGM5ODBiN2E0NTlmYjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC0yOTIsMTIgKzI5MiwxOCBAQCBX
b3JrUXVldWUmIEdQVVByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1F1ZXVlKCkKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFZQOSkKLXZvaWQgR1BVUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBz
aG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKK3Zv
aWQgR1BVUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNv
ZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dE
ZWNvZGVyKQogewogICAgIGlmIChzaG91bGRFbmFibGVWUDlEZWNvZGVyICYmICFtX2VuYWJsZVZQ
OURlY29kZXIpIHsKICAgICAgICAgbV9lbmFibGVWUDlEZWNvZGVyID0gdHJ1ZTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgV2ViQ29yZTo6cmVnaXN0ZXJTdXBwbGVtZW50YWxWUDlEZWNv
ZGVyKCk7CisjZW5kaWYKKyAgICB9CisgICAgaWYgKHNob3VsZEVuYWJsZVZQOERlY29kZXIgJiYg
IW1fZW5hYmxlVlA4RGVjb2RlcikgeworICAgICAgICBtX2VuYWJsZVZQOERlY29kZXIgPSB0cnVl
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBXZWJDb3JlOjpyZWdpc3RlcldlYktpdFZQ
OERlY29kZXIoKTsKICNlbmRpZgogICAgIH0KICAgICBpZiAoc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyICYmICFtX2VuYWJsZVZQOVNXRGVjb2RlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLmgKaW5kZXggYjZlYTgxODNjZTY1MWU0OGQxMTdlMjQ3YjU3ZmIwNTg3OTFjMjY5ZC4u
YmVhNTYwM2MzNjQ4Yjc3NWFmYWVlMGI5MDAzYjkyZTIwNjY3ODRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZQOSkKLSAgICB2b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxk
RW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOworICAgIHZv
aWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNo
b3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKICNl
bmRpZgogCiBwcml2YXRlOgpAQCAtMTQ4LDYgKzE0OCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyPiBtX2F1ZGlv
U2Vzc2lvbk1hbmFnZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoVlA5KQorICAgIGJvb2wgbV9lbmFi
bGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5RGVjb2RlciB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggMzhjYTY4OTIyZWFhY2FjYzZmMGExNTU0M2JkYTZjOTAwMTQ4ZGJmYS4uNjNhNjZm
NzdlMjFiZDQyODdhYjllOTAzZTllODIxNjkyMDVmZTg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE2MSw2ICsxNjEs
NyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVuY29kZXIgPDwgc2hvdWxk
UmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CiAjZW5kaWYKKyAgICBlbmNvZGVyIDw8IHNob3VsZEVu
YWJsZVZQOERlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlEZWNvZGVyOwog
ICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwogI2lmIEVOQUJMRShBUFBf
Qk9VTkRfRE9NQUlOUykKQEAgLTUyMCw2ICs1MjEsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlcikpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
c2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApp
bmRleCBjODc4ZTZkOTgxZmE5NDQ0OTdmMDI3ZmFhMzIxMDk3ZjJkNjliYWM5Li5hMDhkODRkZjhh
YTE5MmI3ZDQzNGQyMDY4M2ZhN2I4YTg5ZDFiNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMzIsNiArMjMyLDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lmIEVOQUJMRShXRUJHTCkKICAgICBi
b29sIHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsgZmFsc2UgfTsKICNlbmRpZgorICAg
IGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRF
bmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVj
b2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKaW5k
ZXggY2NkMzNjYzAyYTcyMjQ4OGFlZTEyYjMyNWU0Y2NkOTNmYjFlMDdlYi4uMTBhNzNkNTMyZTg5
OGQ0OTcxMWU1M2I2NDJlYjk5N2ZhZTU5ZjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCkBAIC0yNzgsNiArMjc4LDE1
IEBAIGJvb2wgZGVmYXVsdFdlYlhSRW5hYmxlZCgpCiAKICNpZiBFTkFCTEUoVlA5KQogCitib29s
IGRlZmF1bHRWUDhEZWNvZGVyRW5hYmxlZCgpCit7CisjaWYgSEFWRShTWVNURU1fRkVBVFVSRV9G
TEFHUykKKyAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJsZWQoInZwOF9kZWNvZGVyIik7Cisj
ZW5kaWYKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBkZWZhdWx0VlA5RGVjb2RlckVu
YWJsZWQoKQogewogI2lmIEhBVkUoU1lTVEVNX0ZFQVRVUkVfRkxBR1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCmluZGV4IGQwOWQ0
MzkzOTM3MDA0ZDNlMTBiOWI5NjZmOGUzMDZiMGFmODk1OGMuLjJmYzdkOGVkMTI1NGQzNDY3NWQx
ZTJlOGY5YWEwMGRmNTAwNTNiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCkBAIC0xMDAsNiArMTAwLDcgQEAgYm9vbCBkZWZh
dWx0V2ViWFJFbmFibGVkKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCitib29sIGRlZmF1
bHRWUDhEZWNvZGVyRW5hYmxlZCgpOwogYm9vbCBkZWZhdWx0VlA5RGVjb2RlckVuYWJsZWQoKTsK
IGJvb2wgZGVmYXVsdFZQOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKTsKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggYjVhM2NjNzcxMjY3MDU1M2U1YTI4M2FjM2E4YmE0M2ZkNmQ3NWEyNy4uNTA4ZDRjZjk4NDFl
YzQ4ODZlMTg4NTI4NDVlNTBkNmJiY2JhYWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC03OTUzLDYgKzc5NTMsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYg
cHJvYwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyID0gcHJlZmVyZW5j
ZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENP
Q09BKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlciA9IHByZWZlcmVuY2Vz
KCkudnA5RGVjb2RlckVuYWJsZWQoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNX
RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2RlckVuYWJsZWQoKSAmJiAoIVdlYkNvcmU6
OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVmZXJlbmNlcygpLnZwOVNXRGVjb2RlckVuYWJsZWRP
bkJhdHRlcnkoKSk7CiAjZW5kaWYKICAgICBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5
SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY29uZmlndXJhdGlvbigpLnNo
b3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMTFmYTcwZjJj
ZTliNDMzNTFlNTNiOWExZjNmNzNmY2E1MjhkNzRhMi4uYTI5MzA3ZjcwYjZlZGY3Zjg0OTM2ZWRh
NmRiY2ZiOGRiM2E2ZDAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTE4NSwxMiArMTg1LDEzIEBAIHZvaWQg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVSZW1vdGVDb21tYW5kKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDCiB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjp1cGRhdGVQYXJh
bWV0ZXJzKGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAj
aWYgRU5BQkxFKFZQOSkKLSAgICBpZiAobV9lbmFibGVWUDlEZWNvZGVyID09IHBhcmFtZXRlcnMu
c2hvdWxkRW5hYmxlVlA5RGVjb2RlciAmJiBtX2VuYWJsZVZQOVNXRGVjb2RlciA9PSBwYXJhbWV0
ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKKyAgICBpZiAobV9lbmFibGVWUDhEZWNvZGVy
ID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlciAmJiBtX2VuYWJsZVZQOURlY29k
ZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyICYmIG1fZW5hYmxlVlA5U1dE
ZWNvZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBtX2VuYWJsZVZQOURlY29kZXIgPSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJs
ZVZQOERlY29kZXI7CiAgICAgbV9lbmFibGVWUDlEZWNvZGVyID0gcGFyYW1ldGVycy5zaG91bGRF
bmFibGVWUDlEZWNvZGVyOwogICAgIG1fZW5hYmxlVlA5U1dEZWNvZGVyID0gcGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDlTV0RlY29kZXI7Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQOURlY29kZXJzKHBhcmFtZXRlcnMu
c2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29k
ZXIpLCB7IH0pOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpFbmFibGVWUDlEZWNvZGVycyhwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQ
OERlY29kZXIsIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgcGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDlTV0RlY29kZXIpLCB7IH0pOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAy
YTA0Yzc0ZjdmYjYzNzcxYmFkZmI1NjM2ZDM3NTY4NThjYjMxN2EwLi5mZjk5MjY1YWQ2YmQyMmQz
MGRmYTVmNzEzNTUzMDQ2NDY1NjdjOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC04Miw2ICs4Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVwZGF0ZVBhcmFtZXRlcnMoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYpOwogCiAjaWYgRU5BQkxFKFZQOSkKKyAgICBib29sIGlzVlA4RGVjb2RlckVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2VuYWJsZVZQOERlY29kZXI7IH0KICAgICBib29sIGlzVlA5RGVj
b2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZVZQOURlY29kZXI7IH0KICAgICBi
b29sIGlzVlBTV0RlY29kZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVWUDlTV0Rl
Y29kZXI7IH0KICNlbmRpZgpAQCAtMTIzLDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyPiBtX2F1ZGlvU291cmNlUHJvdmlkZXJN
YW5hZ2VyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZQOSkKKyAgICBib29sIG1fZW5hYmxlVlA4RGVj
b2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9lbmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA2MTg3OTkzMGNm
N2E4OTY4Yzg3ODk0MmM2YzU1OTAyZDBlODk3NGMuLjNkMTU2ZWFkYzU3NjAxZjQ1ZTE5NzJkNWQ1
ZWY0ZWQ0OTY4NTg4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC04MTgsNiArODE4LDkgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
IGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIpCiAgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuYWJsZVZQOURlY29kZXIoKTsKIAorICAgIGlmIChwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOERlY29kZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuYWJsZVZQOFNXRGVjb2RlcigpOworCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxl
VlA5U1dEZWNvZGVyKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVWUDlT
V0RlY29kZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDRjYTA5N2EwYmI4NTEzNDI4MGVmNDJkZGFmNmU4OTlmMDEwYWFmOTIuLjc4YjQwOTMw
MjFkODMxYjE0YTIxNDY2OGQxOTk2OGE5ODE1YjFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5ODMsNiArMTk4MywxNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmVuYWJsZVZQOURlY29kZXIoKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxl
VlA4U1dEZWNvZGVyKCkKK3sKKyAgICBpZiAobV92cDlTV0RlY29kZXJFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3ZwOFNXRGVjb2RlckVuYWJsZWQgPSB0cnVlOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOworI2Vu
ZGlmCit9CisKIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlVlA5U1dEZWNvZGVyKCkKIHsKICAgICBp
ZiAobV92cDlTV0RlY29kZXJFbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggZmRiNTZkNzlkZjIxZmU4Y2ExMmU4OTE2ZTk3NTFlZDk2MjhiMjEyMS4uMzFhYmQ0
ZjU4YTlhODNmNjc0ODJlZDJkNzZiMDQwOWQxYzhiYWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCkBAIC0zNTksNiArMzU5LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KFZQOSkKICAgICB2b2lkIGVuYWJsZVZQOURlY29kZXIoKTsKKyAgICB2b2lkIGVuYWJsZVZQOFNX
RGVjb2RlcigpOwogICAgIHZvaWQgZW5hYmxlVlA5U1dEZWNvZGVyKCk7CiAjZW5kaWYKIApAQCAt
NzA2LDYgKzcwNyw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoVlA5KQogICAgIGJvb2wgbV92
cDlEZWNvZGVyRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3ZwOFNXRGVjb2RlckVuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV92cDlTV0RlY29kZXJFbmFibGVkIHsgZmFsc2UgfTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYjRiMWNjYzMxZDY4ZjAzMDY4OTJiOWU4NzdlMThiMGM2M2QwMmVh
NS4uYzRjZjMzNTkyYjk1ZDRkNTJlODViNzM4OWI3OTJiMmFmODY4MGI3MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBWUDggc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzMyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNvdXJjZWJ1
ZmZlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pbnZhbGlk
LWNvZGVjLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0xMS0wOSAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBOb24tZnVsbHNjcmVlbiBwYWdlIGNvbnRlbnRzIHZpc2li
bGUgd2hlbiByb3RhdGluZyBkZXZpY2UgZHVyaW5nIGVsZW1lbnQgZnVsbHNjcmVlbiBwcmVzZW50
YXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNv
dXJjZWJ1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3Vy
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWFkZHNvdXJjZWJ1ZmZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUwMzMzOTZkZDBjMTVh
YjU1MjJhN2ExN2JhNzQ5NzQzN2QwOTc5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy1iaWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEyIEBACisKK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSBpbiAnZW5kZWQnIHN0YXRl
LgorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggZW1wdHkgdHlwZQorUEFTUyBUZXN0
IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggbnVsbAorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigp
IHdpdGggdW5zdXBwb3J0ZWQgdHlwZQorRkFJTCBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGgg
Vm9yYmlzIGFuZCBWUDggYXNzZXJ0X3RydWU6IHZpZGVvL3dlYm07Y29kZWNzPSJ2cDgsdm9yYmlz
IiBpcyBzdXBwb3J0ZWQgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK0ZBSUwgVGVzdCBhZGRTb3Vy
Y2VCdWZmZXIoKSB3aXRoIFZvcmJpcyBhbmQgVlA4IGluIHNlcGFyYXRlIFNvdXJjZUJ1ZmZlcnMg
YXNzZXJ0X3RydWU6IGF1ZGlvL3dlYm07Y29kZWNzPSJ2b3JiaXMiIGlzIHN1cHBvcnRlZCBleHBl
Y3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHZpZGVvIG9u
bHkKK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSBhdWRpbyBvbmx5CitQQVNTIFRlc3QgYWRk
U291cmNlQnVmZmVyKCkgd2l0aCBBQUMgYW5kIEguMjY0CitQQVNTIFRlc3QgYWRkU291cmNlQnVm
ZmVyKCkgd2l0aCBBQUMgYW5kIEguMjY0IGluIHNlcGFyYXRlIFNvdXJjZUJ1ZmZlcnMKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pbnZhbGlkLWNvZGVjLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1iaWdzdXIvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtaW52YWxpZC1jb2Rl
Yy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTllMmQ1ODFmZjkwNjg2NmU5Y2VhN2FjOWJjNjIz
NWIyMWY3ZDg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1i
aWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1Mg
VGVzdCBhbiBNUDQgd2l0aCBhbiBpbnZhbGlkIGNvZGVjIHJlc3VsdHMgaW4gYW4gZXJyb3IuCitQ
QVNTIFRlc3QgYSBXZWJNIHdpdGggYW4gaW52YWxpZCBjb2RlYyByZXN1bHRzIGluIGFuIGVycm9y
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJlZjUw
MzA2NGE5OGFkMDY2MmE4MWUzOTAxMGE5ZDUwMjY0M2RmZjEuLmJkYWU1MWZkODVlN2U1YWY2Y2Ex
MzgxODMxMDU2NzVmMGZlMGQzNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC04NTgsOCArODU4LDggQEAgd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1lcnIKIHdl
YmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtaXMtdHlwZS1zdXBwb3J0ZWQuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1yZW1vdmVzb3VyY2VidWZmZXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1zZWVrLWJleW9uZC1kdXJhdGlvbi5odG1sIFsgU2tpcCBdCi13ZWJraXQub3Jn
L2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21l
ZGlhc291cmNlLXNlZWstZHVyaW5nLXBlbmRpbmctc2Vlay5odG1sIFsgU2tpcCBdCi13ZWJraXQu
b3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLXNlZWthYmxlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNjE3MjUg
WyBNb2phdmUgQ2F0YWxpbmEgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
LXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrLWR1cmluZy1wZW5kaW5nLXNlZWsuaHRtbCBbIFNraXAg
XQord2Via2l0Lm9yZy9iLzE2MTcyNSBbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlZWthYmxlLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2VxdWVuY2Vtb2RlLWFwcGVuZC1idWZmZXIu
aHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2VidWZmZXItbW9kZS10aW1l
c3RhbXBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVyLW1v
ZGUuaHRtbCBbIFNraXAgXQpAQCAtODcwLDkgKzg3MCw5IEBAIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1h
LWJpCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1jb25maWctY2hhbmdlLXdlYm0tYXYtYXVkaW8tYml0cmF0ZS5odG1sIFsgU2tpcCBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1j
b25maWctY2hhbmdlLXdlYm0tYXYtZnJhbWVzaXplLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFu
Z2Utd2VibS1hdi12aWRlby1iaXRyYXRlLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2Vi
bS12LWJpdHJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtZnJhbWVyYXRl
Lmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lc2l6ZS5odG1sIFsgU2tp
cCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUuaHRt
bCBbIFNraXAgXQorWyBNb2phdmUgQ2F0YWxpbmEgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFt
ZXJhdGUuaHRtbCBbIFNraXAgXQorWyBNb2phdmUgQ2F0YWxpbmEgXSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdl
Ym0tdi1mcmFtZXNpemUuaHRtbCBbIFNraXAgXQogCiAjIFNraXBwZWQgaW4gVzNDIFdlYiBQbGF0
Zm9ybSBUZXN0IG1hbmlmZXN0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
LXNvdXJjZS9tZWRpYXNvdXJjZS1nZXR2aWRlb3BsYXliYWNrcXVhbGl0eS5odG1sIFsgU2tpcCBd
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416036</attachid>
            <date>2020-12-11 12:46:08 -0800</date>
            <delta_ts>2020-12-11 13:50:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219732-20201211124607.patch</filename>
            <type>text/plain</type>
            <size>93266</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzZTQ1OWUwMzQ4NDY4MzBiOWQ2MzgxYWJiOGZlYTQ5NjhhMzU2ZThiLi41MDZk
ODc5ZjkwOGFhYWY3YzUzMDc4NTJjMzM4M2QyOThjMDA1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6CisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHA6IEFkZGVkLgorICAgICAgICAod2VicnRjOjpXZWJL
aXREZWNvZGVyUmVjZWl2ZXI6OldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAgICAgICh3ZWJy
dGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6fldlYktpdERlY29kZXJSZWNlaXZlcik6CisgICAg
ICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6cGl4
ZWxCdWZmZXJQb29sKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpk
ZWNvZGVyRmFpbGVkKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpE
ZWNvZGVkKToKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmg6IEFkZGVkCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlV2ViS2l0VlA4RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OmludmFsaWRhdGVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0
Yzo6ZmluYWxpemVWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6Y29weVZQOERlY29kZXJE
ZWJ1Z0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6d2ViS2l0VlA4RGVjb2RlckZyb21W
VERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpzdGFydFZQOERlY29kZXJTZXNzaW9uKToKKyAg
ICAgICAgKHdlYnJ0Yzo6ZGVjb2RlVlA4RGVjb2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jayk6
CisgICAgICAgICh3ZWJydGM6OmRlY29kZVZQOERlY29kZXJGcmFtZSk6CisgICAgICAgICogU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2EuaC4K
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHA6
CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdlYktpdFZQOURlY29kZXIpOgorICAgICAgICAod2Vi
cnRjOjpzdGFydFZQOURlY29kZXJTZXNzaW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5
RGVjb2RlclJlY2VpdmVyOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIpOiBEZWxldGVkLgorICAg
ICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXRWUDlEZWNvZGVy
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVj
ZWl2ZXI6OmluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24pOiBEZWxldGVkLgorICAgICAg
ICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6ZGVjb2Rl
ckZhaWxlZCk6IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTItMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIElDRSBkb2VzIG5vdCByZXNvbHZlIGZvciBgdHVybnNgIHJlbGF5
IGNhbmRpZGF0ZXMgcm9vdGVkIGluIExldHNFbmNyeXB0IENBCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzM2RjYmYwMTMxOWY1
N2YzOGYwNGJjZjQzN2Y4MTViYzQ1NWYwNjkuLjI3NmZjMmIzY2ZjMDkwYjY3NmI2MDZhZmJiMWZi
MGQ0YzFkMzczZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFs
IFZQOCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTk3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFt
bDoKKwogMjAyMC0xMi0xMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIFtDTWFrZV0gRGV0ZXJtaW5lIGNvcnJlY3QgdmlzaWJpbGl0eSBmb3IgbGlua2Vk
IGZyYW1ld29ya3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYTI1NDk0NjZhNjdiYmY0YzQzMjZlNDIyZGE5NGIz
MzE4NGMzMTJlLi5jMDI2MTA2Njk4YTgwYjQ5ZmM1ODkyNTQ1NTBlMmRiNGFiY2EzNDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBzdXBw
b3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3
MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXds
eSBwYXNzaW5nIHRlc3RzOgorICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwKKyAgICAg
ICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLXNlZWstZHVyaW5nLXBlbmRpbmctc2Vlay5odG1sCisgICAgICAgICAgICBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrYWJs
ZS5odG1sCisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
LXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1iaXRyYXRlLmh0bWwgCisg
ICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXJhdGUuaHRtbAorICAgICAgICAg
ICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtZnJhbWVzaXplLmh0bWwKKyAgICAgICAgICAgIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWludmFs
aWQtY29kZWMuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVlBDb2RlY1BhcmFtZXRlcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21W
UENvZGVjQ29uZmlndXJhdGlvblJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3Jt
YXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFy
c2VWUDhGcmFtZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3JtYXREZXNjcmlw
dGlvbkZyb21WUDhIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6T25GcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRp
bGl0aWVzQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rl
cik6CisgICAgICAgIChXZWJDb3JlOjppc1ZQOERlY29kZXJBdmFpbGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6aXNWUDlDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWUDhDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OnJl
Z2lzdGVyV2ViS2l0VlA4RGVjb2Rlcik6CisKIDIwMjAtMTEtMDQgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm9uLWZ1bGxzY3JlZW4gcGFnZSBjb250ZW50cyB2
aXNpYmxlIHdoZW4gcm90YXRpbmcgZGV2aWNlIGR1cmluZyBlbGVtZW50IGZ1bGxzY3JlZW4gcHJl
c2VudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYTIwZTM0YTlmYWY4NjZhMzg0OTNlMjcxZWIwZjExODE0
MjYyOTEzLi45M2E3NDA4NDIxMjgyZjM1MjM2NTFhOGYzZDFhMGUyMGI0ZWJmYmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBWUDggc3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzMyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVycyk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3M6OmVuYWJs
ZVZQOURlY29kZXJzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZGVmYXVsdFZQOERl
Y29kZXJFbmFibGVkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VVByb2Nlc3NDb25uZWN0aW9uOjp1cGRhdGVQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6aXNWUDhEZWNvZGVyRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuYWJsZVZQOFNXRGVjb2Rl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMjAtMTItMDggIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRW50ZXJpbmcg
ZnVsbHNjcmVlbiBmcm9tIGxlc3MtdGhhbi1mdWxsc2NyZWVuIFdLV2ViVmlldyBkb2VzIG5vdCBs
YXlvdXQgY29ycmVjdGx5IHVwb24gZXhpdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGUy
ODA1OGQ2MzA1YTZlZTM0OTY0NzExYmU3MTkzN2M5YmI1MTVkZTkuLmY1OTM3OTYwYWRjOGQxNzUx
NzliMWNkYWY3ZTI0YzBjMmUxMWU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTEw
MSw2ICsxMDEsNyBAQCBfX1pONndlYnJ0YzIwc2V0QXBwbGljYXRpb25TdGF0dXNFYgogX19aTjZ3
ZWJydGMyNmNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2Vi
S2l0VlA5RU5TXzEyV2ViS2l0VlA5VlRCRQogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdEVuY29k
ZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5RU5TXzIwV2ViS2l0SDI2NExv
d0xhdGVuY3lFCiBfX1pONndlYnJ0YzI5c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWRFYgor
X19aTjZ3ZWJydGMyNHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlckV2CiBfX1pONndlYnJ0YzI0cmVn
aXN0ZXJXZWJLaXRWUDlEZWNvZGVyRXYKIF9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFt
ZUVSS05TXzEwVmlkZW9GcmFtZUVSS05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5T
XzEwQnVmZmVyVHlwZUVFRUUKIF9fWk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19D
VkJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGUyODA1OGQ2MzA1YTZl
ZTM0OTY0NzExYmU3MTkzN2M5YmI1MTVkZTkuLmY1OTM3OTYwYWRjOGQxNzUxNzliMWNkYWY3ZTI0
YzBjMmUxMWU0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTEwMSw2ICsx
MDEsNyBAQCBfX1pONndlYnJ0YzIwc2V0QXBwbGljYXRpb25TdGF0dXNFYgogX19aTjZ3ZWJydGMy
NmNyZWF0ZVdlYktpdERlY29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5
RU5TXzEyV2ViS2l0VlA5VlRCRQogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdEVuY29kZXJGYWN0
b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5RU5TXzIwV2ViS2l0SDI2NExvd0xhdGVu
Y3lFCiBfX1pONndlYnJ0YzI5c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWRFYgorX19aTjZ3
ZWJydGMyNHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlckV2CiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJX
ZWJLaXRWUDlEZWNvZGVyRXYKIF9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05T
XzEwVmlkZW9GcmFtZUVSS05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVm
ZmVyVHlwZUVFRUUKIF9fWk42d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5tYWMuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCmluZGV4IGUyODA1OGQ2MzA1YTZlZTM0OTY0NzExYmU3
MTkzN2M5YmI1MTVkZTkuLmY1OTM3OTYwYWRjOGQxNzUxNzliMWNkYWY3ZTI0YzBjMmUxMWU0ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMubWFjLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKQEAgLTEwMSw2ICsxMDEsNyBAQCBfX1pONndlYnJ0
YzIwc2V0QXBwbGljYXRpb25TdGF0dXNFYgogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdERlY29k
ZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2NUVOU185V2ViS2l0VlA5RU5TXzEyV2ViS2l0VlA5VlRC
RQogX19aTjZ3ZWJydGMyNmNyZWF0ZVdlYktpdEVuY29kZXJGYWN0b3J5RU5TXzEwV2ViS2l0SDI2
NUVOU185V2ViS2l0VlA5RU5TXzIwV2ViS2l0SDI2NExvd0xhdGVuY3lFCiBfX1pONndlYnJ0YzI5
c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWRFYgorX19aTjZ3ZWJydGMyNHJlZ2lzdGVyV2Vi
S2l0VlA4RGVjb2RlckV2CiBfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyRXYK
IF9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVSS05T
dDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKIF9fWk42
d2VicnRjMThwaXhlbEJ1ZmZlclRvRnJhbWVFUDEwX19DVkJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9WVFZpZGVv
RGVjb2RlclNQSS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9WVFZpZGVvRGVjb2RlclNQSS5oCmluZGV4IGY0ODg5MDVlZTQ3MWRkZGE0ZDRk
OTUwNTUwZDc3ODJlNDg3YTEwYTAuLjY4MGUwZDhhNWU0ZGU2ZDM5YmJmNjU3ZjNlNmMzNWUxMTJh
ZWE3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvVlRWaWRlb0RlY29kZXJTUEkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1ZUVmlkZW9EZWNvZGVyU1BJLmgK
QEAgLTI1LDYgKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxWaWRlb1Rvb2xi
b3gvVmlkZW9Ub29sYm94Lmg+CisjaW5jbHVkZSAiQ01CYXNlT2JqZWN0U1BJLmgiCisKICNpZiBk
ZWZpbmVkIF9faGFzX2luY2x1ZGUgJiYgX19oYXNfaW5jbHVkZSg8Q29yZUZvdW5kYXRpb24vQ0ZQ
cml2Lmg+KQogI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WVFZpZGVvRGVjb2Rlci5oPgogI2luY2x1
ZGUgPFZpZGVvVG9vbGJveC9WVFZpZGVvRGVjb2RlclJlZ2lzdHJhdGlvbi5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc2MGU1YmM1MzYwOGQzODczYWU3NTFlMWNkNTc4NmY3M2U4YWY5Y2YKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiV2ViS2l0VlA5RGVjb2Rlci5oIgorCisjaW5jbHVkZSAiV2ViS2l0RGVj
b2RlclJlY2VpdmVyLmgiCisjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvaW5jbHVkZS92
aWRlb19lcnJvcl9jb2Rlcy5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK1dlYktpdERlY29kZXJSZWNlaXZlcjo6V2ViS2l0RGVjb2RlclJl
Y2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBzZXNzaW9uKQorICAgIDogbV9zZXNzaW9uKHNl
c3Npb24pCit7Cit9CisKK1dlYktpdERlY29kZXJSZWNlaXZlcjo6fldlYktpdERlY29kZXJSZWNl
aXZlcigpCit7CisgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICBDRlJlbGVhc2Uo
bV9waXhlbEJ1ZmZlclBvb2wpOworfQorCit2b2lkIFdlYktpdERlY29kZXJSZWNlaXZlcjo6aW5p
dGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1h
dERlc2NyaXB0aW9uKQoreworICAgIC8vIENvcmVBbmltYXRpb24gZG9lc24ndCBzdXBwb3J0IGZ1
bGwtcGxhbmFyIFlVViwgc28gd2UgbXVzdCBjb252ZXJ0IHRoZSBidWZmZXJzIG91dHB1dAorICAg
IC8vIGJ5IGxpYnZweCB0byBiaS1wbGFuYXIgWVVWLiBDcmVhdGUgcGl4ZWwgYnVmZmVyIGF0dHJp
YnV0ZXMgYW5kIGdpdmUgdGhvc2UgdG8gdGhlCisgICAgLy8gZGVjb2RlciBzZXNzaW9uIGZvciB1
c2UgaW4gY3JlYXRpbmcgaXRzIG93biBpbnRlcm5hbCBDVlBpeGVsQnVmZmVyUG9vbCwgd2hpY2gg
d2UKKyAgICAvLyB3aWxsIHVzZSBwb3N0LWRlY29kZS4KKyAgICBtX2lzRnVsbFJhbmdlID0gZmFs
c2U7CisgICAgbV9pczEwYml0ID0gZmFsc2U7CisKKyAgICBkbyB7CisgICAgICAgIGF1dG8gZXh0
ZW5zaW9ucyA9IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zKGZvcm1hdERlc2NyaXB0
aW9uKTsKKyAgICAgICAgaWYgKCFleHRlbnNpb25zKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgQ0ZUeXBlUmVmIGV4dGVuc2lvbkF0b21zID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0
ZW5zaW9ucywga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25F
eHRlbnNpb25BdG9tcyk7CisgICAgICAgIGlmICghZXh0ZW5zaW9uQXRvbXMgfHwgQ0ZHZXRUeXBl
SUQoZXh0ZW5zaW9uQXRvbXMpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkID0gc3RhdGljX2Nh
c3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZSgoQ0ZEaWN0aW9uYXJ5UmVmKWV4dGVu
c2lvbkF0b21zLCBDRlNUUigidnBjQyIpKSk7CisgICAgICAgIGlmICghY29uZmlndXJhdGlvblJl
Y29yZCB8fCBDRkdldFR5cGVJRChjb25maWd1cmF0aW9uUmVjb3JkKSAhPSBDRkRhdGFHZXRUeXBl
SUQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJl
Y29yZFNpemUgPSBDRkRhdGFHZXRMZW5ndGgoY29uZmlndXJhdGlvblJlY29yZCk7CisgICAgICAg
IGlmIChjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA8IDEyKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkRGF0YSA9IENGRGF0YUdldEJ5dGVQdHIo
Y29uZmlndXJhdGlvblJlY29yZCk7CisgICAgICAgIGF1dG8gYml0RGVwdGhDaHJvbWFBbmRSYW5n
ZSA9ICooY29uZmlndXJhdGlvblJlY29yZERhdGEgKyA2KTsKKworICAgICAgICBpZiAoKGJpdERl
cHRoQ2hyb21hQW5kUmFuZ2UgPj4gNCkgPT0gMTApCisgICAgICAgICAgICBtX2lzMTBiaXQgPSB0
cnVlOworCisgICAgICAgIGlmIChiaXREZXB0aENocm9tYUFuZFJhbmdlICYgMHgxKQorICAgICAg
ICAgICAgbV9pc0Z1bGxSYW5nZSA9IHRydWU7CisgICAgfSB3aGlsZSAoZmFsc2UpOworfQorCitD
VlBpeGVsQnVmZmVyUG9vbFJlZiBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9v
bChzaXplX3QgcGl4ZWxCdWZmZXJXaWR0aCwgc2l6ZV90IHBpeGVsQnVmZmVySGVpZ2h0LCBib29s
IGlzMTBiaXQpCit7CisgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sICYmIG1fcGl4ZWxCdWZmZXJX
aWR0aCA9PSBwaXhlbEJ1ZmZlcldpZHRoICYmIG1fcGl4ZWxCdWZmZXJIZWlnaHQgPT0gcGl4ZWxC
dWZmZXJIZWlnaHQgJiYgbV9pczEwYml0ID09IGlzMTBiaXQpCisgICAgICAgIHJldHVybiBtX3Bp
eGVsQnVmZmVyUG9vbDsKKworICAgIE9TVHlwZSBwaXhlbEZvcm1hdDsKKyAgICBpZiAoaXMxMGJp
dCkKKyAgICAgICAgcGl4ZWxGb3JtYXQgPSBtX2lzRnVsbFJhbmdlID8ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIw
WXBDYkNyMTBCaVBsYW5hclZpZGVvUmFuZ2U7CisgICAgZWxzZQorICAgICAgICBwaXhlbEZvcm1h
dCA9IG1faXNGdWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFy
RnVsbFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFu
Z2U7CisKKyAgICBhdXRvIGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyA9IFtdIChPU1R5cGUg
cGl4ZWxGb3JtYXQsIGludDMyX3QgYm9yZGVyUGl4ZWxzKSB7CisgICAgICAgIGF1dG8gY3JlYXRl
TnVtYmVyID0gW10gKGludDMyX3QgZm9ybWF0KSAtPiBDRk51bWJlclJlZiB7CisgICAgICAgICAg
ICByZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0lu
dDMyVHlwZSwgJmZvcm1hdCk7CisgICAgICAgIH07CisgICAgICAgIGF1dG8gY2ZQaXhlbEZvcm1h
dHMgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKTsKKyAgICAgICAgYXV0byBmb3JtYXROdW1iZXIgPSBjcmVhdGVOdW1i
ZXIocGl4ZWxGb3JtYXQpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2ZQaXhlbEZvcm1h
dHMsIGZvcm1hdE51bWJlcik7CisgICAgICAgIENGUmVsZWFzZShmb3JtYXROdW1iZXIpOworCisg
ICAgICAgIGF1dG8gYm9yZGVyUGl4ZWxzVmFsdWUgPSBjcmVhdGVOdW1iZXIoMzIpOworCisgICAg
ICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9IHsKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyUGl4
ZWxGb3JtYXRUeXBlS2V5LAorICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVs
c0xlZnRLZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzUmlnaHRL
ZXksCisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzVG9wS2V5LAorICAg
ICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc0JvdHRvbUtleSwKKyAgICAgICAg
fTsKKyAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzW10gPSB7CisgICAgICAgICAgICBjZlBpeGVs
Rm9ybWF0cywKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAgYm9y
ZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAg
ICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICB9OworICAgICAgICBhdXRvIGF0dHJpYnV0
ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVz
LCBzdGQ6OnNpemUoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgICAgICBDRlJlbGVhc2UoYm9yZGVyUGl4
ZWxzVmFsdWUpOworICAgICAgICBDRlJlbGVhc2UoY2ZQaXhlbEZvcm1hdHMpOworICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlczsKKyAgICB9OworCisgICAgYXV0byBwaXhlbEJ1ZmZlckF0dHJpYnV0
ZXMgPSBjcmVhdGVQaXhlbEZvcm1hdEF0dHJpYnV0ZXMocGl4ZWxGb3JtYXQsIDMyKTsKKyAgICBW
VERlY29kZXJTZXNzaW9uU2V0UGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKG1fc2Vzc2lvbiwgcGl4ZWxC
dWZmZXJBdHRyaWJ1dGVzKTsKKyAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsK
KworICAgIGlmIChtX3BpeGVsQnVmZmVyUG9vbCkgeworICAgICAgICBDRlJlbGVhc2UobV9waXhl
bEJ1ZmZlclBvb2wpOworICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IG51bGxwdHI7CisgICAg
fQorCisgICAgbV9waXhlbEJ1ZmZlclBvb2wgPSBWVERlY29kZXJTZXNzaW9uR2V0UGl4ZWxCdWZm
ZXJQb29sKG1fc2Vzc2lvbik7CisgICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICBD
RlJldGFpbihtX3BpeGVsQnVmZmVyUG9vbCk7CisKKyAgICBtX3BpeGVsQnVmZmVyV2lkdGggPSBw
aXhlbEJ1ZmZlcldpZHRoOworICAgIG1fcGl4ZWxCdWZmZXJIZWlnaHQgPSBwaXhlbEJ1ZmZlckhl
aWdodDsKKyAgICBtX2lzMTBiaXQgPSBpczEwYml0OworCisgICAgcmV0dXJuIG1fcGl4ZWxCdWZm
ZXJQb29sOworfQorCitPU1N0YXR1cyBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OmRlY29kZXJGYWls
ZWQoaW50IGVycm9yKQoreworICAgIE9TU3RhdHVzIHZ0RXJyb3IgPSBrVlRWaWRlb0RlY29kZXJC
YWREYXRhRXJyOworICAgIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfTk9fT1VUUFVU
KQorICAgICAgICB2dEVycm9yID0gbm9FcnI7CisgICAgZWxzZSBpZiAoZXJyb3IgPT0gV0VCUlRD
X1ZJREVPX0NPREVDX1VOSU5JVElBTElaRUQpCisgICAgICAgIHZ0RXJyb3IgPSBrVlRWaWRlb0Rl
Y29kZXJNYWxmdW5jdGlvbkVycjsKKyAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9f
Q09ERUNfTUVNT1JZKQorICAgICAgICB2dEVycm9yID0ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsK
KyAgICBWVERlY29kZXJTZXNzaW9uRW1pdERlY29kZWRGcmFtZShtX3Nlc3Npb24sIG1fY3VycmVu
dEZyYW1lLCB2dEVycm9yLCAwLCBudWxscHRyKTsKKyAgICBtX2N1cnJlbnRGcmFtZSA9IG51bGxw
dHI7CisKKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA5IGRlY29kZXI6IGRlY29kZXIgZmFp
bGVkIHdpdGggZXJyb3IgIiA8PCBlcnJvciA8PCAiLCB2dEVycm9yICIgPDwgdnRFcnJvcjsKKyAg
ICByZXR1cm4gdnRFcnJvcjsKK30KKworaW50MzJfdCBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OkRl
Y29kZWQoVmlkZW9GcmFtZSYgZnJhbWUpCit7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBpeGVs
QnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBCdWZmZXJUeXBlIHR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgICAgICBhdXRvIHBp
eGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCB0eXBl
ID09IEJ1ZmZlclR5cGU6OkkwMTApOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIgPSBudWxscHRyOworICAgICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQ
aXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVs
QnVmZmVyKSA9PSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVm
ZmVyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9KTsKKworICAgIFZURGVjb2RlclNl
c3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVsQnVm
ZmVyID8gbm9FcnIgOiAtMSwgMCwgcGl4ZWxCdWZmZXIpOworICAgIG1fY3VycmVudEZyYW1lID0g
bnVsbHB0cjsKKyAgICBpZiAocGl4ZWxCdWZmZXIpCisgICAgICAgIENGUmVsZWFzZShwaXhlbEJ1
ZmZlcik7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludDMyX3QgV2ViS2l0RGVjb2RlclJlY2VpdmVy
OjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBpbnQ2NF90KQoreworICAgIERlY29kZWQoZnJh
bWUpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYktpdERlY29kZXJSZWNlaXZlcjo6RGVj
b2RlZChWaWRlb0ZyYW1lJiBmcmFtZSwgYWJzbDo6b3B0aW9uYWw8aW50MzJfdD4sIGFic2w6Om9w
dGlvbmFsPHVpbnQ4X3Q+KQoreworICAgIERlY29kZWQoZnJhbWUpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdERlY29kZXJSZWNlaXZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYTU0NTk3ZTNiNGNhYzBiOTdmMWEzNzAyMjkwOGI5MjJmZTRkOTMwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJhcGkvdmlkZW9fY29kZWNzL3ZpZGVvX2RlY29kZXIu
aCIKKyNpbmNsdWRlICJWVFZpZGVvRGVjb2RlclNQSS5oIgorI2luY2x1ZGUgIldlYktpdFV0aWxp
dGllcy5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworY2xhc3MgV2ViS2l0RGVjb2RlclJlY2Vp
dmVyIGZpbmFsIDogcHVibGljIERlY29kZWRJbWFnZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBXZWJLaXREZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uKTsKKyAg
ICB+V2ViS2l0RGVjb2RlclJlY2VpdmVyKCk7CisKKyAgICBWVFZpZGVvRGVjb2RlckZyYW1lIGN1
cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9CisgICAgdm9pZCBz
ZXRDdXJyZW50RnJhbWUoVlRWaWRlb0RlY29kZXJGcmFtZSBjdXJyZW50RnJhbWUpIHsgbV9jdXJy
ZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7IH0KKyAgICBPU1N0YXR1cyBkZWNvZGVyRmFpbGVkKGlu
dCBlcnJvcik7CisKKyAgICB2b2lkIGluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01G
b3JtYXREZXNjcmlwdGlvblJlZik7CisKK3ByaXZhdGU6CisgICAgaW50MzJfdCBEZWNvZGVkKFZp
ZGVvRnJhbWUmKSBmaW5hbDsKKyAgICBpbnQzMl90IERlY29kZWQoVmlkZW9GcmFtZSYsIGludDY0
X3QgZGVjb2RlX3RpbWVfbXMpIGZpbmFsOworICAgIHZvaWQgRGVjb2RlZChWaWRlb0ZyYW1lJiwg
YWJzbDo6b3B0aW9uYWw8aW50MzJfdD4gZGVjb2RlX3RpbWVfbXMsIGFic2w6Om9wdGlvbmFsPHVp
bnQ4X3Q+IHFwKSBmaW5hbDsKKworICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVy
UG9vbChzaXplX3QgcGl4ZWxCdWZmZXJXaWR0aCwgc2l6ZV90IHBpeGVsQnVmZmVySGVpZ2h0LCBi
b29sIGlzMTBiaXQpOworCisgICAgVlRWaWRlb0RlY29kZXJTZXNzaW9uIG1fc2Vzc2lvbiB7IG51
bGxwdHIgfTsKKyAgICBWVFZpZGVvRGVjb2RlckZyYW1lIG1fY3VycmVudEZyYW1lIHsgbnVsbHB0
ciB9OworICAgIHNpemVfdCBtX3BpeGVsQnVmZmVyV2lkdGggeyAwIH07CisgICAgc2l6ZV90IG1f
cGl4ZWxCdWZmZXJIZWlnaHQgeyAwIH07CisgICAgYm9vbCBtX2lzMTBiaXQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc0Z1bGxSYW5nZSB7IGZhbHNlIH07CisgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWYgbV9waXhlbEJ1ZmZlclBvb2wgeyBudWxscHRyIH07Cit9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOERlY29kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODI4NmEyMDhk
ZDBmYmM0ZWVkMWVhZjQ4MDAyZmFjNWQ2MDQ0OWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDhE
ZWNvZGVyLmNwcApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJL
aXRWUDhEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA4L2xpYnZweF92cDhfZGVjb2Rl
ci5oIgorI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJzeXN0ZW1fd3Jh
cHBlcnMvaW5jbHVkZS9jcHVfaW5mby5oIgorCituYW1lc3BhY2Ugd2VicnRjIHsKKworc3RhdGlj
IE9TU3RhdHVzIGNyZWF0ZVdlYktpdFZQOERlY29kZXIoRmlnVmlkZW9Db2RlY1R5cGUsIENGQWxs
b2NhdG9yUmVmIGFsbG9jYXRvciwgVlRWaWRlb0RlY29kZXJSZWYqKTsKK3ZvaWQgcmVnaXN0ZXJX
ZWJLaXRWUDhEZWNvZGVyKCkKK3sKKyAgICBWVFJlZ2lzdGVyVmlkZW9EZWNvZGVyKCd2cDA4Jywg
Y3JlYXRlV2ViS2l0VlA4RGVjb2Rlcik7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGlidnB4VnA4RGVjb2Rlcj4gbV9pbnN0YW5jZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0RGVjb2RlclJlY2VpdmVyPiBtX3JlY2VpdmVyOworfSBXZWJLaXRWUDhEZWNv
ZGVyOworCitzdGF0aWMgT1NTdGF0dXMgaW52YWxpZGF0ZVZQOERlY29kZXIoQ01CYXNlT2JqZWN0
UmVmKTsKK3N0YXRpYyB2b2lkIGZpbmFsaXplVlA4RGVjb2RlcihDTUJhc2VPYmplY3RSZWYpOwor
c3RhdGljIENGU3RyaW5nUmVmIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbihDTUJhc2VP
YmplY3RSZWYpOworCitzdGF0aWMgY29uc3QgQ01CYXNlQ2xhc3MgV2ViS2l0VlA4RGVjb2Rlcl9C
YXNlQ2xhc3MgPQoreworICAgIGtDTUJhc2VPYmplY3RfQ2xhc3NWZXJzaW9uXzEsCisgICAgc2l6
ZW9mKFdlYktpdFZQOERlY29kZXIpLAorICAgIG51bGxwdHIsIC8vIENvbXBhcmlzb24gYnkgcG9p
bnRlciBlcXVhbGl0eQorICAgIGludmFsaWRhdGVWUDhEZWNvZGVyLAorICAgIGZpbmFsaXplVlA4
RGVjb2RlciwKKyAgICBjb3B5VlA4RGVjb2RlckRlYnVnRGVzY3JpcHRpb24sCisgICAgbnVsbHB0
ciwgLy8gQ29weVByb3BlcnR5CisgICAgbnVsbHB0ciwgLy8gU2V0UHJvcGVydHkKKyAgICBudWxs
cHRyLAorICAgIG51bGxwdHIKK307CisKK3N0YXRpYyBPU1N0YXR1cyBzdGFydFZQOERlY29kZXJT
ZXNzaW9uKFZUVmlkZW9EZWNvZGVyUmVmLCBWVFZpZGVvRGVjb2RlclNlc3Npb24sIENNVmlkZW9G
b3JtYXREZXNjcmlwdGlvblJlZik7CitzdGF0aWMgT1NTdGF0dXMgZGVjb2RlVlA4RGVjb2RlckZy
YW1lKFZUVmlkZW9EZWNvZGVyUmVmLCBWVFZpZGVvRGVjb2RlckZyYW1lLCBDTVNhbXBsZUJ1ZmZl
clJlZiwgVlREZWNvZGVGcmFtZUZsYWdzLCBWVERlY29kZUluZm9GbGFncyopOworCitzdGF0aWMg
Y29uc3QgVlRWaWRlb0RlY29kZXJDbGFzcyBXZWJLaXRWUDhEZWNvZGVyX1ZpZGVvRGVjb2RlckNs
YXNzID0KK3sKKyAgICBrVlRWaWRlb0RlY29kZXJfQ2xhc3NWZXJzaW9uXzEsCisgICAgc3RhcnRW
UDhEZWNvZGVyU2Vzc2lvbiwKKyAgICBkZWNvZGVWUDhEZWNvZGVyRnJhbWUsCisgICAgbnVsbHB0
ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9Db3B5U3VwcG9ydGVkUHJvcGVydHlEaWN0aW9u
YXJ5LAorICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rpb25fU2V0UHJvcGVydGll
cworICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rpb25fQ29weVNlcmlhbGl6YWJs
ZVByb3BlcnRpZXMKKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0NhbkFj
Y2VwdEZvcm1hdERlc2NyaXB0aW9uCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5j
dGlvbl9GaW5pc2hEZWxheWVkRnJhbWVzCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJG
dW5jdGlvbl9TdGFydFRpbGVTZXNzaW9uCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJG
dW5jdGlvbl9EZWNvZGVUaWxlCisgICAgbnVsbHB0ciAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9u
X0ZpbmlzaERlbGF5ZWRUaWxlcworfTsKKworc3RhdGljIGNvbnN0IFZUVmlkZW9EZWNvZGVyVlRh
YmxlIFdlYktpdFZQOERlY29kZXJWVGFibGUgPQoreworICAgIHsgbnVsbHB0ciwgJldlYktpdFZQ
OERlY29kZXJfQmFzZUNsYXNzIH0sCisgICAgJldlYktpdFZQOERlY29kZXJfVmlkZW9EZWNvZGVy
Q2xhc3MKK307CisKK09TU3RhdHVzIGNyZWF0ZVdlYktpdFZQOERlY29kZXIoRmlnVmlkZW9Db2Rl
Y1R5cGUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgVlRWaWRlb0RlY29kZXJSZWYqIGRlY29k
ZXJPdXQpCit7CisgICAgaWYgKCFkZWNvZGVyT3V0KSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJS
T1IpIDw8ICJWUDggZGVjb2RlciBjcmVhdGlvbiBmYWlsZWQsIG5vIGRlY29kZXIgb3V0cHV0IjsK
KyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBWVFZpZGVvRGVj
b2RlclJlZiBkZWNvZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGVycm9yID0gQ01EZXJpdmVkT2Jq
ZWN0Q3JlYXRlKGFsbG9jYXRvciwgJldlYktpdFZQOERlY29kZXJWVGFibGUuYmFzZSwgVlRWaWRl
b0RlY29kZXJHZXRDbGFzc0lEKCksIChDTUJhc2VPYmplY3RSZWYqKSZkZWNvZGVyKTsKKworICAg
IGlmICghZGVjb2RlcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29k
ZXIgY3JlYXRpb24gZmFpbGVkLCBDTURlcml2ZWRPYmplY3RDcmVhdGUgZmFpbGVkIHdpdGggZXJy
b3IgIiA8PCBlcnJvcjsKKyAgICAgICAgcmV0dXJuIGtWVEFsbG9jYXRpb25GYWlsZWRFcnI7Cisg
ICAgfQorCisgICAgaWYoZXJyb3IpIHsKKyAgICAgICAgQ0ZSZWxlYXNlKGRlY29kZXIpOworICAg
ICAgICBkZWNvZGVyID0gTlVMTDsKKyAgICB9CisgICAgKmRlY29kZXJPdXQgPSBkZWNvZGVyOwor
ICAgIHJldHVybiBlcnJvcjsKK30KKworT1NTdGF0dXMgaW52YWxpZGF0ZVZQOERlY29kZXIoQ01C
YXNlT2JqZWN0UmVmIGluc3RhbmNlKQoreworICAgIGF1dG8qIGRlY29kZXIgPSBzdGF0aWNfY2Fz
dDxXZWJLaXRWUDhEZWNvZGVyKj4oQ01CYXNlT2JqZWN0R2V0RGVyaXZlZFN0b3JhZ2UoaW5zdGFu
Y2UpKTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJW
UDggZGVjb2RlcjogaW52YWxpZGF0aW9uIGZhaWxlZCBhcyBpbnN0YW5jZSBoYXMgbm8gZGVjb2Rl
ciI7CisgICAgZWxzZSB7CisgICAgICAgIGRlY29kZXItPm1faW5zdGFuY2UgPSBudWxscHRyOwor
ICAgICAgICBkZWNvZGVyLT5tX3JlY2VpdmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJu
IG5vRXJyOworfQorCit2b2lkIGZpbmFsaXplVlA4RGVjb2RlcihDTUJhc2VPYmplY3RSZWYgaW5z
dGFuY2UpCit7CisgICAgaW52YWxpZGF0ZVZQOERlY29kZXIoaW5zdGFuY2UpOworfQorCitDRlN0
cmluZ1JlZiBjb3B5VlA4RGVjb2RlckRlYnVnRGVzY3JpcHRpb24oQ01CYXNlT2JqZWN0UmVmKQor
eworICAgIHJldHVybiBDRlNUUigiV2ViS2l0IFZQOCBkZWNvZGVyIik7Cit9CisKK1dlYktpdFZQ
OERlY29kZXIqIHdlYktpdFZQOERlY29kZXJGcm9tVlREZWNvZGVyKFZUVmlkZW9EZWNvZGVyUmVm
IGRlY29kZXIpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdFZQOERlY29kZXIqPihD
TUJhc2VPYmplY3RHZXREZXJpdmVkU3RvcmFnZShyZWludGVycHJldF9jYXN0PENNQmFzZU9iamVj
dFJlZj4oZGVjb2RlcikpKTsKK30KK09TU3RhdHVzIHN0YXJ0VlA4RGVjb2RlclNlc3Npb24oVlRW
aWRlb0RlY29kZXJSZWYgaW5zdGFuY2UsIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBzZXNzaW9uLCBD
TVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCit7CisgICAgYXV0
byogZGVjb2RlciA9IHdlYktpdFZQOERlY29kZXJGcm9tVlREZWNvZGVyKGluc3RhbmNlKTsKKyAg
ICBpZiAoIWRlY29kZXIpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNv
ZGVyOiBmYWlsZWQgdG8gZ2V0IGRlY29kZXIgZnJvbSBpbnN0YW5jZSB3aGlsZSBzdGFydGluZyI7
CisgICAgICAgIHJldHVybiBrVlRQYXJhbWV0ZXJFcnI7CisgICAgfQorCisgICAgZGVjb2Rlci0+
bV9pbnN0YW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGlidnB4VnA4RGVjb2Rlcj4oKTsKKyAgICBk
ZWNvZGVyLT5tX3JlY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXREZWNvZGVyUmVjZWl2
ZXI+KHNlc3Npb24pOworICAgIGRlY29kZXItPm1fcmVjZWl2ZXItPmluaXRpYWxpemVGcm9tRm9y
bWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24pOworCisgICAgZGVjb2Rlci0+bV9pbnN0
YW5jZS0+UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKGRlY29kZXItPm1fcmVjZWl2ZXIu
Z2V0KCkpOworCisgICAgVmlkZW9Db2RlYyBjb2RlYzsKKyAgICBhdXRvIGRpbWVuc2lvbnMgPSBD
TVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsK
KyAgICBjb2RlYy53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGg7CisgICAgY29kZWMuaGVpZ2h0ID0g
ZGltZW5zaW9ucy5oZWlnaHQ7CisKKyAgICBkZWNvZGVyLT5tX2luc3RhbmNlLT5Jbml0RGVjb2Rl
KCZjb2RlYywgQ3B1SW5mbzo6RGV0ZWN0TnVtYmVyT2ZDb3JlcygpKTsKKworICAgIHJldHVybiBu
b0VycjsKK30KKworc3RhdGljIE9TU3RhdHVzIGRlY29kZVZQOERlY29kZXJGcmFtZUZyb21Db250
aWd1b3VzQmxvY2soV2ViS2l0VlA4RGVjb2RlciYgZGVjb2RlciwgVlRWaWRlb0RlY29kZXJGcmFt
ZSBmcmFtZSwgQ01CbG9ja0J1ZmZlclJlZiBlbmNvZGVkQnVmZmVyKQoreworICAgIFJUQ19EQ0hF
Q0soQ01CbG9ja0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGVuY29kZWRCdWZmZXIsIDAsIDApKTsK
KworICAgIGF1dG8gc2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKGVuY29kZWRCdWZm
ZXIpOworICAgIGNoYXIqIGRhdGEgPSBudWxscHRyOworICAgIGlmIChhdXRvIGVycm9yID0gQ01C
bG9ja0J1ZmZlckdldERhdGFQb2ludGVyKGVuY29kZWRCdWZmZXIsIDAsIG51bGxwdHIsIG51bGxw
dHIsICZkYXRhKSkgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6
IENNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9y
OworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgUlRDX0RDSEVDSyghZGVjb2Rl
ci5tX3JlY2VpdmVyLT5jdXJyZW50RnJhbWUoKSk7CisgICAgZGVjb2Rlci5tX3JlY2VpdmVyLT5z
ZXRDdXJyZW50RnJhbWUoZnJhbWUpOworCisgICAgRW5jb2RlZEltYWdlIGltYWdlIHsgcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSksIHNpemUsIHNpemUgfTsKKyAgICAvLyBXZSBzZXQg
dGhvc2UgdmFsdWVzIGFzIFZQOERlY29kZXJJbXBsIGNoZWNrcyBmb3IgZ2V0dGluZyBhIGZ1bGwg
a2V5IGZyYW1lIGFzIGZpcnN0IGZyYW1lLgorICAgIGltYWdlLl9mcmFtZVR5cGUgPSBWaWRlb0Zy
YW1lVHlwZTo6a1ZpZGVvRnJhbWVLZXk7CisgICAgaW1hZ2UuX2NvbXBsZXRlRnJhbWUgPSB0cnVl
OworICAgIGF1dG8gZXJyb3IgPSBkZWNvZGVyLm1faW5zdGFuY2UtPkRlY29kZShpbWFnZSwgZmFs
c2UsIDApOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIGRlY29kZXIubV9yZWNlaXZl
ci0+ZGVjb2RlckZhaWxlZChlcnJvcik7CisKKyAgICBSVENfRENIRUNLKCFkZWNvZGVyLm1fcmVj
ZWl2ZXItPmN1cnJlbnRGcmFtZSgpKTsKKworICAgIHJldHVybiAwOworfQorCitPU1N0YXR1cyBk
ZWNvZGVWUDhEZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYgaW5zdGFuY2UsIFZUVmlkZW9E
ZWNvZGVyRnJhbWUgZnJhbWUsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgVlREZWNv
ZGVGcmFtZUZsYWdzLCBWVERlY29kZUluZm9GbGFncyopCit7CisgICAgYXV0byogZGVjb2RlciA9
IHdlYktpdFZQOERlY29kZXJGcm9tVlREZWNvZGVyKGluc3RhbmNlKTsKKyAgICBpZiAoIWRlY29k
ZXIgfHwgIWRlY29kZXItPm1faW5zdGFuY2UgfHwgIWRlY29kZXItPm1fcmVjZWl2ZXIpIHsKKyAg
ICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBmYWlsZWQgdG8gZ2V0IGRl
Y29kZXIgZnJvbSBpbnN0YW5jZSB3aGlsZSBkZWNvZGluZyI7CisgICAgICAgIHJldHVybiBrVlRQ
YXJhbWV0ZXJFcnI7CisgICAgfQorCisgICAgYXV0byBlbmNvZGVkQnVmZmVyID0gQ01TYW1wbGVC
dWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlcik7CisgICAgaWYgKCFlbmNvZGVkQnVmZmVy
KSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDggZGVjb2RlcjogZmFpbGVkIHRv
IGdldCBkYXRhIGJ1ZmZlciI7CisgICAgICAgIHJldHVybiBrVlRQYXJhbWV0ZXJFcnI7CisgICAg
fQorCisgICAgQ01CbG9ja0J1ZmZlclJlZiBjb250aWd1b3VzQnVmZmVyID0gbnVsbHB0cjsKKyAg
ICAvLyBNYWtlIHN1cmUgYmxvY2sgYnVmZmVyIGlzIGNvbnRpZ3VvdXMuCisgICAgaWYgKCFDTUJs
b2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoZW5jb2RlZEJ1ZmZlciwgMCwgMCkpIHsKKyAgICAg
ICAgYXV0byBzdGF0dXMgPSBDTUJsb2NrQnVmZmVyQ3JlYXRlQ29udGlndW91cyhudWxscHRyLCBl
bmNvZGVkQnVmZmVyLCBudWxscHRyLCBudWxscHRyLCAwLCAwLCAwLCAmY29udGlndW91c0J1ZmZl
cik7CisgICAgICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpIHsKKyAgICAgICAgICAgIFJUQ19MT0co
TFNfRVJST1IpIDw8ICJWUDggZGVjb2RlcjogZmFpbGVkIHRvIGNyZWF0ZSBjb250aWd1b3VzIGJs
b2NrIGJ1ZmZlciB3aXRoIGVycm9yICIgPDwgc3RhdHVzOworICAgICAgICAgICAgcmV0dXJuIGtW
VEFsbG9jYXRpb25GYWlsZWRFcnI7CisgICAgICAgIH0KKyAgICAgICAgZW5jb2RlZEJ1ZmZlciA9
IGNvbnRpZ3VvdXNCdWZmZXI7CisgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBkZWNvZGVWUDhE
ZWNvZGVyRnJhbWVGcm9tQ29udGlndW91c0Jsb2NrKCpkZWNvZGVyLCBmcmFtZSwgZW5jb2RlZEJ1
ZmZlcik7CisKKyAgICBpZiAoY29udGlndW91c0J1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNlKGNv
bnRpZ3VvdXNCdWZmZXIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRWUDhEZWNvZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjczMGI5NTZh
ZTVhNzcwNDM4ZjgwOGQ1MTUxMzdmMTg2MTg1OWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDhE
ZWNvZGVyLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2Ugd2VicnRjIHsKKwordm9pZCByZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAKaW5kZXgg
NDNhOGVjNzJkYmViOThhZWM0NDZiNzE5ODdjMzFkMzBlOGQ1Mzc1Zi4uODc1OWVkMWZiZTE5MWY1
YWQwMWIyNWU0NTg1Zjc2NDU5ZmRlMDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFZQOURlY29kZXIuY3BwCkBAIC0yNSwxNSArMjUsMTEgQEAKIAogI2luY2x1ZGUgIldl
YktpdFZQOURlY29kZXIuaCIKIAotI2luY2x1ZGUgIldlYktpdFV0aWxpdGllcy5oIgotI2luY2x1
ZGUgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KKyNpbmNsdWRlICJXZWJLaXREZWNvZGVy
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvdnA5L3Zw
OV9pbXBsLmgiCiAjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgogI2luY2x1ZGUgInN5c3Rl
bV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZvLmgiCiAKLSNpbmNsdWRlICJDTUJhc2VPYmplY3RT
UEkuaCIKLSNpbmNsdWRlICJWVFZpZGVvRGVjb2RlclNQSS5oIgotCiBuYW1lc3BhY2Ugd2VicnRj
IHsKIAogc3RhdGljIE9TU3RhdHVzIGNyZWF0ZVdlYktpdFZQOURlY29kZXIoRmlnVmlkZW9Db2Rl
Y1R5cGUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgVlRWaWRlb0RlY29kZXJSZWYqKTsKQEAg
LTQyLDM5ICszOCwxMSBAQCB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpCiAgICAgVlRS
ZWdpc3RlclZpZGVvRGVjb2RlcigndnAwOScsIGNyZWF0ZVdlYktpdFZQOURlY29kZXIpOwogfQog
Ci1jbGFzcyBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI7CiB0eXBlZGVmIHN0cnVjdCB7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFZQOURlY29kZXJJbXBsPiBtX2luc3RhbmNlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYktpdERlY29kZXJSZWNlaXZlcj4gbV9yZWNlaXZlcjsKIH0gV2ViS2l0VlA5
RGVjb2RlcjsKIAotY2xhc3MgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyIGZpbmFsIDogcHVibGlj
IERlY29kZWRJbWFnZUNhbGxiYWNrIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJLaXRWUDlE
ZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uKTsKLSAgICB+V2ViS2l0VlA5RGVj
b2RlclJlY2VpdmVyKCk7Ci0KLSAgICBWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50RnJh
bWUoVlRWaWRlb0RlY29kZXJGcmFtZSBjdXJyZW50RnJhbWUpIHsgbV9jdXJyZW50RnJhbWUgPSBj
dXJyZW50RnJhbWU7IH0KLSAgICBPU1N0YXR1cyBkZWNvZGVyRmFpbGVkKGludCBlcnJvcik7Ci0K
LSAgICB2b2lkIGluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlw
dGlvblJlZik7Ci0KLXByaXZhdGU6Ci0gICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmKSBm
aW5hbDsKLSAgICBpbnQzMl90IERlY29kZWQoVmlkZW9GcmFtZSYsIGludDY0X3QgZGVjb2RlX3Rp
bWVfbXMpIGZpbmFsOwotICAgIHZvaWQgRGVjb2RlZChWaWRlb0ZyYW1lJiwgYWJzbDo6b3B0aW9u
YWw8aW50MzJfdD4gZGVjb2RlX3RpbWVfbXMsIGFic2w6Om9wdGlvbmFsPHVpbnQ4X3Q+IHFwKSBm
aW5hbDsKLQotICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXplX3Qg
cGl4ZWxCdWZmZXJXaWR0aCwgc2l6ZV90IHBpeGVsQnVmZmVySGVpZ2h0LCBib29sIGlzMTBiaXQp
OwotCi0gICAgVlRWaWRlb0RlY29kZXJTZXNzaW9uIG1fc2Vzc2lvbiB7IG51bGxwdHIgfTsKLSAg
ICBWVFZpZGVvRGVjb2RlckZyYW1lIG1fY3VycmVudEZyYW1lIHsgbnVsbHB0ciB9OwotICAgIHNp
emVfdCBtX3BpeGVsQnVmZmVyV2lkdGggeyAwIH07Ci0gICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJI
ZWlnaHQgeyAwIH07Ci0gICAgYm9vbCBtX2lzMTBiaXQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9p
c0Z1bGxSYW5nZSB7IGZhbHNlIH07Ci0gICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgbV9waXhlbEJ1
ZmZlclBvb2wgeyBudWxscHRyIH07Ci19OwotCiBzdGF0aWMgT1NTdGF0dXMgaW52YWxpZGF0ZVZQ
OURlY29kZXIoQ01CYXNlT2JqZWN0UmVmKTsKIHN0YXRpYyB2b2lkIGZpbmFsaXplVlA5RGVjb2Rl
cihDTUJhc2VPYmplY3RSZWYpOwogc3RhdGljIENGU3RyaW5nUmVmIGNvcHlWUDlEZWNvZGVyRGVi
dWdEZXNjcmlwdGlvbihDTUJhc2VPYmplY3RSZWYpOwpAQCAtMTc1LDcgKzE0Myw3IEBAIE9TU3Rh
dHVzIHN0YXJ0VlA5RGVjb2RlclNlc3Npb24oVlRWaWRlb0RlY29kZXJSZWYgaW5zdGFuY2UsIFZU
VmlkZW9EZWNvZGVyU2Vzc2lvCiAgICAgfQogCiAgICAgZGVjb2Rlci0+bV9pbnN0YW5jZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VlA5RGVjb2RlckltcGw+KCk7Ci0gICAgZGVjb2Rlci0+bV9yZWNlaXZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyPihzZXNzaW9uKTsK
KyAgICBkZWNvZGVyLT5tX3JlY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXREZWNvZGVy
UmVjZWl2ZXI+KHNlc3Npb24pOwogICAgIGRlY29kZXItPm1fcmVjZWl2ZXItPmluaXRpYWxpemVG
cm9tRm9ybWF0RGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24pOwogCiAgICAgZGVjb2Rlci0+
bV9pbnN0YW5jZS0+UmVnaXN0ZXJEZWNvZGVDb21wbGV0ZUNhbGxiYWNrKGRlY29kZXItPm1fcmVj
ZWl2ZXIuZ2V0KCkpOwpAQCAtMjUwLDE2MSArMjE4LDQgQEAgT1NTdGF0dXMgZGVjb2RlVlA5RGVj
b2RlckZyYW1lKFZUVmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlckZyYW1l
IGYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1XZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6Oldl
YktpdFZQOURlY29kZXJSZWNlaXZlcihWVFZpZGVvRGVjb2RlclNlc3Npb24gc2Vzc2lvbikKLSAg
ICA6IG1fc2Vzc2lvbihzZXNzaW9uKQotewotfQotCi1XZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6
On5XZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIoKQotewotICAgIGlmIChtX3BpeGVsQnVmZmVyUG9v
bCkKLSAgICAgICAgQ0ZSZWxlYXNlKG1fcGl4ZWxCdWZmZXJQb29sKTsKLX0KLQotdm9pZCBXZWJL
aXRWUDlEZWNvZGVyUmVjZWl2ZXI6OmluaXRpYWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01G
b3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKLXsKLSAgICAvLyBDb3JlQW5p
bWF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBmdWxsLXBsYW5hciBZVVYsIHNvIHdlIG11c3QgY29udmVy
dCB0aGUgYnVmZmVycyBvdXRwdXQKLSAgICAvLyBieSBsaWJ2cHggdG8gYmktcGxhbmFyIFlVVi4g
Q3JlYXRlIHBpeGVsIGJ1ZmZlciBhdHRyaWJ1dGVzIGFuZCBnaXZlIHRob3NlIHRvIHRoZQotICAg
IC8vIGRlY29kZXIgc2Vzc2lvbiBmb3IgdXNlIGluIGNyZWF0aW5nIGl0cyBvd24gaW50ZXJuYWwg
Q1ZQaXhlbEJ1ZmZlclBvb2wsIHdoaWNoIHdlCi0gICAgLy8gd2lsbCB1c2UgcG9zdC1kZWNvZGUu
Ci0gICAgbV9pc0Z1bGxSYW5nZSA9IGZhbHNlOwotICAgIG1faXMxMGJpdCA9IGZhbHNlOwotCi0g
ICAgZG8gewotICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0
RXh0ZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbik7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9ucykK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIENGVHlwZVJlZiBleHRlbnNpb25BdG9tcyA9
IENGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbnMsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0
ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMpOwotICAgICAgICBpZiAoIWV4
dGVuc2lvbkF0b21zIHx8IENGR2V0VHlwZUlEKGV4dGVuc2lvbkF0b21zKSAhPSBDRkRpY3Rpb25h
cnlHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGF1dG8gY29uZmln
dXJhdGlvblJlY29yZCA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoKENGRGljdGlvbmFyeVJlZilleHRlbnNpb25BdG9tcywgQ0ZTVFIoInZwY0MiKSkpOwotICAg
ICAgICBpZiAoIWNvbmZpZ3VyYXRpb25SZWNvcmQgfHwgQ0ZHZXRUeXBlSUQoY29uZmlndXJhdGlv
blJlY29yZCkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplID0gQ0ZEYXRhR2V0TGVuZ3RoKGNvbmZp
Z3VyYXRpb25SZWNvcmQpOwotICAgICAgICBpZiAoY29uZmlndXJhdGlvblJlY29yZFNpemUgPCAx
MikKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29y
ZERhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKGNvbmZpZ3VyYXRpb25SZWNvcmQpOwotICAgICAgICBh
dXRvIGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgPSAqKGNvbmZpZ3VyYXRpb25SZWNvcmREYXRhICsg
Nik7Ci0KLSAgICAgICAgaWYgKChiaXREZXB0aENocm9tYUFuZFJhbmdlID4+IDQpID09IDEwKQot
ICAgICAgICAgICAgbV9pczEwYml0ID0gdHJ1ZTsKLQotICAgICAgICBpZiAoYml0RGVwdGhDaHJv
bWFBbmRSYW5nZSAmIDB4MSkKLSAgICAgICAgICAgIG1faXNGdWxsUmFuZ2UgPSB0cnVlOwotICAg
IH0gd2hpbGUgKGZhbHNlKTsKLX0KLQotQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgV2ViS2l0VlA5RGVj
b2RlclJlY2VpdmVyOjpwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHBpeGVsQnVmZmVyV2lkdGgsIHNp
emVfdCBwaXhlbEJ1ZmZlckhlaWdodCwgYm9vbCBpczEwYml0KQotewotICAgIGlmIChtX3BpeGVs
QnVmZmVyUG9vbCAmJiBtX3BpeGVsQnVmZmVyV2lkdGggPT0gcGl4ZWxCdWZmZXJXaWR0aCAmJiBt
X3BpeGVsQnVmZmVySGVpZ2h0ID09IHBpeGVsQnVmZmVySGVpZ2h0ICYmIG1faXMxMGJpdCA9PSBp
czEwYml0KQotICAgICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Ci0KLSAgICBPU1R5cGUg
cGl4ZWxGb3JtYXQ7Ci0gICAgaWYgKGlzMTBiaXQpCi0gICAgICAgIHBpeGVsRm9ybWF0ID0gbV9p
c0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJh
bmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJWaWRlb1JhbmdlOwot
ICAgIGVsc2UKLSAgICAgICAgcGl4ZWxGb3JtYXQgPSBtX2lzRnVsbFJhbmdlID8ga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlOwotCi0gICAgYXV0byBjcmVhdGVQaXhlbEZv
cm1hdEF0dHJpYnV0ZXMgPSBbXSAoT1NUeXBlIHBpeGVsRm9ybWF0LCBpbnQzMl90IGJvcmRlclBp
eGVscykgewotICAgICAgICBhdXRvIGNyZWF0ZU51bWJlciA9IFtdIChpbnQzMl90IGZvcm1hdCkg
LT4gQ0ZOdW1iZXJSZWYgewotICAgICAgICAgICAgcmV0dXJuIENGTnVtYmVyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZmb3JtYXQpOwotICAgICAgICB9
OwotICAgICAgICBhdXRvIGNmUGl4ZWxGb3JtYXRzID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgICAgIGF1
dG8gZm9ybWF0TnVtYmVyID0gY3JlYXRlTnVtYmVyKHBpeGVsRm9ybWF0KTsKLSAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGNmUGl4ZWxGb3JtYXRzLCBmb3JtYXROdW1iZXIpOwotICAgICAgICBD
RlJlbGVhc2UoZm9ybWF0TnVtYmVyKTsKLQotICAgICAgICBhdXRvIGJvcmRlclBpeGVsc1ZhbHVl
ID0gY3JlYXRlTnVtYmVyKDMyKTsKLQotICAgICAgICBjb25zdCB2b2lkKiBrZXlzW10gPSB7Ci0g
ICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwKLSAgICAgICAgICAg
IGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNMZWZ0S2V5LAotICAgICAgICAgICAga0NWUGl4
ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc1JpZ2h0S2V5LAotICAgICAgICAgICAga0NWUGl4ZWxCdWZm
ZXJFeHRlbmRlZFBpeGVsc1RvcEtleSwKLSAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5k
ZWRQaXhlbHNCb3R0b21LZXksCi0gICAgICAgIH07Ci0gICAgICAgIGNvbnN0IHZvaWQqIHZhbHVl
c1tdID0gewotICAgICAgICAgICAgY2ZQaXhlbEZvcm1hdHMsCi0gICAgICAgICAgICBib3JkZXJQ
aXhlbHNWYWx1ZSwKLSAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVlLAotICAgICAgICAgICAg
Ym9yZGVyUGl4ZWxzVmFsdWUsCi0gICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKLSAgICAg
ICAgfTsKLSAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgc3RkOjpzaXplKGtleXMpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
LSAgICAgICAgQ0ZSZWxlYXNlKGJvcmRlclBpeGVsc1ZhbHVlKTsKLSAgICAgICAgQ0ZSZWxlYXNl
KGNmUGl4ZWxGb3JtYXRzKTsKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Ci0gICAgfTsKLQot
ICAgIGF1dG8gcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzID0gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1
dGVzKHBpeGVsRm9ybWF0LCAzMik7Ci0gICAgVlREZWNvZGVyU2Vzc2lvblNldFBpeGVsQnVmZmVy
QXR0cmlidXRlcyhtX3Nlc3Npb24sIHBpeGVsQnVmZmVyQXR0cmlidXRlcyk7Ci0gICAgQ0ZSZWxl
YXNlKHBpeGVsQnVmZmVyQXR0cmlidXRlcyk7Ci0KLSAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wp
IHsKLSAgICAgICAgQ0ZSZWxlYXNlKG1fcGl4ZWxCdWZmZXJQb29sKTsKLSAgICAgICAgbV9waXhl
bEJ1ZmZlclBvb2wgPSBudWxscHRyOwotICAgIH0KLQotICAgIG1fcGl4ZWxCdWZmZXJQb29sID0g
VlREZWNvZGVyU2Vzc2lvbkdldFBpeGVsQnVmZmVyUG9vbChtX3Nlc3Npb24pOwotICAgIGlmICht
X3BpeGVsQnVmZmVyUG9vbCkKLSAgICAgICAgQ0ZSZXRhaW4obV9waXhlbEJ1ZmZlclBvb2wpOwot
Ci0gICAgbV9waXhlbEJ1ZmZlcldpZHRoID0gcGl4ZWxCdWZmZXJXaWR0aDsKLSAgICBtX3BpeGVs
QnVmZmVySGVpZ2h0ID0gcGl4ZWxCdWZmZXJIZWlnaHQ7Ci0gICAgbV9pczEwYml0ID0gaXMxMGJp
dDsKLQotICAgIHJldHVybiBtX3BpeGVsQnVmZmVyUG9vbDsKLX0KLQotT1NTdGF0dXMgV2ViS2l0
VlA5RGVjb2RlclJlY2VpdmVyOjpkZWNvZGVyRmFpbGVkKGludCBlcnJvcikKLXsKLSAgICBPU1N0
YXR1cyB2dEVycm9yID0ga1ZUVmlkZW9EZWNvZGVyQmFkRGF0YUVycjsKLSAgICBpZiAoZXJyb3Ig
PT0gV0VCUlRDX1ZJREVPX0NPREVDX05PX09VVFBVVCkKLSAgICAgICAgdnRFcnJvciA9IG5vRXJy
OwotICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19VTklOSVRJQUxJWkVE
KQotICAgICAgICB2dEVycm9yID0ga1ZUVmlkZW9EZWNvZGVyTWFsZnVuY3Rpb25FcnI7Ci0gICAg
ZWxzZSBpZiAoZXJyb3IgPT0gV0VCUlRDX1ZJREVPX0NPREVDX01FTU9SWSkKLSAgICAgICAgdnRF
cnJvciA9IGtWVEFsbG9jYXRpb25GYWlsZWRFcnI7Ci0gICAgVlREZWNvZGVyU2Vzc2lvbkVtaXRE
ZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwgdnRFcnJvciwgMCwgbnVsbHB0
cik7Ci0gICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOwotCi0gICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIlZQOSBkZWNvZGVyOiBkZWNvZGVyIGZhaWxlZCB3aXRoIGVycm9yICIgPDwgZXJyb3Ig
PDwgIiwgdnRFcnJvciAiIDw8IHZ0RXJyb3I7Ci0gICAgcmV0dXJuIHZ0RXJyb3I7Ci19Ci0KLWlu
dDMyX3QgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1l
KQotewotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwg
W3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgQnVmZmVyVHlwZSB0eXBlKSAtPiBD
VlBpeGVsQnVmZmVyUmVmIHsKLSAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0aGlzLT5w
aXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgdHlwZSA9PSBCdWZmZXJUeXBlOjpJMDEwKTsK
LSAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gbnVsbHB0cjsKLSAg
ICAgICAgaWYgKENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4ZWxCdWZmZXIoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbV9waXhlbEJ1ZmZlclBvb2wsICZwaXhlbEJ1ZmZlcikgPT0ga0NWUmV0dXJuU3Vj
Y2VzcykKLSAgICAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfSk7Ci0KLSAgICBWVERlY29kZXJTZXNzaW9uRW1pdERlY29kZWRGcmFtZSht
X3Nlc3Npb24sIG1fY3VycmVudEZyYW1lLCBwaXhlbEJ1ZmZlciA/IG5vRXJyIDogLTEsIDAsIHBp
eGVsQnVmZmVyKTsKLSAgICBtX2N1cnJlbnRGcmFtZSA9IG51bGxwdHI7Ci0gICAgaWYgKHBpeGVs
QnVmZmVyKQotICAgICAgICBDRlJlbGVhc2UocGl4ZWxCdWZmZXIpOwotICAgIHJldHVybiAwOwot
fQotCi1pbnQzMl90IFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1l
JiBmcmFtZSwgaW50NjRfdCkKLXsKLSAgICBEZWNvZGVkKGZyYW1lKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotdm9pZCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYg
ZnJhbWUsIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+LCBhYnNsOjpvcHRpb25hbDx1aW50OF90PikK
LXsKLSAgICBEZWNvZGVkKGZyYW1lKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGUxMDgwNDM5OTk2NDgzYWIzMzFhMjlkYWViZTA2NGYwZmQwZjNmZDMuLjQxYzNi
OTdhMzZmNmI0NjFmMDJiMmU5ZDA0YzhmODVlMzBhYzNkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM5MDksNiArMzkwOSwxMCBAQAogCQk1Q0ZENTM5MjFFNEJEM0EzMDA0
ODI5MDggLyogcm93X25lb242NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDRkQ1MzhBMUU0QkQzQTMwMDQ4MjkwOCAvKiByb3dfbmVvbjY0LmNjICov
OyB9OwogCQk1Q0ZENTM5MzFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVvbi5jYyBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRkQ1MzhCMUU0QkQzQTMw
MDQ4MjkwOCAvKiBzY2FsZV9uZW9uLmNjICovOyB9OwogCQk1Q0ZENTM5NDFFNEJEM0EzMDA0ODI5
MDggLyogc2NhbGVfbmVvbjY0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNGRDUzOEMxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb242NC5jYyAq
LzsgfTsKKwkJQ0QzODFGMjcyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzgxRjI1MjU4
MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggKi87IH07CisJCUNEMzgxRjI5MjU4
MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzgxRjI4MjU4MTU5MUYwMDc3REVDOCAvKiBX
ZWJLaXRWUDhEZWNvZGVyLmNwcCAqLzsgfTsKKwkJQ0QzODFGMkIyNTgxRkVCQTAwNzdERUM4IC8q
IFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyQTI1ODFGRUJBMDA3N0RFQzggLyogV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0QzODFGMkQyNTgxRkYwQjAwNzdERUM4IC8qIFdlYktp
dERlY29kZXJSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QzODFGMkMyNTgxRkYwQjAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNlaXZl
ci5oICovOyB9OwogCQlDREVCQjRCNjI0QzAxOUM0MDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIu
Y2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2
NDI0QzAxOTFBMDBBREJENDQgLyogdW5rbm93bl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI3
MjRDMDE5QzQwMEFEQkQ0NCAvKiBtYXN0ZXJfcGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NkYyNEMwMTkxQTAwQURCRDQ0IC8qIG1h
c3Rlcl9wYXJzZXIuY2MgKi87IH07CiAJCUNERUJCNEI4MjRDMDE5QzQwMEFEQkQ0NCAvKiBibG9j
a19wYXJzZXIuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVCQjQ3NjI0QzAxOTFBMDBBREJENDQgLyogYmxvY2tfcGFyc2VyLmNjICovOyB9OwpAQCAt
ODQzMiw2ICs4NDM2LDEwIEBACiAJCTVEN0M1OUM2MTIwOEM2OEIwMDFDODczRSAvKiBCYXNlLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0M1OUM3MTIwOEM2OEIwMDFDODczRSAvKiBE
ZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVi
dWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUI4OUI4
QTIyMUUwMDRDMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBT
REtWYXJpYW50LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM4MUYy
NTI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJLaXRWUDhEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEMzgxRjI4MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdFZQOERlY29kZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM4MUYyQTI1ODFGRUJBMDA3N0RF
QzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYktpdERlY29kZXJSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEMzgxRjJDMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVj
ZWl2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0RGVjb2RlclJlY2VpdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUJCMTE5MjRDMDE4NzQwMEFEQkQ0NCAvKiBsaWJ3ZWJt
LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hp
dmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYndlYm0uYTsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJQ0RFQkIxMUUyNEMwMTg5NjAwQURCRDQ0IC8qIGxp
YndlYm0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gbGlid2VibS54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkI0MDUyNEMwMTkxQTAwQURCRDQ0IC8qIHJlYWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSByZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwOTYyLDEwICsxMDk3MCwxNCBAQAogCQkJCTQxMkZGOTM1MjUzRDhGMEEwMDFERjAzNiAvKiBW
VFZpZGVvRGVjb2RlclNQSS5oICovLAogCQkJCTQxRTg0QkM5MjQzNEM0QTIwMEQzNEU0MSAvKiBX
ZWJLaXREZWNvZGVyLmggKi8sCiAJCQkJNDFFODRCQ0EyNDM0QzRBMzAwRDM0RTQxIC8qIFdlYktp
dERlY29kZXIubW0gKi8sCisJCQkJQ0QzODFGMkEyNTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERl
Y29kZXJSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0QzODFGMkMyNTgxRkYwQjAwNzdERUM4IC8qIFdl
YktpdERlY29kZXJSZWNlaXZlci5oICovLAogCQkJCTQxNTg2NDk2MjNCRTA1RTgwMEEwQTYxRSAv
KiBXZWJLaXRFbmNvZGVyLmggKi8sCiAJCQkJNDE1ODY0OTcyM0JFMDVFOTAwQTBBNjFFIC8qIFdl
YktpdEVuY29kZXIubW0gKi8sCiAJCQkJNDFFQ0VBQkIyMDY0MDNDMTAwOUQ1MTQxIC8qIFdlYktp
dFV0aWxpdGllcy5oICovLAogCQkJCTQxRUNFQUJEMjA2NDA0OTgwMDlENTE0MSAvKiBXZWJLaXRV
dGlsaXRpZXMubW0gKi8sCisJCQkJQ0QzODFGMjgyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQ
OERlY29kZXIuY3BwICovLAorCQkJCUNEMzgxRjI1MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRW
UDhEZWNvZGVyLmggKi8sCiAJCQkJNDE0MDM3QkEyNEFDNzZFOTAwQkNFOUIyIC8qIFdlYktpdFZQ
OURlY29kZXIuY3BwICovLAogCQkJCTQxNDAzN0I5MjRBQzc2RTkwMEJDRTlCMiAvKiBXZWJLaXRW
UDlEZWNvZGVyLmggKi8sCiAJCQkpOwpAQCAtMTc0OTYsOCArMTc1MDgsMTAgQEAKIAkJCQk1QzRC
NEM4MTFFNDMxRjlDMDAyNjUxQzggLyogd2F2X2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
NEI0Qzg0MUU0MzFGOUMwMDI2NTFDOCAvKiB3YXZfaGVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTMxQzE2MzIzNEI4OUUyMDAyOEE2MTUgLyogd2Vha19wdHIuaCBpbiBIZWFkZXJzICovLAor
CQkJCUNEMzgxRjJEMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxNTg2NDk4MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNv
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUVDRUFCQzIwNjQwM0MyMDA5RDUxNDEgLyogV2Vi
S2l0VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDM4MUYyNzI1ODE1OTFGMDA3N0RF
QzggLyogV2ViS2l0VlA4RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0MDM3QkIyNEFD
NzZFQTAwQkNFOUIyIC8qIFdlYktpdFZQOURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
REQ4Q0FCMUU0M0M2RjcwMDYyMUU5MiAvKiB3ZWJydGNfY25nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTQ1RTQ5MTFFRjg4RUY3MDBGQ0Y2RTYgLyogd2VicnRjX2xpYnl1di5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMDAzOSw4ICsyMDA1MywxMCBAQAogCQkJCTVDNEI0QzgzMUU0MzFGOUMwMDI2NTFD
OCAvKiB3YXZfaGVhZGVyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMUMwRjkyMzRCODlFMjAw
MjhBNjE1IC8qIHdlYWtfcHRyLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFODRCRDUyNDM3M0Y3
MjAwRDM0RTQxIC8qIFdlYktpdERlY29kZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDM4MUYy
QjI1ODFGRUJBMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxNTg2NDk5MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJLaXRFbmNvZGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFFQ0VBQkUyMDY0MDQ5ODAwOUQ1MTQxIC8qIFdlYktpdFV0aWxp
dGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEMzgxRjI5MjU4MTU5MUYwMDc3REVDOCAvKiBX
ZWJLaXRWUDhEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNDAzN0JDMjRBQzc2RUEw
MEJDRTlCMiAvKiBXZWJLaXRWUDlEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDREQ4
Q0FBMUU0M0M2RjcwMDYyMUU5MiAvKiB3ZWJydGNfY25nLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNERDgzNjcxRTQzMjVENTAwNjIxRTkyIC8qIHdlYnJ0Y19saWJ5dXYuY2MgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggNDllMzhmNWU3MzkyMWJkNTJmOTBl
YTczZGQ4Njg2N2U1MjE5ZDg5Zi4uNThlN2E5OWY0ZWQ5ZjUxMjE3MDgyYzE0MDI2YzgyYjQ2MTAx
NDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTg2NCw2ICs4NjQsMTYgQEAg
VXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOgogICAgIFdlYktpdDoKICAgICAg
IGRlZmF1bHQ6IHRydWUKIAorVlA4RGVjb2RlckVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVt
YW5SZWFkYWJsZU5hbWU6ICJWUDggZGVjb2RlciIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9u
OiAiRW5hYmxlIFZQOCBkZWNvZGVyIgorICB3ZWJjb3JlQmluZGluZzogbm9uZQorICBjb25kaXRp
b246IEVOQUJMRShWUDkpCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXQ6CisgICAgICBkZWZh
dWx0OiBXZWJLaXQ6OmRlZmF1bHRWUDhEZWNvZGVyRW5hYmxlZCgpCisKICMgRklYTUU6IElzIHRo
aXMgaW1wbGVtZW50ZWQgZm9yIFdlYktpdExlZ2FjeT8gSWYgbm90LCB0aGlzIHNob3VsZCBiZSBl
eGNsdWRlZCBmcm9tIFdlYktpdExlZ2FjeSBlbnRpcmVseS4KIFZQOURlY29kZXJFbmFibGVkOgog
ICB0eXBlOiBib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WUDlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5
VXRpbGl0aWVzLmNwcAppbmRleCAxNDA4NzQxYjgxMzMxMGQyN2Y0NjAwMDE4ZTMzMWE1MDRjNTQ0
MGJkLi40ZTI4MjI3MjE1MTdjM2JlNjg5M2UxOGM4MWM3YWY1YTJkYjg1Yjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKQEAgLTEy
NCwxMiArMTI0LDYgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKHVp
bnQ4X3QgbWF0cml4Q29lZmZpY2llbnRzKQogCiBPcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlv
blJlY29yZD4gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKIHsK
LSAgICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAndnAwOScgY29kZWMgc3RyaW5nIGlzIHNwZWNpZmll
ZCBpbiB0aGUgd2VibSBHaXRIdWIgcmVwbzoKLSAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3dl
Ym1wcm9qZWN0L3ZwOS1kYXNoL2Jsb2IvbWFzdGVyL1ZQQ29kZWNJU09NZWRpYUZpbGVGb3JtYXRC
aW5kaW5nLm1kI2NvZGVjcy1wYXJhbWV0ZXItc3RyaW5nPgotCi0gICAgLy8gInNhbXBsZSBlbnRy
eSA0Q0MsIHByb2ZpbGUsIGxldmVsLCBhbmQgYml0RGVwdGggYXJlIGFsbCBtYW5kYXRvcnkgZmll
bGRzLiBJZiBhbnkgb2YgdGhlc2UgZmllbGRzIGFyZSBlbXB0eSwgb3Igbm90Ci0gICAgLy8gd2l0
aGluIHRoZWlyIGFsbG93ZWQgcmFuZ2UsIHRoZSBwcm9jZXNzaW5nIGRldmljZSBTSEFMTCB0cmVh
dCBpdCBhcyBhbiBlcnJvci4iCi0KICAgICBhdXRvIGNvZGVjU3BsaXQgPSBjb2RlY1ZpZXcuc3Bs
aXQoJy4nKTsKICAgICBhdXRvIG5leHRFbGVtZW50ID0gY29kZWNTcGxpdC5iZWdpbigpOwogICAg
IGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQpAQCAtMTM3LDEyICsxMzEsMjQg
QEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFt
ZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcKIAogICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkIGNvbmZpZ3VyYXRpb247CiAKLSAgICAvLyBDb2RlYyBpZGVudGlmaWVyOiBsZWdhbCB2YWx1
ZXMgYXJlICd2cDA4JyBvciAndnAwOScuCiAgICAgY29uZmlndXJhdGlvbi5jb2RlY05hbWUgPSAo
Km5leHRFbGVtZW50KS50b1N0cmluZygpOworICAgICsrbmV4dEVsZW1lbnQ7CisKKyAgICAvLyBT
dXBwb3J0IHRoZSBsZWdhY3kgaWRlbnRpZmllcnMgKHdpdGggbm8gcGFyYW1ldGVycykgZm9yIFZQ
OCBhbmQgVlA5LgorICAgIGlmICgoY29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwOCIgfHwg
Y29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwOSIpICYmIG5leHRFbGVtZW50ID09IGNvZGVj
U3BsaXQuZW5kKCkpCisgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uOworCisgICAgLy8gVGhl
IGZvcm1hdCBvZiB0aGUgJ3ZwMDknIGNvZGVjIHN0cmluZyBpcyBzcGVjaWZpZWQgaW4gdGhlIHdl
Ym0gR2l0SHViIHJlcG86CisgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJtcHJvamVjdC92
cDktZGFzaC9ibG9iL21hc3Rlci9WUENvZGVjSVNPTWVkaWFGaWxlRm9ybWF0QmluZGluZy5tZCNj
b2RlY3MtcGFyYW1ldGVyLXN0cmluZz4KKworICAgIC8vICJzYW1wbGUgZW50cnkgNENDLCBwcm9m
aWxlLCBsZXZlbCwgYW5kIGJpdERlcHRoIGFyZSBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gSWYgYW55
IG9mIHRoZXNlIGZpZWxkcyBhcmUgZW1wdHksIG9yIG5vdAorICAgIC8vIHdpdGhpbiB0aGVpciBh
bGxvd2VkIHJhbmdlLCB0aGUgcHJvY2Vzc2luZyBkZXZpY2UgU0hBTEwgdHJlYXQgaXQgYXMgYW4g
ZXJyb3IuIgorCisgICAgLy8gQ29kZWMgaWRlbnRpZmllcjogbGVnYWwgdmFsdWVzIGFyZSAndnAw
OCcgb3IgJ3ZwMDknLgogICAgIGlmIChjb25maWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAidnAwOCIg
JiYgY29uZmlndXJhdGlvbi5jb2RlY05hbWUgIT0gInZwMDkiKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCi0gICAgaWYgKCsrbmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkK
KyAgICBpZiAobmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAogICAgIC8vIEZpcnN0IGVsZW1lbnQ6IHByb2ZpbGUuIExlZ2FsIHZh
bHVlcyBhcmUgMC0zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA5Yjhm
YzY3YmU3MWEwZWViZGVkOTM5ZjE2MzI4ZDUwOWYwMGYyNDc3Li4yNWJlM2M5Y2Q1NWVhNzQyZjZl
ZTIyMTVkNWFjYjJkNjhmMWIwMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtNDcyLDcgKzQ3Miw3IEBAIE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKGNvCiAgICAgYXV0byBz
cGxpdFJlc3VsdHMgPSBTdHJpbmdWaWV3KGNvZGVjc1BhcmFtZXRlcikuc3BsaXQoJywnKTsKICAg
ICBmb3IgKGF1dG8gc3BsaXQgOiBzcGxpdFJlc3VsdHMpIHsKICNpZiBFTkFCTEUoVlA5KQotICAg
ICAgICBpZiAoc3BsaXQuc3RhcnRzV2l0aCgidnAwOSIpKSB7CisgICAgICAgIGlmIChzcGxpdC5z
dGFydHNXaXRoKCJ2cDA5IikgfHwgc3BsaXQuc3RhcnRzV2l0aCgidnAwOCIpIHx8IGVxdWFsKHNw
bGl0LCAidnA4IikgfHwgZXF1YWwoc3BsaXQsICJ2cDkiKSkgewogCiAgICAgICAgICAgICBpZiAo
IWlzVlA5RGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBNZWRpYVBs
YXllckVudW1zOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwpAQCAtNzg5LDYgKzc4OSwx
OCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVs
ZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKIAogICAgIGF1dG8gdHJhY2tUeXBlID0gdHJhY2tFbnRyeS50cmFj
a190eXBlLnZhbHVlKCk7CisgICAgU3RyaW5nIGNvZGVjSWQgeyB0cmFja0VudHJ5LmNvZGVjX2lk
LnZhbHVlKCkuZGF0YSgpLCAodW5zaWduZWQpdHJhY2tFbnRyeS5jb2RlY19pZC52YWx1ZSgpLmxl
bmd0aCgpIH07CisKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvICYmICFz
dXBwb3J0ZWRWaWRlb0NvZGVjcygpLmNvbnRhaW5zKGNvZGVjSWQpKSB7CisgICAgICAgIEVSUk9S
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgdW5zdXBwb3J0ZWQg
dmlkZW8gY29kZWMgSUQgXCIiLCBjb2RlY0lkLCAiXCIsIGJhaWxpbmciKTsKKyAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpVbnN1cHBvcnRlZFZpZGVvQ29kZWMp
KTsKKyAgICB9CisKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvICYmICFz
dXBwb3J0ZWRBdWRpb0NvZGVjcygpLmNvbnRhaW5zKGNvZGVjSWQpKSB7CisgICAgICAgIEVSUk9S
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiRW5jb3VudGVyZWQgdW5zdXBwb3J0ZWQg
YXVkaW8gY29kZWMgSUQgXCIiLCBjb2RlY0lkLCAiXCIsIGJhaWxpbmciKTsKKyAgICAgICAgcmV0
dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpVbnN1cHBvcnRlZEF1ZGlvQ29kZWMp
KTsKKyAgICB9CisKICAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQogICAg
ICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudC0+dmlkZW9UcmFja3MuYXBwZW5kKHsgTWVkaWFE
ZXNjcmlwdGlvbldlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSwgVmlkZW9UcmFj
a1ByaXZhdGVXZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSkgfSk7CiAgICAgZWxz
ZSBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKQpAQCAtODAwLDYgKzgxMiwxMCBA
QCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFja0VudHJ5KGNvbnN0IEVsZW1l
bnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbgogICAgICAgICBtX3RyYWNrcy5hcHBlbmQoVmlkZW9U
cmFja0RhdGE6OmNyZWF0ZShDb2RlY1R5cGU6OlZQOSwgdHJhY2tFbnRyeSwgKnRoaXMpKTsKICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiAgICAgfQorICAgIGlm
IChjb2RlY1N0cmluZyA9PSAiVl9WUDgiICYmIGlzVlA4RGVjb2RlckF2YWlsYWJsZSgpKSB7Cisg
ICAgICAgIG1fdHJhY2tzLmFwcGVuZChWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlKENvZGVjVHlwZTo6
VlA4LCB0cmFja0VudHJ5LCAqdGhpcykpOworICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWT1JCSVMpCkBAIC04
ODYsNyArOTAyLDYgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxv
Y2tHcm91cEVuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEKICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KIAotCiB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZGVy
KiByZWFkZXIsIHVpbnQ2NF90KiBieXRlc1JlbWFpbmluZykKIHsKICAgICBBU1NFUlQocmVhZGVy
KTsKQEAgLTkxMiw2ICs5MjcsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25GcmFtZShjb25zdCBGcmFtZU1ldGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogICAgIH0KIAog
ICAgIHN3aXRjaCAodHJhY2tEYXRhLT5jb2RlYygpKSB7CisgICAgY2FzZSBDb2RlY1R5cGU6OlZQ
ODoKICAgICBjYXNlIENvZGVjVHlwZTo6VlA5OgogICAgIGNhc2UgQ29kZWNUeXBlOjpWb3JiaXM6
CiAgICAgY2FzZSBDb2RlY1R5cGU6Ok9wdXM6CkBAIC0xMDAzLDIzICsxMDE5LDM4IEBAIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZl
cihjb25zdCBDTVRpbWUmIHByCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1f
aGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2Vn
bWVudFNpemVBdFBvc2l0aW9uKSkgewotICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJ
QkxFKCJQYXJzZVVuY29tcHJlc3NlZEhlYWRlciBmYWlsZWQiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBib29sIGlzS2V5ID0gZmFsc2U7CisgICAgUmV0YWluUHRyPENNRm9ybWF0RGVz
Y3JpcHRpb25SZWY+IGZvcm1hdERlc2NyaXB0aW9uOworICAgIGlmIChjb2RlYygpID09IENvZGVj
VHlwZTo6VlA5KSB7CisgICAgICAgIGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNz
ZWRIZWFkZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKQorICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gT25seSB1cGRhdGUgdGhlIGZvcm1hdCBkZXNjcmlwdGlv
biB3aGVuIHRoZSBoZWFkZXIgaW5kaWNhdGVzIHRoYXQgdGhlIHNhbXBsZSBpcwotICAgIC8vIGEg
a2V5LWZyYW1lLCBvdGhlcndpc2UgY29sb3IgaW5mb3JtYXRpb24gd2lsbCBub3QgYmUgcGFyc2Vk
LgotICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygpOwotICAgIGlmIChtX2hlYWRlclBhcnNl
ci5rZXkoKSkgewotICAgICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlRm9ybWF0
RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKG1faGVhZGVyUGFyc2VyLCB0cmFjay52aWRl
by52YWx1ZSgpLmNvbG91cik7Ci0gICAgICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24pIHsKLSAg
ICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoImZhaWxlZCB0byBjcmVhdGUg
Zm9ybWF0IGRlc2NyaXB0aW9uIGZyb20gVlA5IGhlYWRlciIpOworICAgICAgICBpZiAobV9oZWFk
ZXJQYXJzZXIua2V5KCkpIHsKKyAgICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKKyAgICAgICAgICAg
IGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlI
ZWFkZXJQYXJzZXIobV9oZWFkZXJQYXJzZXIsIHRyYWNrKCkudmlkZW8udmFsdWUoKS5jb2xvdXIp
OworICAgICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICAgICAgICAg
IFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoImZhaWxlZCB0byBjcmVhdGUgZm9ybWF0IGRl
c2NyaXB0aW9uIGZyb20gVlBYIGhlYWRlciIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldEZvcm1hdERlc2NyaXB0aW9uKFdURk1vdmUoZm9y
bWF0RGVzY3JpcHRpb24pKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoY29kZWMoKSA9PSBD
b2RlY1R5cGU6OlZQOCkgeworICAgICAgICBhdXRvIGhlYWRlciA9IHBhcnNlVlA4RnJhbWVIZWFk
ZXIoYmxvY2tCdWZmZXJEYXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pOworICAgICAgICBpZiAo
IWhlYWRlcikKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaGVhZGVyLT5rZXlm
cmFtZSkgeworICAgICAgICAgICAgaXNLZXkgPSB0cnVlOworICAgICAgICAgICAgYXV0byBmb3Jt
YXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcigqaGVh
ZGVyLCB0cmFjaygpLnZpZGVvLnZhbHVlKCkuY29sb3VyKTsKKyAgICAgICAgICAgIGlmICghZm9y
bWF0RGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BP
U1NJQkxFKCJmYWlsZWQgdG8gY3JlYXRlIGZvcm1hdCBkZXNjcmlwdGlvbiBmcm9tIFZQWCBoZWFk
ZXIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBzZXRGb3JtYXREZXNjcmlwdGlvbihXVEZNb3ZlKGZvcm1hdERlc2NyaXB0aW9uKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShmb3JtYXREZXNjcmlw
dGlvbikpOwogICAgIH0KIAorICAgIGF1dG8gdHJhY2sgPSB0aGlzLT50cmFjaygpOwogICAgIC8v
IEZJWE1FOiBBIGJsb2NrIG1pZ2h0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBmcmFtZSwgYnV0IG9u
bHkgdGhpcyBmcmFtZSBoYXMgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZlcmAuCiAg
ICAgLy8gQmVsb3cgd2UgY3JlYXRlIHNhbXBsZSBidWZmZXJzIGZvciBlYWNoIGZyYW1lLCBlYWNo
IHdpdGggdGhlIGJsb2NrJ3MgdGltZWNvZGUgYW5kIGBudW1fZnJhbWVzYCB2YWx1ZS4KICAgICAv
LyBTaG91bGRuJ3Qgd2UgY3JlYXRlIGp1c3Qgb25lIHNhbXBsZSBidWZmZXIgb25jZSBhbGwgdGhl
IGJsb2NrJ3MgZnJhbWVzIGhhdmUgYmVlbiByZWFkIGludG8gYGN1cnJlbnRCbG9ja0J1ZmZlcmA/
CkBAIC0xMDMxLDcgKzEwNjIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVv
VHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIoY29uc3QgQ01UaW1lJiBwcgogICAgIENNU2Ft
cGxlQnVmZmVyUmVmIHJhd1NhbXBsZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgc2l6ZV90IGZyYW1l
U2l6ZSA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKG1fY3VycmVudEJsb2NrQnVmZmVyLmdl
dCgpKTsKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nID0geyBDTVRpbWVNYWtlKGR1cmF0
aW9uLCBwcmVzZW50YXRpb25UaW1lLnRpbWVzY2FsZSksIHByZXNlbnRhdGlvblRpbWUsIHByZXNl
bnRhdGlvblRpbWUgfTsKLSAgICBlcnIgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCBmb3JtYXREZXNjcmlw
dGlvbigpLmdldCgpLCBzYW1wbGVDb3VudCwgMSwgJnRpbWluZywgMSwgJmZyYW1lU2l6ZSwgJnJh
d1NhbXBsZUJ1ZmZlcik7CisgICAgZXJyID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgdGhpcy0+Zm9ybWF0
RGVzY3JpcHRpb24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0aW1pbmcsIDEsICZmcmFtZVNp
emUsICZyYXdTYW1wbGVCdWZmZXIpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgUEFSU0VSX0xP
R19FUlJPUl9JRl9QT1NTSUJMRSgiQ01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeSBmYWlsZWQgd2l0
aCBlcnJvciIsIGVycik7CiAgICAgICAgIHJldHVybjsKQEAgLTExNzMsNiArMTIwNCwxOCBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9u
KGZsb2F0IGR1cmF0aW9uKQogICAgIG1fbWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24gPSBkdXJh
dGlvbjsKIH0KIAorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpzdXBwb3J0ZWRWaWRlb0NvZGVjcygpCit7CisgICAgc3RhdGljIGF1dG8gY29kZWNzID0gbWFr
ZU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4oeyAiVl9WUDgiLCAiVl9WUDkiIH0pOwor
ICAgIHJldHVybiBjb2RlY3M7Cit9CisKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkQXVkaW9Db2RlY3MoKQoreworICAgIHN0YXRpYyBhdXRv
IGNvZGVjcyA9IG1ha2VOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+KHsgfSk7CisgICAg
cmV0dXJuIGNvZGVjczsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCAxZDk1ZmE4MjcwMTI1MzNkNWUwZTNh
ZjY1YTdkYjQzMzg0ZDJkZTY4Li41MTI3NjI0OWM0MTljY2VkMjkwM2E1MjA3N2M3M2QxZTcwYTEx
YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC04OSw2ICs4OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgSW52YWxpZERvY1R5cGUsCiAgICAgICAgIEludmFsaWRJbml0U2VnbWVu
dCwKICAgICAgICAgUmVjZWl2ZWRFYm1sSW5zaWRlU2VnbWVudCwKKyAgICAgICAgVW5zdXBwb3J0
ZWRWaWRlb0NvZGVjLAorICAgICAgICBVbnN1cHBvcnRlZEF1ZGlvQ29kZWMsCiAgICAgfTsKIAog
ICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKQEAgLTEwNiw2ICsxMDgsNyBAQCBwdWJs
aWM6CiAKICAgICBlbnVtIGNsYXNzIENvZGVjVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBVbnN1
cHBvcnRlZCwKKyAgICAgICAgVlA4LAogICAgICAgICBWUDksCiAgICAgICAgIFZvcmJpcywKICAg
ICAgICAgT3B1cywKQEAgLTIyMCw2ICsyMjMsOSBAQCBwcml2YXRlOgogCiAgICAgVHJhY2tEYXRh
KiB0cmFja0RhdGFGb3JUcmFja051bWJlcih1aW50NjRfdCk7CiAKKyAgICBzdGF0aWMgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWRWaWRlb0NvZGVjcygpOworICAgIHN0YXRpYyBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZEF1ZGlvQ29kZWNzKCk7CisKICAgICAvLyB3ZWJt
OjpDYWxsYmFjawogICAgIHdlYm06OlN0YXR1cyBPbkVsZW1lbnRCZWdpbihjb25zdCB3ZWJtOjpF
bGVtZW50TWV0YWRhdGEmLCB3ZWJtOjpBY3Rpb24qKSBmaW5hbDsKICAgICB3ZWJtOjpTdGF0dXMg
T25FbGVtZW50RW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVz
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxp
dGllc0NvY29hLmgKaW5kZXggNWNjZDM1Nzc5MzE0NDk5ZTc2NDA1OGYyNDI4ZDJhNmZlYjUwM2U0
NC4uMmYwMDA2YjQxZDE3MWNhNzFmYzg0ZWUxYmE3MWFkNGNkZDEwZWM1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5oCkBAIC00NiwxMyArNDYsMzEgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQg
c2V0T3ZlcnJpZGVWUDlTY3JlZW5TaXplQW5kU2NhbGVGb3JUZXN0aW5nKGZsb2F0IHdpZHQKIFdF
QkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlc2V0T3ZlcnJpZGVWUDlTY3JlZW5TaXplQW5kU2Nh
bGVGb3JUZXN0aW5nKCk7CiAKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyV2Vi
S2l0VlA5RGVjb2RlcigpOworV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKCk7CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdpc3RlclN1cHBs
ZW1lbnRhbFZQOURlY29kZXIoKTsKIGV4dGVybiBib29sIGlzVlA5RGVjb2RlckF2YWlsYWJsZSgp
OworZXh0ZXJuIGJvb2wgaXNWUDhEZWNvZGVyQXZhaWxhYmxlKCk7CiBleHRlcm4gYm9vbCBpc1ZQ
Q29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkJik7CiBleHRlcm4gYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZCYsIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYsIGNvbnN0IFZpZGVvQ29uZmlndXJh
dGlvbiYpOwogCiBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0
RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6OlZwOUhlYWRl
clBhcnNlciYsIGNvbnN0IHdlYm06OkVsZW1lbnQ8d2VibTo6Q29sb3VyPiYpOwogCitzdHJ1Y3Qg
VlA4RnJhbWVIZWFkZXIgeworICAgIGJvb2wga2V5ZnJhbWUgeyBmYWxzZSB9OworICAgIHVpbnQ4
X3QgdmVyc2lvbiB7IDAgfTsKKyAgICBib29sIHNob3dGcmFtZSB7IHRydWUgfTsKKyAgICB1aW50
MzJfdCBwYXJ0aXRpb25TaXplIHsgMCB9OworICAgIHVpbnQ4X3QgaG9yaXpvbnRhbFNjYWxlIHsg
MCB9OworICAgIHVpbnQxNl90IHdpZHRoIHsgMCB9OworICAgIHVpbnQ4X3QgdmVydGljYWxTY2Fs
ZSB7IDAgfTsKKyAgICB1aW50MTZfdCBoZWlnaHQ7CisgICAgYm9vbCBjb2xvclNwYWNlIHsgZmFs
c2UgfTsKKyAgICBib29sIG5lZWRzQ2xhbXBpbmcgeyBmYWxzZSB9OworfTsKKworT3B0aW9uYWw8
VlA4RnJhbWVIZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBz
aXplX3QgZnJhbWVTaXplKTsKK1JldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVh
dGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoY29uc3QgVlA4RnJhbWVIZWFkZXImLCBj
b25zdCB3ZWJtOjpFbGVtZW50PHdlYm06OkNvbG91cj4mKTsKKwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGll
c0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRp
bGl0aWVzQ29jb2EubW0KaW5kZXggNDEyMjUwZjk3NDdhODk5MjZhZWU1YjkyODFmMWE0MTNiYzJl
OGMxMy4uNjYzNTc2OTQzZDE0YWIxNjU5Mzc5MjRhNjE3ZDQwY2Y4MTEzODUzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRp
bGl0aWVzQ29jb2EubW0KQEAgLTEwNyw2ICsxMDcsMTEgQEAgdm9pZCByZWdpc3RlcldlYktpdFZQ
OURlY29kZXIoKQogICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3RlcldlYktpdFZQOURlY29k
ZXIoKTsKIH0KIAordm9pZCByZWdpc3RlcldlYktpdFZQOERlY29kZXIoKQoreworICAgIExpYldl
YlJUQ1Byb3ZpZGVyOjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKK30KKwogdm9pZCByZWdp
c3RlclN1cHBsZW1lbnRhbFZQOURlY29kZXIoKQogewogICAgIGlmICghVmlkZW9Ub29sYm94TGli
cmFyeSh0cnVlKSkKQEAgLTEyMyw3ICsxMjgsMTQgQEAgYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFi
bGUoKQogICAgIHJldHVybiBub0VyciA9PSBWVFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlcklu
c3RhbmNlKGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0
ciwgbnVsbHB0cik7CiB9CiAKLWJvb2wgaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBv
cnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uKQorYm9v
bCBpc1ZQOERlY29kZXJBdmFpbGFibGUoKQoreworICAgIGlmICghVmlkZW9Ub29sYm94TGlicmFy
eSh0cnVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBub0VyciA9PSBWVFNl
bGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3RhbmNlKCd2cDA4Jywga0NGQWxsb2NhdG9yRGVm
YXVsdCwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3N0YXRpYyBib29sIGlzVlA5Q29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2Rl
Y0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFpc1ZQOURlY29kZXJBdmFpbGFibGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc1LDYgKzE4NywzNyBAQCBib29sIGlzVlBDb2RlY0Nv
bmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNv
ZGVjQ29uZgogICAgIHJldHVybiBoYXM0a1NjcmVlbjsKIH0KIAorc3RhdGljIGJvb2wgaXNWUDhD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNv
cmQmIGNvZGVjQ29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAoIWlzVlA4RGVjb2RlckF2YWlsYWJs
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWUDggZGVjb2RlciBvbmx5IHN1
cHBvcnRzIFByb2ZpbGUgMDsKKyAgICBpZiAoY29kZWNDb25maWd1cmF0aW9uLnByb2ZpbGUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFZQOCBkZWNvZGVyIG9ubHkgc3VwcG9ydHMg
NDIwIGNocm9tYSBzdWJzYW1wbGluZy4KKyAgICBpZiAoY29kZWNDb25maWd1cmF0aW9uLmNocm9t
YVN1YnNhbXBsaW5nID4gVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1YnNhbXBs
aW5nXzQyMF9Db2xvY2F0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFZQOCBk
ZWNvZGVyIG9ubHkgc3VwcG9ydHMgOC1iaXQgY29sb3I6CisgICAgaWYgKGNvZGVjQ29uZmlndXJh
dGlvbi5iaXREZXB0aCA+IDgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIGlzVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAo
Y29kZWNDb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAidnAwOCIgfHwgY29kZWNDb25maWd1cmF0
aW9uLmNvZGVjTmFtZSA9PSAidnA4IikKKyAgICAgICAgcmV0dXJuIGlzVlA4Q29kZWNDb25maWd1
cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbik7CisKKyAgICBpZiAoY29k
ZWNDb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAidnAwOSIgfHwgY29kZWNDb25maWd1cmF0aW9u
LmNvZGVjTmFtZSA9PSAidnA5IikKKyAgICAgICAgcmV0dXJuIGlzVlA5Q29kZWNDb25maWd1cmF0
aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbik7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIGJvb2wgdmFsaWRhdGVWUFBhcmFtZXRlcnMoVlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiBpbmZvLCBj
b25zdCBWaWRlb0NvbmZpZ3VyYXRpb24mIHZpZGVvQ29uZmlndXJhdGlvbikKIHsKICAgICBpZiAo
IWlzVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9u
KSkKQEAgLTQzNSw3ICs0NzgsNyBAQCBzdGF0aWMgdWludDhfdCBjb252ZXJ0U3Vic2FtcGxpbmdY
WVRvQ2hyb21hU3Vic2FtcGxpbmcodWludDY0X3QgeCwgdWludDY0X3QgeSkKICAgICByZXR1cm4g
VlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1YnNhbXBsaW5nXzQyMF9Db2xvY2F0
ZWQ7CiB9CiAKLVJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXRE
ZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVy
UGFyc2VyJiBwYXJzZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCitzdGF0
aWMgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0
aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkJiByZWNvcmQsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogewogICAg
IC8vIFJlZjogIlZQIENvZGVjIElTTyBNZWRpYSBGaWxlIEZvcm1hdCBCaW5kaW5nLCB2MS4wLCAy
MDE3LTAzLTMxIgogICAgIC8vIDxodHRwczovL3d3dy53ZWJtcHJvamVjdC5vcmcvdnA5L21wNC8+
CkBAIC00NjQsMzUgKzUwNyw2IEBAIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBj
cmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uCiAgICAgLy8gRklY
TUU6IENvbnZlcnQgZXhpc3Rpbmcgc3RydWN0IHRvIGFuIElTT0JveCBhbmQgcmVwbGFjZSB0aGUg
d3JpdGluZyBjb2RlIGJlbG93CiAgICAgLy8gd2l0aCBhIHN1YmNsYXNzIG9mIElTT0Z1bGxCb3gu
CiAKLSAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCByZWNvcmQ7Ci0KLSAgICByZWNvcmQu
cHJvZmlsZSA9IHBhcnNlci5wcm9maWxlKCk7Ci0gICAgLy8gQ29yZU1lZGlhIGRvZXMgbmF0IGNh
cmUgYWJvdXQgdGhlIFZQOSBjb2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEuMCBoZXJl
OgotICAgIHJlY29yZC5sZXZlbCA9IDEwOwotICAgIHJlY29yZC5iaXREZXB0aCA9IHBhcnNlci5i
aXRfZGVwdGgoKTsKLSAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gcGFyc2VyLmNvbG9y
X3JhbmdlKCkgPyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0
aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7Ci0gICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29u
dmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHBhcnNlci5zdWJzYW1wbGluZ194
KCksIHBhcnNlci5zdWJzYW1wbGluZ195KCkpOwotICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9
IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsKLSAgICByZWNvcmQu
dHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3Rl
cmlzdGljczo6VW5zcGVjaWZpZWQ7Ci0gICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IFZQ
Q29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQ7Ci0KLSAgICAvLyBD
b250YWluZXIgY29sb3IgdmFsdWVzIGNhbiBvdmVycmlkZSBwZXItc2FtcGxlIG9uZXM6Ci0gICAg
aWYgKGNvbG9yLmlzX3ByZXNlbnQoKSkgewotICAgICAgICBhdXRvJiBjb2xvclZhbHVlID0gY29s
b3IudmFsdWUoKTsKLSAgICAgICAgaWYgKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3gu
aXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kuaXNfcHJlc2Vu
dCgpKQotICAgICAgICAgICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNh
bXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5n
X3gudmFsdWUoKSwgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS52YWx1ZSgpKTsKLSAg
ICAgICAgaWYgKGNvbG9yVmFsdWUucmFuZ2UuaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUucmFu
Z2UudmFsdWUoKSAhPSBSYW5nZTo6a1Vuc3BlY2lmaWVkKQotICAgICAgICAgICAgcmVjb3JkLnZp
ZGVvRnVsbFJhbmdlRmxhZyA9IGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSA9PSBSYW5nZTo6a0Z1
bGwgPyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFu
Z2U6OlZpZGVvUmFuZ2U7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwu
aXNfcHJlc2VudCgpKQotICAgICAgICAgICAgcmVjb3JkLmJpdERlcHRoID0gY29sb3JWYWx1ZS5i
aXRzX3Blcl9jaGFubmVsLnZhbHVlKCk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLnRyYW5zZmVy
X2NoYXJhY3RlcmlzdGljcy5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQudHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MgPSBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyhjb2xv
clZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNv
bG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICBy
ZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gY29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKGNv
bG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGNvbG9y
VmFsdWUucHJpbWFyaWVzLmlzX3ByZXNlbnQoKSkKLSAgICAgICAgICAgIHJlY29yZC5jb2xvclBy
aW1hcmllcyA9IGNvbnZlcnRUb0NvbG9yUHJpbWFyaWVzKGNvbG9yVmFsdWUucHJpbWFyaWVzLnZh
bHVlKCkpOwotICAgIH0KLQogICAgIGNvbnN0ZXhwciBzaXplX3QgVlBDb2RlY0NvbmZpZ3VyYXRp
b25Db250ZW50c1NpemUgPSAxMjsKIAogICAgIHVpbnQzMl90IHZlcnNpb25BbmRGbGFncyA9IDEg
PDwgMjQ7CkBAIC01NDEsMTEgKzU1NSwxNDIgQEAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRp
b25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb24KICAg
ICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBleHRlbnNpb25zS2V5cy5kYXRhKCksIGV4dGVuc2lvbnNWYWx1ZXMuZGF0YSgp
LCBleHRlbnNpb25zS2V5cy5zaXplKCksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIENNVmlkZW9Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgaWYgKG5vRXJy
ICE9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
Q01WaWRlb0NvZGVjVHlwZV9WUDksIHBhcnNlci53aWR0aCgpLCBwYXJzZXIuaGVpZ2h0KCksIGV4
dGVuc2lvbnMuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvbikpCisgICAgQ01WaWRlb0NvZGVjVHlw
ZSBjb2RlYyA9IHJlY29yZC5jb2RlY05hbWUgPT0gInZwMDkiID8ga0NNVmlkZW9Db2RlY1R5cGVf
VlA5IDogJ3ZwMDgnOworICAgIGlmIChub0VyciAhPSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25D
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29kZWMsIHdpZHRoLCBoZWlnaHQsIGV4dGVuc2lv
bnMuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJldHVybiBhZG9wdENGKGZvcm1hdERlc2NyaXB0aW9uKTsKIH0KIAorUmV0YWluUHRyPENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRl
clBhcnNlcihjb25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQYXJzZXImIHBhcnNlciwgY29uc3Qg
d2VibTo6RWxlbWVudDxDb2xvdXI+JiBjb2xvcikKK3sKKyAgICBWUENvZGVjQ29uZmlndXJhdGlv
blJlY29yZCByZWNvcmQ7CisKKyAgICByZWNvcmQuY29kZWNOYW1lID0gInZwMDkiOworICAgIHJl
Y29yZC5wcm9maWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKKyAgICAvLyBDb3JlTWVkaWEgZG9lcyBu
YXQgY2FyZSBhYm91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNvZGUgdG8gTGV2ZWwgMS4w
IGhlcmU6CisgICAgcmVjb3JkLmxldmVsID0gMTA7CisgICAgcmVjb3JkLmJpdERlcHRoID0gcGFy
c2VyLmJpdF9kZXB0aCgpOworICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBwYXJzZXIu
Y29sb3JfcmFuZ2UoKSA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZp
Z3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcg
PSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcocGFyc2VyLnN1YnNhbXBs
aW5nX3goKSwgcGFyc2VyLnN1YnNhbXBsaW5nX3koKSk7CisgICAgcmVjb3JkLmNvbG9yUHJpbWFy
aWVzID0gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVkOworICAgIHJl
Y29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IFZQQ29uZmlndXJhdGlvblRyYW5zZmVyQ2hh
cmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZDsKKyAgICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRz
ID0gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZDsKKworICAg
IC8vIENvbnRhaW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRlIHBlci1zYW1wbGUgb25lczoK
KyAgICBpZiAoY29sb3IuaXNfcHJlc2VudCgpKSB7CisgICAgICAgIGF1dG8mIGNvbG9yVmFsdWUg
PSBjb2xvci52YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxp
bmdfeC5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS5pc19w
cmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252ZXJ0
U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2Ft
cGxpbmdfeC52YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LnZhbHVlKCkp
OworICAgICAgICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1
ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQpCisgICAgICAgICAgICByZWNv
cmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpID09IFJhbmdl
OjprRnVsbCA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3VyYXRp
b25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUuYml0c19wZXJfY2hh
bm5lbC5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuYml0RGVwdGggPSBjb2xvclZh
bHVlLmJpdHNfcGVyX2NoYW5uZWwudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUudHJh
bnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC50
cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
KGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZhbHVlKCkpOworICAgICAgICBp
ZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAg
ICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0VG9NYXRyaXhDb2VmZmljaWVu
dHMoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVlKCkpOworICAgICAgICBpZiAo
Y29sb3JWYWx1ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmNv
bG9yUHJpbWFyaWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMoY29sb3JWYWx1ZS5wcmltYXJp
ZXMudmFsdWUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9u
RnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKHJlY29yZCwgcGFyc2VyLndpZHRoKCksIHBh
cnNlci5oZWlnaHQoKSk7Cit9CisKK09wdGlvbmFsPFZQOEZyYW1lSGVhZGVyPiBwYXJzZVZQOEZy
YW1lSGVhZGVyKHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICAv
LyBWUDggZnJhbWUgaGVhZGVycyBhcmUgZGVmaW5lZCBpbiBSRkMgNjM4NjogPGh0dHBzOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM2Mzg2Pi4KKworICAgIC8vIEJhaWwgaWYgdGhlIGhlYWRlciBp
cyBiZWxvdyBhIG1pbmltdW0gc2l6ZQorICAgIGlmIChmcmFtZVNpemUgPCAxMSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFZQOEZyYW1lSGVhZGVyIGhlYWRlcjsKKyAgICBz
aXplX3QgaGVhZGVyU2l6ZSA9IDExOworCisgICAgYXV0byB2aWV3ID0gSlNDOjpEYXRhVmlldzo6
Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZnJhbWVEYXRhLCBoZWFkZXJTaXplKSwgMCwgaGVh
ZGVyU2l6ZSk7CisgICAgYm9vbCBzdGF0dXMgPSB0cnVlOworCisgICAgYXV0byB1bmNvbXByZXNz
ZWRDaHVuayA9IHZpZXctPmdldDx1aW50MzJfdD4oMCwgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYg
KCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBoZWFkZXIua2V5
ZnJhbWUgPSB1bmNvbXByZXNzZWRDaHVuayAmIDB4ODAwMDAwMDA7CisgICAgaGVhZGVyLnZlcnNp
b24gPSAodW5jb21wcmVzc2VkQ2h1bmsgPj4gMjgpICYgMHg3OworICAgIGhlYWRlci5zaG93RnJh
bWUgPSB1bmNvbXByZXNzZWRDaHVuayAmIDB4ODAwMDAwMDsKKyAgICBoZWFkZXIucGFydGl0aW9u
U2l6ZSA9ICh1bmNvbXByZXNzZWRDaHVuayA+PiA4KSAmIDB4N0ZGRkY7CisKKyAgICBpZiAoIWhl
YWRlci5rZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuIGhlYWRlcjsKKworICAgIGF1dG8gc3RhcnRD
b2RlMCA9IHZpZXctPmdldDx1aW50OF90PigzLCB0cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAoIXN0
YXR1cyB8fCBzdGFydENvZGUwICE9IDB4OWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBhdXRvIHN0YXJ0Q29kZTEgPSB2aWV3LT5nZXQ8dWludDhfdD4oNCwgdHJ1ZSwgJnN0
YXR1cyk7CisgICAgaWYgKCFzdGF0dXMgfHwgc3RhcnRDb2RlMSAhPSAweDAxKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBzdGFydENvZGUyID0gdmlldy0+Z2V0PHVp
bnQ4X3Q+KDUsIHRydWUsICZzdGF0dXMpOworICAgIGlmICghc3RhdHVzIHx8IHN0YXJ0Q29kZTIg
IT0gMHgyYSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaG9yaXpv
bnRhbEFuZFdpZHRoRmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDYsIHRydWUsICZzdGF0dXMp
OworICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
aGVhZGVyLmhvcml6b250YWxTY2FsZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGhvcml6b250YWxB
bmRXaWR0aEZpZWxkID4+IDE0KTsKKyAgICBoZWFkZXIud2lkdGggPSBzdGF0aWNfY2FzdDx1aW50
MTZfdD4oaG9yaXpvbnRhbEFuZFdpZHRoRmllbGQgJiAweDNGRkYpOworCisgICAgYXV0byB2ZXJ0
aWNhbEFuZEhlaWdodEZpZWxkID0gdmlldy0+Z2V0PHVpbnQxNl90Pig4LCB0cnVlLCAmc3RhdHVz
KTsKKyAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IGhlYWRlci52ZXJ0aWNhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmVydGljYWxBbmRI
ZWlnaHRGaWVsZCA+PiAxNCk7CisgICAgaGVhZGVyLmhlaWdodCA9IHN0YXRpY19jYXN0PHVpbnQx
Nl90Pih2ZXJ0aWNhbEFuZEhlaWdodEZpZWxkICYgMHgzRkZGKTsKKworICAgIGF1dG8gY29sb3JT
cGFjZUFuZENsYW1waW5nRmllbGQgPSB2aWV3LT5nZXQ8dWludDhfdD4oMTAsIHRydWUsICZzdGF0
dXMpOworICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgaGVhZGVyLmNvbG9yU3BhY2UgPSBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCAmIDB4ODA7
CisgICAgaGVhZGVyLm5lZWRzQ2xhbXBpbmcgPSBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCAm
IDB4NDA7CisKKyAgICByZXR1cm4gaGVhZGVyOworfQorCitSZXRhaW5QdHI8Q01Gb3JtYXREZXNj
cmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA4SGVhZGVyKGNvbnN0IFZQ
OEZyYW1lSGVhZGVyJiBoZWFkZXIsIGNvbnN0IHdlYm06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3Ip
Cit7CisgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOworICAgIHJlY29yZC5j
b2RlY05hbWUgPSAidnAwOCI7CisgICAgcmVjb3JkLnByb2ZpbGUgPSAwOworICAgIHJlY29yZC5s
ZXZlbCA9IDEwOworICAgIHJlY29yZC5iaXREZXB0aCA9IDg7CisgICAgcmVjb3JkLnZpZGVvRnVs
bFJhbmdlRmxhZyA9IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2U7CisgICAgcmVjb3Jk
LmNocm9tYVN1YnNhbXBsaW5nID0gVlBDb25maWd1cmF0aW9uQ2hyb21hU3Vic2FtcGxpbmc6OlN1
YnNhbXBsaW5nXzQyMF9Db2xvY2F0ZWQ7CisgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gaGVh
ZGVyLmNvbG9yU3BhY2UgPyBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6VW5zcGVjaWZp
ZWQgOiBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6QlRfNjAxXzc7CisgICAgcmVjb3Jk
LnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gIGhlYWRlci5jb2xvclNwYWNlID8gVlBDb25maWd1
cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkIDogVlBDb25maWd1cmF0
aW9uVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M6OkJUXzYwMV83OworICAgIHJlY29yZC5tYXRyaXhD
b2VmZmljaWVudHMgPSBoZWFkZXIuY29sb3JTcGFjZSA/IFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6VW5zcGVjaWZpZWQgOiBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVu
dHM6OkJUXzYwMV83OworCisgICAgLy8gQ29udGFpbmVyIGNvbG9yIHZhbHVlcyBjYW4gb3ZlcnJp
ZGUgcGVyLXNhbXBsZSBvbmVzOgorICAgIGlmIChjb2xvci5pc19wcmVzZW50KCkpIHsKKyAgICAg
ICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIGlmIChjb2xvclZh
bHVlLmNocm9tYV9zdWJzYW1wbGluZ194LmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLmNocm9t
YV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5jaHJvbWFT
dWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhjb2xv
clZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194LnZhbHVlKCksIGNvbG9yVmFsdWUuY2hyb21hX3N1
YnNhbXBsaW5nX3kudmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnJhbmdlLmlzX3By
ZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgIT0gUmFuZ2U6OmtVbnNwZWNpZmll
ZCkKKyAgICAgICAgICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBjb2xvclZhbHVlLnJh
bmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxsID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxS
YW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOworICAgICAgICBpZiAoY29s
b3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29y
ZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC52YWx1ZSgpOworICAgICAg
ICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MuaXNfcHJlc2VudCgpKQor
ICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gY29udmVydFRvVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3Mu
dmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMuaXNf
cHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IGNvbnZl
cnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMudmFs
dWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnByaW1hcmllcy5pc19wcmVzZW50KCkpCisg
ICAgICAgICAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9Db2xvclByaW1hcmll
cyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1ZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gY3Jl
YXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQocmVjb3Jk
LCBoZWFkZXIud2lkdGgsIGhlYWRlci5oZWlnaHQpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggMjE5ODg3
ZmE4MWUyYmFkYTkzNWIyMjRiMWI3MGM3ZTExOTY4ZWU0YS4uY2EwMDkyMWRjNDYxZThlYmJlYmFm
YzIxZGM1N2I3ZDczYmJmYzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgK
QEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgd2ViUlRDQXZhaWxh
YmxlKCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCk7CisgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7CiAgICAgc3RhdGljIHZvaWQg
c2V0SDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QWN0aXZlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29j
b2EuY3BwCmluZGV4IDRhMzJkMWZkYTc4ODNhOGNkYWUxYTBlMzg4YjI1MjZhOGMzNDM1MGUuLmU2
OGY5MTYwZWYxODRiYjgzMjRmYjk4ZTJhMzAzOTNhZWYyYWQ5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAgQUxMT1df
VU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXREZWNvZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RW5jb2Rlci5o
PgogQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECisjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VlA4RGVjb2Rlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOURlY29kZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9kYXJ3aW4vV2Vha0xpbmtpbmcuaD4KQEAgLTk5LDYgKzEwMCwxMyBAQCB2b2lkIExpYldlYlJU
Q1Byb3ZpZGVyOjpyZWdpc3RlcldlYktpdFZQOURlY29kZXIoKQogICAgIGlmICh3ZWJSVENBdmFp
bGFibGUoKSkKICAgICAgICAgd2VicnRjOjpyZWdpc3RlcldlYktpdFZQOURlY29kZXIoKTsKIH0K
Kwordm9pZCBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCkKK3sK
KyAgICBpZiAod2ViUlRDQXZhaWxhYmxlKCkpCisgICAgICAgIHdlYnJ0Yzo6cmVnaXN0ZXJXZWJL
aXRWUDhEZWNvZGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNDhiNzRlYWU4MDFjNjI0ZDEyMTczMTA5
NDkwODBlZGJhNjM0MDY5MC4uNWM0Y2EyNWQ0ZGFhN2Q1ODEzMTE3MGM5NzIwM2Y0MDZlYmIxZGJh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNTM4LDkgKzUzOCw5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dXBkYXRlQ2FwdHVyZUFjY2Vzcyhib29sIGFsbG93QXVkaW9DYXB0dXJlLCBi
b29sCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9v
bCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciwgYm9vbCBz
aG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKIHsK
LSAgICBtX2dwdVByb2Nlc3MtPmVuYWJsZVZQOURlY29kZXJzKHNob3VsZEVuYWJsZVZQOURlY29k
ZXIsIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CisgICAgbV9ncHVQcm9jZXNzLT5lbmFibGVW
UDlEZWNvZGVycyhzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBzaG91bGRFbmFibGVWUDlEZWNvZGVy
LCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGEy
OGM4ZmY1ZjZjMDY0YmVlYjNiODZjNmVhNTRjM2U0N2I0YWY5ZGYuLjRmMmQ0NGZmYjU1MGFhNmRl
ODEwYjliZjk1MjYyMDdkNTc5ZGI0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYmKTsKIAogI2lmIEVOQUJMRShWUDkp
Ci0gICAgdm9pZCBlbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIs
IGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKKyAgICB2b2lkIGVuYWJsZVZQOURlY29k
ZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNv
ZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CiAjZW5kaWYKIAogI2lmIFVTRShB
VURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5ZDU0ZTE2NDU5
NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmLi44ZmMwZWZhYzkzMjE4MjIyYmIwYmM3YzIx
YWFiOTE5ZTUzYTk3MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzgsNyAr
MzgsNyBAQCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0
Y2hNZXNzYWdlIHsKICAgICBFbnN1cmVNZWRpYVNlc3Npb25IZWxwZXIoKQogI2VuZGlmCiAjaWYg
RU5BQkxFKFZQOSkKLSAgICBFbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOURl
Y29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQorICAgIEVuYWJsZVZQOURlY29k
ZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNv
ZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5kZXggZTNkNTZhODdjN2RkZWFlZjAwYTZk
MTcyMDhkYjhhZTFlMjI5MTBkYi4uYzNhMzYxOWY2N2VhYjRiNGRlMjNlMTBmZDRjOTgwYjdhNDU5
ZmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtMjkyLDEy
ICsyOTIsMTggQEAgV29ya1F1ZXVlJiBHUFVQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3NRdWV1ZSgp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCi12b2lkIEdQVVByb2Nlc3M6OmVuYWJsZVZQOURl
Y29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlT
V0RlY29kZXIpCit2b2lkIEdQVVByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxk
RW5hYmxlVlA4RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3Vs
ZEVuYWJsZVZQOVNXRGVjb2RlcikKIHsKICAgICBpZiAoc2hvdWxkRW5hYmxlVlA5RGVjb2RlciAm
JiAhbV9lbmFibGVWUDlEZWNvZGVyKSB7CiAgICAgICAgIG1fZW5hYmxlVlA5RGVjb2RlciA9IHRy
dWU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFdlYkNvcmU6OnJlZ2lzdGVyU3VwcGxl
bWVudGFsVlA5RGVjb2RlcigpOworI2VuZGlmCisgICAgfQorICAgIGlmIChzaG91bGRFbmFibGVW
UDhEZWNvZGVyICYmICFtX2VuYWJsZVZQOERlY29kZXIpIHsKKyAgICAgICAgbV9lbmFibGVWUDhE
ZWNvZGVyID0gdHJ1ZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgV2ViQ29yZTo6cmVn
aXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7CiAjZW5kaWYKICAgICB9CiAgICAgaWYgKHNob3VsZEVu
YWJsZVZQOVNXRGVjb2RlciAmJiAhbV9lbmFibGVWUDlTV0RlY29kZXIpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5oCmluZGV4IGI2ZWE4MTgzY2U2NTFlNDhkMTE3ZTI0N2I1N2Zi
MDU4NzkxYzI2OWQuLmJlYTU2MDNjMzY0OGI3NzVhZmFlZTBiOTAwM2I5MmUyMDY2Nzg0YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaApAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWUDkpCi0gICAgdm9pZCBlbmFibGVWUDlEZWNvZGVy
cyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyKTsKKyAgICB2b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVj
b2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNX
RGVjb2Rlcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTE0OCw2ICsxNDgsNyBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFu
YWdlcj4gbV9hdWRpb1Nlc3Npb25NYW5hZ2VyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZQOSkKKyAg
ICBib29sIG1fZW5hYmxlVlA4RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQ
OURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlTV0RlY29kZXIgeyBmYWxz
ZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IGFhMTdiOGFjMDlkNDEwNjExNzJlMmQ3MmI3NmM3ODNlMzYy
NzY2NGMuLjkxNTVjMTVmNmFlNGEzODk4ZjY4NzhjMjBlM2YyNzNhYzU5OTk0Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBA
IC0xNjIsNiArMTYyLDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBlbmNv
ZGVyIDw8IHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzOwogI2VuZGlmCisgICAgZW5jb2Rl
ciA8PCBzaG91bGRFbmFibGVWUDhEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxl
VlA5RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC01MjcsNiArNTI4LDkgQEAgT3B0aW9uYWw8
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKaW5kZXggM2NiY2VkMTE5OGU3YWFmMDMzZGQ2ZWE1ZTNhMDQ5ZDIwYmRhMTVj
Ni4uMWQxNTUwYzA2ZTM2M2VlYTdiZDRmY2JiNjdjYmE0ZGNkMDg3ODQ0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjMzLDYg
KzIzMyw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgYm9vbCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzcyB7IGZhbHNlIH07
CiAjZW5kaWYKKyAgICBib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIgeyBmYWxzZSB9OwogICAg
IGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRF
bmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRW
YWx1ZXMuY3BwCmluZGV4IGNjZDMzY2MwMmE3MjI0ODhhZWUxMmIzMjVlNGNjZDkzZmIxZTA3ZWIu
LjEwYTczZDUzMmU4OThkNDk3MTFlNTNiNjQyZWI5OTdmYWU1OWYzYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNwcApAQCAt
Mjc4LDYgKzI3OCwxNSBAQCBib29sIGRlZmF1bHRXZWJYUkVuYWJsZWQoKQogCiAjaWYgRU5BQkxF
KFZQOSkKIAorYm9vbCBkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQoKQoreworI2lmIEhBVkUoU1lT
VEVNX0ZFQVRVUkVfRkxBR1MpCisgICAgcmV0dXJuIGlzRmVhdHVyZUZsYWdFbmFibGVkKCJ2cDhf
ZGVjb2RlciIpOworI2VuZGlmCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgZGVmYXVs
dFZQOURlY29kZXJFbmFibGVkKCkKIHsKICNpZiBIQVZFKFNZU1RFTV9GRUFUVVJFX0ZMQUdTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMu
aAppbmRleCBkMDlkNDM5MzkzNzAwNGQzZTEwYjliOTY2ZjhlMzA2YjBhZjg5NThjLi4yZmM3ZDhl
ZDEyNTRkMzQ2NzVkMWUyZThmOWFhMDBkZjUwMDUzYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaApAQCAtMTAwLDYgKzEwMCw3
IEBAIGJvb2wgZGVmYXVsdFdlYlhSRW5hYmxlZCgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5
KQorYm9vbCBkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFZQOURlY29k
ZXJFbmFibGVkKCk7CiBib29sIGRlZmF1bHRWUDlTV0RlY29kZXJFbmFibGVkT25CYXR0ZXJ5KCk7
CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDFmNzM2NGY2ZWY0YWY4OTE0MGEzOTQ3MmExZDI3MWZlNWVjNzFhYjUu
LjQ1NjU2ZDU0ZmRmOGVhMTE0ZjViNWI4ZjM3MjczNTdkZGY5NWJjYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzk5Niw2ICs3OTk2LDcgQEAgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmIHByb2MKIAogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2Rl
ciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2RlckVuYWJsZWQoKTsKICNpZiBFTkFCTEUoVlA5KSAm
JiBQTEFURk9STShDT0NPQSkKKyAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIg
PSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAgICAgcGFyYW1ldGVycy5zaG91
bGRFbmFibGVWUDlTV0RlY29kZXIgPSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCkg
JiYgKCFXZWJDb3JlOjpzeXN0ZW1IYXNCYXR0ZXJ5KCkgfHwgcHJlZmVyZW5jZXMoKS52cDlTV0Rl
Y29kZXJFbmFibGVkT25CYXR0ZXJ5KCkpOwogI2VuZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRD
YXB0dXJlRGlzcGxheUluVUlQcm9jZXNzID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNvbmZp
Z3VyYXRpb24oKS5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDExZmE3MGYyY2U5YjQzMzUxZTUzYjlhMWYzZjczZmNhNTI4ZDc0YTIuLmEyOTMwN2Y3MGI2
ZWRmN2Y4NDkzNmVkYTZkYmNmYjhkYjNhNmQwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xODUsMTIgKzE4
NSwxMyBAQCB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlUmVtb3RlQ29tbWFu
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQwogdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6dXBkYXRlUGFyYW1ldGVycyhjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewogI2lmIEVOQUJMRShWUDkpCi0gICAgaWYgKG1fZW5hYmxlVlA5RGVjb2RlciA9
PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYgbV9lbmFibGVWUDlTV0RlY29k
ZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCisgICAgaWYgKG1fZW5h
YmxlVlA4RGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIgJiYgbV9l
bmFibGVWUDlEZWNvZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciAmJiBt
X2VuYWJsZVZQOVNXRGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2Rl
cikKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9lbmFibGVWUDlEZWNvZGVyID0gcGFyYW1ldGVy
cy5zaG91bGRFbmFibGVWUDhEZWNvZGVyOwogICAgIG1fZW5hYmxlVlA5RGVjb2RlciA9IHBhcmFt
ZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcjsKICAgICBtX2VuYWJsZVZQOVNXRGVjb2RlciA9
IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyOwotICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFbmFibGVWUDlEZWNvZGVy
cyhwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIsIHBhcmFtZXRlcnMuc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyKSwgeyB9KTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RW5hYmxlVlA5RGVjb2RlcnMocGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDhEZWNvZGVyLCBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIs
IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKSwgeyB9KTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggMmEwNGM3NGY3ZmI2Mzc3MWJhZGZiNTYzNmQzNzU2ODU4Y2IzMTdhMC4uZmY5
OTI2NWFkNmJkMjJkMzBkZmE1ZjcxMzU1MzA0NjQ2NTY3YzhjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtODIsNiAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQYXJhbWV0ZXJzKGNvbnN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmKTsKIAogI2lmIEVOQUJMRShWUDkpCisgICAgYm9vbCBpc1ZQOERl
Y29kZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVWUDhEZWNvZGVyOyB9CiAgICAg
Ym9vbCBpc1ZQOURlY29kZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVWUDlEZWNv
ZGVyOyB9CiAgICAgYm9vbCBpc1ZQU1dEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5hYmxlVlA5U1dEZWNvZGVyOyB9CiAjZW5kaWYKQEAgLTEyMyw2ICsxMjQsNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcj4gbV9hdWRpb1Nv
dXJjZVByb3ZpZGVyTWFuYWdlcjsKICNlbmRpZgogI2lmIEVOQUJMRShWUDkpCisgICAgYm9vbCBt
X2VuYWJsZVZQOERlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlEZWNvZGVy
IHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA3OTEzYWUyMTYxYzdmNWEwNTY5MGRjOTc0ZjQ3MmEyZWU4NzkxZWQ0Li44MjIwN2FjOGQ1MWM5
ODU3MTkzMzZhYzZmNTI0NDUzN2EwOWY0OTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODE5LDYgKzgxOSw5IEBAIFdlYlBhZ2U6OldlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKQogICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVWUDlEZWNvZGVyKCk7CiAKKyAgICBp
ZiAocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyKQorICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbmFibGVWUDhTV0RlY29kZXIoKTsKKwogICAgIGlmIChwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5hYmxlVlA5U1dEZWNvZGVyKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCA0Y2EwOTdhMGJiODUxMzQyODBlZjQyZGRhZjZlODk5ZjAxMGFh
ZjkyLi43OGI0MDkzMDIxZDgzMWIxNGEyMTQ2NjhkMTk5NjhhOTgxNWIxZmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTgzLDYgKzE5ODMsMTcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVyKCkKICNlbmRpZgogfQogCit2b2lkIFdlYlBy
b2Nlc3M6OmVuYWJsZVZQOFNXRGVjb2RlcigpCit7CisgICAgaWYgKG1fdnA5U1dEZWNvZGVyRW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV92cDhTV0RlY29kZXJFbmFibGVkID0gdHJ1
ZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXZWJDb3JlOjpyZWdpc3RlcldlYktpdFZQOERl
Y29kZXIoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVZQOVNXRGVjb2Rl
cigpCiB7CiAgICAgaWYgKG1fdnA5U1dEZWNvZGVyRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IGZkYjU2ZDc5ZGYyMWZlOGNhMTJlODkxNmU5NzUxZWQ5NjI4
YjIxMjEuLjMxYWJkNGY1OGE5YTgzZjY3NDgyZWQyZDc2YjA0MDlkMWM4YmFhZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzU5LDYgKzM1OSw3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShWUDkpCiAgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVyKCk7CisgICAgdm9p
ZCBlbmFibGVWUDhTV0RlY29kZXIoKTsKICAgICB2b2lkIGVuYWJsZVZQOVNXRGVjb2RlcigpOwog
I2VuZGlmCiAKQEAgLTcwNiw2ICs3MDcsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZQOSkK
ICAgICBib29sIG1fdnA5RGVjb2RlckVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV92cDhT
V0RlY29kZXJFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fdnA5U1dEZWNvZGVyRW5hYmxl
ZCB7IGZhbHNlIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwYWU5ZmE5YWZkZDQzMTBhODVmNDQ4NTg3
NmE1MTE1YTQ1ZTY1M2QuLmUxOWVmMWI4MDczNGU0Mzg0MjhhOGYzNWQ0ZTUzNmVkZWUzZmE0YzUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50YWwgVlA4IHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTcz
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWJpZ3N1
ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1i
aWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMTEtMDkgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm9uLWZ1bGxzY3JlZW4gcGFnZSBj
b250ZW50cyB2aXNpYmxlIHdoZW4gcm90YXRpbmcgZGV2aWNlIGR1cmluZyBlbGVtZW50IGZ1bGxz
Y3JlZW4gcHJlc2VudGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhl
MDMzMzk2ZGQwYzE1YWI1NTIyYTdhMTdiYTc0OTc0MzdkMDk3OTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgaW4g
J2VuZGVkJyBzdGF0ZS4KK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIGVtcHR5IHR5
cGUKK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIG51bGwKK1BBU1MgVGVzdCBhZGRT
b3VyY2VCdWZmZXIoKSB3aXRoIHVuc3VwcG9ydGVkIHR5cGUKK0ZBSUwgVGVzdCBhZGRTb3VyY2VC
dWZmZXIoKSB3aXRoIFZvcmJpcyBhbmQgVlA4IGFzc2VydF90cnVlOiB2aWRlby93ZWJtO2NvZGVj
cz0idnA4LHZvcmJpcyIgaXMgc3VwcG9ydGVkIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlM
IFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBWb3JiaXMgYW5kIFZQOCBpbiBzZXBhcmF0ZSBT
b3VyY2VCdWZmZXJzIGFzc2VydF90cnVlOiBhdWRpby93ZWJtO2NvZGVjcz0idm9yYmlzIiBpcyBz
dXBwb3J0ZWQgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZm
ZXIoKSB2aWRlbyBvbmx5CitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgYXVkaW8gb25seQor
UEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggQUFDIGFuZCBILjI2NAorUEFTUyBUZXN0
IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggQUFDIGFuZCBILjI2NCBpbiBzZXBhcmF0ZSBTb3VyY2VC
dWZmZXJzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1iaWdzdXIvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtaW52
YWxpZC1jb2RlYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3Vy
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWludmFsaWQtY29kZWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZTJkNTgxZmY5MDY4NjZl
OWNlYTdhYzliYzYyMzViMjFmN2Q4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWludmFsaWQtY29kZWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorCitQQVNTIFRlc3QgYW4gTVA0IHdpdGggYW4gaW52YWxpZCBjb2RlYyByZXN1bHRzIGlu
IGFuIGVycm9yLgorUEFTUyBUZXN0IGEgV2ViTSB3aXRoIGFuIGludmFsaWQgY29kZWMgcmVzdWx0
cyBpbiBhbiBlcnJvci4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBiZWY1MDMwNjRhOThhZDA2NjJhODFlMzkwMTBhOWQ1MDI2NDNkZmYxLi5iZGFlNTFm
ZDg1ZTdlNWFmNmNhMTM4MTgzMTA1Njc1ZjBmZTBkMzVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODU4LDggKzg1OCw4IEBAIHdlYmtpdC5vcmcvYi8x
NjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtZXJyCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWlzLXR5cGUtc3VwcG9ydGVkLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3Zlc291cmNlYnVmZmVyLmh0bWwgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1iZXlvbmQtZHVyYXRpb24uaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrLWR1cmluZy1wZW5kaW5nLXNlZWsuaHRtbCBbIFNr
aXAgXQotd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrYWJsZS5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMTYxNzI1IFsgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVr
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNjE3MjUgWyBNb2phdmUgQ2F0YWxpbmEgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1z
ZWVrYWJsZS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlcXVlbmNlbW9kZS1h
cHBlbmQtYnVmZmVyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVm
ZmVyLW1vZGUtdGltZXN0YW1wcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNv
dXJjZWJ1ZmZlci1tb2RlLmh0bWwgWyBTa2lwIF0KQEAgLTg3MCw5ICs4NzAsOSBAQCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWct
Y2hhbmdlLXdlYm0tYS1iaQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLWF2LWF1ZGlvLWJpdHJhdGUuaHRt
bCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLWF2LWZyYW1lc2l6ZS5odG1sIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1jb25maWctY2hhbmdlLXdlYm0tYXYtdmlkZW8tYml0cmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25m
aWctY2hhbmdlLXdlYm0tdi1iaXRyYXRlLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2Vi
bS12LWZyYW1lcmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNp
emUuaHRtbCBbIFNraXAgXQorWyBNb2phdmUgQ2F0YWxpbmEgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0t
di1iaXRyYXRlLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5n
ZS13ZWJtLXYtZnJhbWVyYXRlLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIENhdGFsaW5hIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29u
ZmlnLWNoYW5nZS13ZWJtLXYtZnJhbWVzaXplLmh0bWwgWyBTa2lwIF0KIAogIyBTa2lwcGVkIGlu
IFczQyBXZWIgUGxhdGZvcm0gVGVzdCBtYW5pZmVzdAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtZ2V0dmlkZW9wbGF5YmFja3F1YWxpdHku
aHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416041</attachid>
            <date>2020-12-11 13:50:43 -0800</date>
            <delta_ts>2020-12-11 14:06:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219732-20201211135043.patch</filename>
            <type>text/plain</type>
            <size>93948</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzZTQ1OWUwMzQ4NDY4MzBiOWQ2MzgxYWJiOGZlYTQ5NjhhMzU2ZThiLi4wNzhl
YmI3N2Q2MzFjMTkyZDkwM2VmMGIzNzU1NjQ3MzlmZTFlZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyBkZWNvZGVyIGZvciBWUDggdmlkZW8gdXNpbmcgdGhlIGRlY29kZXIg
ZXhwb3NlZCBieSBsaWJ3ZWJydGMuIFJlZmFjdG9yCisgICAgICAgIFdlYktpdERlY29kZXJSZWNl
aXZlciBpbnRvIGl0cyBvd24gZmlsZSwgdG8gYmUgdXNlZCBieSBib3RoIHRoZSBWUDggYW5kIFZQ
OSBkZWNvZGVycy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhw
OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjpXZWJLaXREZWNvZGVyUmVjZWl2ZXIp
OgorICAgICAgICAod2VicnRjOjpXZWJLaXREZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXREZWNvZGVy
UmVjZWl2ZXIpOgorICAgICAgICAod2VicnRjOjpXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OmluaXRp
YWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24pOgorICAgICAgICAod2VicnRjOjpXZWJLaXREZWNv
ZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbCk6CisgICAgICAgICh3ZWJydGM6OldlYktpdERl
Y29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZCk6CisgICAgICAgICh3ZWJydGM6OldlYktpdERl
Y29kZXJSZWNlaXZlcjo6RGVjb2RlZCk6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oOiBBZGRlZAorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJy
dGM6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rlcik6CisgICAgICAgICh3ZWJydGM6OmNyZWF0ZVdl
YktpdFZQOERlY29kZXIpOgorICAgICAgICAod2VicnRjOjppbnZhbGlkYXRlVlA4RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OmZpbmFsaXplVlA4RGVjb2Rlcik6CisgICAgICAgICh3ZWJydGM6
OmNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbik6CisgICAgICAgICh3ZWJydGM6OndlYktp
dFZQOERlY29kZXJGcm9tVlREZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6c3RhcnRWUDhEZWNv
ZGVyU2Vzc2lvbik6CisgICAgICAgICh3ZWJydGM6OmRlY29kZVZQOERlY29kZXJGcmFtZUZyb21D
b250aWd1b3VzQmxvY2spOgorICAgICAgICAod2VicnRjOjpkZWNvZGVWUDhEZWNvZGVyRnJhbWUp
OgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0
aWxpdGllc0NvY29hLmguCisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFZQOURlY29kZXIuY3BwOgorICAgICAgICAod2VicnRjOjpjcmVhdGVXZWJLaXRWUDlEZWNvZGVy
KToKKyAgICAgICAgKHdlYnJ0Yzo6c3RhcnRWUDlEZWNvZGVyU2Vzc2lvbik6CisgICAgICAgICh3
ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjp+
V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6V2Vi
S2l0VlA5RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpwaXhl
bEJ1ZmZlclBvb2wpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJLaXRWUDlEZWNvZGVy
UmVjZWl2ZXI6OmRlY29kZXJGYWlsZWQpOiBEZWxldGVkLgorICAgICAgICAod2VicnRjOjpXZWJL
aXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQpOiBEZWxldGVkLgorICAgICAgICAqIGxpYndl
YnJ0Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEyLTEwICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJQ0UgZG9lcyBub3QgcmVzb2x2ZSBm
b3IgYHR1cm5zYCByZWxheSBjYW5kaWRhdGVzIHJvb3RlZCBpbiBMZXRzRW5jcnlwdCBDQQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCAzMzNkY2JmMDEzMTlmNTdmMzhmMDRiY2Y0MzdmODE1YmM0NTVmMDY5Li40YjQzNGU2ZGE2YjM1
NmIxZjJiNTEzNWY4NzRhNWNlNzUwNmYyMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEy
LTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
QWRkIEV4cGVyaW1lbnRhbCBWUDggc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IFZQOCBleHBlcmltZW50YWwgZmVhdHVyZSBm
bGFnLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sOgorCiAyMDIwLTEyLTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRA
c29ueS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBEZXRlcm1pbmUgY29ycmVjdCB2aXNpYmlsaXR5
IGZvciBsaW5rZWQgZnJhbWV3b3JrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVhMjU0OTQ2NmE2N2JiZjRjNDMy
NmU0MjJkYTk0YjMzMTg0YzMxMmUuLjk3MjY5NDVlMTkyYmJjOWVjMTdlNmU2NDc0MGEyZjgwNjll
NWRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5ld2x5IHBhc3NpbmcgdGVzdHM6CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXIu
aHRtbAorICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwKKyAgICAgICAg
ICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLXNlZWthYmxlLmh0bWwKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJh
dGUuaHRtbCAKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lcmF0ZS5odG1s
CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbAorICAgICAg
ICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtaW52YWxpZC1jb2RlYy5odG1sCisKKyAgICAgICAgUGFyc2UgVlA4IHZpZGVvIHRyYWNr
cyBvdXQgb2YgV2ViTSBmaWxlcy4gQWRkIGEgc2ltcGxlIFZQOCBmcmFtZSBoZWFkZXIgcGFyc2Vy
IHRvIGV4dHJhY3Qgd2lkdGgKKyAgICAgICAgaGVpZ2h0IGFuZCBjb2xvciBpbmZvcm1hdGlvbiBv
dXQgb2Yga2V5ZnJhbWUgaGVhZGVycywgYW5kIGNyZWF0ZSBhIENNRm9ybWF0RGVzY3JpcHRpb24g
ZnJvbSB0aGF0CisgICAgICAgIGhlYWRlci4KKworICAgICAgICBUaHJvdyBhbiBlcnJvciBkdXJp
bmcgcGFyc2luZyBpZiBhbiBBdWRpbyBvciBWaWRlbyB0cmFjayBpcyBlbmNvdW50ZXJlZCB3aXRo
IGFuIHVuc3VwcG9ydGVkIGNvZGVjLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVlA5
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVlBDb2RlY1BhcmFtZXRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250
ZW50VHlwZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3JtYXREZXNjcmlw
dGlvbkZyb21WUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VWUDhGcmFtZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3Jt
YXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0
VlA4RGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjppc1ZQOERlY29kZXJBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWUDlDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6aXNWUDhDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6aXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBv
cnRlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJv
dmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rlcik6CisKIDIwMjAtMTEtMDQgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm9uLWZ1bGxzY3JlZW4gcGFnZSBj
b250ZW50cyB2aXNpYmxlIHdoZW4gcm90YXRpbmcgZGV2aWNlIGR1cmluZyBlbGVtZW50IGZ1bGxz
Y3JlZW4gcHJlc2VudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYTIwZTM0YTlmYWY4NjZhMzg0OTNlMjcx
ZWIwZjExODE0MjYyOTEzLi4xZGM1OWMwNTcyZmM0N2NlYjFhNTJiMTU0NGYzZTc3MTY4ZDRmNzNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBWUDgg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIG5ldyBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXIgZmxhZ3MgdG8gZW5hYmxlIFZQOCBkZWNv
ZGVycyBpbiB0aGUgV2ViQ29udGVudCBhbmQgR1BVCisgICAgICAgIHByb2Nlc3NlcyB3aGVuIHRo
ZSBleHBlcmltZW50YWwgZmVhdHVyZSBpcyBlbmFibGVkLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL0dQVVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjplbmFibGVW
UDlEZWNvZGVycyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmYXVsdFZhbHVlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRWUDhEZWNv
ZGVyRW5hYmxlZCk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVl
cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6dXBkYXRlUGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OmlzVlA4RGVjb2RlckVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbmFibGVWUDhTV0RlY29kZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCiAyMDIwLTEyLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEVudGVyaW5nIGZ1
bGxzY3JlZW4gZnJvbSBsZXNzLXRoYW4tZnVsbHNjcmVlbiBXS1dlYlZpZXcgZG9lcyBub3QgbGF5
b3V0IGNvcnJlY3RseSB1cG9uIGV4aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBlMjgw
NThkNjMwNWE2ZWUzNDk2NDcxMWJlNzE5MzdjOWJiNTE1ZGU5Li5mNTkzNzk2MGFkYzhkMTc1MTc5
YjFjZGFmN2UyNGMwYzJlMTFlNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0xMDEs
NiArMTAxLDcgQEAgX19aTjZ3ZWJydGMyMHNldEFwcGxpY2F0aW9uU3RhdHVzRWIKIF9fWk42d2Vi
cnRjMjZjcmVhdGVXZWJLaXREZWNvZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktp
dFZQOUVOU18xMldlYktpdFZQOVZUQkUKIF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXRFbmNvZGVy
RmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18yMFdlYktpdEgyNjRMb3dM
YXRlbmN5RQogX19aTjZ3ZWJydGMyOXNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkRWIKK19f
Wk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOERlY29kZXJFdgogX19aTjZ3ZWJydGMyNHJlZ2lz
dGVyV2ViS2l0VlA5RGVjb2RlckV2CiBfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVF
UktOU18xMFZpZGVvRnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18x
MEJ1ZmZlclR5cGVFRUVFCiBfX1pONndlYnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZC
dWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
b25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAppbmRleCBlMjgwNThkNjMwNWE2ZWUz
NDk2NDcxMWJlNzE5MzdjOWJiNTE1ZGU5Li5mNTkzNzk2MGFkYzhkMTc1MTc5YjFjZGFmN2UyNGMw
YzJlMTFlNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCkBAIC0xMDEsNiArMTAx
LDcgQEAgX19aTjZ3ZWJydGMyMHNldEFwcGxpY2F0aW9uU3RhdHVzRWIKIF9fWk42d2VicnRjMjZj
cmVhdGVXZWJLaXREZWNvZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVO
U18xMldlYktpdFZQOVZUQkUKIF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9y
eUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18yMFdlYktpdEgyNjRMb3dMYXRlbmN5
RQogX19aTjZ3ZWJydGMyOXNldEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkRWIKK19fWk42d2Vi
cnRjMjRyZWdpc3RlcldlYktpdFZQOERlY29kZXJFdgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVyV2Vi
S2l0VlA5RGVjb2RlckV2CiBfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18x
MFZpZGVvRnJhbWVFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZl
clR5cGVFRUVFCiBfX1pONndlYnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCBlMjgwNThkNjMwNWE2ZWUzNDk2NDcxMWJlNzE5
MzdjOWJiNTE1ZGU5Li5mNTkzNzk2MGFkYzhkMTc1MTc5YjFjZGFmN2UyNGMwYzJlMTFlNGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC0xMDEsNiArMTAxLDcgQEAgX19aTjZ3ZWJydGMy
MHNldEFwcGxpY2F0aW9uU3RhdHVzRWIKIF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXREZWNvZGVy
RmFjdG9yeUVOU18xMFdlYktpdEgyNjVFTlNfOVdlYktpdFZQOUVOU18xMldlYktpdFZQOVZUQkUK
IF9fWk42d2VicnRjMjZjcmVhdGVXZWJLaXRFbmNvZGVyRmFjdG9yeUVOU18xMFdlYktpdEgyNjVF
TlNfOVdlYktpdFZQOUVOU18yMFdlYktpdEgyNjRMb3dMYXRlbmN5RQogX19aTjZ3ZWJydGMyOXNl
dEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkRWIKK19fWk42d2VicnRjMjRyZWdpc3RlcldlYktp
dFZQOERlY29kZXJFdgogX19aTjZ3ZWJydGMyNHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlckV2CiBf
X1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUktOU3Qz
X18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCiBfX1pONndl
YnJ0YzE4cGl4ZWxCdWZmZXJUb0ZyYW1lRVAxMF9fQ1ZCdWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVlRWaWRlb0Rl
Y29kZXJTUEkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvVlRWaWRlb0RlY29kZXJTUEkuaAppbmRleCBmNDg4OTA1ZWU0NzFkZGRhNGQ0ZDk1
MDU1MGQ3NzgyZTQ4N2ExMGEwLi42ODBlMGQ4YTVlNGRlNmQzOWJiZjY1N2YzZTZjMzVlMTEyYWVh
NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvV2ViS2l0L1ZUVmlkZW9EZWNvZGVyU1BJLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9WVFZpZGVvRGVjb2RlclNQSS5oCkBA
IC0yNSw2ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8VmlkZW9Ub29sYm94
L1ZpZGVvVG9vbGJveC5oPgorI2luY2x1ZGUgIkNNQmFzZU9iamVjdFNQSS5oIgorCiAjaWYgZGVm
aW5lZCBfX2hhc19pbmNsdWRlICYmIF9faGFzX2luY2x1ZGUoPENvcmVGb3VuZGF0aW9uL0NGUHJp
di5oPikKICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVlRWaWRlb0RlY29kZXIuaD4KICNpbmNsdWRl
IDxWaWRlb1Rvb2xib3gvVlRWaWRlb0RlY29kZXJSZWdpc3RyYXRpb24uaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0RGVjb2RlclJlY2VpdmVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NjBlNWJjNTM2MDhkMzg3M2FlNzUxZTFjZDU3ODZmNzNlOGFmOWNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIldlYktpdFZQOURlY29kZXIuaCIKKworI2luY2x1ZGUgIldlYktpdERlY29k
ZXJSZWNlaXZlci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2luY2x1ZGUvdmlk
ZW9fZXJyb3JfY29kZXMuaCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisKK25hbWVz
cGFjZSB3ZWJydGMgeworCitXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OldlYktpdERlY29kZXJSZWNl
aXZlcihWVFZpZGVvRGVjb2RlclNlc3Npb24gc2Vzc2lvbikKKyAgICA6IG1fc2Vzc2lvbihzZXNz
aW9uKQoreworfQorCitXZWJLaXREZWNvZGVyUmVjZWl2ZXI6On5XZWJLaXREZWNvZGVyUmVjZWl2
ZXIoKQoreworICAgIGlmIChtX3BpeGVsQnVmZmVyUG9vbCkKKyAgICAgICAgQ0ZSZWxlYXNlKG1f
cGl4ZWxCdWZmZXJQb29sKTsKK30KKwordm9pZCBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OmluaXRp
YWxpemVGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXRE
ZXNjcmlwdGlvbikKK3sKKyAgICAvLyBDb3JlQW5pbWF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBmdWxs
LXBsYW5hciBZVVYsIHNvIHdlIG11c3QgY29udmVydCB0aGUgYnVmZmVycyBvdXRwdXQKKyAgICAv
LyBieSBsaWJ2cHggdG8gYmktcGxhbmFyIFlVVi4gQ3JlYXRlIHBpeGVsIGJ1ZmZlciBhdHRyaWJ1
dGVzIGFuZCBnaXZlIHRob3NlIHRvIHRoZQorICAgIC8vIGRlY29kZXIgc2Vzc2lvbiBmb3IgdXNl
IGluIGNyZWF0aW5nIGl0cyBvd24gaW50ZXJuYWwgQ1ZQaXhlbEJ1ZmZlclBvb2wsIHdoaWNoIHdl
CisgICAgLy8gd2lsbCB1c2UgcG9zdC1kZWNvZGUuCisgICAgbV9pc0Z1bGxSYW5nZSA9IGZhbHNl
OworICAgIG1faXMxMGJpdCA9IGZhbHNlOworCisgICAgZG8geworICAgICAgICBhdXRvIGV4dGVu
c2lvbnMgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlv
bik7CisgICAgICAgIGlmICghZXh0ZW5zaW9ucykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIENGVHlwZVJlZiBleHRlbnNpb25BdG9tcyA9IENGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVu
c2lvbnMsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0
ZW5zaW9uQXRvbXMpOworICAgICAgICBpZiAoIWV4dGVuc2lvbkF0b21zIHx8IENGR2V0VHlwZUlE
KGV4dGVuc2lvbkF0b21zKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZCA9IHN0YXRpY19jYXN0
PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoKENGRGljdGlvbmFyeVJlZilleHRlbnNp
b25BdG9tcywgQ0ZTVFIoInZwY0MiKSkpOworICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb25SZWNv
cmQgfHwgQ0ZHZXRUeXBlSUQoY29uZmlndXJhdGlvblJlY29yZCkgIT0gQ0ZEYXRhR2V0VHlwZUlE
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNv
cmRTaXplID0gQ0ZEYXRhR2V0TGVuZ3RoKGNvbmZpZ3VyYXRpb25SZWNvcmQpOworICAgICAgICBp
ZiAoY29uZmlndXJhdGlvblJlY29yZFNpemUgPCAxMikKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZERhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKGNv
bmZpZ3VyYXRpb25SZWNvcmQpOworICAgICAgICBhdXRvIGJpdERlcHRoQ2hyb21hQW5kUmFuZ2Ug
PSAqKGNvbmZpZ3VyYXRpb25SZWNvcmREYXRhICsgNik7CisKKyAgICAgICAgaWYgKChiaXREZXB0
aENocm9tYUFuZFJhbmdlID4+IDQpID09IDEwKQorICAgICAgICAgICAgbV9pczEwYml0ID0gdHJ1
ZTsKKworICAgICAgICBpZiAoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSAmIDB4MSkKKyAgICAgICAg
ICAgIG1faXNGdWxsUmFuZ2UgPSB0cnVlOworICAgIH0gd2hpbGUgKGZhbHNlKTsKK30KKworQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpwaXhlbEJ1ZmZlclBvb2wo
c2l6ZV90IHBpeGVsQnVmZmVyV2lkdGgsIHNpemVfdCBwaXhlbEJ1ZmZlckhlaWdodCwgYm9vbCBp
czEwYml0KQoreworICAgIGlmIChtX3BpeGVsQnVmZmVyUG9vbCAmJiBtX3BpeGVsQnVmZmVyV2lk
dGggPT0gcGl4ZWxCdWZmZXJXaWR0aCAmJiBtX3BpeGVsQnVmZmVySGVpZ2h0ID09IHBpeGVsQnVm
ZmVySGVpZ2h0ICYmIG1faXMxMGJpdCA9PSBpczEwYml0KQorICAgICAgICByZXR1cm4gbV9waXhl
bEJ1ZmZlclBvb2w7CisKKyAgICBPU1R5cGUgcGl4ZWxGb3JtYXQ7CisgICAgaWYgKGlzMTBiaXQp
CisgICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlw
Q2JDcjEwQmlQbGFuYXJWaWRlb1JhbmdlOworICAgIGVsc2UKKyAgICAgICAgcGl4ZWxGb3JtYXQg
PSBtX2lzRnVsbFJhbmdlID8ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1
bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1Jhbmdl
OworCisgICAgYXV0byBjcmVhdGVQaXhlbEZvcm1hdEF0dHJpYnV0ZXMgPSBbXSAoT1NUeXBlIHBp
eGVsRm9ybWF0LCBpbnQzMl90IGJvcmRlclBpeGVscykgeworICAgICAgICBhdXRvIGNyZWF0ZU51
bWJlciA9IFtdIChpbnQzMl90IGZvcm1hdCkgLT4gQ0ZOdW1iZXJSZWYgeworICAgICAgICAgICAg
cmV0dXJuIENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQz
MlR5cGUsICZmb3JtYXQpOworICAgICAgICB9OworICAgICAgICBhdXRvIGNmUGl4ZWxGb3JtYXRz
ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcyk7CisgICAgICAgIGF1dG8gZm9ybWF0TnVtYmVyID0gY3JlYXRlTnVtYmVy
KHBpeGVsRm9ybWF0KTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGNmUGl4ZWxGb3JtYXRz
LCBmb3JtYXROdW1iZXIpOworICAgICAgICBDRlJlbGVhc2UoZm9ybWF0TnVtYmVyKTsKKworICAg
ICAgICBhdXRvIGJvcmRlclBpeGVsc1ZhbHVlID0gY3JlYXRlTnVtYmVyKDMyKTsKKworICAgICAg
ICBjb25zdCB2b2lkKiBrZXlzW10gPSB7CisgICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlclBpeGVs
Rm9ybWF0VHlwZUtleSwKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNM
ZWZ0S2V5LAorICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc1JpZ2h0S2V5
LAorICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc1RvcEtleSwKKyAgICAg
ICAgICAgIGtDVlBpeGVsQnVmZmVyRXh0ZW5kZWRQaXhlbHNCb3R0b21LZXksCisgICAgICAgIH07
CisgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tdID0geworICAgICAgICAgICAgY2ZQaXhlbEZv
cm1hdHMsCisgICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRl
clBpeGVsc1ZhbHVlLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisgICAgICAgICAg
ICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAgfTsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGVz
ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywg
c3RkOjpzaXplKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGJvcmRlclBpeGVs
c1ZhbHVlKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGNmUGl4ZWxGb3JtYXRzKTsKKyAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZXM7CisgICAgfTsKKworICAgIGF1dG8gcGl4ZWxCdWZmZXJBdHRyaWJ1dGVz
ID0gY3JlYXRlUGl4ZWxGb3JtYXRBdHRyaWJ1dGVzKHBpeGVsRm9ybWF0LCAzMik7CisgICAgVlRE
ZWNvZGVyU2Vzc2lvblNldFBpeGVsQnVmZmVyQXR0cmlidXRlcyhtX3Nlc3Npb24sIHBpeGVsQnVm
ZmVyQXR0cmlidXRlcyk7CisgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyQXR0cmlidXRlcyk7CisK
KyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpIHsKKyAgICAgICAgQ0ZSZWxlYXNlKG1fcGl4ZWxC
dWZmZXJQb29sKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlclBvb2wgPSBudWxscHRyOworICAgIH0K
KworICAgIG1fcGl4ZWxCdWZmZXJQb29sID0gVlREZWNvZGVyU2Vzc2lvbkdldFBpeGVsQnVmZmVy
UG9vbChtX3Nlc3Npb24pOworICAgIGlmIChtX3BpeGVsQnVmZmVyUG9vbCkKKyAgICAgICAgQ0ZS
ZXRhaW4obV9waXhlbEJ1ZmZlclBvb2wpOworCisgICAgbV9waXhlbEJ1ZmZlcldpZHRoID0gcGl4
ZWxCdWZmZXJXaWR0aDsKKyAgICBtX3BpeGVsQnVmZmVySGVpZ2h0ID0gcGl4ZWxCdWZmZXJIZWln
aHQ7CisgICAgbV9pczEwYml0ID0gaXMxMGJpdDsKKworICAgIHJldHVybiBtX3BpeGVsQnVmZmVy
UG9vbDsKK30KKworT1NTdGF0dXMgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpkZWNvZGVyRmFpbGVk
KGludCBlcnJvcikKK3sKKyAgICBPU1N0YXR1cyB2dEVycm9yID0ga1ZUVmlkZW9EZWNvZGVyQmFk
RGF0YUVycjsKKyAgICBpZiAoZXJyb3IgPT0gV0VCUlRDX1ZJREVPX0NPREVDX05PX09VVFBVVCkK
KyAgICAgICAgdnRFcnJvciA9IG5vRXJyOworICAgIGVsc2UgaWYgKGVycm9yID09IFdFQlJUQ19W
SURFT19DT0RFQ19VTklOSVRJQUxJWkVEKQorICAgICAgICB2dEVycm9yID0ga1ZUVmlkZW9EZWNv
ZGVyTWFsZnVuY3Rpb25FcnI7CisgICAgZWxzZSBpZiAoZXJyb3IgPT0gV0VCUlRDX1ZJREVPX0NP
REVDX01FTU9SWSkKKyAgICAgICAgdnRFcnJvciA9IGtWVEFsbG9jYXRpb25GYWlsZWRFcnI7Cisg
ICAgVlREZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRG
cmFtZSwgdnRFcnJvciwgMCwgbnVsbHB0cik7CisgICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRy
OworCisgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOSBkZWNvZGVyOiBkZWNvZGVyIGZhaWxl
ZCB3aXRoIGVycm9yICIgPDwgZXJyb3IgPDwgIiwgdnRFcnJvciAiIDw8IHZ0RXJyb3I7CisgICAg
cmV0dXJuIHZ0RXJyb3I7Cit9CisKK2ludDMyX3QgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpEZWNv
ZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQoreworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1
ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
QnVmZmVyVHlwZSB0eXBlKSAtPiBDVlBpeGVsQnVmZmVyUmVmIHsKKyAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlclBvb2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgdHlwZSA9
PSBCdWZmZXJUeXBlOjpJMDEwKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4
ZWxCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9waXhlbEJ1ZmZlclBvb2wsICZwaXhlbEJ1
ZmZlcikgPT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZl
cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfSk7CisKKyAgICBWVERlY29kZXJTZXNz
aW9uRW1pdERlY29kZWRGcmFtZShtX3Nlc3Npb24sIG1fY3VycmVudEZyYW1lLCBwaXhlbEJ1ZmZl
ciA/IG5vRXJyIDogLTEsIDAsIHBpeGVsQnVmZmVyKTsKKyAgICBtX2N1cnJlbnRGcmFtZSA9IG51
bGxwdHI7CisgICAgaWYgKHBpeGVsQnVmZmVyKQorICAgICAgICBDRlJlbGVhc2UocGl4ZWxCdWZm
ZXIpOworICAgIHJldHVybiAwOworfQorCitpbnQzMl90IFdlYktpdERlY29kZXJSZWNlaXZlcjo6
RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSwgaW50NjRfdCkKK3sKKyAgICBEZWNvZGVkKGZyYW1l
KTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXZWJLaXREZWNvZGVyUmVjZWl2ZXI6OkRlY29k
ZWQoVmlkZW9GcmFtZSYgZnJhbWUsIGFic2w6Om9wdGlvbmFsPGludDMyX3Q+LCBhYnNsOjpvcHRp
b25hbDx1aW50OF90PikKK3sKKyAgICBEZWNvZGVkKGZyYW1lKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXREZWNvZGVyUmVjZWl2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWE1NDU5N2UzYjRjYWMwYjk3ZjFhMzcwMjI5MDhiOTIyZmU0ZDkzMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0RGVjb2RlclJlY2VpdmVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiYXBpL3ZpZGVvX2NvZGVjcy92aWRlb19kZWNvZGVyLmgi
CisjaW5jbHVkZSAiVlRWaWRlb0RlY29kZXJTUEkuaCIKKyNpbmNsdWRlICJXZWJLaXRVdGlsaXRp
ZXMuaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK2NsYXNzIFdlYktpdERlY29kZXJSZWNlaXZl
ciBmaW5hbCA6IHB1YmxpYyBEZWNvZGVkSW1hZ2VDYWxsYmFjayB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgV2ViS2l0RGVjb2RlclJlY2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbik7CisgICAg
fldlYktpdERlY29kZXJSZWNlaXZlcigpOworCisgICAgVlRWaWRlb0RlY29kZXJGcmFtZSBjdXJy
ZW50RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQorICAgIHZvaWQgc2V0
Q3VycmVudEZyYW1lKFZUVmlkZW9EZWNvZGVyRnJhbWUgY3VycmVudEZyYW1lKSB7IG1fY3VycmVu
dEZyYW1lID0gY3VycmVudEZyYW1lOyB9CisgICAgT1NTdGF0dXMgZGVjb2RlckZhaWxlZChpbnQg
ZXJyb3IpOworCisgICAgdm9pZCBpbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9y
bWF0RGVzY3JpcHRpb25SZWYpOworCitwcml2YXRlOgorICAgIGludDMyX3QgRGVjb2RlZChWaWRl
b0ZyYW1lJikgZmluYWw7CisgICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBpbnQ2NF90
IGRlY29kZV90aW1lX21zKSBmaW5hbDsKKyAgICB2b2lkIERlY29kZWQoVmlkZW9GcmFtZSYsIGFi
c2w6Om9wdGlvbmFsPGludDMyX3Q+IGRlY29kZV90aW1lX21zLCBhYnNsOjpvcHRpb25hbDx1aW50
OF90PiBxcCkgZmluYWw7CisKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBv
b2woc2l6ZV90IHBpeGVsQnVmZmVyV2lkdGgsIHNpemVfdCBwaXhlbEJ1ZmZlckhlaWdodCwgYm9v
bCBpczEwYml0KTsKKworICAgIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBtX3Nlc3Npb24geyBudWxs
cHRyIH07CisgICAgVlRWaWRlb0RlY29kZXJGcmFtZSBtX2N1cnJlbnRGcmFtZSB7IG51bGxwdHIg
fTsKKyAgICBzaXplX3QgbV9waXhlbEJ1ZmZlcldpZHRoIHsgMCB9OworICAgIHNpemVfdCBtX3Bp
eGVsQnVmZmVySGVpZ2h0IHsgMCB9OworICAgIGJvb2wgbV9pczEwYml0IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNGdWxsUmFuZ2UgeyBmYWxzZSB9OworICAgIENWUGl4ZWxCdWZmZXJQb29sUmVm
IG1fcGl4ZWxCdWZmZXJQb29sIHsgbnVsbHB0ciB9OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRW
UDhEZWNvZGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgyODZhMjA4ZGQw
ZmJjNGVlZDFlYWY0ODAwMmZhYzVkNjA0NDlhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVj
b2Rlci5jcHAKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViS2l0
VlA4RGVjb2Rlci5oIgorCisjaW5jbHVkZSAiV2ViS2l0RGVjb2RlclJlY2VpdmVyLmgiCisjaW5j
bHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOC9saWJ2cHhfdnA4X2RlY29kZXIu
aCIKKyNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAic3lzdGVtX3dyYXBw
ZXJzL2luY2x1ZGUvY3B1X2luZm8uaCIKKworbmFtZXNwYWNlIHdlYnJ0YyB7CisKK3N0YXRpYyBP
U1N0YXR1cyBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKEZpZ1ZpZGVvQ29kZWNUeXBlLCBDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3IsIFZUVmlkZW9EZWNvZGVyUmVmKik7Cit2b2lkIHJlZ2lzdGVyV2Vi
S2l0VlA4RGVjb2RlcigpCit7CisgICAgVlRSZWdpc3RlclZpZGVvRGVjb2RlcigndnAwOCcsIGNy
ZWF0ZVdlYktpdFZQOERlY29kZXIpOworfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgc3RkOjp1
bmlxdWVfcHRyPExpYnZweFZwOERlY29kZXI+IG1faW5zdGFuY2U7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYktpdERlY29kZXJSZWNlaXZlcj4gbV9yZWNlaXZlcjsKK30gV2ViS2l0VlA4RGVjb2Rl
cjsKKworc3RhdGljIE9TU3RhdHVzIGludmFsaWRhdGVWUDhEZWNvZGVyKENNQmFzZU9iamVjdFJl
Zik7CitzdGF0aWMgdm9pZCBmaW5hbGl6ZVZQOERlY29kZXIoQ01CYXNlT2JqZWN0UmVmKTsKK3N0
YXRpYyBDRlN0cmluZ1JlZiBjb3B5VlA4RGVjb2RlckRlYnVnRGVzY3JpcHRpb24oQ01CYXNlT2Jq
ZWN0UmVmKTsKKworc3RhdGljIGNvbnN0IENNQmFzZUNsYXNzIFdlYktpdFZQOERlY29kZXJfQmFz
ZUNsYXNzID0KK3sKKyAgICBrQ01CYXNlT2JqZWN0X0NsYXNzVmVyc2lvbl8xLAorICAgIHNpemVv
ZihXZWJLaXRWUDhEZWNvZGVyKSwKKyAgICBudWxscHRyLCAvLyBDb21wYXJpc29uIGJ5IHBvaW50
ZXIgZXF1YWxpdHkKKyAgICBpbnZhbGlkYXRlVlA4RGVjb2RlciwKKyAgICBmaW5hbGl6ZVZQOERl
Y29kZXIsCisgICAgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9uLAorICAgIG51bGxwdHIs
IC8vIENvcHlQcm9wZXJ0eQorICAgIG51bGxwdHIsIC8vIFNldFByb3BlcnR5CisgICAgbnVsbHB0
ciwKKyAgICBudWxscHRyCit9OworCitzdGF0aWMgT1NTdGF0dXMgc3RhcnRWUDhEZWNvZGVyU2Vz
c2lvbihWVFZpZGVvRGVjb2RlclJlZiwgVlRWaWRlb0RlY29kZXJTZXNzaW9uLCBDTVZpZGVvRm9y
bWF0RGVzY3JpcHRpb25SZWYpOworc3RhdGljIE9TU3RhdHVzIGRlY29kZVZQOERlY29kZXJGcmFt
ZShWVFZpZGVvRGVjb2RlclJlZiwgVlRWaWRlb0RlY29kZXJGcmFtZSwgQ01TYW1wbGVCdWZmZXJS
ZWYsIFZURGVjb2RlRnJhbWVGbGFncywgVlREZWNvZGVJbmZvRmxhZ3MqKTsKKworc3RhdGljIGNv
bnN0IFZUVmlkZW9EZWNvZGVyQ2xhc3MgV2ViS2l0VlA4RGVjb2Rlcl9WaWRlb0RlY29kZXJDbGFz
cyA9Cit7CisgICAga1ZUVmlkZW9EZWNvZGVyX0NsYXNzVmVyc2lvbl8xLAorICAgIHN0YXJ0VlA4
RGVjb2RlclNlc3Npb24sCisgICAgZGVjb2RlVlA4RGVjb2RlckZyYW1lLAorICAgIG51bGxwdHIs
IC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rpb25fQ29weVN1cHBvcnRlZFByb3BlcnR5RGljdGlvbmFy
eSwKKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX1NldFByb3BlcnRpZXMK
KyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0NvcHlTZXJpYWxpemFibGVQ
cm9wZXJ0aWVzCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9DYW5BY2Nl
cHRGb3JtYXREZXNjcmlwdGlvbgorICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rp
b25fRmluaXNoRGVsYXllZEZyYW1lcworICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVu
Y3Rpb25fU3RhcnRUaWxlU2Vzc2lvbgorICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVu
Y3Rpb25fRGVjb2RlVGlsZQorICAgIG51bGxwdHIgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9G
aW5pc2hEZWxheWVkVGlsZXMKK307CisKK3N0YXRpYyBjb25zdCBWVFZpZGVvRGVjb2RlclZUYWJs
ZSBXZWJLaXRWUDhEZWNvZGVyVlRhYmxlID0KK3sKKyAgICB7IG51bGxwdHIsICZXZWJLaXRWUDhE
ZWNvZGVyX0Jhc2VDbGFzcyB9LAorICAgICZXZWJLaXRWUDhEZWNvZGVyX1ZpZGVvRGVjb2RlckNs
YXNzCit9OworCitPU1N0YXR1cyBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKEZpZ1ZpZGVvQ29kZWNU
eXBlLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIFZUVmlkZW9EZWNvZGVyUmVmKiBkZWNvZGVy
T3V0KQoreworICAgIGlmICghZGVjb2Rlck91dCkgeworICAgICAgICBSVENfTE9HKExTX0VSUk9S
KSA8PCAiVlA4IGRlY29kZXIgY3JlYXRpb24gZmFpbGVkLCBubyBkZWNvZGVyIG91dHB1dCI7Cisg
ICAgICAgIHJldHVybiBrVlRQYXJhbWV0ZXJFcnI7CisgICAgfQorCisgICAgVlRWaWRlb0RlY29k
ZXJSZWYgZGVjb2RlciA9IG51bGxwdHI7CisgICAgYXV0byBlcnJvciA9IENNRGVyaXZlZE9iamVj
dENyZWF0ZShhbGxvY2F0b3IsICZXZWJLaXRWUDhEZWNvZGVyVlRhYmxlLmJhc2UsIFZUVmlkZW9E
ZWNvZGVyR2V0Q2xhc3NJRCgpLCAoQ01CYXNlT2JqZWN0UmVmKikmZGVjb2Rlcik7CisKKyAgICBp
ZiAoIWRlY29kZXIpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVy
IGNyZWF0aW9uIGZhaWxlZCwgQ01EZXJpdmVkT2JqZWN0Q3JlYXRlIGZhaWxlZCB3aXRoIGVycm9y
ICIgPDwgZXJyb3I7CisgICAgICAgIHJldHVybiBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOworICAg
IH0KKworICAgIGlmKGVycm9yKSB7CisgICAgICAgIENGUmVsZWFzZShkZWNvZGVyKTsKKyAgICAg
ICAgZGVjb2RlciA9IE5VTEw7CisgICAgfQorICAgICpkZWNvZGVyT3V0ID0gZGVjb2RlcjsKKyAg
ICByZXR1cm4gZXJyb3I7Cit9CisKK09TU3RhdHVzIGludmFsaWRhdGVWUDhEZWNvZGVyKENNQmFz
ZU9iamVjdFJlZiBpbnN0YW5jZSkKK3sKKyAgICBhdXRvKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8
V2ViS2l0VlA4RGVjb2Rlcio+KENNQmFzZU9iamVjdEdldERlcml2ZWRTdG9yYWdlKGluc3RhbmNl
KSk7CisgICAgaWYgKCFkZWNvZGVyKQorICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4
IGRlY29kZXI6IGludmFsaWRhdGlvbiBmYWlsZWQgYXMgaW5zdGFuY2UgaGFzIG5vIGRlY29kZXIi
OworICAgIGVsc2UgeworICAgICAgICBkZWNvZGVyLT5tX2luc3RhbmNlID0gbnVsbHB0cjsKKyAg
ICAgICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBu
b0VycjsKK30KKwordm9pZCBmaW5hbGl6ZVZQOERlY29kZXIoQ01CYXNlT2JqZWN0UmVmIGluc3Rh
bmNlKQoreworICAgIGludmFsaWRhdGVWUDhEZWNvZGVyKGluc3RhbmNlKTsKK30KKworQ0ZTdHJp
bmdSZWYgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9uKENNQmFzZU9iamVjdFJlZikKK3sK
KyAgICByZXR1cm4gQ0ZTVFIoIldlYktpdCBWUDggZGVjb2RlciIpOworfQorCitXZWJLaXRWUDhE
ZWNvZGVyKiB3ZWJLaXRWUDhEZWNvZGVyRnJvbVZURGVjb2RlcihWVFZpZGVvRGVjb2RlclJlZiBk
ZWNvZGVyKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRWUDhEZWNvZGVyKj4oQ01C
YXNlT2JqZWN0R2V0RGVyaXZlZFN0b3JhZ2UocmVpbnRlcnByZXRfY2FzdDxDTUJhc2VPYmplY3RS
ZWY+KGRlY29kZXIpKSk7Cit9CitPU1N0YXR1cyBzdGFydFZQOERlY29kZXJTZXNzaW9uKFZUVmlk
ZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVjb2RlclNlc3Npb24gc2Vzc2lvbiwgQ01W
aWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQoreworICAgIGF1dG8q
IGRlY29kZXIgPSB3ZWJLaXRWUDhEZWNvZGVyRnJvbVZURGVjb2RlcihpbnN0YW5jZSk7CisgICAg
aWYgKCFkZWNvZGVyKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDggZGVjb2Rl
cjogZmFpbGVkIHRvIGdldCBkZWNvZGVyIGZyb20gaW5zdGFuY2Ugd2hpbGUgc3RhcnRpbmciOwor
ICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAgIGRlY29kZXItPm1f
aW5zdGFuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYnZweFZwOERlY29kZXI+KCk7CisgICAgZGVj
b2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RGVjb2RlclJlY2VpdmVy
PihzZXNzaW9uKTsKKyAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5pbml0aWFsaXplRnJvbUZvcm1h
dERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsKKworICAgIGRlY29kZXItPm1faW5zdGFu
Y2UtPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayhkZWNvZGVyLT5tX3JlY2VpdmVyLmdl
dCgpKTsKKworICAgIFZpZGVvQ29kZWMgY29kZWM7CisgICAgYXV0byBkaW1lbnNpb25zID0gQ01W
aWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlvbik7Cisg
ICAgY29kZWMud2lkdGggPSBkaW1lbnNpb25zLndpZHRoOworICAgIGNvZGVjLmhlaWdodCA9IGRp
bWVuc2lvbnMuaGVpZ2h0OworCisgICAgZGVjb2Rlci0+bV9pbnN0YW5jZS0+SW5pdERlY29kZSgm
Y29kZWMsIENwdUluZm86OkRldGVjdE51bWJlck9mQ29yZXMoKSk7CisKKyAgICByZXR1cm4gbm9F
cnI7Cit9CisKK3N0YXRpYyBPU1N0YXR1cyBkZWNvZGVWUDhEZWNvZGVyRnJhbWVGcm9tQ29udGln
dW91c0Jsb2NrKFdlYktpdFZQOERlY29kZXImIGRlY29kZXIsIFZUVmlkZW9EZWNvZGVyRnJhbWUg
ZnJhbWUsIENNQmxvY2tCdWZmZXJSZWYgZW5jb2RlZEJ1ZmZlcikKK3sKKyAgICBSVENfRENIRUNL
KENNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhlbmNvZGVkQnVmZmVyLCAwLCAwKSk7CisK
KyAgICBhdXRvIHNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChlbmNvZGVkQnVmZmVy
KTsKKyAgICBjaGFyKiBkYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBlcnJvciA9IENNQmxv
Y2tCdWZmZXJHZXREYXRhUG9pbnRlcihlbmNvZGVkQnVmZmVyLCAwLCBudWxscHRyLCBudWxscHRy
LCAmZGF0YSkpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBD
TUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IgIiA8PCBlcnJvcjsK
KyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIFJUQ19EQ0hFQ0soIWRlY29kZXIu
bV9yZWNlaXZlci0+Y3VycmVudEZyYW1lKCkpOworICAgIGRlY29kZXIubV9yZWNlaXZlci0+c2V0
Q3VycmVudEZyYW1lKGZyYW1lKTsKKworICAgIEVuY29kZWRJbWFnZSBpbWFnZSB7IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpLCBzaXplLCBzaXplIH07CisgICAgLy8gV2Ugc2V0IHRo
b3NlIHZhbHVlcyBhcyBWUDhEZWNvZGVySW1wbCBjaGVja3MgZm9yIGdldHRpbmcgYSBmdWxsIGtl
eSBmcmFtZSBhcyBmaXJzdCBmcmFtZS4KKyAgICBpbWFnZS5fZnJhbWVUeXBlID0gVmlkZW9GcmFt
ZVR5cGU6OmtWaWRlb0ZyYW1lS2V5OworICAgIGltYWdlLl9jb21wbGV0ZUZyYW1lID0gdHJ1ZTsK
KyAgICBhdXRvIGVycm9yID0gZGVjb2Rlci5tX2luc3RhbmNlLT5EZWNvZGUoaW1hZ2UsIGZhbHNl
LCAwKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiBkZWNvZGVyLm1fcmVjZWl2ZXIt
PmRlY29kZXJGYWlsZWQoZXJyb3IpOworCisgICAgUlRDX0RDSEVDSyghZGVjb2Rlci5tX3JlY2Vp
dmVyLT5jdXJyZW50RnJhbWUoKSk7CisKKyAgICByZXR1cm4gMDsKK30KKworT1NTdGF0dXMgZGVj
b2RlVlA4RGVjb2RlckZyYW1lKFZUVmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZpZGVvRGVj
b2RlckZyYW1lIGZyYW1lLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIFZURGVjb2Rl
RnJhbWVGbGFncywgVlREZWNvZGVJbmZvRmxhZ3MqKQoreworICAgIGF1dG8qIGRlY29kZXIgPSB3
ZWJLaXRWUDhEZWNvZGVyRnJvbVZURGVjb2RlcihpbnN0YW5jZSk7CisgICAgaWYgKCFkZWNvZGVy
IHx8ICFkZWNvZGVyLT5tX2luc3RhbmNlIHx8ICFkZWNvZGVyLT5tX3JlY2VpdmVyKSB7CisgICAg
ICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDggZGVjb2RlcjogZmFpbGVkIHRvIGdldCBkZWNv
ZGVyIGZyb20gaW5zdGFuY2Ugd2hpbGUgZGVjb2RpbmciOworICAgICAgICByZXR1cm4ga1ZUUGFy
YW1ldGVyRXJyOworICAgIH0KKworICAgIGF1dG8gZW5jb2RlZEJ1ZmZlciA9IENNU2FtcGxlQnVm
ZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIpOworICAgIGlmICghZW5jb2RlZEJ1ZmZlcikg
eworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0byBn
ZXQgZGF0YSBidWZmZXIiOworICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0K
KworICAgIENNQmxvY2tCdWZmZXJSZWYgY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CisgICAg
Ly8gTWFrZSBzdXJlIGJsb2NrIGJ1ZmZlciBpcyBjb250aWd1b3VzLgorICAgIGlmICghQ01CbG9j
a0J1ZmZlcklzUmFuZ2VDb250aWd1b3VzKGVuY29kZWRCdWZmZXIsIDAsIDApKSB7CisgICAgICAg
IGF1dG8gc3RhdHVzID0gQ01CbG9ja0J1ZmZlckNyZWF0ZUNvbnRpZ3VvdXMobnVsbHB0ciwgZW5j
b2RlZEJ1ZmZlciwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgMCwgMCwgJmNvbnRpZ3VvdXNCdWZmZXIp
OworICAgICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CisgICAgICAgICAgICBSVENfTE9HKExT
X0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0byBjcmVhdGUgY29udGlndW91cyBibG9j
ayBidWZmZXIgd2l0aCBlcnJvciAiIDw8IHN0YXR1czsKKyAgICAgICAgICAgIHJldHVybiBrVlRB
bGxvY2F0aW9uRmFpbGVkRXJyOworICAgICAgICB9CisgICAgICAgIGVuY29kZWRCdWZmZXIgPSBj
b250aWd1b3VzQnVmZmVyOworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gZGVjb2RlVlA4RGVj
b2RlckZyYW1lRnJvbUNvbnRpZ3VvdXNCbG9jaygqZGVjb2RlciwgZnJhbWUsIGVuY29kZWRCdWZm
ZXIpOworCisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXIpCisgICAgICAgIENGUmVsZWFzZShjb250
aWd1b3VzQnVmZmVyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VlA4RGVjb2Rlci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY3MzBiOTU2YWU1
YTc3MDQzOGY4MDhkNTE1MTM3ZjE4NjE4NTllYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVj
b2Rlci5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CisKK3ZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIuY3BwCmluZGV4IDQz
YThlYzcyZGJlYjk4YWVjNDQ2YjcxOTg3YzMxZDMwZThkNTM3NWYuLjg3NTllZDFmYmUxOTFmNWFk
MDFiMjVlNDU4NWY3NjQ1OWZkZTAwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRWUDlEZWNvZGVyLmNwcApAQCAtMjUsMTUgKzI1LDExIEBACiAKICNpbmNsdWRlICJXZWJL
aXRWUDlEZWNvZGVyLmgiCiAKLSNpbmNsdWRlICJXZWJLaXRVdGlsaXRpZXMuaCIKLSNpbmNsdWRl
IDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+CisjaW5jbHVkZSAiV2ViS2l0RGVjb2RlclJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAibW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL3ZwOS92cDlf
aW1wbC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJzeXN0ZW1f
d3JhcHBlcnMvaW5jbHVkZS9jcHVfaW5mby5oIgogCi0jaW5jbHVkZSAiQ01CYXNlT2JqZWN0U1BJ
LmgiCi0jaW5jbHVkZSAiVlRWaWRlb0RlY29kZXJTUEkuaCIKLQogbmFtZXNwYWNlIHdlYnJ0YyB7
CiAKIHN0YXRpYyBPU1N0YXR1cyBjcmVhdGVXZWJLaXRWUDlEZWNvZGVyKEZpZ1ZpZGVvQ29kZWNU
eXBlLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIFZUVmlkZW9EZWNvZGVyUmVmKik7CkBAIC00
MiwzOSArMzgsMTEgQEAgdm9pZCByZWdpc3RlcldlYktpdFZQOURlY29kZXIoKQogICAgIFZUUmVn
aXN0ZXJWaWRlb0RlY29kZXIoJ3ZwMDknLCBjcmVhdGVXZWJLaXRWUDlEZWNvZGVyKTsKIH0KIAot
Y2xhc3MgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIHN0
ZDo6dW5pcXVlX3B0cjxWUDlEZWNvZGVySW1wbD4gbV9pbnN0YW5jZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyPiBtX3JlY2VpdmVyOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7CiB9IFdlYktpdFZQOURl
Y29kZXI7CiAKLWNsYXNzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlciBmaW5hbCA6IHB1YmxpYyBE
ZWNvZGVkSW1hZ2VDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViS2l0VlA5RGVj
b2RlclJlY2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbik7Ci0gICAgfldlYktpdFZQOURlY29k
ZXJSZWNlaXZlcigpOwotCi0gICAgVlRWaWRlb0RlY29kZXJGcmFtZSBjdXJyZW50RnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQotICAgIHZvaWQgc2V0Q3VycmVudEZyYW1l
KFZUVmlkZW9EZWNvZGVyRnJhbWUgY3VycmVudEZyYW1lKSB7IG1fY3VycmVudEZyYW1lID0gY3Vy
cmVudEZyYW1lOyB9Ci0gICAgT1NTdGF0dXMgZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpOwotCi0g
ICAgdm9pZCBpbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRp
b25SZWYpOwotCi1wcml2YXRlOgotICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJikgZmlu
YWw7Ci0gICAgaW50MzJfdCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBpbnQ2NF90IGRlY29kZV90aW1l
X21zKSBmaW5hbDsKLSAgICB2b2lkIERlY29kZWQoVmlkZW9GcmFtZSYsIGFic2w6Om9wdGlvbmFs
PGludDMyX3Q+IGRlY29kZV90aW1lX21zLCBhYnNsOjpvcHRpb25hbDx1aW50OF90PiBxcCkgZmlu
YWw7Ci0KLSAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHBp
eGVsQnVmZmVyV2lkdGgsIHNpemVfdCBwaXhlbEJ1ZmZlckhlaWdodCwgYm9vbCBpczEwYml0KTsK
LQotICAgIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBtX3Nlc3Npb24geyBudWxscHRyIH07Ci0gICAg
VlRWaWRlb0RlY29kZXJGcmFtZSBtX2N1cnJlbnRGcmFtZSB7IG51bGxwdHIgfTsKLSAgICBzaXpl
X3QgbV9waXhlbEJ1ZmZlcldpZHRoIHsgMCB9OwotICAgIHNpemVfdCBtX3BpeGVsQnVmZmVySGVp
Z2h0IHsgMCB9OwotICAgIGJvb2wgbV9pczEwYml0IHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNG
dWxsUmFuZ2UgeyBmYWxzZSB9OwotICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIG1fcGl4ZWxCdWZm
ZXJQb29sIHsgbnVsbHB0ciB9OwotfTsKLQogc3RhdGljIE9TU3RhdHVzIGludmFsaWRhdGVWUDlE
ZWNvZGVyKENNQmFzZU9iamVjdFJlZik7CiBzdGF0aWMgdm9pZCBmaW5hbGl6ZVZQOURlY29kZXIo
Q01CYXNlT2JqZWN0UmVmKTsKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5VlA5RGVjb2RlckRlYnVn
RGVzY3JpcHRpb24oQ01CYXNlT2JqZWN0UmVmKTsKQEAgLTE3NSw3ICsxNDMsNyBAQCBPU1N0YXR1
cyBzdGFydFZQOURlY29kZXJTZXNzaW9uKFZUVmlkZW9EZWNvZGVyUmVmIGluc3RhbmNlLCBWVFZp
ZGVvRGVjb2RlclNlc3NpbwogICAgIH0KIAogICAgIGRlY29kZXItPm1faW5zdGFuY2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZQOURlY29kZXJJbXBsPigpOwotICAgIGRlY29kZXItPm1fcmVjZWl2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdFZQOURlY29kZXJSZWNlaXZlcj4oc2Vzc2lvbik7Cisg
ICAgZGVjb2Rlci0+bV9yZWNlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RGVjb2RlclJl
Y2VpdmVyPihzZXNzaW9uKTsKICAgICBkZWNvZGVyLT5tX3JlY2VpdmVyLT5pbml0aWFsaXplRnJv
bUZvcm1hdERlc2NyaXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uKTsKIAogICAgIGRlY29kZXItPm1f
aW5zdGFuY2UtPlJlZ2lzdGVyRGVjb2RlQ29tcGxldGVDYWxsYmFjayhkZWNvZGVyLT5tX3JlY2Vp
dmVyLmdldCgpKTsKQEAgLTI1MCwxNjEgKzIxOCw0IEBAIE9TU3RhdHVzIGRlY29kZVZQOURlY29k
ZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJGcmFtZSBm
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpXZWJL
aXRWUDlEZWNvZGVyUmVjZWl2ZXIoVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNlc3Npb24pCi0gICAg
OiBtX3Nlc3Npb24oc2Vzc2lvbikKLXsKLX0KLQotV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjp+
V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKCkKLXsKLSAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wp
Ci0gICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci19Ci0KLXZvaWQgV2ViS2l0
VlA5RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9y
bWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCi17Ci0gICAgLy8gQ29yZUFuaW1h
dGlvbiBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIgWVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQg
dGhlIGJ1ZmZlcnMgb3V0cHV0Ci0gICAgLy8gYnkgbGlidnB4IHRvIGJpLXBsYW5hciBZVVYuIENy
ZWF0ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQgZ2l2ZSB0aG9zZSB0byB0aGUKLSAgICAv
LyBkZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVhdGluZyBpdHMgb3duIGludGVybmFsIENW
UGl4ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQotICAgIC8vIHdpbGwgdXNlIHBvc3QtZGVjb2RlLgot
ICAgIG1faXNGdWxsUmFuZ2UgPSBmYWxzZTsKLSAgICBtX2lzMTBiaXQgPSBmYWxzZTsKLQotICAg
IGRvIHsKLSAgICAgICAgYXV0byBleHRlbnNpb25zID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4
dGVuc2lvbnMoZm9ybWF0RGVzY3JpcHRpb24pOwotICAgICAgICBpZiAoIWV4dGVuc2lvbnMpCi0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBDRlR5cGVSZWYgZXh0ZW5zaW9uQXRvbXMgPSBD
RkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25zLCBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVu
c2lvbl9TYW1wbGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKTsKLSAgICAgICAgaWYgKCFleHRl
bnNpb25BdG9tcyB8fCBDRkdldFR5cGVJRChleHRlbnNpb25BdG9tcykgIT0gQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb25SZWNvcmQgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVl
KChDRkRpY3Rpb25hcnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKLSAgICAg
ICAgaWYgKCFjb25maWd1cmF0aW9uUmVjb3JkIHx8IENGR2V0VHlwZUlEKGNvbmZpZ3VyYXRpb25S
ZWNvcmQpICE9IENGRGF0YUdldFR5cGVJRCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkU2l6ZSA9IENGRGF0YUdldExlbmd0aChjb25maWd1
cmF0aW9uUmVjb3JkKTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwgMTIp
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRE
YXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihjb25maWd1cmF0aW9uUmVjb3JkKTsKLSAgICAgICAgYXV0
byBiaXREZXB0aENocm9tYUFuZFJhbmdlID0gKihjb25maWd1cmF0aW9uUmVjb3JkRGF0YSArIDYp
OwotCi0gICAgICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+PiA0KSA9PSAxMCkKLSAg
ICAgICAgICAgIG1faXMxMGJpdCA9IHRydWU7Ci0KLSAgICAgICAgaWYgKGJpdERlcHRoQ2hyb21h
QW5kUmFuZ2UgJiAweDEpCi0gICAgICAgICAgICBtX2lzRnVsbFJhbmdlID0gdHJ1ZTsKLSAgICB9
IHdoaWxlIChmYWxzZSk7Ci19Ci0KLUNWUGl4ZWxCdWZmZXJQb29sUmVmIFdlYktpdFZQOURlY29k
ZXJSZWNlaXZlcjo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXpl
X3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wgaXMxMGJpdCkKLXsKLSAgICBpZiAobV9waXhlbEJ1
ZmZlclBvb2wgJiYgbV9waXhlbEJ1ZmZlcldpZHRoID09IHBpeGVsQnVmZmVyV2lkdGggJiYgbV9w
aXhlbEJ1ZmZlckhlaWdodCA9PSBwaXhlbEJ1ZmZlckhlaWdodCAmJiBtX2lzMTBiaXQgPT0gaXMx
MGJpdCkKLSAgICAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sOwotCi0gICAgT1NUeXBlIHBp
eGVsRm9ybWF0OwotICAgIGlmIChpczEwYml0KQotICAgICAgICBwaXhlbEZvcm1hdCA9IG1faXNG
dWxsUmFuZ2UgPyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5n
ZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyVmlkZW9SYW5nZTsKLSAg
ICBlbHNlCi0gICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9y
bWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVf
NDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKLQotICAgIGF1dG8gY3JlYXRlUGl4ZWxGb3Jt
YXRBdHRyaWJ1dGVzID0gW10gKE9TVHlwZSBwaXhlbEZvcm1hdCwgaW50MzJfdCBib3JkZXJQaXhl
bHMpIHsKLSAgICAgICAgYXV0byBjcmVhdGVOdW1iZXIgPSBbXSAoaW50MzJfdCBmb3JtYXQpIC0+
IENGTnVtYmVyUmVmIHsKLSAgICAgICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmZm9ybWF0KTsKLSAgICAgICAgfTsK
LSAgICAgICAgYXV0byBjZlBpeGVsRm9ybWF0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgICAgICBhdXRv
IGZvcm1hdE51bWJlciA9IGNyZWF0ZU51bWJlcihwaXhlbEZvcm1hdCk7Ci0gICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShjZlBpeGVsRm9ybWF0cywgZm9ybWF0TnVtYmVyKTsKLSAgICAgICAgQ0ZS
ZWxlYXNlKGZvcm1hdE51bWJlcik7Ci0KLSAgICAgICAgYXV0byBib3JkZXJQaXhlbHNWYWx1ZSA9
IGNyZWF0ZU51bWJlcigzMik7Ci0KLSAgICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0gewotICAg
ICAgICAgICAga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCi0gICAgICAgICAgICBr
Q1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzTGVmdEtleSwKLSAgICAgICAgICAgIGtDVlBpeGVs
QnVmZmVyRXh0ZW5kZWRQaXhlbHNSaWdodEtleSwKLSAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVy
RXh0ZW5kZWRQaXhlbHNUb3BLZXksCi0gICAgICAgICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVk
UGl4ZWxzQm90dG9tS2V5LAotICAgICAgICB9OwotICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNb
XSA9IHsKLSAgICAgICAgICAgIGNmUGl4ZWxGb3JtYXRzLAotICAgICAgICAgICAgYm9yZGVyUGl4
ZWxzVmFsdWUsCi0gICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKLSAgICAgICAgICAgIGJv
cmRlclBpeGVsc1ZhbHVlLAotICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCi0gICAgICAg
IH07Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIHN0ZDo6c2l6ZShrZXlzKSwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0g
ICAgICAgIENGUmVsZWFzZShib3JkZXJQaXhlbHNWYWx1ZSk7Ci0gICAgICAgIENGUmVsZWFzZShj
ZlBpeGVsRm9ybWF0cyk7Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOwotICAgIH07Ci0KLSAg
ICBhdXRvIHBpeGVsQnVmZmVyQXR0cmlidXRlcyA9IGNyZWF0ZVBpeGVsRm9ybWF0QXR0cmlidXRl
cyhwaXhlbEZvcm1hdCwgMzIpOwotICAgIFZURGVjb2RlclNlc3Npb25TZXRQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOwotICAgIENGUmVsZWFz
ZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOwotCi0gICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKSB7
Ci0gICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7Ci0gICAgICAgIG1fcGl4ZWxC
dWZmZXJQb29sID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IFZU
RGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsKLSAgICBpZiAobV9w
aXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgIENGUmV0YWluKG1fcGl4ZWxCdWZmZXJQb29sKTsKLQot
ICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHBpeGVsQnVmZmVyV2lkdGg7Ci0gICAgbV9waXhlbEJ1
ZmZlckhlaWdodCA9IHBpeGVsQnVmZmVySGVpZ2h0OwotICAgIG1faXMxMGJpdCA9IGlzMTBiaXQ7
Ci0KLSAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Ci19Ci0KLU9TU3RhdHVzIFdlYktpdFZQ
OURlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCi17Ci0gICAgT1NTdGF0
dXMgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2RlckJhZERhdGFFcnI7Ci0gICAgaWYgKGVycm9yID09
IFdFQlJUQ19WSURFT19DT0RFQ19OT19PVVRQVVQpCi0gICAgICAgIHZ0RXJyb3IgPSBub0VycjsK
LSAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfVU5JTklUSUFMSVpFRCkK
LSAgICAgICAgdnRFcnJvciA9IGtWVFZpZGVvRGVjb2Rlck1hbGZ1bmN0aW9uRXJyOwotICAgIGVs
c2UgaWYgKGVycm9yID09IFdFQlJUQ19WSURFT19DT0RFQ19NRU1PUlkpCi0gICAgICAgIHZ0RXJy
b3IgPSBrVlRBbGxvY2F0aW9uRmFpbGVkRXJyOwotICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVj
b2RlZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHZ0RXJyb3IsIDAsIG51bGxwdHIp
OwotICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLQotICAgIFJUQ19MT0coTFNfRVJST1Ip
IDw8ICJWUDkgZGVjb2RlcjogZGVjb2RlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9yIDw8
ICIsIHZ0RXJyb3IgIiA8PCB2dEVycm9yOwotICAgIHJldHVybiB2dEVycm9yOwotfQotCi1pbnQz
Ml90IFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSkK
LXsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0
aGlzXShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4gQ1ZQ
aXhlbEJ1ZmZlclJlZiB7Ci0gICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4
ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7Ci0g
ICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAg
ICAgIGlmIChDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLCAmcGl4ZWxCdWZmZXIpID09IGtDVlJldHVyblN1Y2Nl
c3MpCi0gICAgICAgICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0pOwotCi0gICAgVlREZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUobV9z
ZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwgcGl4ZWxCdWZmZXIgPyBub0VyciA6IC0xLCAwLCBwaXhl
bEJ1ZmZlcik7Ci0gICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOwotICAgIGlmIChwaXhlbEJ1
ZmZlcikKLSAgICAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsKLSAgICByZXR1cm4gMDsKLX0K
LQotaW50MzJfdCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYg
ZnJhbWUsIGludDY0X3QpCi17Ci0gICAgRGVjb2RlZChmcmFtZSk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLXZvaWQgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZy
YW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiwgYWJzbDo6b3B0aW9uYWw8dWludDhfdD4pCi17
Ci0gICAgRGVjb2RlZChmcmFtZSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBlMTA4MDQzOTk5NjQ4M2FiMzMxYTI5ZGFlYmUwNjRmMGZkMGYzZmQzLi40MWMzYjk3
YTM2ZjZiNDYxZjAyYjJlOWQwNGM4Zjg1ZTMwYWMzZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zOTA5LDYgKzM5MDksMTAgQEAKIAkJNUNGRDUzOTIxRTRCRDNBMzAwNDgy
OTA4IC8qIHJvd19uZW9uNjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0ZENTM4QTFFNEJEM0EzMDA0ODI5MDggLyogcm93X25lb242NC5jYyAqLzsg
fTsKIAkJNUNGRDUzOTMxRTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QjFFNEJEM0EzMDA0
ODI5MDggLyogc2NhbGVfbmVvbi5jYyAqLzsgfTsKIAkJNUNGRDUzOTQxRTRCRDNBMzAwNDgyOTA4
IC8qIHNjYWxlX25lb242NC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDRkQ1MzhDMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgKi87
IH07CisJCUNEMzgxRjI3MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyNTI1ODE1
OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5oICovOyB9OworCQlDRDM4MUYyOTI1ODE1
OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyogV2Vi
S2l0VlA4RGVjb2Rlci5jcHAgKi87IH07CisJCUNEMzgxRjJCMjU4MUZFQkEwMDc3REVDOCAvKiBX
ZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QzODFGMkEyNTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERlY29kZXJS
ZWNlaXZlci5jcHAgKi87IH07CisJCUNEMzgxRjJEMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJLaXRE
ZWNvZGVyUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMzgxRjJDMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIu
aCAqLzsgfTsKIAkJQ0RFQkI0QjYyNEMwMTlDNDAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQkI0NjQy
NEMwMTkxQTAwQURCRDQ0IC8qIHVua25vd25fcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCNzI0
QzAxOUM0MDBBREJENDQgLyogbWFzdGVyX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUJCNDZGMjRDMDE5MUEwMEFEQkQ0NCAvKiBtYXN0
ZXJfcGFyc2VyLmNjICovOyB9OwogCQlDREVCQjRCODI0QzAxOUM0MDBBREJENDQgLyogYmxvY2tf
cGFyc2VyLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFQkI0NzYyNEMwMTkxQTAwQURCRDQ0IC8qIGJsb2NrX3BhcnNlci5jYyAqLzsgfTsKQEAgLTg0
MzIsNiArODQzNiwxMCBAQAogCQk1RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFzZS54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0UgLyogRGVi
dWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVn
UmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFCODlCOEEy
MjFFMDA0QzAwRUI0Q0VBIC8qIFNES1ZhcmlhbnQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU0RL
VmFyaWFudC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMjUy
NTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViS2l0VlA4RGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVjb2Rlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRWUDhEZWNvZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMkEyNTgxRkVCQTAwNzdERUM4
IC8qIFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRDM4MUYyQzI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2Vp
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdERlY29kZXJSZWNlaXZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREVCQjExOTI0QzAxODc0MDBBREJENDQgLyogbGlid2VibS5h
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZl
LmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJ3ZWJtLmE7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUNERUJCMTFFMjRDMDE4OTYwMEFEQkQ0NCAvKiBsaWJ3
ZWJtLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxpYndlYm0ueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNERUJCNDA1MjRDMDE5MUEwMEFEQkQ0NCAvKiByZWFkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gcmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDk2MiwxMCArMTA5NzAsMTQgQEAKIAkJCQk0MTJGRjkzNTI1M0Q4RjBBMDAxREYwMzYgLyogVlRW
aWRlb0RlY29kZXJTUEkuaCAqLywKIAkJCQk0MUU4NEJDOTI0MzRDNEEyMDBEMzRFNDEgLyogV2Vi
S2l0RGVjb2Rlci5oICovLAogCQkJCTQxRTg0QkNBMjQzNEM0QTMwMEQzNEU0MSAvKiBXZWJLaXRE
ZWNvZGVyLm1tICovLAorCQkJCUNEMzgxRjJBMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNv
ZGVyUmVjZWl2ZXIuY3BwICovLAorCQkJCUNEMzgxRjJDMjU4MUZGMEIwMDc3REVDOCAvKiBXZWJL
aXREZWNvZGVyUmVjZWl2ZXIuaCAqLywKIAkJCQk0MTU4NjQ5NjIzQkUwNUU4MDBBMEE2MUUgLyog
V2ViS2l0RW5jb2Rlci5oICovLAogCQkJCTQxNTg2NDk3MjNCRTA1RTkwMEEwQTYxRSAvKiBXZWJL
aXRFbmNvZGVyLm1tICovLAogCQkJCTQxRUNFQUJCMjA2NDAzQzEwMDlENTE0MSAvKiBXZWJLaXRV
dGlsaXRpZXMuaCAqLywKIAkJCQk0MUVDRUFCRDIwNjQwNDk4MDA5RDUxNDEgLyogV2ViS2l0VXRp
bGl0aWVzLm1tICovLAorCQkJCUNEMzgxRjI4MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhE
ZWNvZGVyLmNwcCAqLywKKwkJCQlDRDM4MUYyNTI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4
RGVjb2Rlci5oICovLAogCQkJCTQxNDAzN0JBMjRBQzc2RTkwMEJDRTlCMiAvKiBXZWJLaXRWUDlE
ZWNvZGVyLmNwcCAqLywKIAkJCQk0MTQwMzdCOTI0QUM3NkU5MDBCQ0U5QjIgLyogV2ViS2l0VlA5
RGVjb2Rlci5oICovLAogCQkJKTsKQEAgLTE3NDk2LDggKzE3NTA4LDEwIEBACiAJCQkJNUM0QjRD
ODExRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRC
NEM4NDFFNDMxRjlDMDAyNjUxQzggLyogd2F2X2hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEzMUMxNjMyMzRCODlFMjAwMjhBNjE1IC8qIHdlYWtfcHRyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDRDM4MUYyRDI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTU4NjQ5ODIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFQ0VBQkMyMDY0MDNDMjAwOUQ1MTQxIC8qIFdlYktp
dFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzODFGMjcyNTgxNTkxRjAwNzdERUM4
IC8qIFdlYktpdFZQOERlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNDAzN0JCMjRBQzc2
RUEwMEJDRTlCMiAvKiBXZWJLaXRWUDlEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RE
OENBQjFFNDNDNkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE0NUU0OTExRUY4OEVGNzAwRkNGNkU2IC8qIHdlYnJ0Y19saWJ5dXYuaCBpbiBIZWFkZXJzICov
LApAQCAtMjAwMzksOCArMjAwNTMsMTAgQEAKIAkJCQk1QzRCNEM4MzFFNDMxRjlDMDAyNjUxQzgg
Lyogd2F2X2hlYWRlci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxMzFDMEY5MjM0Qjg5RTIwMDI4
QTYxNSAvKiB3ZWFrX3B0ci5jYyBpbiBTb3VyY2VzICovLAogCQkJCTQxRTg0QkQ1MjQzNzNGNzIw
MEQzNEU0MSAvKiBXZWJLaXREZWNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QzODFGMkIy
NTgxRkVCQTAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MTU4NjQ5OTIzQkUwNUU5MDBBMEE2MUUgLyogV2ViS2l0RW5jb2Rlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTQxRUNFQUJFMjA2NDA0OTgwMDlENTE0MSAvKiBXZWJLaXRVdGlsaXRp
ZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDM4MUYyOTI1ODE1OTFGMDA3N0RFQzggLyogV2Vi
S2l0VlA4RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTQwMzdCQzI0QUM3NkVBMDBC
Q0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0REOENB
QTFFNDNDNkY3MDA2MjFFOTIgLyogd2VicnRjX2NuZy5jYyBpbiBTb3VyY2VzICovLAogCQkJCTVD
REQ4MzY3MUU0MzI1RDUwMDYyMUU5MiAvKiB3ZWJydGNfbGlieXV2LmNjIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNFeHBlcmltZW50YWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCmluZGV4IDQ5ZTM4ZjVlNzM5MjFiZDUyZjkwZWE3
M2RkODY4NjdlNTIxOWQ4OWYuLjU4ZTdhOTlmNGVkOWY1MTIxNzA4MmMxNDAyNmM4MmI0NjEwMTQw
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC04NjQsNiArODY0LDE2IEBAIFVz
ZXJHZXN0dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDoKICAgICBXZWJLaXQ6CiAgICAgICBk
ZWZhdWx0OiB0cnVlCiAKK1ZQOERlY29kZXJFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFu
UmVhZGFibGVOYW1lOiAiVlA4IGRlY29kZXIiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjog
IkVuYWJsZSBWUDggZGVjb2RlciIKKyAgd2ViY29yZUJpbmRpbmc6IG5vbmUKKyAgY29uZGl0aW9u
OiBFTkFCTEUoVlA5KQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0OgorICAgICAgZGVmYXVs
dDogV2ViS2l0OjpkZWZhdWx0VlA4RGVjb2RlckVuYWJsZWQoKQorCiAjIEZJWE1FOiBJcyB0aGlz
IGltcGxlbWVudGVkIGZvciBXZWJLaXRMZWdhY3k/IElmIG5vdCwgdGhpcyBzaG91bGQgYmUgZXhj
bHVkZWQgZnJvbSBXZWJLaXRMZWdhY3kgZW50aXJlbHkuCiBWUDlEZWNvZGVyRW5hYmxlZDoKICAg
dHlwZTogYm9vbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0
aWxpdGllcy5jcHAKaW5kZXggMTQwODc0MWI4MTMzMTBkMjdmNDYwMDAxOGUzMzFhNTA0YzU0NDBi
ZC4uNGUyODIyNzIxNTE3YzNiZTY4OTNlMThjODFjN2FmNWEyZGI4NWI3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCkBAIC0xMjQs
MTIgKzEyNCw2IEBAIHN0YXRpYyBib29sIGlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cyh1aW50
OF90IG1hdHJpeENvZWZmaWNpZW50cykKIAogT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCiB7Ci0g
ICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgJ3ZwMDknIGNvZGVjIHN0cmluZyBpcyBzcGVjaWZpZWQg
aW4gdGhlIHdlYm0gR2l0SHViIHJlcG86Ci0gICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJt
cHJvamVjdC92cDktZGFzaC9ibG9iL21hc3Rlci9WUENvZGVjSVNPTWVkaWFGaWxlRm9ybWF0Qmlu
ZGluZy5tZCNjb2RlY3MtcGFyYW1ldGVyLXN0cmluZz4KLQotICAgIC8vICJzYW1wbGUgZW50cnkg
NENDLCBwcm9maWxlLCBsZXZlbCwgYW5kIGJpdERlcHRoIGFyZSBhbGwgbWFuZGF0b3J5IGZpZWxk
cy4gSWYgYW55IG9mIHRoZXNlIGZpZWxkcyBhcmUgZW1wdHksIG9yIG5vdAotICAgIC8vIHdpdGhp
biB0aGVpciBhbGxvd2VkIHJhbmdlLCB0aGUgcHJvY2Vzc2luZyBkZXZpY2UgU0hBTEwgdHJlYXQg
aXQgYXMgYW4gZXJyb3IuIgotCiAgICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNWaWV3LnNwbGl0
KCcuJyk7CiAgICAgYXV0byBuZXh0RWxlbWVudCA9IGNvZGVjU3BsaXQuYmVnaW4oKTsKICAgICBp
ZiAobmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKQEAgLTEzNywxMiArMTMxLDI0IEBA
IE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0
ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAKICAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29y
ZCBjb25maWd1cmF0aW9uOwogCi0gICAgLy8gQ29kZWMgaWRlbnRpZmllcjogbGVnYWwgdmFsdWVz
IGFyZSAndnAwOCcgb3IgJ3ZwMDknLgogICAgIGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lID0gKCpu
ZXh0RWxlbWVudCkudG9TdHJpbmcoKTsKKyAgICArK25leHRFbGVtZW50OworCisgICAgLy8gU3Vw
cG9ydCB0aGUgbGVnYWN5IGlkZW50aWZpZXJzICh3aXRoIG5vIHBhcmFtZXRlcnMpIGZvciBWUDgg
YW5kIFZQOS4KKyAgICBpZiAoKGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDgiIHx8IGNv
bmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDkiKSAmJiBuZXh0RWxlbWVudCA9PSBjb2RlY1Nw
bGl0LmVuZCgpKQorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKworICAgIC8vIFRoZSBm
b3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGluIHRoZSB3ZWJt
IEdpdEh1YiByZXBvOgorICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vd2VibXByb2plY3QvdnA5
LWRhc2gvYmxvYi9tYXN0ZXIvVlBDb2RlY0lTT01lZGlhRmlsZUZvcm1hdEJpbmRpbmcubWQjY29k
ZWNzLXBhcmFtZXRlci1zdHJpbmc+CisKKyAgICAvLyAic2FtcGxlIGVudHJ5IDRDQywgcHJvZmls
ZSwgbGV2ZWwsIGFuZCBiaXREZXB0aCBhcmUgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIElmIGFueSBv
ZiB0aGVzZSBmaWVsZHMgYXJlIGVtcHR5LCBvciBub3QKKyAgICAvLyB3aXRoaW4gdGhlaXIgYWxs
b3dlZCByYW5nZSwgdGhlIHByb2Nlc3NpbmcgZGV2aWNlIFNIQUxMIHRyZWF0IGl0IGFzIGFuIGVy
cm9yLiIKKworICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxlZ2FsIHZhbHVlcyBhcmUgJ3ZwMDgn
IG9yICd2cDA5Jy4KICAgICBpZiAoY29uZmlndXJhdGlvbi5jb2RlY05hbWUgIT0gInZwMDgiICYm
IGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9ICJ2cDA5IikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAotICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCisg
ICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAvLyBGaXJzdCBlbGVtZW50OiBwcm9maWxlLiBMZWdhbCB2YWx1
ZXMgYXJlIDAtMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggOWI4ZmM2
N2JlNzFhMGVlYmRlZDkzOWYxNjMyOGQ1MDlmMDBmMjQ3Ny4uMjViZTNjOWNkNTVlYTc0MmY2ZWUy
MjE1ZDVhY2IyZDY4ZjFiMDBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
QEAgLTQ3Miw3ICs0NzIsNyBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlwZVN1cHBvcnRlZChjbwogICAgIGF1dG8gc3Bs
aXRSZXN1bHRzID0gU3RyaW5nVmlldyhjb2RlY3NQYXJhbWV0ZXIpLnNwbGl0KCcsJyk7CiAgICAg
Zm9yIChhdXRvIHNwbGl0IDogc3BsaXRSZXN1bHRzKSB7CiAjaWYgRU5BQkxFKFZQOSkKLSAgICAg
ICAgaWYgKHNwbGl0LnN0YXJ0c1dpdGgoInZwMDkiKSkgeworICAgICAgICBpZiAoc3BsaXQuc3Rh
cnRzV2l0aCgidnAwOSIpIHx8IHNwbGl0LnN0YXJ0c1dpdGgoInZwMDgiKSB8fCBlcXVhbChzcGxp
dCwgInZwOCIpIHx8IGVxdWFsKHNwbGl0LCAidnA5IikpIHsKIAogICAgICAgICAgICAgaWYgKCFp
c1ZQOURlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKQEAgLTc4OSw2ICs3ODksMTgg
QEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVt
ZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjb24KICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6
OmtPa0NvbXBsZXRlZCk7CiAKICAgICBhdXRvIHRyYWNrVHlwZSA9IHRyYWNrRW50cnkudHJhY2tf
dHlwZS52YWx1ZSgpOworICAgIFN0cmluZyBjb2RlY0lkIHsgdHJhY2tFbnRyeS5jb2RlY19pZC52
YWx1ZSgpLmRhdGEoKSwgKHVuc2lnbmVkKXRyYWNrRW50cnkuY29kZWNfaWQudmFsdWUoKS5sZW5n
dGgoKSB9OworCisgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbyAmJiAhc3Vw
cG9ydGVkVmlkZW9Db2RlY3MoKS5jb250YWlucyhjb2RlY0lkKSkgeworICAgICAgICBFUlJPUl9M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIHVuc3VwcG9ydGVkIHZp
ZGVvIGNvZGVjIElEIFwiIiwgY29kZWNJZCwgIlwiLCBiYWlsaW5nIik7CisgICAgICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6VW5zdXBwb3J0ZWRWaWRlb0NvZGVjKSk7
CisgICAgfQorCisgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtBdWRpbyAmJiAhc3Vw
cG9ydGVkQXVkaW9Db2RlY3MoKS5jb250YWlucyhjb2RlY0lkKSkgeworICAgICAgICBFUlJPUl9M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIkVuY291bnRlcmVkIHVuc3VwcG9ydGVkIGF1
ZGlvIGNvZGVjIElEIFwiIiwgY29kZWNJZCwgIlwiLCBiYWlsaW5nIik7CisgICAgICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6VW5zdXBwb3J0ZWRBdWRpb0NvZGVjKSk7
CisgICAgfQorCiAgICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtWaWRlbykKICAgICAg
ICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVz
Y3JpcHRpb25XZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFZpZGVvVHJhY2tQ
cml2YXRlV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOwogICAgIGVsc2Ug
aWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtBdWRpbykKQEAgLTgwMCw2ICs4MTIsMTAgQEAg
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeShjb25zdCBFbGVtZW50
TWV0YWRhdGEmIG1ldGFkYXRhLCBjb24KICAgICAgICAgbV90cmFja3MuYXBwZW5kKFZpZGVvVHJh
Y2tEYXRhOjpjcmVhdGUoQ29kZWNUeXBlOjpWUDksIHRyYWNrRW50cnksICp0aGlzKSk7CiAgICAg
ICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogICAgIH0KKyAgICBpZiAo
Y29kZWNTdHJpbmcgPT0gIlZfVlA4IiAmJiBpc1ZQOERlY29kZXJBdmFpbGFibGUoKSkgeworICAg
ICAgICBtX3RyYWNrcy5hcHBlbmQoVmlkZW9UcmFja0RhdGE6OmNyZWF0ZShDb2RlY1R5cGU6OlZQ
OCwgdHJhY2tFbnRyeSwgKnRoaXMpKTsKKyAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtP
a0NvbXBsZXRlZCk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVk9SQklTKQpAQCAtODg2
LDcgKzkwMiw2IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2Nr
R3JvdXBFbmQoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhCiAgICAgcmV0dXJuIFN0YXR1cyhT
dGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CiAKLQogd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWRlciog
cmVhZGVyLCB1aW50NjRfdCogYnl0ZXNSZW1haW5pbmcpCiB7CiAgICAgQVNTRVJUKHJlYWRlcik7
CkBAIC05MTIsNiArOTI3LDcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKICAgICB9CiAKICAg
ICBzd2l0Y2ggKHRyYWNrRGF0YS0+Y29kZWMoKSkgeworICAgIGNhc2UgQ29kZWNUeXBlOjpWUDg6
CiAgICAgY2FzZSBDb2RlY1R5cGU6OlZQOToKICAgICBjYXNlIENvZGVjVHlwZTo6Vm9yYmlzOgog
ICAgIGNhc2UgQ29kZWNUeXBlOjpPcHVzOgpAQCAtMTAwMywyMyArMTAxOSwzOCBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OlZpZGVvVHJhY2tEYXRhOjpjcmVhdGVTYW1wbGVCdWZmZXIo
Y29uc3QgQ01UaW1lJiBwcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX2hl
YWRlclBhcnNlci5QYXJzZVVuY29tcHJlc3NlZEhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21l
bnRTaXplQXRQb3NpdGlvbikpIHsKLSAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJM
RSgiUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIgZmFpbGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgYm9vbCBpc0tleSA9IGZhbHNlOworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBmb3JtYXREZXNjcmlwdGlvbjsKKyAgICBpZiAoY29kZWMoKSA9PSBDb2RlY1R5
cGU6OlZQOSkgeworICAgICAgICBpZiAoIW1faGVhZGVyUGFyc2VyLlBhcnNlVW5jb21wcmVzc2Vk
SGVhZGVyKGJsb2NrQnVmZmVyRGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKSkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIE9ubHkgdXBkYXRlIHRoZSBmb3JtYXQgZGVzY3JpcHRpb24g
d2hlbiB0aGUgaGVhZGVyIGluZGljYXRlcyB0aGF0IHRoZSBzYW1wbGUgaXMKLSAgICAvLyBhIGtl
eS1mcmFtZSwgb3RoZXJ3aXNlIGNvbG9yIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHBhcnNlZC4K
LSAgICBhdXRvIHRyYWNrID0gdGhpcy0+dHJhY2soKTsKLSAgICBpZiAobV9oZWFkZXJQYXJzZXIu
a2V5KCkpIHsKLSAgICAgICAgYXV0byBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERl
c2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihtX2hlYWRlclBhcnNlciwgdHJhY2sudmlkZW8u
dmFsdWUoKS5jb2xvdXIpOwotICAgICAgICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKSB7Ci0gICAg
ICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJmYWlsZWQgdG8gY3JlYXRlIGZv
cm1hdCBkZXNjcmlwdGlvbiBmcm9tIFZQOSBoZWFkZXIiKTsKKyAgICAgICAgaWYgKG1faGVhZGVy
UGFyc2VyLmtleSgpKSB7CisgICAgICAgICAgICBpc0tleSA9IHRydWU7CisgICAgICAgICAgICBh
dXRvIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVh
ZGVyUGFyc2VyKG1faGVhZGVyUGFyc2VyLCB0cmFjaygpLnZpZGVvLnZhbHVlKCkuY29sb3VyKTsK
KyAgICAgICAgICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgICAgICBQ
QVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJmYWlsZWQgdG8gY3JlYXRlIGZvcm1hdCBkZXNj
cmlwdGlvbiBmcm9tIFZQWCBoZWFkZXIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBzZXRGb3JtYXREZXNjcmlwdGlvbihXVEZNb3ZlKGZvcm1h
dERlc2NyaXB0aW9uKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGNvZGVjKCkgPT0gQ29k
ZWNUeXBlOjpWUDgpIHsKKyAgICAgICAgYXV0byBoZWFkZXIgPSBwYXJzZVZQOEZyYW1lSGVhZGVy
KGJsb2NrQnVmZmVyRGF0YSwgc2VnbWVudFNpemVBdFBvc2l0aW9uKTsKKyAgICAgICAgaWYgKCFo
ZWFkZXIpCiAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGhlYWRlci0+a2V5ZnJh
bWUpIHsKKyAgICAgICAgICAgIGlzS2V5ID0gdHJ1ZTsKKyAgICAgICAgICAgIGF1dG8gZm9ybWF0
RGVzY3JpcHRpb24gPSBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIoKmhlYWRl
ciwgdHJhY2soKS52aWRlby52YWx1ZSgpLmNvbG91cik7CisgICAgICAgICAgICBpZiAoIWZvcm1h
dERlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NT
SUJMRSgiZmFpbGVkIHRvIGNyZWF0ZSBmb3JtYXQgZGVzY3JpcHRpb24gZnJvbSBWUFggaGVhZGVy
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RGTW92ZShmb3JtYXREZXNjcmlwdGlvbikpOwogICAgICAg
ICB9Ci0gICAgICAgIHNldEZvcm1hdERlc2NyaXB0aW9uKFdURk1vdmUoZm9ybWF0RGVzY3JpcHRp
b24pKTsKICAgICB9CiAKKyAgICBhdXRvIHRyYWNrID0gdGhpcy0+dHJhY2soKTsKICAgICAvLyBG
SVhNRTogQSBibG9jayBtaWdodCBjb250YWluIG1vcmUgdGhhbiBvbmUgZnJhbWUsIGJ1dCBvbmx5
IHRoaXMgZnJhbWUgaGFzIGJlZW4gcmVhZCBpbnRvIGBjdXJyZW50QmxvY2tCdWZmZXJgLgogICAg
IC8vIEJlbG93IHdlIGNyZWF0ZSBzYW1wbGUgYnVmZmVycyBmb3IgZWFjaCBmcmFtZSwgZWFjaCB3
aXRoIHRoZSBibG9jaydzIHRpbWVjb2RlIGFuZCBgbnVtX2ZyYW1lc2AgdmFsdWUuCiAgICAgLy8g
U2hvdWxkbid0IHdlIGNyZWF0ZSBqdXN0IG9uZSBzYW1wbGUgYnVmZmVyIG9uY2UgYWxsIHRoZSBi
bG9jaydzIGZyYW1lcyBoYXZlIGJlZW4gcmVhZCBpbnRvIGBjdXJyZW50QmxvY2tCdWZmZXJgPwpA
QCAtMTAzMSw3ICsxMDYyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1Ry
YWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiByYXdTYW1wbGVCdWZmZXIgPSBudWxscHRyOwogICAgIHNpemVfdCBmcmFtZVNp
emUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQo
KSk7CiAgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZyA9IHsgQ01UaW1lTWFrZShkdXJhdGlv
biwgcHJlc2VudGF0aW9uVGltZS50aW1lc2NhbGUpLCBwcmVzZW50YXRpb25UaW1lLCBwcmVzZW50
YXRpb25UaW1lIH07Ci0gICAgZXJyID0gQ01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX2N1cnJlbnRCbG9ja0J1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRp
b24oKS5nZXQoKSwgc2FtcGxlQ291bnQsIDEsICZ0aW1pbmcsIDEsICZmcmFtZVNpemUsICZyYXdT
YW1wbGVCdWZmZXIpOworICAgIGVyciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbV9jdXJyZW50QmxvY2tCdWZmZXIuZ2V0KCksIHRoaXMtPmZvcm1hdERl
c2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNvdW50LCAxLCAmdGltaW5nLCAxLCAmZnJhbWVTaXpl
LCAmcmF3U2FtcGxlQnVmZmVyKTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFBBUlNFUl9MT0df
RVJST1JfSUZfUE9TU0lCTEUoIkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHkgZmFpbGVkIHdpdGgg
ZXJyb3IiLCBlcnIpOwogICAgICAgICByZXR1cm47CkBAIC0xMTczLDYgKzEyMDQsMTggQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihm
bG9hdCBkdXJhdGlvbikKICAgICBtX21pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uID0gZHVyYXRp
b247CiB9CiAKK2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
c3VwcG9ydGVkVmlkZW9Db2RlY3MoKQoreworICAgIHN0YXRpYyBhdXRvIGNvZGVjcyA9IG1ha2VO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+KHsgIlZfVlA4IiwgIlZfVlA5IiB9KTsKKyAg
ICByZXR1cm4gY29kZWNzOworfQorCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnN1cHBvcnRlZEF1ZGlvQ29kZWNzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBj
b2RlY3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+Pih7IH0pOworICAgIHJl
dHVybiBjb2RlY3M7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggMWQ5NWZhODI3MDEyNTMzZDVlMGUzYWY2
NWE3ZGI0MzM4NGQyZGU2OC4uNTEyNzYyNDljNDE5Y2NlZDI5MDNhNTIwNzdjNzNkMWU3MGExMWM3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtODksNiArODksOCBAQCBwdWJs
aWM6CiAgICAgICAgIEludmFsaWREb2NUeXBlLAogICAgICAgICBJbnZhbGlkSW5pdFNlZ21lbnQs
CiAgICAgICAgIFJlY2VpdmVkRWJtbEluc2lkZVNlZ21lbnQsCisgICAgICAgIFVuc3VwcG9ydGVk
VmlkZW9Db2RlYywKKyAgICAgICAgVW5zdXBwb3J0ZWRBdWRpb0NvZGVjLAogICAgIH07CiAKICAg
ICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7CkBAIC0xMDYsNiArMTA4LDcgQEAgcHVibGlj
OgogCiAgICAgZW51bSBjbGFzcyBDb2RlY1R5cGUgOiB1aW50OF90IHsKICAgICAgICAgVW5zdXBw
b3J0ZWQsCisgICAgICAgIFZQOCwKICAgICAgICAgVlA5LAogICAgICAgICBWb3JiaXMsCiAgICAg
ICAgIE9wdXMsCkBAIC0yMjAsNiArMjIzLDkgQEAgcHJpdmF0ZToKIAogICAgIFRyYWNrRGF0YSog
dHJhY2tEYXRhRm9yVHJhY2tOdW1iZXIodWludDY0X3QpOwogCisgICAgc3RhdGljIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVmlkZW9Db2RlY3MoKTsKKyAgICBzdGF0aWMgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWRBdWRpb0NvZGVjcygpOworCiAgICAgLy8gd2VibTo6
Q2FsbGJhY2sKICAgICB3ZWJtOjpTdGF0dXMgT25FbGVtZW50QmVnaW4oY29uc3Qgd2VibTo6RWxl
bWVudE1ldGFkYXRhJiwgd2VibTo6QWN0aW9uKikgZmluYWw7CiAgICAgd2VibTo6U3RhdHVzIE9u
RWxlbWVudEVuZChjb25zdCB3ZWJtOjpFbGVtZW50TWV0YWRhdGEmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0Nv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5oCmluZGV4IDVjY2QzNTc3OTMxNDQ5OWU3NjQwNThmMjQyOGQyYTZmZWI1MDNlNDQu
LjJmMDAwNmI0MWQxNzFjYTcxZmM4NGVlMWJhNzFhZDRjZGQxMGVjNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVz
Q29jb2EuaApAQCAtNDYsMTMgKzQ2LDMxIEBAIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHNl
dE92ZXJyaWRlVlA5U2NyZWVuU2l6ZUFuZFNjYWxlRm9yVGVzdGluZyhmbG9hdCB3aWR0CiBXRUJD
T1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZXNldE92ZXJyaWRlVlA5U2NyZWVuU2l6ZUFuZFNjYWxl
Rm9yVGVzdGluZygpOwogCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdpc3RlcldlYktp
dFZQOURlY29kZXIoKTsKK1dFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lzdGVyV2ViS2l0
VlA4RGVjb2RlcigpOwogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVnaXN0ZXJTdXBwbGVt
ZW50YWxWUDlEZWNvZGVyKCk7CiBleHRlcm4gYm9vbCBpc1ZQOURlY29kZXJBdmFpbGFibGUoKTsK
K2V4dGVybiBib29sIGlzVlA4RGVjb2RlckF2YWlsYWJsZSgpOwogZXh0ZXJuIGJvb2wgaXNWUENv
ZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29y
ZCYpOwogZXh0ZXJuIGJvb2wgdmFsaWRhdGVWUFBhcmFtZXRlcnMoVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQmLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mLCBjb25zdCBWaWRlb0NvbmZpZ3VyYXRp
b24mKTsKIAogUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZUZvcm1hdERl
c2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb25zdCB2cDlfcGFyc2VyOjpWcDlIZWFkZXJQ
YXJzZXImLCBjb25zdCB3ZWJtOjpFbGVtZW50PHdlYm06OkNvbG91cj4mKTsKIAorc3RydWN0IFZQ
OEZyYW1lSGVhZGVyIHsKKyAgICBib29sIGtleWZyYW1lIHsgZmFsc2UgfTsKKyAgICB1aW50OF90
IHZlcnNpb24geyAwIH07CisgICAgYm9vbCBzaG93RnJhbWUgeyB0cnVlIH07CisgICAgdWludDMy
X3QgcGFydGl0aW9uU2l6ZSB7IDAgfTsKKyAgICB1aW50OF90IGhvcml6b250YWxTY2FsZSB7IDAg
fTsKKyAgICB1aW50MTZfdCB3aWR0aCB7IDAgfTsKKyAgICB1aW50OF90IHZlcnRpY2FsU2NhbGUg
eyAwIH07CisgICAgdWludDE2X3QgaGVpZ2h0OworICAgIGJvb2wgY29sb3JTcGFjZSB7IGZhbHNl
IH07CisgICAgYm9vbCBuZWVkc0NsYW1waW5nIHsgZmFsc2UgfTsKK307CisKK09wdGlvbmFsPFZQ
OEZyYW1lSGVhZGVyPiBwYXJzZVZQOEZyYW1lSGVhZGVyKHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6
ZV90IGZyYW1lU2l6ZSk7CitSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRl
Rm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA4SGVhZGVyKGNvbnN0IFZQOEZyYW1lSGVhZGVyJiwgY29u
c3Qgd2VibTo6RWxlbWVudDx3ZWJtOjpDb2xvdXI+Jik7CisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXND
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxp
dGllc0NvY29hLm1tCmluZGV4IDQxMjI1MGY5NzQ3YTg5OTI2YWVlNWI5MjgxZjFhNDEzYmMyZThj
MTMuLjY2MzU3Njk0M2QxNGFiMTY1OTM3OTI0YTYxN2Q0MGNmODExMzg1MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxp
dGllc0NvY29hLm1tCkBAIC0xMDcsNiArMTA3LDExIEBAIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDlE
ZWNvZGVyKCkKICAgICBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVy
KCk7CiB9CiAKK3ZvaWQgcmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCkKK3sKKyAgICBMaWJXZWJS
VENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyKCk7Cit9CisKIHZvaWQgcmVnaXN0
ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCkKIHsKICAgICBpZiAoIVZpZGVvVG9vbGJveExpYnJh
cnkodHJ1ZSkpCkBAIC0xMjMsNyArMTI4LDE0IEBAIGJvb2wgaXNWUDlEZWNvZGVyQXZhaWxhYmxl
KCkKICAgICByZXR1cm4gbm9FcnIgPT0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0
YW5jZShrQ01WaWRlb0NvZGVjVHlwZV9WUDksIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIs
IG51bGxwdHIpOwogfQogCi1ib29sIGlzVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0
ZWQoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbikKK2Jvb2wg
aXNWUDhEZWNvZGVyQXZhaWxhYmxlKCkKK3sKKyAgICBpZiAoIVZpZGVvVG9vbGJveExpYnJhcnko
dHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbm9FcnIgPT0gVlRTZWxl
Y3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZSgndnAwOCcsIGtDRkFsbG9jYXRvckRlZmF1
bHQsIG51bGxwdHIsIG51bGxwdHIpOworfQorCitzdGF0aWMgYm9vbCBpc1ZQOUNvZGVjQ29uZmln
dXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWND
b25maWd1cmF0aW9uKQogewogICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NSw2ICsxODcsMzcgQEAgYm9vbCBpc1ZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2Rl
Y0NvbmYKICAgICByZXR1cm4gaGFzNGtTY3JlZW47CiB9CiAKK3N0YXRpYyBib29sIGlzVlA4Q29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
JiBjb2RlY0NvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKCFpc1ZQOERlY29kZXJBdmFpbGFibGUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29kZXIgb25seSBzdXBw
b3J0cyBQcm9maWxlIDA7CisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5wcm9maWxlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWUDggZGVjb2RlciBvbmx5IHN1cHBvcnRzIDQy
MCBjaHJvbWEgc3Vic2FtcGxpbmcuCisgICAgaWYgKGNvZGVjQ29uZmlndXJhdGlvbi5jaHJvbWFT
dWJzYW1wbGluZyA+IFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGlu
Z180MjBfQ29sb2NhdGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBWUDggZGVj
b2RlciBvbmx5IHN1cHBvcnRzIDgtYml0IGNvbG9yOgorICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRp
b24uYml0RGVwdGggPiA4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKFZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKGNv
ZGVjQ29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDgiIHx8IGNvZGVjQ29uZmlndXJhdGlv
bi5jb2RlY05hbWUgPT0gInZwOCIpCisgICAgICAgIHJldHVybiBpc1ZQOENvZGVjQ29uZmlndXJh
dGlvblJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgaWYgKGNvZGVj
Q29uZmlndXJhdGlvbi5jb2RlY05hbWUgPT0gInZwMDkiIHx8IGNvZGVjQ29uZmlndXJhdGlvbi5j
b2RlY05hbWUgPT0gInZwOSIpCisgICAgICAgIHJldHVybiBpc1ZQOUNvZGVjQ29uZmlndXJhdGlv
blJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZpZ3VyYXRpb24pOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkJiBjb2RlY0NvbmZpZ3VyYXRpb24sIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYgaW5mbywgY29u
c3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFp
c1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbikp
CkBAIC00MzUsNyArNDc4LDcgQEAgc3RhdGljIHVpbnQ4X3QgY29udmVydFN1YnNhbXBsaW5nWFlU
b0Nocm9tYVN1YnNhbXBsaW5nKHVpbnQ2NF90IHgsIHVpbnQ2NF90IHkpCiAgICAgcmV0dXJuIFZQ
Q29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180MjBfQ29sb2NhdGVk
OwogfQogCi1SZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVz
Y3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6OlZwOUhlYWRlclBh
cnNlciYgcGFyc2VyLCBjb25zdCB3ZWJtOjpFbGVtZW50PENvbG91cj4mIGNvbG9yKQorc3RhdGlj
IFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlv
bkZyb21WUENvZGVjQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBWUENvZGVjQ29uZmlndXJhdGlv
blJlY29yZCYgcmVjb3JkLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKIHsKICAgICAv
LyBSZWY6ICJWUCBDb2RlYyBJU08gTWVkaWEgRmlsZSBGb3JtYXQgQmluZGluZywgdjEuMCwgMjAx
Ny0wMy0zMSIKICAgICAvLyA8aHR0cHM6Ly93d3cud2VibXByb2plY3Qub3JnL3ZwOS9tcDQvPgpA
QCAtNDY0LDM1ICs1MDcsNiBAQCBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3Jl
YXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2VyKGNvbgogICAgIC8vIEZJWE1F
OiBDb252ZXJ0IGV4aXN0aW5nIHN0cnVjdCB0byBhbiBJU09Cb3ggYW5kIHJlcGxhY2UgdGhlIHdy
aXRpbmcgY29kZSBiZWxvdwogICAgIC8vIHdpdGggYSBzdWJjbGFzcyBvZiBJU09GdWxsQm94Lgog
Ci0gICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgcmVjb3JkOwotCi0gICAgcmVjb3JkLnBy
b2ZpbGUgPSBwYXJzZXIucHJvZmlsZSgpOwotICAgIC8vIENvcmVNZWRpYSBkb2VzIG5hdCBjYXJl
IGFib3V0IHRoZSBWUDkgY29kZWMgbGV2ZWw7IGhhcmQtY29kZSB0byBMZXZlbCAxLjAgaGVyZToK
LSAgICByZWNvcmQubGV2ZWwgPSAxMDsKLSAgICByZWNvcmQuYml0RGVwdGggPSBwYXJzZXIuYml0
X2RlcHRoKCk7Ci0gICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IHBhcnNlci5jb2xvcl9y
YW5nZSgpID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlv
blJhbmdlOjpWaWRlb1JhbmdlOwotICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZl
cnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhwYXJzZXIuc3Vic2FtcGxpbmdfeCgp
LCBwYXJzZXIuc3Vic2FtcGxpbmdfeSgpKTsKLSAgICByZWNvcmQuY29sb3JQcmltYXJpZXMgPSBW
UENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6VW5zcGVjaWZpZWQ7Ci0gICAgcmVjb3JkLnRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gVlBDb25maWd1cmF0aW9uVHJhbnNmZXJDaGFyYWN0ZXJp
c3RpY3M6OlVuc3BlY2lmaWVkOwotICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBWUENv
bmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVkOwotCi0gICAgLy8gQ29u
dGFpbmVyIGNvbG9yIHZhbHVlcyBjYW4gb3ZlcnJpZGUgcGVyLXNhbXBsZSBvbmVzOgotICAgIGlm
IChjb2xvci5pc19wcmVzZW50KCkpIHsKLSAgICAgICAgYXV0byYgY29sb3JWYWx1ZSA9IGNvbG9y
LnZhbHVlKCk7Ci0gICAgICAgIGlmIChjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194Lmlz
X3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LmlzX3ByZXNlbnQo
KSkKLSAgICAgICAgICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9IGNvbnZlcnRTdWJzYW1w
bGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ194
LnZhbHVlKCksIGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kudmFsdWUoKSk7Ci0gICAg
ICAgIGlmIChjb2xvclZhbHVlLnJhbmdlLmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLnJhbmdl
LnZhbHVlKCkgIT0gUmFuZ2U6OmtVbnNwZWNpZmllZCkKLSAgICAgICAgICAgIHJlY29yZC52aWRl
b0Z1bGxSYW5nZUZsYWcgPSBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgPT0gUmFuZ2U6OmtGdWxs
ID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29uZmlndXJhdGlvblJhbmdl
OjpWaWRlb1JhbmdlOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLmlz
X3ByZXNlbnQoKSkKLSAgICAgICAgICAgIHJlY29yZC5iaXREZXB0aCA9IGNvbG9yVmFsdWUuYml0
c19wZXJfY2hhbm5lbC52YWx1ZSgpOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS50cmFuc2Zlcl9j
aGFyYWN0ZXJpc3RpY3MuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAgcmVjb3JkLnRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzID0gY29udmVydFRvVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MoY29sb3JW
YWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MudmFsdWUoKSk7Ci0gICAgICAgIGlmIChjb2xv
clZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAgcmVj
b3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IGNvbnZlcnRUb01hdHJpeENvZWZmaWNpZW50cyhjb2xv
clZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMudmFsdWUoKSk7Ci0gICAgICAgIGlmIChjb2xvclZh
bHVlLnByaW1hcmllcy5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQuY29sb3JQcmlt
YXJpZXMgPSBjb252ZXJ0VG9Db2xvclByaW1hcmllcyhjb2xvclZhbHVlLnByaW1hcmllcy52YWx1
ZSgpKTsKLSAgICB9Ci0KICAgICBjb25zdGV4cHIgc2l6ZV90IFZQQ29kZWNDb25maWd1cmF0aW9u
Q29udGVudHNTaXplID0gMTI7CiAKICAgICB1aW50MzJfdCB2ZXJzaW9uQW5kRmxhZ3MgPSAxIDw8
IDI0OwpAQCAtNTQxLDExICs1NTUsMTQyIEBAIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uCiAgICAg
YXV0byBleHRlbnNpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZXh0ZW5zaW9uc0tleXMuZGF0YSgpLCBleHRlbnNpb25zVmFsdWVzLmRhdGEoKSwg
ZXh0ZW5zaW9uc0tleXMuc2l6ZSgpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKICAgICBDTVZpZGVvRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgIGlmIChub0VyciAh
PSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NN
VmlkZW9Db2RlY1R5cGVfVlA5LCBwYXJzZXIud2lkdGgoKSwgcGFyc2VyLmhlaWdodCgpLCBleHRl
bnNpb25zLmdldCgpLCAmZm9ybWF0RGVzY3JpcHRpb24pKQorICAgIENNVmlkZW9Db2RlY1R5cGUg
Y29kZWMgPSByZWNvcmQuY29kZWNOYW1lID09ICJ2cDA5IiA/IGtDTVZpZGVvQ29kZWNUeXBlX1ZQ
OSA6ICd2cDA4JzsKKyAgICBpZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvZGVjLCB3aWR0aCwgaGVpZ2h0LCBleHRlbnNpb25z
LmdldCgpLCAmZm9ybWF0RGVzY3JpcHRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gYWRvcHRDRihmb3JtYXREZXNjcmlwdGlvbik7CiB9CiAKK1JldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQ
YXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6VnA5SGVhZGVyUGFyc2VyJiBwYXJzZXIsIGNvbnN0IHdl
Ym06OkVsZW1lbnQ8Q29sb3VyPiYgY29sb3IpCit7CisgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25S
ZWNvcmQgcmVjb3JkOworCisgICAgcmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA5IjsKKyAgICByZWNv
cmQucHJvZmlsZSA9IHBhcnNlci5wcm9maWxlKCk7CisgICAgLy8gQ29yZU1lZGlhIGRvZXMgbmF0
IGNhcmUgYWJvdXQgdGhlIFZQOSBjb2RlYyBsZXZlbDsgaGFyZC1jb2RlIHRvIExldmVsIDEuMCBo
ZXJlOgorICAgIHJlY29yZC5sZXZlbCA9IDEwOworICAgIHJlY29yZC5iaXREZXB0aCA9IHBhcnNl
ci5iaXRfZGVwdGgoKTsKKyAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gcGFyc2VyLmNv
bG9yX3JhbmdlKCkgPyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1
cmF0aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7CisgICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0g
Y29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKHBhcnNlci5zdWJzYW1wbGlu
Z194KCksIHBhcnNlci5zdWJzYW1wbGluZ195KCkpOworICAgIHJlY29yZC5jb2xvclByaW1hcmll
cyA9IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpVbnNwZWNpZmllZDsKKyAgICByZWNv
cmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBWUENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJh
Y3RlcmlzdGljczo6VW5zcGVjaWZpZWQ7CisgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9
IFZQQ29uZmlndXJhdGlvbk1hdHJpeENvZWZmaWNpZW50czo6VW5zcGVjaWZpZWQ7CisKKyAgICAv
LyBDb250YWluZXIgY29sb3IgdmFsdWVzIGNhbiBvdmVycmlkZSBwZXItc2FtcGxlIG9uZXM6Cisg
ICAgaWYgKGNvbG9yLmlzX3ByZXNlbnQoKSkgeworICAgICAgICBhdXRvJiBjb2xvclZhbHVlID0g
Y29sb3IudmFsdWUoKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5n
X3guaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3kuaXNfcHJl
c2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1
YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBsaW5nKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBs
aW5nX3gudmFsdWUoKSwgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS52YWx1ZSgpKTsK
KyAgICAgICAgaWYgKGNvbG9yVmFsdWUucmFuZ2UuaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUu
cmFuZ2UudmFsdWUoKSAhPSBSYW5nZTo6a1Vuc3BlY2lmaWVkKQorICAgICAgICAgICAgcmVjb3Jk
LnZpZGVvRnVsbFJhbmdlRmxhZyA9IGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSA9PSBSYW5nZTo6
a0Z1bGwgPyBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9u
UmFuZ2U6OlZpZGVvUmFuZ2U7CisgICAgICAgIGlmIChjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5u
ZWwuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3JkLmJpdERlcHRoID0gY29sb3JWYWx1
ZS5iaXRzX3Blcl9jaGFubmVsLnZhbHVlKCk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnRyYW5z
ZmVyX2NoYXJhY3RlcmlzdGljcy5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQudHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBjb252ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyhj
b2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy52YWx1ZSgpKTsKKyAgICAgICAgaWYg
KGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy5pc19wcmVzZW50KCkpCisgICAgICAgICAg
ICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRzID0gY29udmVydFRvTWF0cml4Q29lZmZpY2llbnRz
KGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNpZW50cy52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNv
bG9yVmFsdWUucHJpbWFyaWVzLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5jb2xv
clByaW1hcmllcyA9IGNvbnZlcnRUb0NvbG9yUHJpbWFyaWVzKGNvbG9yVmFsdWUucHJpbWFyaWVz
LnZhbHVlKCkpOworICAgIH0KKworICAgIHJldHVybiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZy
b21WUENvZGVjQ29uZmlndXJhdGlvblJlY29yZChyZWNvcmQsIHBhcnNlci53aWR0aCgpLCBwYXJz
ZXIuaGVpZ2h0KCkpOworfQorCitPcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFt
ZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCit7CisgICAgLy8g
VlA4IGZyYW1lIGhlYWRlcnMgYXJlIGRlZmluZWQgaW4gUkZDIDYzODY6IDxodHRwczovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjNjM4Nj4uCisKKyAgICAvLyBCYWlsIGlmIHRoZSBoZWFkZXIgaXMg
YmVsb3cgYSBtaW5pbXVtIHNpemUKKyAgICBpZiAoZnJhbWVTaXplIDwgMTEpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBWUDhGcmFtZUhlYWRlciBoZWFkZXI7CisgICAgc2l6
ZV90IGhlYWRlclNpemUgPSAxMTsKKworICAgIGF1dG8gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNy
ZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKGZyYW1lRGF0YSwgaGVhZGVyU2l6ZSksIDAsIGhlYWRl
clNpemUpOworICAgIGJvb2wgc3RhdHVzID0gdHJ1ZTsKKworICAgIGF1dG8gdW5jb21wcmVzc2Vk
Q2h1bmsgPSB2aWV3LT5nZXQ8dWludDMyX3Q+KDAsIHRydWUsICZzdGF0dXMpOworICAgIGlmICgh
c3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaGVhZGVyLmtleWZy
YW1lID0gdW5jb21wcmVzc2VkQ2h1bmsgJiAweDgwMDAwMDAwOworICAgIGhlYWRlci52ZXJzaW9u
ID0gKHVuY29tcHJlc3NlZENodW5rID4+IDI4KSAmIDB4NzsKKyAgICBoZWFkZXIuc2hvd0ZyYW1l
ID0gdW5jb21wcmVzc2VkQ2h1bmsgJiAweDgwMDAwMDA7CisgICAgaGVhZGVyLnBhcnRpdGlvblNp
emUgPSAodW5jb21wcmVzc2VkQ2h1bmsgPj4gOCkgJiAweDdGRkZGOworCisgICAgaWYgKCFoZWFk
ZXIua2V5ZnJhbWUpCisgICAgICAgIHJldHVybiBoZWFkZXI7CisKKyAgICBhdXRvIHN0YXJ0Q29k
ZTAgPSB2aWV3LT5nZXQ8dWludDhfdD4oMywgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0
dXMgfHwgc3RhcnRDb2RlMCAhPSAweDlkKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgYXV0byBzdGFydENvZGUxID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDQsIHRydWUsICZzdGF0
dXMpOworICAgIGlmICghc3RhdHVzIHx8IHN0YXJ0Q29kZTEgIT0gMHgwMSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gc3RhcnRDb2RlMiA9IHZpZXctPmdldDx1aW50
OF90Pig1LCB0cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENvZGUyICE9
IDB4MmEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGhvcml6b250
YWxBbmRXaWR0aEZpZWxkID0gdmlldy0+Z2V0PHVpbnQxNl90Pig2LCB0cnVlLCAmc3RhdHVzKTsK
KyAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGhl
YWRlci5ob3Jpem9udGFsU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihob3Jpem9udGFsQW5k
V2lkdGhGaWVsZCA+PiAxNCk7CisgICAgaGVhZGVyLndpZHRoID0gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KGhvcml6b250YWxBbmRXaWR0aEZpZWxkICYgMHgzRkZGKTsKKworICAgIGF1dG8gdmVydGlj
YWxBbmRIZWlnaHRGaWVsZCA9IHZpZXctPmdldDx1aW50MTZfdD4oOCwgdHJ1ZSwgJnN0YXR1cyk7
CisgICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBo
ZWFkZXIudmVydGljYWxTY2FsZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZlcnRpY2FsQW5kSGVp
Z2h0RmllbGQgPj4gMTQpOworICAgIGhlYWRlci5oZWlnaHQgPSBzdGF0aWNfY2FzdDx1aW50MTZf
dD4odmVydGljYWxBbmRIZWlnaHRGaWVsZCAmIDB4M0ZGRik7CisKKyAgICBhdXRvIGNvbG9yU3Bh
Y2VBbmRDbGFtcGluZ0ZpZWxkID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDEwLCB0cnVlLCAmc3RhdHVz
KTsKKyAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IGhlYWRlci5jb2xvclNwYWNlID0gY29sb3JTcGFjZUFuZENsYW1waW5nRmllbGQgJiAweDgwOwor
ICAgIGhlYWRlci5uZWVkc0NsYW1waW5nID0gY29sb3JTcGFjZUFuZENsYW1waW5nRmllbGQgJiAw
eDQwOworCisgICAgcmV0dXJuIGhlYWRlcjsKK30KKworUmV0YWluUHRyPENNRm9ybWF0RGVzY3Jp
cHRpb25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcihjb25zdCBWUDhG
cmFtZUhlYWRlciYgaGVhZGVyLCBjb25zdCB3ZWJtOjpFbGVtZW50PENvbG91cj4mIGNvbG9yKQor
eworICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJlY29yZDsKKyAgICByZWNvcmQuY29k
ZWNOYW1lID0gInZwMDgiOworICAgIHJlY29yZC5wcm9maWxlID0gMDsKKyAgICByZWNvcmQubGV2
ZWwgPSAxMDsKKyAgICByZWNvcmQuYml0RGVwdGggPSA4OworICAgIHJlY29yZC52aWRlb0Z1bGxS
YW5nZUZsYWcgPSBWUENvbmZpZ3VyYXRpb25SYW5nZTo6RnVsbFJhbmdlOworICAgIHJlY29yZC5j
aHJvbWFTdWJzYW1wbGluZyA9IFZQQ29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJz
YW1wbGluZ180MjBfQ29sb2NhdGVkOworICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IGhlYWRl
ci5jb2xvclNwYWNlID8gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVk
IDogVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OkJUXzYwMV83OworICAgIHJlY29yZC50
cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9ICBoZWFkZXIuY29sb3JTcGFjZSA/IFZQQ29uZmlndXJh
dGlvblRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZCA6IFZQQ29uZmlndXJhdGlv
blRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzOjpCVF82MDFfNzsKKyAgICByZWNvcmQubWF0cml4Q29l
ZmZpY2llbnRzID0gaGVhZGVyLmNvbG9yU3BhY2UgPyBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2Vm
ZmljaWVudHM6OlVuc3BlY2lmaWVkIDogVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRz
OjpCVF82MDFfNzsKKworICAgIC8vIENvbnRhaW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRl
IHBlci1zYW1wbGUgb25lczoKKyAgICBpZiAoY29sb3IuaXNfcHJlc2VudCgpKSB7CisgICAgICAg
IGF1dG8mIGNvbG9yVmFsdWUgPSBjb2xvci52YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JWYWx1
ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFf
c3Vic2FtcGxpbmdfeS5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vi
c2FtcGxpbmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JW
YWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeC52YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJz
YW1wbGluZ195LnZhbHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVz
ZW50KCkgJiYgY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQp
CisgICAgICAgICAgICByZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5n
ZS52YWx1ZSgpID09IFJhbmdlOjprRnVsbCA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFu
Z2UgOiBWUENvbmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKKyAgICAgICAgaWYgKGNvbG9y
VmFsdWUuYml0c19wZXJfY2hhbm5lbC5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQu
Yml0RGVwdGggPSBjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwudmFsdWUoKTsKKyAgICAgICAg
aWYgKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKKyAg
ICAgICAgICAgIHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5z
ZmVyQ2hhcmFjdGVyaXN0aWNzKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZh
bHVlKCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3By
ZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0
VG9NYXRyaXhDb2VmZmljaWVudHMoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVl
KCkpOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQorICAg
ICAgICAgICAgcmVjb3JkLmNvbG9yUHJpbWFyaWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMo
Y29sb3JWYWx1ZS5wcmltYXJpZXMudmFsdWUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0
ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkKHJlY29yZCwg
aGVhZGVyLndpZHRoLCBoZWFkZXIuaGVpZ2h0KTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IDIxOTg4N2Zh
ODFlMmJhZGE5MzViMjI0YjFiNzBjN2UxMTk2OGVlNGEuLmNhMDA5MjFkYzQ2MWU4ZWJiZWJhZmMy
MWRjNTdiN2Q3M2JiZmMzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBA
IC03NSw2ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIHdlYlJUQ0F2YWlsYWJs
ZSgpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOworICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOwogICAgIHN0YXRpYyB2b2lkIHNl
dEgyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dEFjdGl2ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29h
LmNwcAppbmRleCA0YTMyZDFmZGE3ODgzYThjZGFlMWEwZTM4OGIyNTI2YThjMzQzNTBlLi5lNjhm
OTE2MGVmMTg0YmI4MzI0ZmI5OGUyYTMwMzkzYWVmMmFkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwCkBAIC0zNCw2ICszNCw3IEBAIEFMTE9XX1VO
VVNFRF9QQVJBTUVURVJTX0JFR0lOCiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
RGVjb2Rlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdEVuY29kZXIuaD4K
IEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0
L1dlYktpdFZQOERlY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRW
UDlEZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
ZGFyd2luL1dlYWtMaW5raW5nLmg+CkBAIC05OSw2ICsxMDAsMTMgQEAgdm9pZCBMaWJXZWJSVENQ
cm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCkKICAgICBpZiAod2ViUlRDQXZhaWxh
YmxlKCkpCiAgICAgICAgIHdlYnJ0Yzo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCk7CiB9CisK
K3ZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpCit7Cisg
ICAgaWYgKHdlYlJUQ0F2YWlsYWJsZSgpKQorICAgICAgICB3ZWJydGM6OnJlZ2lzdGVyV2ViS2l0
VlA4RGVjb2RlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBV
U0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ4Yjc0ZWFlODAxYzYyNGQxMjE3MzEwOTQ5
MDgwZWRiYTYzNDA2OTAuLjVjNGNhMjVkNGRhYTdkNTgxMzExNzBjOTcyMDNmNDA2ZWJiMWRiYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTUzOCw5ICs1MzgsOSBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnVwZGF0ZUNhcHR1cmVBY2Nlc3MoYm9vbCBhbGxvd0F1ZGlvQ2FwdHVyZSwgYm9v
bAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wg
c2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hv
dWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiB7Ci0g
ICAgbV9ncHVQcm9jZXNzLT5lbmFibGVWUDlEZWNvZGVycyhzaG91bGRFbmFibGVWUDlEZWNvZGVy
LCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOworICAgIG1fZ3B1UHJvY2Vzcy0+ZW5hYmxlVlA5
RGVjb2RlcnMoc2hvdWxkRW5hYmxlVlA4RGVjb2Rlciwgc2hvdWxkRW5hYmxlVlA5RGVjb2Rlciwg
c2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBhMjhj
OGZmNWY2YzA2NGJlZWIzYjg2YzZlYTU0YzNlNDdiNGFmOWRmLi40ZjJkNDRmZmI1NTBhYTZkZTgx
MGI5YmY5NTI2MjA3ZDU3OWRiNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbiwgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mJik7CiAKICNpZiBFTkFCTEUoVlA5KQot
ICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBi
b29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CisgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVy
cyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2Rl
ciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOwogI2VuZGlmCiAKICNpZiBVU0UoQVVE
SU9fU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOWQ1NGUxNjQ1OTVi
MGEzNjFkZmU0Yzc1YmZmNDAxOGE4NTc1OWM4Zi4uOGZjMGVmYWM5MzIxODIyMmJiMGJjN2MyMWFh
YjkxOWU1M2E5NzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM4LDcgKzM4
LDcgQEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNo
TWVzc2FnZSB7CiAgICAgRW5zdXJlTWVkaWFTZXNzaW9uSGVscGVyKCkKICNlbmRpZgogI2lmIEVO
QUJMRShWUDkpCi0gICAgRW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNv
ZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKKyAgICBFbmFibGVWUDlEZWNvZGVy
cyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2Rl
ciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IGUzZDU2YTg3YzdkZGVhZWYwMGE2ZDE3
MjA4ZGI4YWUxZTIyOTEwZGIuLmMzYTM2MTlmNjdlYWI0YjRkZTIzZTEwZmQ0Yzk4MGI3YTQ1OWZi
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTI5MiwxMiAr
MjkyLDE4IEBAIFdvcmtRdWV1ZSYgR1BVUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUXVldWUoKQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotdm9pZCBHUFVQcm9jZXNzOjplbmFibGVWUDlEZWNv
ZGVycyhib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dE
ZWNvZGVyKQordm9pZCBHUFVQcm9jZXNzOjplbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVu
YWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRF
bmFibGVWUDlTV0RlY29kZXIpCiB7CiAgICAgaWYgKHNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYg
IW1fZW5hYmxlVlA5RGVjb2RlcikgewogICAgICAgICBtX2VuYWJsZVZQOURlY29kZXIgPSB0cnVl
OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBXZWJDb3JlOjpyZWdpc3RlclN1cHBsZW1l
bnRhbFZQOURlY29kZXIoKTsKKyNlbmRpZgorICAgIH0KKyAgICBpZiAoc2hvdWxkRW5hYmxlVlA4
RGVjb2RlciAmJiAhbV9lbmFibGVWUDhEZWNvZGVyKSB7CisgICAgICAgIG1fZW5hYmxlVlA4RGVj
b2RlciA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIFdlYkNvcmU6OnJlZ2lz
dGVyV2ViS2l0VlA4RGVjb2RlcigpOwogI2VuZGlmCiAgICAgfQogICAgIGlmIChzaG91bGRFbmFi
bGVWUDlTV0RlY29kZXIgJiYgIW1fZW5hYmxlVlA5U1dEZWNvZGVyKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuaAppbmRleCBiNmVhODE4M2NlNjUxZTQ4ZDExN2UyNDdiNTdmYjA1
ODc5MWMyNjlkLi5iZWE1NjAzYzM2NDhiNzc1YWZhZWUwYjkwMDNiOTJlMjA2Njc4NGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KQotICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMo
Ym9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rl
cik7CisgICAgdm9pZCBlbmFibGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29k
ZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0Rl
Y29kZXIpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNDgsNiArMTQ4LDcgQEAgcHJpdmF0ZToK
ICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFn
ZXI+IG1fYXVkaW9TZXNzaW9uTWFuYWdlcjsKICNlbmRpZgogI2lmIEVOQUJMRShWUDkpCisgICAg
Ym9vbCBtX2VuYWJsZVZQOERlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlE
ZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5U1dEZWNvZGVyIHsgZmFsc2Ug
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBhYTE3YjhhYzA5ZDQxMDYxMTcyZTJkNzJiNzZjNzgzZTM2Mjc2
NjRjLi45MTU1YzE1ZjZhZTRhMzg5OGY2ODc4YzIwZTNmMjczYWM1OTk5NGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MTYyLDYgKzE2Miw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZW5jb2Rl
ciA8PCBzaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2VzczsKICNlbmRpZgorICAgIGVuY29kZXIg
PDwgc2hvdWxkRW5hYmxlVlA4RGVjb2RlcjsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQ
OURlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXI7CiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTI3LDYgKzUyOCw5IEBAIE9wdGlvbmFsPFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCmluZGV4IDNjYmNlZDExOThlN2FhZjAzM2RkNmVhNWUzYTA0OWQyMGJkYTE1YzYu
LjFkMTU1MGMwNmUzNjNlZWE3YmQ0ZmNiYjY3Y2JhNGRjZDA4Nzg0NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIzMyw2ICsy
MzMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIGJvb2wgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MgeyBmYWxzZSB9Owog
I2VuZGlmCisgICAgYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBi
b29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRW
YWx1ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzLmNwcAppbmRleCBjY2QzM2NjMDJhNzIyNDg4YWVlMTJiMzI1ZTRjY2Q5M2ZiMWUwN2ViLi4x
MGE3M2Q1MzJlODk4ZDQ5NzExZTUzYjY0MmViOTk3ZmFlNTlmM2M2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5jcHAKQEAgLTI3
OCw2ICsyNzgsMTUgQEAgYm9vbCBkZWZhdWx0V2ViWFJFbmFibGVkKCkKIAogI2lmIEVOQUJMRShW
UDkpCiAKK2Jvb2wgZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCkKK3sKKyNpZiBIQVZFKFNZU1RF
TV9GRUFUVVJFX0ZMQUdTKQorICAgIHJldHVybiBpc0ZlYXR1cmVGbGFnRW5hYmxlZCgidnA4X2Rl
Y29kZXIiKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIGRlZmF1bHRW
UDlEZWNvZGVyRW5hYmxlZCgpCiB7CiAjaWYgSEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVl
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgK
aW5kZXggZDA5ZDQzOTM5MzcwMDRkM2UxMGI5Yjk2NmY4ZTMwNmIwYWY4OTU4Yy4uMmZjN2Q4ZWQx
MjU0ZDM0Njc1ZDFlMmU4ZjlhYTAwZGY1MDA1M2I2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgKQEAgLTEwMCw2ICsxMDAsNyBA
QCBib29sIGRlZmF1bHRXZWJYUkVuYWJsZWQoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkK
K2Jvb2wgZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCk7CiBib29sIGRlZmF1bHRWUDlEZWNvZGVy
RW5hYmxlZCgpOwogYm9vbCBkZWZhdWx0VlA5U1dEZWNvZGVyRW5hYmxlZE9uQmF0dGVyeSgpOwog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCAxZjczNjRmNmVmNGFmODkxNDBhMzk0NzJhMWQyNzFmZTVlYzcxYWI1Li40
NTY1NmQ1NGZkZjhlYTExNGY1YjViOGYzNzI3MzU3ZGRmOTViY2EyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc5OTYsNiArNzk5Niw3IEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jCiAKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIg
PSBwcmVmZXJlbmNlcygpLnZwOURlY29kZXJFbmFibGVkKCk7CiAjaWYgRU5BQkxFKFZQOSkgJiYg
UExBVEZPUk0oQ09DT0EpCisgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyID0g
cHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxk
RW5hYmxlVlA5U1dEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpICYm
ICghV2ViQ29yZTo6c3lzdGVtSGFzQmF0dGVyeSgpIHx8IHByZWZlcmVuY2VzKCkudnA5U1dEZWNv
ZGVyRW5hYmxlZE9uQmF0dGVyeSgpKTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkQ2Fw
dHVyZURpc3BsYXlJblVJUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1
cmF0aW9uKCkuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRl
eCAxMWZhNzBmMmNlOWI0MzM1MWU1M2I5YTFmM2Y3M2ZjYTUyOGQ3NGEyLi5hMjkzMDdmNzBiNmVk
ZjdmODQ5MzZlZGE2ZGJjZmI4ZGIzYTZkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTg1LDEyICsxODUs
MTMgQEAgdm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJlbW90ZUNvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUMKIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246
OnVwZGF0ZVBhcmFtZXRlcnMoY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKICNpZiBFTkFCTEUoVlA5KQotICAgIGlmIChtX2VuYWJsZVZQOURlY29kZXIgPT0g
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyICYmIG1fZW5hYmxlVlA5U1dEZWNvZGVy
ID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQorICAgIGlmIChtX2VuYWJs
ZVZQOERlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDhEZWNvZGVyICYmIG1fZW5h
YmxlVlA5RGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXIgJiYgbV9l
bmFibGVWUDlTV0RlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIp
CiAgICAgICAgIHJldHVybjsKIAorICAgIG1fZW5hYmxlVlA5RGVjb2RlciA9IHBhcmFtZXRlcnMu
c2hvdWxkRW5hYmxlVlA4RGVjb2RlcjsKICAgICBtX2VuYWJsZVZQOURlY29kZXIgPSBwYXJhbWV0
ZXJzLnNob3VsZEVuYWJsZVZQOURlY29kZXI7CiAgICAgbV9lbmFibGVWUDlTV0RlY29kZXIgPSBw
YXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcjsKLSAgICBjb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RW5hYmxlVlA5RGVjb2RlcnMo
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyLCBwYXJhbWV0ZXJzLnNob3VsZEVuYWJs
ZVZQOVNXRGVjb2RlciksIHsgfSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQOURlY29kZXJzKHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlVlA4RGVjb2RlciwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyLCBw
YXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciksIHsgfSk7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oCmluZGV4IDJhMDRjNzRmN2ZiNjM3NzFiYWRmYjU2MzZkMzc1Njg1OGNiMzE3YTAuLmZmOTky
NjVhZDZiZDIyZDMwZGZhNWY3MTM1NTMwNDY0NjU2N2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTgyLDYgKzgy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVycyhjb25zdCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJik7CiAKICNpZiBFTkFCTEUoVlA5KQorICAgIGJvb2wgaXNWUDhEZWNv
ZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA4RGVjb2RlcjsgfQogICAgIGJv
b2wgaXNWUDlEZWNvZGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5RGVjb2Rl
cjsgfQogICAgIGJvb2wgaXNWUFNXRGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZVZQOVNXRGVjb2RlcjsgfQogI2VuZGlmCkBAIC0xMjMsNiArMTI0LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8UmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI+IG1fYXVkaW9Tb3Vy
Y2VQcm92aWRlck1hbmFnZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoVlA5KQorICAgIGJvb2wgbV9l
bmFibGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5RGVjb2RlciB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
NzkxM2FlMjE2MWM3ZjVhMDU2OTBkYzk3NGY0NzJhMmVlODc5MWVkNC4uODIyMDdhYzhkNTFjOTg1
NzE5MzM2YWM2ZjUyNDQ1MzdhMDlmNDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTgxOSw2ICs4MTksOSBAQCBXZWJQYWdlOjpXZWJQYWdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikKICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVlA5RGVjb2RlcigpOwogCisgICAgaWYg
KHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlcikKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5hYmxlVlA4U1dEZWNvZGVyKCk7CisKICAgICBpZiAocGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDlTV0RlY29kZXIpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuYWJsZVZQOVNXRGVjb2RlcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggNGNhMDk3YTBiYjg1MTM0MjgwZWY0MmRkYWY2ZTg5OWYwMTBhYWY5
Mi4uNzhiNDA5MzAyMWQ4MzFiMTRhMjE0NjY4ZDE5OTY4YTk4MTViMWZjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTk4Myw2ICsxOTgzLDE3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcigpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9j
ZXNzOjplbmFibGVWUDhTV0RlY29kZXIoKQoreworICAgIGlmIChtX3ZwOVNXRGVjb2RlckVuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdnA4U1dEZWNvZGVyRW5hYmxlZCA9IHRydWU7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRWUDhEZWNv
ZGVyKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzOjplbmFibGVWUDlTV0RlY29kZXIo
KQogewogICAgIGlmIChtX3ZwOVNXRGVjb2RlckVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAppbmRleCBmZGI1NmQ3OWRmMjFmZThjYTEyZTg5MTZlOTc1MWVkOTYyOGIy
MTIxLi4zMWFiZDRmNThhOWE4M2Y2NzQ4MmVkMmQ3NmIwNDA5ZDFjOGJhYWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM1OSw2ICszNTksNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoVlA5KQogICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcigpOworICAgIHZvaWQg
ZW5hYmxlVlA4U1dEZWNvZGVyKCk7CiAgICAgdm9pZCBlbmFibGVWUDlTV0RlY29kZXIoKTsKICNl
bmRpZgogCkBAIC03MDYsNiArNzA3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShWUDkpCiAg
ICAgYm9vbCBtX3ZwOURlY29kZXJFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fdnA4U1dE
ZWNvZGVyRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ZwOVNXRGVjb2RlckVuYWJsZWQg
eyBmYWxzZSB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMGFlOWZhOWFmZGQ0MzEwYTg1ZjQ0ODU4NzZh
NTExNWE0NWU2NTNkLi5lMTllZjFiODA3MzRlNDM4NDI4YThmMzVkNGU1MzZlZGVlM2ZhNGM1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBZGQgRXhwZXJpbWVudGFsIFZQOCBzdXBwb3J0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk3MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1iaWdzdXIv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
YWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtYmln
c3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWludmFsaWQtY29kZWMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTExLTA5ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE5vbi1mdWxsc2NyZWVuIHBhZ2UgY29u
dGVudHMgdmlzaWJsZSB3aGVuIHJvdGF0aW5nIGRldmljZSBkdXJpbmcgZWxlbWVudCBmdWxsc2Ny
ZWVuIHByZXNlbnRhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1i
aWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFz
b3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1iaWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTAz
MzM5NmRkMGMxNWFiNTUyMmE3YTE3YmE3NDk3NDM3ZDA5Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIGluICdl
bmRlZCcgc3RhdGUuCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBlbXB0eSB0eXBl
CitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBudWxsCitQQVNTIFRlc3QgYWRkU291
cmNlQnVmZmVyKCkgd2l0aCB1bnN1cHBvcnRlZCB0eXBlCitGQUlMIFRlc3QgYWRkU291cmNlQnVm
ZmVyKCkgd2l0aCBWb3JiaXMgYW5kIFZQOCBhc3NlcnRfdHJ1ZTogdmlkZW8vd2VibTtjb2RlY3M9
InZwOCx2b3JiaXMiIGlzIHN1cHBvcnRlZCBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCBU
ZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggVm9yYmlzIGFuZCBWUDggaW4gc2VwYXJhdGUgU291
cmNlQnVmZmVycyBhc3NlcnRfdHJ1ZTogYXVkaW8vd2VibTtjb2RlY3M9InZvcmJpcyIgaXMgc3Vw
cG9ydGVkIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVy
KCkgdmlkZW8gb25seQorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIGF1ZGlvIG9ubHkKK1BB
U1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIEFBQyBhbmQgSC4yNjQKK1BBU1MgVGVzdCBh
ZGRTb3VyY2VCdWZmZXIoKSB3aXRoIEFBQyBhbmQgSC4yNjQgaW4gc2VwYXJhdGUgU291cmNlQnVm
ZmVycworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWludmFs
aWQtY29kZWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ci9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1p
bnZhbGlkLWNvZGVjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWUyZDU4MWZmOTA2ODY2ZTlj
ZWE3YWM5YmM2MjM1YjIxZjdkODdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1pbnZhbGlkLWNvZGVjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKworUEFTUyBUZXN0IGFuIE1QNCB3aXRoIGFuIGludmFsaWQgY29kZWMgcmVzdWx0cyBpbiBh
biBlcnJvci4KK1BBU1MgVGVzdCBhIFdlYk0gd2l0aCBhbiBpbnZhbGlkIGNvZGVjIHJlc3VsdHMg
aW4gYW4gZXJyb3IuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggYmVmNTAzMDY0YTk4YWQwNjYyYTgxZTM5MDEwYTlkNTAyNjQzZGZmMS4uYmRhZTUxZmQ4
NWU3ZTVhZjZjYTEzODE4MzEwNTY3NWYwZmUwZDM1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg1OCw4ICs4NTgsOCBAQCB3ZWJraXQub3JnL2IvMTYx
NzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWVycgogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1pcy10eXBlLXN1cHBvcnRlZC5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLXJlbW92ZXNvdXJjZWJ1ZmZlci5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXNlZWstYmV5b25kLWR1cmF0aW9uLmh0bWwgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwgWyBTa2lw
IF0KLXdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vla2FibGUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9y
Zy9iLzE2MTcyNSBbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlZWstZHVyaW5nLXBlbmRpbmctc2Vlay5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTYxNzI1IFsgTW9qYXZlIENhdGFsaW5hIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vl
a2FibGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZXF1ZW5jZW1vZGUtYXBw
ZW5kLWJ1ZmZlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZl
ci1tb2RlLXRpbWVzdGFtcHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3Vy
Y2VidWZmZXItbW9kZS5odG1sIFsgU2tpcCBdCkBAIC04NzAsOSArODcwLDkgQEAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNo
YW5nZS13ZWJtLWEtYmkKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1hdi1hdWRpby1iaXRyYXRlLmh0bWwg
WyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21l
ZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS1hdi1mcmFtZXNpemUuaHRtbCBbIFNraXAgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
Y29uZmlnLWNoYW5nZS13ZWJtLWF2LXZpZGVvLWJpdHJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmln
LWNoYW5nZS13ZWJtLXYtYml0cmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0t
di1mcmFtZXJhdGUuaHRtbCBbIFNraXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtZnJhbWVzaXpl
Lmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLXYt
Yml0cmF0ZS5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Ut
d2VibS12LWZyYW1lcmF0ZS5odG1sIFsgU2tpcCBdCitbIE1vamF2ZSBDYXRhbGluYSBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZp
Zy1jaGFuZ2Utd2VibS12LWZyYW1lc2l6ZS5odG1sIFsgU2tpcCBdCiAKICMgU2tpcHBlZCBpbiBX
M0MgV2ViIFBsYXRmb3JtIFRlc3QgbWFuaWZlc3QKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWdldHZpZGVvcGxheWJhY2txdWFsaXR5Lmh0
bWwgWyBTa2lwIF0K
</data>
<flag name="review"
          id="433442"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416047</attachid>
            <date>2020-12-11 14:24:28 -0800</date>
            <delta_ts>2020-12-11 16:57:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219732-20201211142427.patch</filename>
            <type>text/plain</type>
            <size>93842</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCAzZTQ1OWUwMzQ4NDY4MzBiOWQ2MzgxYWJiOGZlYTQ5NjhhMzU2ZThiLi5mMjY0
Y2Q0NDc2NmM0ZmY0YmViYjY3ZWVkNjc5ZTY2MjhkMzcwNDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMC0xMi0xMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50
YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAg
ICAgICBBZGQgYSBuZXcgZGVjb2RlciBmb3IgVlA4IHZpZGVvIHVzaW5nIHRoZSBkZWNvZGVyIGV4
cG9zZWQgYnkgbGlid2VicnRjLiBSZWZhY3RvcgorICAgICAgICBXZWJLaXREZWNvZGVyUmVjZWl2
ZXIgaW50byBpdHMgb3duIGZpbGUsIHRvIGJlIHVzZWQgYnkgYm90aCB0aGUgVlA4IGFuZCBWUDkg
ZGVjb2RlcnMuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2Vi
cnRjL3Nkay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAg
ICh3ZWJydGM6OldlYktpdERlY29kZXJSZWNlaXZlcjo6V2ViS2l0RGVjb2RlclJlY2VpdmVyKToK
KyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0RGVjb2RlclJl
Y2VpdmVyKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2RlclJlY2VpdmVyOjppbml0aWFs
aXplRnJvbUZvcm1hdERlc2NyaXB0aW9uKToKKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0RGVjb2Rl
clJlY2VpdmVyOjpwaXhlbEJ1ZmZlclBvb2wpOgorICAgICAgICAod2VicnRjOjpXZWJLaXREZWNv
ZGVyUmVjZWl2ZXI6OmRlY29kZXJGYWlsZWQpOgorICAgICAgICAod2VicnRjOjpXZWJLaXREZWNv
ZGVyUmVjZWl2ZXI6OkRlY29kZWQpOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXREZWNvZGVyUmVjZWl2ZXIuaDogQWRkZWQKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5jcHA6IEFkZGVkLgorICAgICAgICAod2VicnRj
OjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpjcmVhdGVXZWJL
aXRWUDhEZWNvZGVyKToKKyAgICAgICAgKHdlYnJ0Yzo6aW52YWxpZGF0ZVZQOERlY29kZXIpOgor
ICAgICAgICAod2VicnRjOjpmaW5hbGl6ZVZQOERlY29kZXIpOgorICAgICAgICAod2VicnRjOjpj
b3B5VlA4RGVjb2RlckRlYnVnRGVzY3JpcHRpb24pOgorICAgICAgICAod2VicnRjOjp3ZWJLaXRW
UDhEZWNvZGVyRnJvbVZURGVjb2Rlcik6CisgICAgICAgICh3ZWJydGM6OnN0YXJ0VlA4RGVjb2Rl
clNlc3Npb24pOgorICAgICAgICAod2VicnRjOjpkZWNvZGVWUDhEZWNvZGVyRnJhbWVGcm9tQ29u
dGlndW91c0Jsb2NrKToKKyAgICAgICAgKHdlYnJ0Yzo6ZGVjb2RlVlA4RGVjb2RlckZyYW1lKToK
KyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5oLgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRW
UDlEZWNvZGVyLmNwcDoKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlV2ViS2l0VlA5RGVjb2Rlcik6
CisgICAgICAgICh3ZWJydGM6OnN0YXJ0VlA5RGVjb2RlclNlc3Npb24pOgorICAgICAgICAod2Vi
cnRjOjpXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcik6
IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6fldl
YktpdFZQOURlY29kZXJSZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktp
dFZQOURlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbik6IERl
bGV0ZWQuCisgICAgICAgICh3ZWJydGM6OldlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6cGl4ZWxC
dWZmZXJQb29sKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0VlA5RGVjb2RlclJl
Y2VpdmVyOjpkZWNvZGVyRmFpbGVkKTogRGVsZXRlZC4KKyAgICAgICAgKHdlYnJ0Yzo6V2ViS2l0
VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBsaWJ3ZWJy
dGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMi0xMCAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSUNFIGRvZXMgbm90IHJlc29sdmUgZm9y
IGB0dXJuc2AgcmVsYXkgY2FuZGlkYXRlcyByb290ZWQgaW4gTGV0c0VuY3J5cHQgQ0EKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
MzMzZGNiZjAxMzE5ZjU3ZjM4ZjA0YmNmNDM3ZjgxNWJjNDU1ZjA2OS4uZjkzZGMxNmY3NGUxYWEx
YTRlNTVlN2E0Nzk4OGZhNmRlNzQ1YjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0xMi0x
MCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFk
ZCBFeHBlcmltZW50YWwgVlA4IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTczMgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KKworICAgICAgICBBZGQgYSBuZXcgVlA4IGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcu
CisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWw6CisKIDIwMjAtMTItMTEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255
LmNvbT4KIAogICAgICAgICBbQ01ha2VdIERldGVybWluZSBjb3JyZWN0IHZpc2liaWxpdHkgZm9y
IGxpbmtlZCBmcmFtZXdvcmtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEyNTQ5NDY2YTY3YmJmNGM0MzI2ZTQy
MmRhOTRiMzMxODRjMzEyZS4uZTRjMTVmMDM3ZDI5ZmFiNDRmNDk0OTc0M2RjM2RkMGFkMWZjYzA4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBW
UDggc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAg
IE5ld2x5IHBhc3NpbmcgdGVzdHM6CisgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXIuaHRtbAor
ICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGluZy1zZWVrLmh0bWwKKyAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNl
ZWthYmxlLmh0bWwKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWJpdHJhdGUuaHRt
bCAKKyAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291
cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2Utd2VibS12LWZyYW1lcmF0ZS5odG1sCisgICAg
ICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1mcmFtZXNpemUuaHRtbAorICAgICAgICAgICAg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
aW52YWxpZC1jb2RlYy5odG1sCisKKyAgICAgICAgUGFyc2UgVlA4IHZpZGVvIHRyYWNrcyBvdXQg
b2YgV2ViTSBmaWxlcy4gQWRkIGEgc2ltcGxlIFZQOCBmcmFtZSBoZWFkZXIgcGFyc2VyIHRvIGV4
dHJhY3Qgd2lkdGgKKyAgICAgICAgaGVpZ2h0IGFuZCBjb2xvciBpbmZvcm1hdGlvbiBvdXQgb2Yg
a2V5ZnJhbWUgaGVhZGVycywgYW5kIGNyZWF0ZSBhIENNRm9ybWF0RGVzY3JpcHRpb24gZnJvbSB0
aGF0CisgICAgICAgIGhlYWRlci4KKworICAgICAgICBUaHJvdyBhbiBlcnJvciBkdXJpbmcgcGFy
c2luZyBpZiBhbiBBdWRpbyBvciBWaWRlbyB0cmFjayBpcyBlbmNvdW50ZXJlZCB3aXRoIGFuIHVu
c3VwcG9ydGVkIGNvZGVjLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0
aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVlBDb2RlY1BhcmFtZXRlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aXNDb250ZW50VHlw
ZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZy
b21WUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
b3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VWUDhGcmFtZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb3JtYXREZXNj
cmlwdGlvbkZyb21WUDhIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25GcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5
VXRpbGl0aWVzQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlV
dGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0VlA4RGVj
b2Rlcik6CisgICAgICAgIChXZWJDb3JlOjppc1ZQOERlY29kZXJBdmFpbGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWUDlDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNWUDhDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZCk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rlcik6CisKIDIwMjAtMTEtMDQgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm9uLWZ1bGxzY3JlZW4gcGFnZSBjb250ZW50
cyB2aXNpYmxlIHdoZW4gcm90YXRpbmcgZGV2aWNlIGR1cmluZyBlbGVtZW50IGZ1bGxzY3JlZW4g
cHJlc2VudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYTIwZTM0YTlmYWY4NjZhMzg0OTNlMjcxZWIwZjEx
ODE0MjYyOTEzLi4zNjM2ZDhjZjZlODI5MDkxN2RkOGRmNWMwMzI1OGFhNzlkYjk5NmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBWUDggc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIEFkZCBuZXcg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyIGZsYWdzIHRvIGVuYWJsZSBWUDggZGVjb2RlcnMgaW4g
dGhlIFdlYkNvbnRlbnQgYW5kIEdQVQorICAgICAgICBwcm9jZXNzZXMgd2hlbiB0aGUgZXhwZXJp
bWVudGFsIGZlYXR1cmUgaXMgZW5hYmxlZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXJzKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2Rl
cnMpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpkZWZhdWx0VlA4RGVjb2RlckVuYWJs
ZWQpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OnVwZGF0ZVBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0
aW9uOjppc1ZQOERlY29kZXJFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5hYmxlVlA4U1dEZWNvZGVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAyMC0xMi0wOCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBFbnRlcmluZyBmdWxsc2NyZWVu
IGZyb20gbGVzcy10aGFuLWZ1bGxzY3JlZW4gV0tXZWJWaWV3IGRvZXMgbm90IGxheW91dCBjb3Jy
ZWN0bHkgdXBvbiBleGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggZTI4MDU4ZDYzMDVh
NmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIxY2RhZjdl
MjRjMGMyZTExZTRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0Nv
bmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMTAxLDYgKzEwMSw3
IEBAIF9fWk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3Jl
YXRlV2ViS2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNf
MTJXZWJLaXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlF
TlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUK
IF9fWk42d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0
YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktp
dFZQOURlY29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBW
aWRlb0ZyYW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJU
eXBlRUVFRQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5NjQ3MTFi
ZTcxOTM3YzliYjUxNWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMyZTExZTRl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
b25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9f
Wk42d2VicnRjMjBzZXRBcHBsaWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2Vi
S2l0RGVjb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJL
aXRWUDlWVEJFCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBX
ZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42
d2VicnRjMjlzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVn
aXN0ZXJXZWJLaXRWUDhEZWNvZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURl
Y29kZXJFdgogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0Zy
YW1lRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVF
RQogX19aTjZ3ZWJydGMxOHBpeGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
Lm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLm1hYy5leHAKaW5kZXggZTI4MDU4ZDYzMDVhNmVlMzQ5NjQ3MTFiZTcxOTM3YzliYjUx
NWRlOS4uZjU5Mzc5NjBhZGM4ZDE3NTE3OWIxY2RhZjdlMjRjMGMyZTExZTRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5t
YWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMubWFjLmV4cApAQCAtMTAxLDYgKzEwMSw3IEBAIF9fWk42d2VicnRjMjBzZXRBcHBs
aWNhdGlvblN0YXR1c0ViCiBfX1pONndlYnJ0YzI2Y3JlYXRlV2ViS2l0RGVjb2RlckZhY3RvcnlF
TlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJLaXRWUDlFTlNfMTJXZWJLaXRWUDlWVEJFCiBfX1pONndl
YnJ0YzI2Y3JlYXRlV2ViS2l0RW5jb2RlckZhY3RvcnlFTlNfMTBXZWJLaXRIMjY1RU5TXzlXZWJL
aXRWUDlFTlNfMjBXZWJLaXRIMjY0TG93TGF0ZW5jeUUKIF9fWk42d2VicnRjMjlzZXRIMjY0SGFy
ZHdhcmVFbmNvZGVyQWxsb3dlZEViCitfX1pONndlYnJ0YzI0cmVnaXN0ZXJXZWJLaXRWUDhEZWNv
ZGVyRXYKIF9fWk42d2VicnRjMjRyZWdpc3RlcldlYktpdFZQOURlY29kZXJFdgogX19aTjZ3ZWJy
dGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVJLTlN0M19fMThmdW5j
dGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQogX19aTjZ3ZWJydGMxOHBp
eGVsQnVmZmVyVG9GcmFtZUVQMTBfX0NWQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1ZUVmlkZW9EZWNvZGVyU1BJ
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0
L1ZUVmlkZW9EZWNvZGVyU1BJLmgKaW5kZXggZjQ4ODkwNWVlNDcxZGRkYTRkNGQ5NTA1NTBkNzc4
MmU0ODdhMTBhMC4uNjgwZTBkOGE1ZTRkZTZkMzliYmY2NTdmM2U2YzM1ZTExMmFlYTc1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dl
YktpdC9WVFZpZGVvRGVjb2RlclNQSS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvVlRWaWRlb0RlY29kZXJTUEkuaApAQCAtMjUsNiAr
MjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WaWRlb1Rv
b2xib3guaD4KKyNpbmNsdWRlICJDTUJhc2VPYmplY3RTUEkuaCIKKwogI2lmIGRlZmluZWQgX19o
YXNfaW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxDb3JlRm91bmRhdGlvbi9DRlByaXYuaD4pCiAj
aW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZUVmlkZW9EZWNvZGVyLmg+CiAjaW5jbHVkZSA8VmlkZW9U
b29sYm94L1ZUVmlkZW9EZWNvZGVyUmVnaXN0cmF0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29k
ZXJSZWNlaXZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBiYTlk
ZjQzNDQ3M2U3ZjM2ODM0ZGY3MDg0NzJiYTAwMjIxZDk0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
RGVjb2RlclJlY2VpdmVyLmNwcApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJXZWJLaXRWUDlEZWNvZGVyLmgiCisKKyNpbmNsdWRlICJXZWJLaXREZWNvZGVyUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJtb2R1bGVzL3ZpZGVvX2NvZGluZy9pbmNsdWRlL3ZpZGVvX2Vycm9y
X2NvZGVzLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorCituYW1lc3BhY2Ugd2Vi
cnRjIHsKKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpXZWJLaXREZWNvZGVyUmVjZWl2ZXIoVlRW
aWRlb0RlY29kZXJTZXNzaW9uIHNlc3Npb24pCisgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKK3sK
K30KKworV2ViS2l0RGVjb2RlclJlY2VpdmVyOjp+V2ViS2l0RGVjb2RlclJlY2VpdmVyKCkKK3sK
KyAgICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVm
ZmVyUG9vbCk7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjppbml0aWFsaXplRnJv
bUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRp
b24pCit7CisgICAgLy8gQ29yZUFuaW1hdGlvbiBkb2Vzbid0IHN1cHBvcnQgZnVsbC1wbGFuYXIg
WVVWLCBzbyB3ZSBtdXN0IGNvbnZlcnQgdGhlIGJ1ZmZlcnMgb3V0cHV0CisgICAgLy8gYnkgbGli
dnB4IHRvIGJpLXBsYW5hciBZVVYuIENyZWF0ZSBwaXhlbCBidWZmZXIgYXR0cmlidXRlcyBhbmQg
Z2l2ZSB0aG9zZSB0byB0aGUKKyAgICAvLyBkZWNvZGVyIHNlc3Npb24gZm9yIHVzZSBpbiBjcmVh
dGluZyBpdHMgb3duIGludGVybmFsIENWUGl4ZWxCdWZmZXJQb29sLCB3aGljaCB3ZQorICAgIC8v
IHdpbGwgdXNlIHBvc3QtZGVjb2RlLgorICAgIG1faXNGdWxsUmFuZ2UgPSBmYWxzZTsKKyAgICBt
X2lzMTBiaXQgPSBmYWxzZTsKKworICAgIGF1dG8gZXh0ZW5zaW9ucyA9IENNRm9ybWF0RGVzY3Jp
cHRpb25HZXRFeHRlbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICBpZiAoIWV4dGVuc2lv
bnMpCisgICAgICAgIHJldHVybjsKKworICAgIENGVHlwZVJlZiBleHRlbnNpb25BdG9tcyA9IENG
RGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbnMsIGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5z
aW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMpOworICAgIGlmICghZXh0ZW5zaW9u
QXRvbXMgfHwgQ0ZHZXRUeXBlSUQoZXh0ZW5zaW9uQXRvbXMpICE9IENGRGljdGlvbmFyeUdldFR5
cGVJRCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmQg
PSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKChDRkRpY3Rpb25h
cnlSZWYpZXh0ZW5zaW9uQXRvbXMsIENGU1RSKCJ2cGNDIikpKTsKKyAgICBpZiAoIWNvbmZpZ3Vy
YXRpb25SZWNvcmQgfHwgQ0ZHZXRUeXBlSUQoY29uZmlndXJhdGlvblJlY29yZCkgIT0gQ0ZEYXRh
R2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY29uZmlndXJhdGlvblJl
Y29yZFNpemUgPSBDRkRhdGFHZXRMZW5ndGgoY29uZmlndXJhdGlvblJlY29yZCk7CisgICAgaWYg
KGNvbmZpZ3VyYXRpb25SZWNvcmRTaXplIDwgMTIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gY29uZmlndXJhdGlvblJlY29yZERhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKGNvbmZpZ3VyYXRp
b25SZWNvcmQpOworICAgIGF1dG8gYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA9ICooY29uZmlndXJh
dGlvblJlY29yZERhdGEgKyA2KTsKKworICAgIGlmICgoYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA+
PiA0KSA9PSAxMCkKKyAgICAgICAgbV9pczEwYml0ID0gdHJ1ZTsKKworICAgIGlmIChiaXREZXB0
aENocm9tYUFuZFJhbmdlICYgMHgxKQorICAgICAgICBtX2lzRnVsbFJhbmdlID0gdHJ1ZTsKK30K
KworQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgV2ViS2l0RGVjb2RlclJlY2VpdmVyOjpwaXhlbEJ1ZmZl
clBvb2woc2l6ZV90IHBpeGVsQnVmZmVyV2lkdGgsIHNpemVfdCBwaXhlbEJ1ZmZlckhlaWdodCwg
Ym9vbCBpczEwYml0KQoreworICAgIGlmIChtX3BpeGVsQnVmZmVyUG9vbCAmJiBtX3BpeGVsQnVm
ZmVyV2lkdGggPT0gcGl4ZWxCdWZmZXJXaWR0aCAmJiBtX3BpeGVsQnVmZmVySGVpZ2h0ID09IHBp
eGVsQnVmZmVySGVpZ2h0ICYmIG1faXMxMGJpdCA9PSBpczEwYml0KQorICAgICAgICByZXR1cm4g
bV9waXhlbEJ1ZmZlclBvb2w7CisKKyAgICBPU1R5cGUgcGl4ZWxGb3JtYXQ7CisgICAgaWYgKGlz
MTBiaXQpCisgICAgICAgIHBpeGVsRm9ybWF0ID0gbV9pc0Z1bGxSYW5nZSA/IGtDVlBpeGVsRm9y
bWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxGb3JtYXRUeXBl
XzQyMFlwQ2JDcjEwQmlQbGFuYXJWaWRlb1JhbmdlOworICAgIGVsc2UKKyAgICAgICAgcGl4ZWxG
b3JtYXQgPSBtX2lzRnVsbFJhbmdlID8ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBs
YW5hckZ1bGxSYW5nZSA6IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRl
b1JhbmdlOworCisgICAgYXV0byBjcmVhdGVQaXhlbEZvcm1hdEF0dHJpYnV0ZXMgPSBbXSAoT1NU
eXBlIHBpeGVsRm9ybWF0KSB7CisgICAgICAgIGF1dG8gY3JlYXRlTnVtYmVyID0gW10gKGludDMy
X3QgZm9ybWF0KSAtPiBDRk51bWJlclJlZiB7CisgICAgICAgICAgICByZXR1cm4gQ0ZOdW1iZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJmZvcm1hdCk7
CisgICAgICAgIH07CisgICAgICAgIGF1dG8gY2ZQaXhlbEZvcm1hdHMgPSBDRkFycmF5Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsK
KyAgICAgICAgYXV0byBmb3JtYXROdW1iZXIgPSBjcmVhdGVOdW1iZXIocGl4ZWxGb3JtYXQpOwor
ICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2ZQaXhlbEZvcm1hdHMsIGZvcm1hdE51bWJlcik7
CisgICAgICAgIENGUmVsZWFzZShmb3JtYXROdW1iZXIpOworCisgICAgICAgIGF1dG8gYm9yZGVy
UGl4ZWxzVmFsdWUgPSBjcmVhdGVOdW1iZXIoMzIpOworCisgICAgICAgIGNvbnN0IHZvaWQqIGtl
eXNbXSA9IHsKKyAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LAor
ICAgICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc0xlZnRLZXksCisgICAgICAg
ICAgICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzUmlnaHRLZXksCisgICAgICAgICAgICBr
Q1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzVG9wS2V5LAorICAgICAgICAgICAga0NWUGl4ZWxC
dWZmZXJFeHRlbmRlZFBpeGVsc0JvdHRvbUtleSwKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3Qg
dm9pZCogdmFsdWVzW10gPSB7CisgICAgICAgICAgICBjZlBpeGVsRm9ybWF0cywKKyAgICAgICAg
ICAgIGJvcmRlclBpeGVsc1ZhbHVlLAorICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCisg
ICAgICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKKyAgICAgICAgICAgIGJvcmRlclBpeGVsc1Zh
bHVlLAorICAgICAgICB9OworICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBzdGQ6OnNpemUoa2V5cyks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOworICAgICAgICBDRlJlbGVhc2UoYm9yZGVyUGl4ZWxzVmFsdWUpOworICAgICAg
ICBDRlJlbGVhc2UoY2ZQaXhlbEZvcm1hdHMpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlczsK
KyAgICB9OworCisgICAgYXV0byBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMgPSBjcmVhdGVQaXhlbEZv
cm1hdEF0dHJpYnV0ZXMocGl4ZWxGb3JtYXQpOworICAgIFZURGVjb2RlclNlc3Npb25TZXRQaXhl
bEJ1ZmZlckF0dHJpYnV0ZXMobV9zZXNzaW9uLCBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworICAg
IENGUmVsZWFzZShwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMpOworCisgICAgaWYgKG1fcGl4ZWxCdWZm
ZXJQb29sKSB7CisgICAgICAgIENGUmVsZWFzZShtX3BpeGVsQnVmZmVyUG9vbCk7CisgICAgICAg
IG1fcGl4ZWxCdWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBtX3BpeGVsQnVmZmVy
UG9vbCA9IFZURGVjb2RlclNlc3Npb25HZXRQaXhlbEJ1ZmZlclBvb2wobV9zZXNzaW9uKTsKKyAg
ICBpZiAobV9waXhlbEJ1ZmZlclBvb2wpCisgICAgICAgIENGUmV0YWluKG1fcGl4ZWxCdWZmZXJQ
b29sKTsKKworICAgIG1fcGl4ZWxCdWZmZXJXaWR0aCA9IHBpeGVsQnVmZmVyV2lkdGg7CisgICAg
bV9waXhlbEJ1ZmZlckhlaWdodCA9IHBpeGVsQnVmZmVySGVpZ2h0OworICAgIG1faXMxMGJpdCA9
IGlzMTBiaXQ7CisKKyAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2w7Cit9CisKK09TU3RhdHVz
IFdlYktpdERlY29kZXJSZWNlaXZlcjo6ZGVjb2RlckZhaWxlZChpbnQgZXJyb3IpCit7CisgICAg
T1NTdGF0dXMgdnRFcnJvcjsKKyAgICBpZiAoZXJyb3IgPT0gV0VCUlRDX1ZJREVPX0NPREVDX05P
X09VVFBVVCkKKyAgICAgICAgdnRFcnJvciA9IG5vRXJyOworICAgIGVsc2UgaWYgKGVycm9yID09
IFdFQlJUQ19WSURFT19DT0RFQ19VTklOSVRJQUxJWkVEKQorICAgICAgICB2dEVycm9yID0ga1ZU
VmlkZW9EZWNvZGVyTWFsZnVuY3Rpb25FcnI7CisgICAgZWxzZSBpZiAoZXJyb3IgPT0gV0VCUlRD
X1ZJREVPX0NPREVDX01FTU9SWSkKKyAgICAgICAgdnRFcnJvciA9IGtWVEFsbG9jYXRpb25GYWls
ZWRFcnI7CisgICAgZWxzZQorICAgICAgICB2dEVycm9yID0ga1ZUVmlkZW9EZWNvZGVyQmFkRGF0
YUVycjsKKworICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2RlZEZyYW1lKG1fc2Vzc2lvbiwg
bV9jdXJyZW50RnJhbWUsIHZ0RXJyb3IsIDAsIG51bGxwdHIpOworICAgIG1fY3VycmVudEZyYW1l
ID0gbnVsbHB0cjsKKworICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDkgZGVjb2RlcjogZGVj
b2RlciBmYWlsZWQgd2l0aCBlcnJvciAiIDw8IGVycm9yIDw8ICIsIHZ0RXJyb3IgIiA8PCB2dEVy
cm9yOworICAgIHJldHVybiB2dEVycm9yOworfQorCitpbnQzMl90IFdlYktpdERlY29kZXJSZWNl
aXZlcjo6RGVjb2RlZChWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gcGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFt0aGlzXShzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIEJ1ZmZlclR5cGUgdHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAg
IGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWln
aHQsIHR5cGUgPT0gQnVmZmVyVHlwZTo6STAxMCk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXJQ
b29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGlmIChDVlBpeGVsQnVmZmVyUG9v
bENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29s
LCAmcGl4ZWxCdWZmZXIpID09IGtDVlJldHVyblN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4g
cGl4ZWxCdWZmZXI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0pOworCisgICAgVlRE
ZWNvZGVyU2Vzc2lvbkVtaXREZWNvZGVkRnJhbWUobV9zZXNzaW9uLCBtX2N1cnJlbnRGcmFtZSwg
cGl4ZWxCdWZmZXIgPyBub0VyciA6IC0xLCAwLCBwaXhlbEJ1ZmZlcik7CisgICAgbV9jdXJyZW50
RnJhbWUgPSBudWxscHRyOworICAgIGlmIChwaXhlbEJ1ZmZlcikKKyAgICAgICAgQ0ZSZWxlYXNl
KHBpeGVsQnVmZmVyKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBXZWJLaXREZWNvZGVy
UmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFtZSYgZnJhbWUsIGludDY0X3QpCit7CisgICAgRGVj
b2RlZChmcmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViS2l0RGVjb2RlclJlY2Vp
dmVyOjpEZWNvZGVkKFZpZGVvRnJhbWUmIGZyYW1lLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90Piwg
YWJzbDo6b3B0aW9uYWw8dWludDhfdD4pCit7CisgICAgRGVjb2RlZChmcmFtZSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFhNTQ1OTdlM2I0Y2FjMGI5N2YxYTM3MDIyOTA4YjkyMmZlNGQ5MzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdERlY29kZXJSZWNlaXZlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImFwaS92aWRlb19jb2RlY3MvdmlkZW9f
ZGVjb2Rlci5oIgorI2luY2x1ZGUgIlZUVmlkZW9EZWNvZGVyU1BJLmgiCisjaW5jbHVkZSAiV2Vi
S2l0VXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgeworCitjbGFzcyBXZWJLaXREZWNv
ZGVyUmVjZWl2ZXIgZmluYWwgOiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJhY2sgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFdlYktpdERlY29kZXJSZWNlaXZlcihWVFZpZGVvRGVjb2RlclNlc3Np
b24pOworICAgIH5XZWJLaXREZWNvZGVyUmVjZWl2ZXIoKTsKKworICAgIFZUVmlkZW9EZWNvZGVy
RnJhbWUgY3VycmVudEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KKyAg
ICB2b2lkIHNldEN1cnJlbnRGcmFtZShWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSkg
eyBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsgfQorICAgIE9TU3RhdHVzIGRlY29kZXJG
YWlsZWQoaW50IGVycm9yKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlw
dGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmKTsKKworcHJpdmF0ZToKKyAgICBpbnQzMl90IERl
Y29kZWQoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1l
JiwgaW50NjRfdCBkZWNvZGVfdGltZV9tcykgZmluYWw7CisgICAgdm9pZCBEZWNvZGVkKFZpZGVv
RnJhbWUmLCBhYnNsOjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywgYWJzbDo6b3B0
aW9uYWw8dWludDhfdD4gcXApIGZpbmFsOworCisgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4
ZWxCdWZmZXJQb29sKHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJI
ZWlnaHQsIGJvb2wgaXMxMGJpdCk7CisKKyAgICBWVFZpZGVvRGVjb2RlclNlc3Npb24gbV9zZXNz
aW9uIHsgbnVsbHB0ciB9OworICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgbV9jdXJyZW50RnJhbWUg
eyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJXaWR0aCB7IDAgfTsKKyAgICBz
aXplX3QgbV9waXhlbEJ1ZmZlckhlaWdodCB7IDAgfTsKKyAgICBib29sIG1faXMxMGJpdCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzRnVsbFJhbmdlIHsgZmFsc2UgfTsKKyAgICBDVlBpeGVsQnVm
ZmVyUG9vbFJlZiBtX3BpeGVsQnVmZmVyUG9vbCB7IG51bGxwdHIgfTsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VlA4RGVjb2Rlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOERlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
Mjg2YTIwOGRkMGZiYzRlZWQxZWFmNDgwMDJmYWM1ZDYwNDQ5YTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIldlYktpdFZQOERlY29kZXIuaCIKKworI2luY2x1ZGUgIldlYktpdERlY29kZXJSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy92cDgvbGlidnB4X3Zw
OF9kZWNvZGVyLmgiCisjaW5jbHVkZSAicnRjX2Jhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgInN5
c3RlbV93cmFwcGVycy9pbmNsdWRlL2NwdV9pbmZvLmgiCisKK25hbWVzcGFjZSB3ZWJydGMgewor
CitzdGF0aWMgT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdWaWRlb0NvZGVjVHlw
ZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJlZiopOwordm9pZCBy
ZWdpc3RlcldlYktpdFZQOERlY29kZXIoKQoreworICAgIFZUUmVnaXN0ZXJWaWRlb0RlY29kZXIo
J3ZwMDgnLCBjcmVhdGVXZWJLaXRWUDhEZWNvZGVyKTsKK30KKwordHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJ2cHhWcDhEZWNvZGVyPiBtX2luc3RhbmNlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXREZWNvZGVyUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7Cit9IFdlYktp
dFZQOERlY29kZXI7CisKK3N0YXRpYyBPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVjb2RlcihDTUJh
c2VPYmplY3RSZWYpOworc3RhdGljIHZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVj
dFJlZik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYgY29weVZQOERlY29kZXJEZWJ1Z0Rlc2NyaXB0aW9u
KENNQmFzZU9iamVjdFJlZik7CisKK3N0YXRpYyBjb25zdCBDTUJhc2VDbGFzcyBXZWJLaXRWUDhE
ZWNvZGVyX0Jhc2VDbGFzcyA9Cit7CisgICAga0NNQmFzZU9iamVjdF9DbGFzc1ZlcnNpb25fMSwK
KyAgICBzaXplb2YoV2ViS2l0VlA4RGVjb2RlciksCisgICAgbnVsbHB0ciwgLy8gQ29tcGFyaXNv
biBieSBwb2ludGVyIGVxdWFsaXR5CisgICAgaW52YWxpZGF0ZVZQOERlY29kZXIsCisgICAgZmlu
YWxpemVWUDhEZWNvZGVyLAorICAgIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbiwKKyAg
ICBudWxscHRyLCAvLyBDb3B5UHJvcGVydHkKKyAgICBudWxscHRyLCAvLyBTZXRQcm9wZXJ0eQor
ICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIE9TU3RhdHVzIHN0YXJ0VlA4
RGVjb2RlclNlc3Npb24oVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiwg
Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmKTsKK3N0YXRpYyBPU1N0YXR1cyBkZWNvZGVWUDhE
ZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYsIFZUVmlkZW9EZWNvZGVyRnJhbWUsIENNU2Ft
cGxlQnVmZmVyUmVmLCBWVERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKik7CisK
K3N0YXRpYyBjb25zdCBWVFZpZGVvRGVjb2RlckNsYXNzIFdlYktpdFZQOERlY29kZXJfVmlkZW9E
ZWNvZGVyQ2xhc3MgPQoreworICAgIGtWVFZpZGVvRGVjb2Rlcl9DbGFzc1ZlcnNpb25fMSwKKyAg
ICBzdGFydFZQOERlY29kZXJTZXNzaW9uLAorICAgIGRlY29kZVZQOERlY29kZXJGcmFtZSwKKyAg
ICBudWxscHRyLCAvLyBWVFZpZGVvRGVjb2RlckZ1bmN0aW9uX0NvcHlTdXBwb3J0ZWRQcm9wZXJ0
eURpY3Rpb25hcnksCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9TZXRQ
cm9wZXJ0aWVzCisgICAgbnVsbHB0ciwgLy8gVlRWaWRlb0RlY29kZXJGdW5jdGlvbl9Db3B5U2Vy
aWFsaXphYmxlUHJvcGVydGllcworICAgIG51bGxwdHIsIC8vIFZUVmlkZW9EZWNvZGVyRnVuY3Rp
b25fQ2FuQWNjZXB0Rm9ybWF0RGVzY3JpcHRpb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVvRGVj
b2RlckZ1bmN0aW9uX0ZpbmlzaERlbGF5ZWRGcmFtZXMKKyAgICBudWxscHRyLCAvLyBWVFZpZGVv
RGVjb2RlckZ1bmN0aW9uX1N0YXJ0VGlsZVNlc3Npb24KKyAgICBudWxscHRyLCAvLyBWVFZpZGVv
RGVjb2RlckZ1bmN0aW9uX0RlY29kZVRpbGUKKyAgICBudWxscHRyIC8vIFZUVmlkZW9EZWNvZGVy
RnVuY3Rpb25fRmluaXNoRGVsYXllZFRpbGVzCit9OworCitzdGF0aWMgY29uc3QgVlRWaWRlb0Rl
Y29kZXJWVGFibGUgV2ViS2l0VlA4RGVjb2RlclZUYWJsZSA9Cit7CisgICAgeyBudWxscHRyLCAm
V2ViS2l0VlA4RGVjb2Rlcl9CYXNlQ2xhc3MgfSwKKyAgICAmV2ViS2l0VlA4RGVjb2Rlcl9WaWRl
b0RlY29kZXJDbGFzcworfTsKKworT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA4RGVjb2RlcihGaWdW
aWRlb0NvZGVjVHlwZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJl
ZiogZGVjb2Rlck91dCkKK3sKKyAgICBpZiAoIWRlY29kZXJPdXQpIHsKKyAgICAgICAgUlRDX0xP
RyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyIGNyZWF0aW9uIGZhaWxlZCwgbm8gZGVjb2RlciBv
dXRwdXQiOworICAgICAgICByZXR1cm4ga1ZUUGFyYW1ldGVyRXJyOworICAgIH0KKworICAgIFZU
VmlkZW9EZWNvZGVyUmVmIGRlY29kZXIgPSBudWxscHRyOworICAgIGF1dG8gZXJyb3IgPSBDTURl
cml2ZWRPYmplY3RDcmVhdGUoYWxsb2NhdG9yLCAmV2ViS2l0VlA4RGVjb2RlclZUYWJsZS5iYXNl
LCBWVFZpZGVvRGVjb2RlckdldENsYXNzSUQoKSwgKENNQmFzZU9iamVjdFJlZiopJmRlY29kZXIp
OworCisgICAgaWYgKCFkZWNvZGVyKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJW
UDggZGVjb2RlciBjcmVhdGlvbiBmYWlsZWQsIENNRGVyaXZlZE9iamVjdENyZWF0ZSBmYWlsZWQg
d2l0aCBlcnJvciAiIDw8IGVycm9yOworICAgICAgICByZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxl
ZEVycjsKKyAgICB9CisKKyAgICBpZihlcnJvcikgeworICAgICAgICBDRlJlbGVhc2UoZGVjb2Rl
cik7CisgICAgICAgIGRlY29kZXIgPSBOVUxMOworICAgIH0KKyAgICAqZGVjb2Rlck91dCA9IGRl
Y29kZXI7CisgICAgcmV0dXJuIGVycm9yOworfQorCitPU1N0YXR1cyBpbnZhbGlkYXRlVlA4RGVj
b2RlcihDTUJhc2VPYmplY3RSZWYgaW5zdGFuY2UpCit7CisgICAgYXV0byogZGVjb2RlciA9IHN0
YXRpY19jYXN0PFdlYktpdFZQOERlY29kZXIqPihDTUJhc2VPYmplY3RHZXREZXJpdmVkU3RvcmFn
ZShpbnN0YW5jZSkpOworICAgIGlmICghZGVjb2RlcikKKyAgICAgICAgUlRDX0xPRyhMU19FUlJP
UikgPDwgIlZQOCBkZWNvZGVyOiBpbnZhbGlkYXRpb24gZmFpbGVkIGFzIGluc3RhbmNlIGhhcyBu
byBkZWNvZGVyIjsKKyAgICBlbHNlIHsKKyAgICAgICAgZGVjb2Rlci0+bV9pbnN0YW5jZSA9IG51
bGxwdHI7CisgICAgICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBudWxscHRyOworICAgIH0KKyAg
ICByZXR1cm4gbm9FcnI7Cit9CisKK3ZvaWQgZmluYWxpemVWUDhEZWNvZGVyKENNQmFzZU9iamVj
dFJlZiBpbnN0YW5jZSkKK3sKKyAgICBpbnZhbGlkYXRlVlA4RGVjb2RlcihpbnN0YW5jZSk7Cit9
CisKK0NGU3RyaW5nUmVmIGNvcHlWUDhEZWNvZGVyRGVidWdEZXNjcmlwdGlvbihDTUJhc2VPYmpl
Y3RSZWYpCit7CisgICAgcmV0dXJuIENGU1RSKCJXZWJLaXQgVlA4IGRlY29kZXIiKTsKK30KKwor
V2ViS2l0VlA4RGVjb2Rlciogd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoVlRWaWRlb0Rl
Y29kZXJSZWYgZGVjb2RlcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0VlA4RGVj
b2Rlcio+KENNQmFzZU9iamVjdEdldERlcml2ZWRTdG9yYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8Q01C
YXNlT2JqZWN0UmVmPihkZWNvZGVyKSkpOworfQorT1NTdGF0dXMgc3RhcnRWUDhEZWNvZGVyU2Vz
c2lvbihWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW9uIHNl
c3Npb24sIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKK3sK
KyAgICBhdXRvKiBkZWNvZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFu
Y2UpOworICAgIGlmICghZGVjb2RlcikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
VlA4IGRlY29kZXI6IGZhaWxlZCB0byBnZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIHN0
YXJ0aW5nIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBk
ZWNvZGVyLT5tX2luc3RhbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJ2cHhWcDhEZWNvZGVyPigp
OworICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdERlY29k
ZXJSZWNlaXZlcj4oc2Vzc2lvbik7CisgICAgZGVjb2Rlci0+bV9yZWNlaXZlci0+aW5pdGlhbGl6
ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBkZWNvZGVy
LT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVjb2Rlci0+bV9y
ZWNlaXZlci5nZXQoKSk7CisKKyAgICBWaWRlb0NvZGVjIGNvZGVjOworICAgIGF1dG8gZGltZW5z
aW9ucyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMoZm9ybWF0RGVzY3Jp
cHRpb24pOworICAgIGNvZGVjLndpZHRoID0gZGltZW5zaW9ucy53aWR0aDsKKyAgICBjb2RlYy5o
ZWlnaHQgPSBkaW1lbnNpb25zLmhlaWdodDsKKworICAgIGRlY29kZXItPm1faW5zdGFuY2UtPklu
aXREZWNvZGUoJmNvZGVjLCBDcHVJbmZvOjpEZXRlY3ROdW1iZXJPZkNvcmVzKCkpOworCisgICAg
cmV0dXJuIG5vRXJyOworfQorCitzdGF0aWMgT1NTdGF0dXMgZGVjb2RlVlA4RGVjb2RlckZyYW1l
RnJvbUNvbnRpZ3VvdXNCbG9jayhXZWJLaXRWUDhEZWNvZGVyJiBkZWNvZGVyLCBWVFZpZGVvRGVj
b2RlckZyYW1lIGZyYW1lLCBDTUJsb2NrQnVmZmVyUmVmIGVuY29kZWRCdWZmZXIpCit7CisgICAg
UlRDX0RDSEVDSyhDTUJsb2NrQnVmZmVySXNSYW5nZUNvbnRpZ3VvdXMoZW5jb2RlZEJ1ZmZlciwg
MCwgMCkpOworCisgICAgYXV0byBzaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgoZW5j
b2RlZEJ1ZmZlcik7CisgICAgY2hhciogZGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZXJy
b3IgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YVBvaW50ZXIoZW5jb2RlZEJ1ZmZlciwgMCwgbnVsbHB0
ciwgbnVsbHB0ciwgJmRhdGEpKSB7CisgICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJWUDgg
ZGVjb2RlcjogQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yICIg
PDwgZXJyb3I7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBSVENfRENIRUNL
KCFkZWNvZGVyLm1fcmVjZWl2ZXItPmN1cnJlbnRGcmFtZSgpKTsKKyAgICBkZWNvZGVyLm1fcmVj
ZWl2ZXItPnNldEN1cnJlbnRGcmFtZShmcmFtZSk7CisKKyAgICBFbmNvZGVkSW1hZ2UgaW1hZ2Ug
eyByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSwgc2l6ZSB9OworICAgIC8v
IFdlIHNldCB0aG9zZSB2YWx1ZXMgYXMgVlA4RGVjb2RlckltcGwgY2hlY2tzIGZvciBnZXR0aW5n
IGEgZnVsbCBrZXkgZnJhbWUgYXMgZmlyc3QgZnJhbWUuCisgICAgaW1hZ2UuX2ZyYW1lVHlwZSA9
IFZpZGVvRnJhbWVUeXBlOjprVmlkZW9GcmFtZUtleTsKKyAgICBpbWFnZS5fY29tcGxldGVGcmFt
ZSA9IHRydWU7CisgICAgYXV0byBlcnJvciA9IGRlY29kZXIubV9pbnN0YW5jZS0+RGVjb2RlKGlt
YWdlLCBmYWxzZSwgMCk7CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gZGVjb2Rlci5t
X3JlY2VpdmVyLT5kZWNvZGVyRmFpbGVkKGVycm9yKTsKKworICAgIFJUQ19EQ0hFQ0soIWRlY29k
ZXIubV9yZWNlaXZlci0+Y3VycmVudEZyYW1lKCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09T
U3RhdHVzIGRlY29kZVZQOERlY29kZXJGcmFtZShWVFZpZGVvRGVjb2RlclJlZiBpbnN0YW5jZSwg
VlRWaWRlb0RlY29kZXJGcmFtZSBmcmFtZSwgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
LCBWVERlY29kZUZyYW1lRmxhZ3MsIFZURGVjb2RlSW5mb0ZsYWdzKikKK3sKKyAgICBhdXRvKiBk
ZWNvZGVyID0gd2ViS2l0VlA4RGVjb2RlckZyb21WVERlY29kZXIoaW5zdGFuY2UpOworICAgIGlm
ICghZGVjb2RlciB8fCAhZGVjb2Rlci0+bV9pbnN0YW5jZSB8fCAhZGVjb2Rlci0+bV9yZWNlaXZl
cikgeworICAgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiVlA4IGRlY29kZXI6IGZhaWxlZCB0
byBnZXQgZGVjb2RlciBmcm9tIGluc3RhbmNlIHdoaWxlIGRlY29kaW5nIjsKKyAgICAgICAgcmV0
dXJuIGtWVFBhcmFtZXRlckVycjsKKyAgICB9CisKKyAgICBhdXRvIGVuY29kZWRCdWZmZXIgPSBD
TVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWVuY29k
ZWRCdWZmZXIpIHsKKyAgICAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBm
YWlsZWQgdG8gZ2V0IGRhdGEgYnVmZmVyIjsKKyAgICAgICAgcmV0dXJuIGtWVFBhcmFtZXRlckVy
cjsKKyAgICB9CisKKyAgICBDTUJsb2NrQnVmZmVyUmVmIGNvbnRpZ3VvdXNCdWZmZXIgPSBudWxs
cHRyOworICAgIC8vIE1ha2Ugc3VyZSBibG9jayBidWZmZXIgaXMgY29udGlndW91cy4KKyAgICBp
ZiAoIUNNQmxvY2tCdWZmZXJJc1JhbmdlQ29udGlndW91cyhlbmNvZGVkQnVmZmVyLCAwLCAwKSkg
eworICAgICAgICBhdXRvIHN0YXR1cyA9IENNQmxvY2tCdWZmZXJDcmVhdGVDb250aWd1b3VzKG51
bGxwdHIsIGVuY29kZWRCdWZmZXIsIG51bGxwdHIsIG51bGxwdHIsIDAsIDAsIDAsICZjb250aWd1
b3VzQnVmZmVyKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VycikgeworICAgICAgICAgICAg
UlRDX0xPRyhMU19FUlJPUikgPDwgIlZQOCBkZWNvZGVyOiBmYWlsZWQgdG8gY3JlYXRlIGNvbnRp
Z3VvdXMgYmxvY2sgYnVmZmVyIHdpdGggZXJyb3IgIiA8PCBzdGF0dXM7CisgICAgICAgICAgICBy
ZXR1cm4ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsKKyAgICAgICAgfQorICAgICAgICBlbmNvZGVk
QnVmZmVyID0gY29udGlndW91c0J1ZmZlcjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGRl
Y29kZVZQOERlY29kZXJGcmFtZUZyb21Db250aWd1b3VzQmxvY2soKmRlY29kZXIsIGZyYW1lLCBl
bmNvZGVkQnVmZmVyKTsKKworICAgIGlmIChjb250aWd1b3VzQnVmZmVyKQorICAgICAgICBDRlJl
bGVhc2UoY29udGlndW91c0J1ZmZlcik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsv
V2ViS2l0L1dlYktpdFZQOERlY29kZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VlA4RGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJm
NzMwYjk1NmFlNWE3NzA0MzhmODA4ZDUxNTEzN2YxODYxODU5ZWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFZQOERlY29kZXIuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSB3ZWJydGMgeworCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2Rl
cigpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRWUDlEZWNvZGVyLmNw
cAppbmRleCA0M2E4ZWM3MmRiZWI5OGFlYzQ0NmI3MTk4N2MzMWQzMGU4ZDUzNzVmLi44NzU5ZWQx
ZmJlMTkxZjVhZDAxYjI1ZTQ1ODVmNzY0NTlmZGUwMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFZQOURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VlA5RGVjb2Rlci5jcHAKQEAgLTI1LDE1ICsyNSwxMSBAQAogCiAjaW5j
bHVkZSAiV2ViS2l0VlA5RGVjb2Rlci5oIgogCi0jaW5jbHVkZSAiV2ViS2l0VXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSA8VmlkZW9Ub29sYm94L1ZpZGVvVG9vbGJveC5oPgorI2luY2x1ZGUgIldlYktp
dERlY29kZXJSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVj
cy92cDkvdnA5X2ltcGwuaCIKICNpbmNsdWRlICJydGNfYmFzZS9sb2dnaW5nLmgiCiAjaW5jbHVk
ZSAic3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvY3B1X2luZm8uaCIKIAotI2luY2x1ZGUgIkNNQmFz
ZU9iamVjdFNQSS5oIgotI2luY2x1ZGUgIlZUVmlkZW9EZWNvZGVyU1BJLmgiCi0KIG5hbWVzcGFj
ZSB3ZWJydGMgewogCiBzdGF0aWMgT1NTdGF0dXMgY3JlYXRlV2ViS2l0VlA5RGVjb2RlcihGaWdW
aWRlb0NvZGVjVHlwZSwgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBWVFZpZGVvRGVjb2RlclJl
ZiopOwpAQCAtNDIsMzkgKzM4LDExIEBAIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCkK
ICAgICBWVFJlZ2lzdGVyVmlkZW9EZWNvZGVyKCd2cDA5JywgY3JlYXRlV2ViS2l0VlA5RGVjb2Rl
cik7CiB9CiAKLWNsYXNzIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjsKIHR5cGVkZWYgc3RydWN0
IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VlA5RGVjb2RlckltcGw+IG1faW5zdGFuY2U7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYktpdFZQOURlY29kZXJSZWNlaXZlcj4gbV9yZWNlaXZlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RGVjb2RlclJlY2VpdmVyPiBtX3JlY2VpdmVyOwogfSBX
ZWJLaXRWUDlEZWNvZGVyOwogCi1jbGFzcyBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXIgZmluYWwg
OiBwdWJsaWMgRGVjb2RlZEltYWdlQ2FsbGJhY2sgewotcHVibGljOgotICAgIGV4cGxpY2l0IFdl
YktpdFZQOURlY29kZXJSZWNlaXZlcihWVFZpZGVvRGVjb2RlclNlc3Npb24pOwotICAgIH5XZWJL
aXRWUDlEZWNvZGVyUmVjZWl2ZXIoKTsKLQotICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgY3VycmVu
dEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RnJhbWU7IH0KLSAgICB2b2lkIHNldEN1
cnJlbnRGcmFtZShWVFZpZGVvRGVjb2RlckZyYW1lIGN1cnJlbnRGcmFtZSkgeyBtX2N1cnJlbnRG
cmFtZSA9IGN1cnJlbnRGcmFtZTsgfQotICAgIE9TU3RhdHVzIGRlY29kZXJGYWlsZWQoaW50IGVy
cm9yKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1h
dERlc2NyaXB0aW9uUmVmKTsKLQotcHJpdmF0ZToKLSAgICBpbnQzMl90IERlY29kZWQoVmlkZW9G
cmFtZSYpIGZpbmFsOwotICAgIGludDMyX3QgRGVjb2RlZChWaWRlb0ZyYW1lJiwgaW50NjRfdCBk
ZWNvZGVfdGltZV9tcykgZmluYWw7Ci0gICAgdm9pZCBEZWNvZGVkKFZpZGVvRnJhbWUmLCBhYnNs
OjpvcHRpb25hbDxpbnQzMl90PiBkZWNvZGVfdGltZV9tcywgYWJzbDo6b3B0aW9uYWw8dWludDhf
dD4gcXApIGZpbmFsOwotCi0gICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29s
KHNpemVfdCBwaXhlbEJ1ZmZlcldpZHRoLCBzaXplX3QgcGl4ZWxCdWZmZXJIZWlnaHQsIGJvb2wg
aXMxMGJpdCk7Ci0KLSAgICBWVFZpZGVvRGVjb2RlclNlc3Npb24gbV9zZXNzaW9uIHsgbnVsbHB0
ciB9OwotICAgIFZUVmlkZW9EZWNvZGVyRnJhbWUgbV9jdXJyZW50RnJhbWUgeyBudWxscHRyIH07
Ci0gICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJXaWR0aCB7IDAgfTsKLSAgICBzaXplX3QgbV9waXhl
bEJ1ZmZlckhlaWdodCB7IDAgfTsKLSAgICBib29sIG1faXMxMGJpdCB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBtX2lzRnVsbFJhbmdlIHsgZmFsc2UgfTsKLSAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBt
X3BpeGVsQnVmZmVyUG9vbCB7IG51bGxwdHIgfTsKLX07Ci0KIHN0YXRpYyBPU1N0YXR1cyBpbnZh
bGlkYXRlVlA5RGVjb2RlcihDTUJhc2VPYmplY3RSZWYpOwogc3RhdGljIHZvaWQgZmluYWxpemVW
UDlEZWNvZGVyKENNQmFzZU9iamVjdFJlZik7CiBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29weVZQOURl
Y29kZXJEZWJ1Z0Rlc2NyaXB0aW9uKENNQmFzZU9iamVjdFJlZik7CkBAIC0xNzUsNyArMTQzLDcg
QEAgT1NTdGF0dXMgc3RhcnRWUDlEZWNvZGVyU2Vzc2lvbihWVFZpZGVvRGVjb2RlclJlZiBpbnN0
YW5jZSwgVlRWaWRlb0RlY29kZXJTZXNzaW8KICAgICB9CiAKICAgICBkZWNvZGVyLT5tX2luc3Rh
bmNlID0gc3RkOjptYWtlX3VuaXF1ZTxWUDlEZWNvZGVySW1wbD4oKTsKLSAgICBkZWNvZGVyLT5t
X3JlY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI+KHNl
c3Npb24pOworICAgIGRlY29kZXItPm1fcmVjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dERlY29kZXJSZWNlaXZlcj4oc2Vzc2lvbik7CiAgICAgZGVjb2Rlci0+bV9yZWNlaXZlci0+aW5p
dGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlwdGlvbihmb3JtYXREZXNjcmlwdGlvbik7CiAKICAgICBk
ZWNvZGVyLT5tX2luc3RhbmNlLT5SZWdpc3RlckRlY29kZUNvbXBsZXRlQ2FsbGJhY2soZGVjb2Rl
ci0+bV9yZWNlaXZlci5nZXQoKSk7CkBAIC0yNTAsMTYxICsyMTgsNCBAQCBPU1N0YXR1cyBkZWNv
ZGVWUDlEZWNvZGVyRnJhbWUoVlRWaWRlb0RlY29kZXJSZWYgaW5zdGFuY2UsIFZUVmlkZW9EZWNv
ZGVyRnJhbWUgZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVdlYktpdFZQOURlY29kZXJSZWNl
aXZlcjo6V2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyKFZUVmlkZW9EZWNvZGVyU2Vzc2lvbiBzZXNz
aW9uKQotICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCi17Ci19Ci0KLVdlYktpdFZQOURlY29kZXJS
ZWNlaXZlcjo6fldlYktpdFZQOURlY29kZXJSZWNlaXZlcigpCi17Ci0gICAgaWYgKG1fcGl4ZWxC
dWZmZXJQb29sKQotICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1ZmZlclBvb2wpOwotfQotCi12
b2lkIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6aW5pdGlhbGl6ZUZyb21Gb3JtYXREZXNjcmlw
dGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQotewotICAgIC8v
IENvcmVBbmltYXRpb24gZG9lc24ndCBzdXBwb3J0IGZ1bGwtcGxhbmFyIFlVViwgc28gd2UgbXVz
dCBjb252ZXJ0IHRoZSBidWZmZXJzIG91dHB1dAotICAgIC8vIGJ5IGxpYnZweCB0byBiaS1wbGFu
YXIgWVVWLiBDcmVhdGUgcGl4ZWwgYnVmZmVyIGF0dHJpYnV0ZXMgYW5kIGdpdmUgdGhvc2UgdG8g
dGhlCi0gICAgLy8gZGVjb2RlciBzZXNzaW9uIGZvciB1c2UgaW4gY3JlYXRpbmcgaXRzIG93biBp
bnRlcm5hbCBDVlBpeGVsQnVmZmVyUG9vbCwgd2hpY2ggd2UKLSAgICAvLyB3aWxsIHVzZSBwb3N0
LWRlY29kZS4KLSAgICBtX2lzRnVsbFJhbmdlID0gZmFsc2U7Ci0gICAgbV9pczEwYml0ID0gZmFs
c2U7Ci0KLSAgICBkbyB7Ci0gICAgICAgIGF1dG8gZXh0ZW5zaW9ucyA9IENNRm9ybWF0RGVzY3Jp
cHRpb25HZXRFeHRlbnNpb25zKGZvcm1hdERlc2NyaXB0aW9uKTsKLSAgICAgICAgaWYgKCFleHRl
bnNpb25zKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgQ0ZUeXBlUmVmIGV4dGVuc2lv
bkF0b21zID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0ZW5zaW9ucywga0NNRm9ybWF0RGVzY3Jp
cHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcyk7Ci0gICAgICAg
IGlmICghZXh0ZW5zaW9uQXRvbXMgfHwgQ0ZHZXRUeXBlSUQoZXh0ZW5zaW9uQXRvbXMpICE9IENG
RGljdGlvbmFyeUdldFR5cGVJRCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgYXV0
byBjb25maWd1cmF0aW9uUmVjb3JkID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25h
cnlHZXRWYWx1ZSgoQ0ZEaWN0aW9uYXJ5UmVmKWV4dGVuc2lvbkF0b21zLCBDRlNUUigidnBjQyIp
KSk7Ci0gICAgICAgIGlmICghY29uZmlndXJhdGlvblJlY29yZCB8fCBDRkdldFR5cGVJRChjb25m
aWd1cmF0aW9uUmVjb3JkKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZFNpemUgPSBDRkRhdGFHZXRMZW5n
dGgoY29uZmlndXJhdGlvblJlY29yZCk7Ci0gICAgICAgIGlmIChjb25maWd1cmF0aW9uUmVjb3Jk
U2l6ZSA8IDEyKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgYXV0byBjb25maWd1cmF0
aW9uUmVjb3JkRGF0YSA9IENGRGF0YUdldEJ5dGVQdHIoY29uZmlndXJhdGlvblJlY29yZCk7Ci0g
ICAgICAgIGF1dG8gYml0RGVwdGhDaHJvbWFBbmRSYW5nZSA9ICooY29uZmlndXJhdGlvblJlY29y
ZERhdGEgKyA2KTsKLQotICAgICAgICBpZiAoKGJpdERlcHRoQ2hyb21hQW5kUmFuZ2UgPj4gNCkg
PT0gMTApCi0gICAgICAgICAgICBtX2lzMTBiaXQgPSB0cnVlOwotCi0gICAgICAgIGlmIChiaXRE
ZXB0aENocm9tYUFuZFJhbmdlICYgMHgxKQotICAgICAgICAgICAgbV9pc0Z1bGxSYW5nZSA9IHRy
dWU7Ci0gICAgfSB3aGlsZSAoZmFsc2UpOwotfQotCi1DVlBpeGVsQnVmZmVyUG9vbFJlZiBXZWJL
aXRWUDlEZWNvZGVyUmVjZWl2ZXI6OnBpeGVsQnVmZmVyUG9vbChzaXplX3QgcGl4ZWxCdWZmZXJX
aWR0aCwgc2l6ZV90IHBpeGVsQnVmZmVySGVpZ2h0LCBib29sIGlzMTBiaXQpCi17Ci0gICAgaWYg
KG1fcGl4ZWxCdWZmZXJQb29sICYmIG1fcGl4ZWxCdWZmZXJXaWR0aCA9PSBwaXhlbEJ1ZmZlcldp
ZHRoICYmIG1fcGl4ZWxCdWZmZXJIZWlnaHQgPT0gcGl4ZWxCdWZmZXJIZWlnaHQgJiYgbV9pczEw
Yml0ID09IGlzMTBiaXQpCi0gICAgICAgIHJldHVybiBtX3BpeGVsQnVmZmVyUG9vbDsKLQotICAg
IE9TVHlwZSBwaXhlbEZvcm1hdDsKLSAgICBpZiAoaXMxMGJpdCkKLSAgICAgICAgcGl4ZWxGb3Jt
YXQgPSBtX2lzRnVsbFJhbmdlID8ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFu
YXJGdWxsUmFuZ2UgOiBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hclZpZGVv
UmFuZ2U7Ci0gICAgZWxzZQotICAgICAgICBwaXhlbEZvcm1hdCA9IG1faXNGdWxsUmFuZ2UgPyBr
Q1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlIDoga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U7Ci0KLSAgICBhdXRvIGNyZWF0
ZVBpeGVsRm9ybWF0QXR0cmlidXRlcyA9IFtdIChPU1R5cGUgcGl4ZWxGb3JtYXQsIGludDMyX3Qg
Ym9yZGVyUGl4ZWxzKSB7Ci0gICAgICAgIGF1dG8gY3JlYXRlTnVtYmVyID0gW10gKGludDMyX3Qg
Zm9ybWF0KSAtPiBDRk51bWJlclJlZiB7Ci0gICAgICAgICAgICByZXR1cm4gQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJmZvcm1hdCk7Ci0g
ICAgICAgIH07Ci0gICAgICAgIGF1dG8gY2ZQaXhlbEZvcm1hdHMgPSBDRkFycmF5Q3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAg
ICAgICAgYXV0byBmb3JtYXROdW1iZXIgPSBjcmVhdGVOdW1iZXIocGl4ZWxGb3JtYXQpOwotICAg
ICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY2ZQaXhlbEZvcm1hdHMsIGZvcm1hdE51bWJlcik7Ci0g
ICAgICAgIENGUmVsZWFzZShmb3JtYXROdW1iZXIpOwotCi0gICAgICAgIGF1dG8gYm9yZGVyUGl4
ZWxzVmFsdWUgPSBjcmVhdGVOdW1iZXIoMzIpOwotCi0gICAgICAgIGNvbnN0IHZvaWQqIGtleXNb
XSA9IHsKLSAgICAgICAgICAgIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LAotICAg
ICAgICAgICAga0NWUGl4ZWxCdWZmZXJFeHRlbmRlZFBpeGVsc0xlZnRLZXksCi0gICAgICAgICAg
ICBrQ1ZQaXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzUmlnaHRLZXksCi0gICAgICAgICAgICBrQ1ZQ
aXhlbEJ1ZmZlckV4dGVuZGVkUGl4ZWxzVG9wS2V5LAotICAgICAgICAgICAga0NWUGl4ZWxCdWZm
ZXJFeHRlbmRlZFBpeGVsc0JvdHRvbUtleSwKLSAgICAgICAgfTsKLSAgICAgICAgY29uc3Qgdm9p
ZCogdmFsdWVzW10gPSB7Ci0gICAgICAgICAgICBjZlBpeGVsRm9ybWF0cywKLSAgICAgICAgICAg
IGJvcmRlclBpeGVsc1ZhbHVlLAotICAgICAgICAgICAgYm9yZGVyUGl4ZWxzVmFsdWUsCi0gICAg
ICAgICAgICBib3JkZXJQaXhlbHNWYWx1ZSwKLSAgICAgICAgICAgIGJvcmRlclBpeGVsc1ZhbHVl
LAotICAgICAgICB9OwotICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBzdGQ6OnNpemUoa2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpOwotICAgICAgICBDRlJlbGVhc2UoYm9yZGVyUGl4ZWxzVmFsdWUpOwotICAgICAgICBD
RlJlbGVhc2UoY2ZQaXhlbEZvcm1hdHMpOwotICAgICAgICByZXR1cm4gYXR0cmlidXRlczsKLSAg
ICB9OwotCi0gICAgYXV0byBwaXhlbEJ1ZmZlckF0dHJpYnV0ZXMgPSBjcmVhdGVQaXhlbEZvcm1h
dEF0dHJpYnV0ZXMocGl4ZWxGb3JtYXQsIDMyKTsKLSAgICBWVERlY29kZXJTZXNzaW9uU2V0UGl4
ZWxCdWZmZXJBdHRyaWJ1dGVzKG1fc2Vzc2lvbiwgcGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsKLSAg
ICBDRlJlbGVhc2UocGl4ZWxCdWZmZXJBdHRyaWJ1dGVzKTsKLQotICAgIGlmIChtX3BpeGVsQnVm
ZmVyUG9vbCkgewotICAgICAgICBDRlJlbGVhc2UobV9waXhlbEJ1ZmZlclBvb2wpOwotICAgICAg
ICBtX3BpeGVsQnVmZmVyUG9vbCA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgbV9waXhlbEJ1ZmZl
clBvb2wgPSBWVERlY29kZXJTZXNzaW9uR2V0UGl4ZWxCdWZmZXJQb29sKG1fc2Vzc2lvbik7Ci0g
ICAgaWYgKG1fcGl4ZWxCdWZmZXJQb29sKQotICAgICAgICBDRlJldGFpbihtX3BpeGVsQnVmZmVy
UG9vbCk7Ci0KLSAgICBtX3BpeGVsQnVmZmVyV2lkdGggPSBwaXhlbEJ1ZmZlcldpZHRoOwotICAg
IG1fcGl4ZWxCdWZmZXJIZWlnaHQgPSBwaXhlbEJ1ZmZlckhlaWdodDsKLSAgICBtX2lzMTBiaXQg
PSBpczEwYml0OwotCi0gICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sOwotfQotCi1PU1N0YXR1
cyBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OmRlY29kZXJGYWlsZWQoaW50IGVycm9yKQotewot
ICAgIE9TU3RhdHVzIHZ0RXJyb3IgPSBrVlRWaWRlb0RlY29kZXJCYWREYXRhRXJyOwotICAgIGlm
IChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfTk9fT1VUUFVUKQotICAgICAgICB2dEVycm9y
ID0gbm9FcnI7Ci0gICAgZWxzZSBpZiAoZXJyb3IgPT0gV0VCUlRDX1ZJREVPX0NPREVDX1VOSU5J
VElBTElaRUQpCi0gICAgICAgIHZ0RXJyb3IgPSBrVlRWaWRlb0RlY29kZXJNYWxmdW5jdGlvbkVy
cjsKLSAgICBlbHNlIGlmIChlcnJvciA9PSBXRUJSVENfVklERU9fQ09ERUNfTUVNT1JZKQotICAg
ICAgICB2dEVycm9yID0ga1ZUQWxsb2NhdGlvbkZhaWxlZEVycjsKLSAgICBWVERlY29kZXJTZXNz
aW9uRW1pdERlY29kZWRGcmFtZShtX3Nlc3Npb24sIG1fY3VycmVudEZyYW1lLCB2dEVycm9yLCAw
LCBudWxscHRyKTsKLSAgICBtX2N1cnJlbnRGcmFtZSA9IG51bGxwdHI7Ci0KLSAgICBSVENfTE9H
KExTX0VSUk9SKSA8PCAiVlA5IGRlY29kZXI6IGRlY29kZXIgZmFpbGVkIHdpdGggZXJyb3IgIiA8
PCBlcnJvciA8PCAiLCB2dEVycm9yICIgPDwgdnRFcnJvcjsKLSAgICByZXR1cm4gdnRFcnJvcjsK
LX0KLQotaW50MzJfdCBXZWJLaXRWUDlEZWNvZGVyUmVjZWl2ZXI6OkRlY29kZWQoVmlkZW9GcmFt
ZSYgZnJhbWUpCi17Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyRnJvbUZyYW1l
KGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBCdWZmZXJUeXBlIHR5
cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9
IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCB0eXBlID09IEJ1ZmZlclR5cGU6
OkkwMTApOwotICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxs
cHRyOwotICAgICAgICBpZiAoQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbCwgJnBpeGVsQnVmZmVyKSA9PSBrQ1ZS
ZXR1cm5TdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9KTsKLQotICAgIFZURGVjb2RlclNlc3Npb25FbWl0RGVjb2Rl
ZEZyYW1lKG1fc2Vzc2lvbiwgbV9jdXJyZW50RnJhbWUsIHBpeGVsQnVmZmVyID8gbm9FcnIgOiAt
MSwgMCwgcGl4ZWxCdWZmZXIpOwotICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKLSAgICBp
ZiAocGl4ZWxCdWZmZXIpCi0gICAgICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlcik7Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KLWludDMyX3QgV2ViS2l0VlA5RGVjb2RlclJlY2VpdmVyOjpEZWNvZGVkKFZp
ZGVvRnJhbWUmIGZyYW1lLCBpbnQ2NF90KQotewotICAgIERlY29kZWQoZnJhbWUpOwotICAgIHJl
dHVybiAwOwotfQotCi12b2lkIFdlYktpdFZQOURlY29kZXJSZWNlaXZlcjo6RGVjb2RlZChWaWRl
b0ZyYW1lJiBmcmFtZSwgYWJzbDo6b3B0aW9uYWw8aW50MzJfdD4sIGFic2w6Om9wdGlvbmFsPHVp
bnQ4X3Q+KQotewotICAgIERlY29kZWQoZnJhbWUpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZTEwODA0Mzk5OTY0ODNhYjMzMWEyOWRhZWJlMDY0ZjBmZDBmM2Zk
My4uNDFjM2I5N2EzNmY2YjQ2MWYwMmIyZTlkMDRjOGY4NWUzMGFjM2RjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL2xpYndlYnJ0Yy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzkwOSw2ICszOTA5LDEwIEBACiAJCTVDRkQ1MzkyMUU0
QkQzQTMwMDQ4MjkwOCAvKiByb3dfbmVvbjY0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRDUzOEExRTRCRDNBMzAwNDgyOTA4IC8qIHJvd19uZW9u
NjQuY2MgKi87IH07CiAJCTVDRkQ1MzkzMUU0QkQzQTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uLmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRDUzOEIx
RTRCRDNBMzAwNDgyOTA4IC8qIHNjYWxlX25lb24uY2MgKi87IH07CiAJCTVDRkQ1Mzk0MUU0QkQz
QTMwMDQ4MjkwOCAvKiBzY2FsZV9uZW9uNjQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZENTM4QzFFNEJEM0EzMDA0ODI5MDggLyogc2NhbGVfbmVv
bjY0LmNjICovOyB9OworCQlDRDM4MUYyNzI1ODE1OTFGMDA3N0RFQzggLyogV2ViS2l0VlA4RGVj
b2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
ODFGMjUyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuaCAqLzsgfTsKKwkJQ0Qz
ODFGMjkyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzODFGMjgyNTgxNTkxRjAwNzdE
RUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwICovOyB9OworCQlDRDM4MUYyQjI1ODFGRUJBMDA3
N0RFQzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzgxRjJBMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJL
aXREZWNvZGVyUmVjZWl2ZXIuY3BwICovOyB9OworCQlDRDM4MUYyRDI1ODFGRjBCMDA3N0RFQzgg
LyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDM4MUYyQzI1ODFGRjBCMDA3N0RFQzggLyogV2ViS2l0RGVjb2Rl
clJlY2VpdmVyLmggKi87IH07CiAJCUNERUJCNEI2MjRDMDE5QzQwMEFEQkQ0NCAvKiB1bmtub3du
X3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUJCNDY0MjRDMDE5MUEwMEFEQkQ0NCAvKiB1bmtub3duX3BhcnNlci5jYyAqLzsgfTsKIAkJ
Q0RFQkI0QjcyNEMwMTlDNDAwQURCRDQ0IC8qIG1hc3Rlcl9wYXJzZXIuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVCQjQ2RjI0QzAxOTFBMDBBREJE
NDQgLyogbWFzdGVyX3BhcnNlci5jYyAqLzsgfTsKIAkJQ0RFQkI0QjgyNEMwMTlDNDAwQURCRDQ0
IC8qIGJsb2NrX3BhcnNlci5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENERUJCNDc2MjRDMDE5MUEwMEFEQkQ0NCAvKiBibG9ja19wYXJzZXIuY2MgKi87
IH07CkBAIC04NDMyLDYgKzg0MzYsMTAgQEAKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8q
IEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4
NzNFIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExQjg5QjhBMjIxRTAwNEMwMEVCNENFQSAvKiBTREtWYXJpYW50LnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IFNES1ZhcmlhbnQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMzgxRjI1MjU4MTU5MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFZQOERlY29kZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMjgyNTgxNTkxRjAwNzdERUM4IC8qIFdlYktpdFZQOERl
Y29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0VlA4
RGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMzgxRjJBMjU4MUZF
QkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzODFGMkMyNTgxRkYwQjAwNzdERUM4IC8qIFdlYktpdERl
Y29kZXJSZWNlaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQkIxMTkyNEMwMTg3NDAwQURCRDQ0IC8q
IGxpYndlYm0uYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlid2VibS5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDREVCQjExRTI0QzAxODk2MDBBREJE
NDQgLyogbGlid2VibS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBsaWJ3ZWJtLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVCQjQwNTI0QzAxOTFBMDBBREJENDQgLyog
cmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA5NjIsMTAgKzEwOTcwLDE0IEBACiAJCQkJNDEyRkY5MzUyNTNEOEYwQTAwMURG
MDM2IC8qIFZUVmlkZW9EZWNvZGVyU1BJLmggKi8sCiAJCQkJNDFFODRCQzkyNDM0QzRBMjAwRDM0
RTQxIC8qIFdlYktpdERlY29kZXIuaCAqLywKIAkJCQk0MUU4NEJDQTI0MzRDNEEzMDBEMzRFNDEg
LyogV2ViS2l0RGVjb2Rlci5tbSAqLywKKwkJCQlDRDM4MUYyQTI1ODFGRUJBMDA3N0RFQzggLyog
V2ViS2l0RGVjb2RlclJlY2VpdmVyLmNwcCAqLywKKwkJCQlDRDM4MUYyQzI1ODFGRjBCMDA3N0RF
QzggLyogV2ViS2l0RGVjb2RlclJlY2VpdmVyLmggKi8sCiAJCQkJNDE1ODY0OTYyM0JFMDVFODAw
QTBBNjFFIC8qIFdlYktpdEVuY29kZXIuaCAqLywKIAkJCQk0MTU4NjQ5NzIzQkUwNUU5MDBBMEE2
MUUgLyogV2ViS2l0RW5jb2Rlci5tbSAqLywKIAkJCQk0MUVDRUFCQjIwNjQwM0MxMDA5RDUxNDEg
LyogV2ViS2l0VXRpbGl0aWVzLmggKi8sCiAJCQkJNDFFQ0VBQkQyMDY0MDQ5ODAwOUQ1MTQxIC8q
IFdlYktpdFV0aWxpdGllcy5tbSAqLywKKwkJCQlDRDM4MUYyODI1ODE1OTFGMDA3N0RFQzggLyog
V2ViS2l0VlA4RGVjb2Rlci5jcHAgKi8sCisJCQkJQ0QzODFGMjUyNTgxNTkxRjAwNzdERUM4IC8q
IFdlYktpdFZQOERlY29kZXIuaCAqLywKIAkJCQk0MTQwMzdCQTI0QUM3NkU5MDBCQ0U5QjIgLyog
V2ViS2l0VlA5RGVjb2Rlci5jcHAgKi8sCiAJCQkJNDE0MDM3QjkyNEFDNzZFOTAwQkNFOUIyIC8q
IFdlYktpdFZQOURlY29kZXIuaCAqLywKIAkJCSk7CkBAIC0xNzQ5Niw4ICsxNzUwOCwxMCBAQAog
CQkJCTVDNEI0QzgxMUU0MzFGOUMwMDI2NTFDOCAvKiB3YXZfZmlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUM0QjRDODQxRTQzMUY5QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxMzFDMTYzMjM0Qjg5RTIwMDI4QTYxNSAvKiB3ZWFrX3B0ci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0QzODFGMkQyNTgxRkYwQjAwNzdERUM4IC8qIFdlYktpdERlY29kZXJSZWNl
aXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1ODY0OTgyM0JFMDVFOTAwQTBBNjFFIC8qIFdl
YktpdEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRUNFQUJDMjA2NDAzQzIwMDlENTE0
MSAvKiBXZWJLaXRVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzgxRjI3MjU4MTU5
MUYwMDc3REVDOCAvKiBXZWJLaXRWUDhEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTQw
MzdCQjI0QUM3NkVBMDBCQ0U5QjIgLyogV2ViS2l0VlA5RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNUNERDhDQUIxRTQzQzZGNzAwNjIxRTkyIC8qIHdlYnJ0Y19jbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxNDVFNDkxMUVGODhFRjcwMEZDRjZFNiAvKiB3ZWJydGNfbGlieXV2LmggaW4g
SGVhZGVycyAqLywKQEAgLTIwMDM5LDggKzIwMDUzLDEwIEBACiAJCQkJNUM0QjRDODMxRTQzMUY5
QzAwMjY1MUM4IC8qIHdhdl9oZWFkZXIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MTMxQzBGOTIz
NEI4OUUyMDAyOEE2MTUgLyogd2Vha19wdHIuY2MgaW4gU291cmNlcyAqLywKIAkJCQk0MUU4NEJE
NTI0MzczRjcyMDBEMzRFNDEgLyogV2ViS2l0RGVjb2Rlci5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUNEMzgxRjJCMjU4MUZFQkEwMDc3REVDOCAvKiBXZWJLaXREZWNvZGVyUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE1ODY0OTkyM0JFMDVFOTAwQTBBNjFFIC8qIFdlYktpdEVuY29k
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MUVDRUFCRTIwNjQwNDk4MDA5RDUxNDEgLyogV2Vi
S2l0VXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QzODFGMjkyNTgxNTkxRjAwNzdE
RUM4IC8qIFdlYktpdFZQOERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0MDM3QkMy
NEFDNzZFQTAwQkNFOUIyIC8qIFdlYktpdFZQOURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNERDhDQUExRTQzQzZGNzAwNjIxRTkyIC8qIHdlYnJ0Y19jbmcuY2MgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0REODM2NzFFNDMyNUQ1MDA2MjFFOTIgLyogd2VicnRjX2xpYnl1di5jYyBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAppbmRleCA0OWUzOGY1ZTczOTIx
YmQ1MmY5MGVhNzNkZDg2ODY3ZTUyMTlkODlmLi41OGU3YTk5ZjRlZDlmNTEyMTcwODJjMTQwMjZj
ODJiNDYxMDE0MDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbApAQCAtODY0LDYgKzg2
NCwxNiBAQCBVc2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ6CiAgICAgV2ViS2l0
OgogICAgICAgZGVmYXVsdDogdHJ1ZQogCitWUDhEZWNvZGVyRW5hYmxlZDoKKyAgdHlwZTogYm9v
bAorICBodW1hblJlYWRhYmxlTmFtZTogIlZQOCBkZWNvZGVyIgorICBodW1hblJlYWRhYmxlRGVz
Y3JpcHRpb246ICJFbmFibGUgVlA4IGRlY29kZXIiCisgIHdlYmNvcmVCaW5kaW5nOiBub25lCisg
IGNvbmRpdGlvbjogRU5BQkxFKFZQOSkKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdDoKKyAg
ICAgIGRlZmF1bHQ6IFdlYktpdDo6ZGVmYXVsdFZQOERlY29kZXJFbmFibGVkKCkKKwogIyBGSVhN
RTogSXMgdGhpcyBpbXBsZW1lbnRlZCBmb3IgV2ViS2l0TGVnYWN5PyBJZiBub3QsIHRoaXMgc2hv
dWxkIGJlIGV4Y2x1ZGVkIGZyb20gV2ViS2l0TGVnYWN5IGVudGlyZWx5LgogVlA5RGVjb2RlckVu
YWJsZWQ6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDE0MDg3NDFiODEzMzEwZDI3ZjQ2MDAwMThlMzMx
YTUwNGM1NDQwYmQuLjRlMjgyMjcyMTUxN2MzYmU2ODkzZTE4YzgxYzdhZjVhMmRiODViNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNw
cApAQCAtMTI0LDEyICsxMjQsNiBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVlBNYXRyaXhDb2VmZmlj
aWVudHModWludDhfdCBtYXRyaXhDb2VmZmljaWVudHMpCiAKIE9wdGlvbmFsPFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNW
aWV3KQogewotICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlICd2cDA5JyBjb2RlYyBzdHJpbmcgaXMg
c3BlY2lmaWVkIGluIHRoZSB3ZWJtIEdpdEh1YiByZXBvOgotICAgIC8vIDxodHRwczovL2dpdGh1
Yi5jb20vd2VibXByb2plY3QvdnA5LWRhc2gvYmxvYi9tYXN0ZXIvVlBDb2RlY0lTT01lZGlhRmls
ZUZvcm1hdEJpbmRpbmcubWQjY29kZWNzLXBhcmFtZXRlci1zdHJpbmc+Ci0KLSAgICAvLyAic2Ft
cGxlIGVudHJ5IDRDQywgcHJvZmlsZSwgbGV2ZWwsIGFuZCBiaXREZXB0aCBhcmUgYWxsIG1hbmRh
dG9yeSBmaWVsZHMuIElmIGFueSBvZiB0aGVzZSBmaWVsZHMgYXJlIGVtcHR5LCBvciBub3QKLSAg
ICAvLyB3aXRoaW4gdGhlaXIgYWxsb3dlZCByYW5nZSwgdGhlIHByb2Nlc3NpbmcgZGV2aWNlIFNI
QUxMIHRyZWF0IGl0IGFzIGFuIGVycm9yLiIKLQogICAgIGF1dG8gY29kZWNTcGxpdCA9IGNvZGVj
Vmlldy5zcGxpdCgnLicpOwogICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2lu
KCk7CiAgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCkBAIC0xMzcsMTIg
KzEzMSwyNCBAQCBPcHRpb25hbDxWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZD4gcGFyc2VWUENv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldwogCiAgICAgVlBDb2RlY0NvbmZpZ3Vy
YXRpb25SZWNvcmQgY29uZmlndXJhdGlvbjsKIAotICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxl
Z2FsIHZhbHVlcyBhcmUgJ3ZwMDgnIG9yICd2cDA5Jy4KICAgICBjb25maWd1cmF0aW9uLmNvZGVj
TmFtZSA9ICgqbmV4dEVsZW1lbnQpLnRvU3RyaW5nKCk7CisgICAgKytuZXh0RWxlbWVudDsKKwor
ICAgIC8vIFN1cHBvcnQgdGhlIGxlZ2FjeSBpZGVudGlmaWVycyAod2l0aCBubyBwYXJhbWV0ZXJz
KSBmb3IgVlA4IGFuZCBWUDkuCisgICAgaWYgKChjb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAi
dnA4IiB8fCBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSA9PSAidnA5IikgJiYgbmV4dEVsZW1lbnQg
PT0gY29kZWNTcGxpdC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisKKyAg
ICAvLyBUaGUgZm9ybWF0IG9mIHRoZSAndnAwOScgY29kZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBp
biB0aGUgd2VibSBHaXRIdWIgcmVwbzoKKyAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3dlYm1w
cm9qZWN0L3ZwOS1kYXNoL2Jsb2IvbWFzdGVyL1ZQQ29kZWNJU09NZWRpYUZpbGVGb3JtYXRCaW5k
aW5nLm1kI2NvZGVjcy1wYXJhbWV0ZXItc3RyaW5nPgorCisgICAgLy8gInNhbXBsZSBlbnRyeSA0
Q0MsIHByb2ZpbGUsIGxldmVsLCBhbmQgYml0RGVwdGggYXJlIGFsbCBtYW5kYXRvcnkgZmllbGRz
LiBJZiBhbnkgb2YgdGhlc2UgZmllbGRzIGFyZSBlbXB0eSwgb3Igbm90CisgICAgLy8gd2l0aGlu
IHRoZWlyIGFsbG93ZWQgcmFuZ2UsIHRoZSBwcm9jZXNzaW5nIGRldmljZSBTSEFMTCB0cmVhdCBp
dCBhcyBhbiBlcnJvci4iCisKKyAgICAvLyBDb2RlYyBpZGVudGlmaWVyOiBsZWdhbCB2YWx1ZXMg
YXJlICd2cDA4JyBvciAndnAwOScuCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9
ICJ2cDA4IiAmJiBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAidnAwOSIpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0
LmVuZCgpKQorICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgLy8gRmlyc3QgZWxlbWVudDogcHJvZmlsZS4g
TGVnYWwgdmFsdWVzIGFyZSAwLTMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmlu
ZGV4IDliOGZjNjdiZTcxYTBlZWJkZWQ5MzlmMTYzMjhkNTA5ZjAwZjI0NzcuLjI1YmUzYzljZDU1
ZWE3NDJmNmVlMjIxNWQ1YWNiMmQ2OGYxYjAwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCkBAIC00NzIsNyArNDcyLDcgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNU
eXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQoY28KICAg
ICBhdXRvIHNwbGl0UmVzdWx0cyA9IFN0cmluZ1ZpZXcoY29kZWNzUGFyYW1ldGVyKS5zcGxpdCgn
LCcpOwogICAgIGZvciAoYXV0byBzcGxpdCA6IHNwbGl0UmVzdWx0cykgewogI2lmIEVOQUJMRShW
UDkpCi0gICAgICAgIGlmIChzcGxpdC5zdGFydHNXaXRoKCJ2cDA5IikpIHsKKyAgICAgICAgaWYg
KHNwbGl0LnN0YXJ0c1dpdGgoInZwMDkiKSB8fCBzcGxpdC5zdGFydHNXaXRoKCJ2cDA4IikgfHwg
ZXF1YWwoc3BsaXQsICJ2cDgiKSB8fCBlcXVhbChzcGxpdCwgInZwOSIpKSB7CiAKICAgICAgICAg
ICAgIGlmICghaXNWUDlEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IE1lZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CkBAIC03ODks
NiArNzg5LDE4IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnko
Y29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uCiAgICAgICAgIHJldHVybiBTdGF0
dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogCiAgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0Vu
dHJ5LnRyYWNrX3R5cGUudmFsdWUoKTsKKyAgICBTdHJpbmcgY29kZWNJZCB7IHRyYWNrRW50cnku
Y29kZWNfaWQudmFsdWUoKS5kYXRhKCksICh1bnNpZ25lZCl0cmFja0VudHJ5LmNvZGVjX2lkLnZh
bHVlKCkubGVuZ3RoKCkgfTsKKworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlk
ZW8gJiYgIXN1cHBvcnRlZFZpZGVvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKKyAgICAg
ICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1
cHBvcnRlZCB2aWRlbyBjb2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkVmlk
ZW9Db2RlYykpOworICAgIH0KKworICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVk
aW8gJiYgIXN1cHBvcnRlZEF1ZGlvQ29kZWNzKCkuY29udGFpbnMoY29kZWNJZCkpIHsKKyAgICAg
ICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJFbmNvdW50ZXJlZCB1bnN1
cHBvcnRlZCBhdWRpbyBjb2RlYyBJRCBcIiIsIGNvZGVjSWQsICJcIiwgYmFpbGluZyIpOworICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6Q29kZShFcnJvckNvZGU6OlVuc3VwcG9ydGVkQXVk
aW9Db2RlYykpOworICAgIH0KKwogICAgIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlk
ZW8pCiAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQo
eyBNZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBW
aWRlb1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsK
ICAgICBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pCkBAIC04MDAsNiAr
ODEyLDEwIEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29u
c3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uCiAgICAgICAgIG1fdHJhY2tzLmFwcGVu
ZChWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlKENvZGVjVHlwZTo6VlA5LCB0cmFja0VudHJ5LCAqdGhp
cykpOwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKICAgICB9
CisgICAgaWYgKGNvZGVjU3RyaW5nID09ICJWX1ZQOCIgJiYgaXNWUDhEZWNvZGVyQXZhaWxhYmxl
KCkpIHsKKyAgICAgICAgbV90cmFja3MuYXBwZW5kKFZpZGVvVHJhY2tEYXRhOjpjcmVhdGUoQ29k
ZWNUeXBlOjpWUDgsIHRyYWNrRW50cnksICp0aGlzKSk7CisgICAgICAgIHJldHVybiBTdGF0dXMo
U3RhdHVzOjprT2tDb21wbGV0ZWQpOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZPUkJJ
UykKQEAgLTg4Niw3ICs5MDIsNiBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25CbG9ja0dyb3VwRW5kKGNvbnN0IHdlYm06OkVsZW1lbnRNZXRhZGF0YQogICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQogCi0KIHdlYm06OlN0YXR1cyBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRh
LCBSZWFkZXIqIHJlYWRlciwgdWludDY0X3QqIGJ5dGVzUmVtYWluaW5nKQogewogICAgIEFTU0VS
VChyZWFkZXIpOwpAQCAtOTEyLDYgKzkyNyw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAg
ICAgfQogCiAgICAgc3dpdGNoICh0cmFja0RhdGEtPmNvZGVjKCkpIHsKKyAgICBjYXNlIENvZGVj
VHlwZTo6VlA4OgogICAgIGNhc2UgQ29kZWNUeXBlOjpWUDk6CiAgICAgY2FzZSBDb2RlY1R5cGU6
OlZvcmJpczoKICAgICBjYXNlIENvZGVjVHlwZTo6T3B1czoKQEAgLTEwMDMsMjMgKzEwMTksMzgg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2Ft
cGxlQnVmZmVyKGNvbnN0IENNVGltZSYgcHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmICghbV9oZWFkZXJQYXJzZXIuUGFyc2VVbmNvbXByZXNzZWRIZWFkZXIoYmxvY2tCdWZmZXJE
YXRhLCBzZWdtZW50U2l6ZUF0UG9zaXRpb24pKSB7Ci0gICAgICAgIFBBUlNFUl9MT0dfRVJST1Jf
SUZfUE9TU0lCTEUoIlBhcnNlVW5jb21wcmVzc2VkSGVhZGVyIGZhaWxlZCIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGJvb2wgaXNLZXkgPSBmYWxzZTsKKyAgICBSZXRhaW5QdHI8Q01G
b3JtYXREZXNjcmlwdGlvblJlZj4gZm9ybWF0RGVzY3JpcHRpb247CisgICAgaWYgKGNvZGVjKCkg
PT0gQ29kZWNUeXBlOjpWUDkpIHsKKyAgICAgICAgaWYgKCFtX2hlYWRlclBhcnNlci5QYXJzZVVu
Y29tcHJlc3NlZEhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbikp
CisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgZm9ybWF0IGRl
c2NyaXB0aW9uIHdoZW4gdGhlIGhlYWRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgc2FtcGxlIGlzCi0g
ICAgLy8gYSBrZXktZnJhbWUsIG90aGVyd2lzZSBjb2xvciBpbmZvcm1hdGlvbiB3aWxsIG5vdCBi
ZSBwYXJzZWQuCi0gICAgYXV0byB0cmFjayA9IHRoaXMtPnRyYWNrKCk7Ci0gICAgaWYgKG1faGVh
ZGVyUGFyc2VyLmtleSgpKSB7Ci0gICAgICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVh
dGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIobV9oZWFkZXJQYXJzZXIsIHRy
YWNrLnZpZGVvLnZhbHVlKCkuY29sb3VyKTsKLSAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlv
bikgewotICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiZmFpbGVkIHRv
IGNyZWF0ZSBmb3JtYXQgZGVzY3JpcHRpb24gZnJvbSBWUDkgaGVhZGVyIik7CisgICAgICAgIGlm
IChtX2hlYWRlclBhcnNlci5rZXkoKSkgeworICAgICAgICAgICAgaXNLZXkgPSB0cnVlOworICAg
ICAgICAgICAgYXV0byBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9u
RnJvbVZQOUhlYWRlclBhcnNlcihtX2hlYWRlclBhcnNlciwgdHJhY2soKS52aWRlby52YWx1ZSgp
LmNvbG91cik7CisgICAgICAgICAgICBpZiAoIWZvcm1hdERlc2NyaXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiZmFpbGVkIHRvIGNyZWF0ZSBm
b3JtYXQgZGVzY3JpcHRpb24gZnJvbSBWUFggaGVhZGVyIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0Rm9ybWF0RGVzY3JpcHRpb24oV1RG
TW92ZShmb3JtYXREZXNjcmlwdGlvbikpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChjb2Rl
YygpID09IENvZGVjVHlwZTo6VlA4KSB7CisgICAgICAgIGF1dG8gaGVhZGVyID0gcGFyc2VWUDhG
cmFtZUhlYWRlcihibG9ja0J1ZmZlckRhdGEsIHNlZ21lbnRTaXplQXRQb3NpdGlvbik7CisgICAg
ICAgIGlmICghaGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChoZWFk
ZXItPmtleWZyYW1lKSB7CisgICAgICAgICAgICBpc0tleSA9IHRydWU7CisgICAgICAgICAgICBh
dXRvIGZvcm1hdERlc2NyaXB0aW9uID0gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA4SGVh
ZGVyKCpoZWFkZXIsIHRyYWNrKCkudmlkZW8udmFsdWUoKS5jb2xvdXIpOworICAgICAgICAgICAg
aWYgKCFmb3JtYXREZXNjcmlwdGlvbikgeworICAgICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJS
T1JfSUZfUE9TU0lCTEUoImZhaWxlZCB0byBjcmVhdGUgZm9ybWF0IGRlc2NyaXB0aW9uIGZyb20g
VlBYIGhlYWRlciIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHNldEZvcm1hdERlc2NyaXB0aW9uKFdURk1vdmUoZm9ybWF0RGVzY3JpcHRpb24p
KTsKICAgICAgICAgfQotICAgICAgICBzZXRGb3JtYXREZXNjcmlwdGlvbihXVEZNb3ZlKGZvcm1h
dERlc2NyaXB0aW9uKSk7CiAgICAgfQogCisgICAgYXV0byB0cmFjayA9IHRoaXMtPnRyYWNrKCk7
CiAgICAgLy8gRklYTUU6IEEgYmxvY2sgbWlnaHQgY29udGFpbiBtb3JlIHRoYW4gb25lIGZyYW1l
LCBidXQgb25seSB0aGlzIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byBgY3VycmVudEJsb2NrQnVm
ZmVyYC4KICAgICAvLyBCZWxvdyB3ZSBjcmVhdGUgc2FtcGxlIGJ1ZmZlcnMgZm9yIGVhY2ggZnJh
bWUsIGVhY2ggd2l0aCB0aGUgYmxvY2sncyB0aW1lY29kZSBhbmQgYG51bV9mcmFtZXNgIHZhbHVl
LgogICAgIC8vIFNob3VsZG4ndCB3ZSBjcmVhdGUganVzdCBvbmUgc2FtcGxlIGJ1ZmZlciBvbmNl
IGFsbCB0aGUgYmxvY2sncyBmcmFtZXMgaGF2ZSBiZWVuIHJlYWQgaW50byBgY3VycmVudEJsb2Nr
QnVmZmVyYD8KQEAgLTEwMzEsNyArMTA2Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCiAg
ICAgQ01TYW1wbGVCdWZmZXJSZWYgcmF3U2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKICAgICBzaXpl
X3QgZnJhbWVTaXplID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9jdXJyZW50QmxvY2tC
dWZmZXIuZ2V0KCkpOwogICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmcgPSB7IENNVGltZU1h
a2UoZHVyYXRpb24sIHByZXNlbnRhdGlvblRpbWUudGltZXNjYWxlKSwgcHJlc2VudGF0aW9uVGlt
ZSwgcHJlc2VudGF0aW9uVGltZSB9OwotICAgIGVyciA9IENNU2FtcGxlQnVmZmVyQ3JlYXRlUmVh
ZHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9jdXJyZW50QmxvY2tCdWZmZXIuZ2V0KCksIGZvcm1h
dERlc2NyaXB0aW9uKCkuZ2V0KCksIHNhbXBsZUNvdW50LCAxLCAmdGltaW5nLCAxLCAmZnJhbWVT
aXplLCAmcmF3U2FtcGxlQnVmZmVyKTsKKyAgICBlcnIgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJl
YWR5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fY3VycmVudEJsb2NrQnVmZmVyLmdldCgpLCB0aGlz
LT5mb3JtYXREZXNjcmlwdGlvbigpLmdldCgpLCBzYW1wbGVDb3VudCwgMSwgJnRpbWluZywgMSwg
JmZyYW1lU2l6ZSwgJnJhd1NhbXBsZUJ1ZmZlcik7CiAgICAgaWYgKGVycikgewogICAgICAgICBQ
QVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5IGZh
aWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE3Myw2ICsxMjA0
LDE4IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TWluaW11bUF1ZGlvU2FtcGxl
RHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCiAgICAgbV9taW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlv
biA9IGR1cmF0aW9uOwogfQogCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIFNvdXJjZUJ1ZmZlclBh
cnNlcldlYk06OnN1cHBvcnRlZFZpZGVvQ29kZWNzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBjb2Rl
Y3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+Pih7ICJWX1ZQOCIsICJWX1ZQ
OSIgfSk7CisgICAgcmV0dXJuIGNvZGVjczsKK30KKworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRBdWRpb0NvZGVjcygpCit7CisgICAgc3Rh
dGljIGF1dG8gY29kZWNzID0gbWFrZU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4oeyB9
KTsKKyAgICByZXR1cm4gY29kZWNzOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDFkOTVmYTgyNzAxMjUz
M2Q1ZTBlM2FmNjVhN2RiNDMzODRkMmRlNjguLjUxMjc2MjQ5YzQxOWNjZWQyOTAzYTUyMDc3Yzcz
ZDFlNzBhMTFjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTg5LDYgKzg5
LDggQEAgcHVibGljOgogICAgICAgICBJbnZhbGlkRG9jVHlwZSwKICAgICAgICAgSW52YWxpZElu
aXRTZWdtZW50LAogICAgICAgICBSZWNlaXZlZEVibWxJbnNpZGVTZWdtZW50LAorICAgICAgICBV
bnN1cHBvcnRlZFZpZGVvQ29kZWMsCisgICAgICAgIFVuc3VwcG9ydGVkQXVkaW9Db2RlYywKICAg
ICB9OwogCiAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgewpAQCAtMTA2LDYgKzEwOCw3
IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgQ29kZWNUeXBlIDogdWludDhfdCB7CiAgICAg
ICAgIFVuc3VwcG9ydGVkLAorICAgICAgICBWUDgsCiAgICAgICAgIFZQOSwKICAgICAgICAgVm9y
YmlzLAogICAgICAgICBPcHVzLApAQCAtMjIwLDYgKzIyMyw5IEBAIHByaXZhdGU6CiAKICAgICBU
cmFja0RhdGEqIHRyYWNrRGF0YUZvclRyYWNrTnVtYmVyKHVpbnQ2NF90KTsKIAorICAgIHN0YXRp
YyBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFZpZGVvQ29kZWNzKCk7CisgICAgc3Rh
dGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkQXVkaW9Db2RlY3MoKTsKKwogICAg
IC8vIHdlYm06OkNhbGxiYWNrCiAgICAgd2VibTo6U3RhdHVzIE9uRWxlbWVudEJlZ2luKGNvbnN0
IHdlYm06OkVsZW1lbnRNZXRhZGF0YSYsIHdlYm06OkFjdGlvbiopIGZpbmFsOwogICAgIHdlYm06
OlN0YXR1cyBPbkVsZW1lbnRFbmQoY29uc3Qgd2VibTo6RWxlbWVudE1ldGFkYXRhJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlV
dGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VlA5VXRpbGl0aWVzQ29jb2EuaAppbmRleCA1Y2NkMzU3NzkzMTQ0OTllNzY0MDU4ZjI0MjhkMmE2
ZmViNTAzZTQ0Li4yZjAwMDZiNDFkMTcxY2E3MWZjODRlZTFiYTcxYWQ0Y2RkMTBlYzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQ
OVV0aWxpdGllc0NvY29hLmgKQEAgLTQ2LDEzICs0NiwzMSBAQCBXRUJDT1JFX0VYUE9SVCBleHRl
cm4gdm9pZCBzZXRPdmVycmlkZVZQOVNjcmVlblNpemVBbmRTY2FsZUZvclRlc3RpbmcoZmxvYXQg
d2lkdAogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVzZXRPdmVycmlkZVZQOVNjcmVlblNp
emVBbmRTY2FsZUZvclRlc3RpbmcoKTsKIAogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIHZvaWQgcmVn
aXN0ZXJXZWJLaXRWUDlEZWNvZGVyKCk7CitXRUJDT1JFX0VYUE9SVCBleHRlcm4gdm9pZCByZWdp
c3RlcldlYktpdFZQOERlY29kZXIoKTsKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiB2b2lkIHJlZ2lz
dGVyU3VwcGxlbWVudGFsVlA5RGVjb2RlcigpOwogZXh0ZXJuIGJvb2wgaXNWUDlEZWNvZGVyQXZh
aWxhYmxlKCk7CitleHRlcm4gYm9vbCBpc1ZQOERlY29kZXJBdmFpbGFibGUoKTsKIGV4dGVybiBi
b29sIGlzVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3Vy
YXRpb25SZWNvcmQmKTsKIGV4dGVybiBib29sIHZhbGlkYXRlVlBQYXJhbWV0ZXJzKFZQQ29kZWND
b25maWd1cmF0aW9uUmVjb3JkJiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiwgY29uc3QgVmlkZW9D
b25maWd1cmF0aW9uJik7CiAKIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVh
dGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDlIZWFkZXJQYXJzZXIoY29uc3QgdnA5X3BhcnNlcjo6
VnA5SGVhZGVyUGFyc2VyJiwgY29uc3Qgd2VibTo6RWxlbWVudDx3ZWJtOjpDb2xvdXI+Jik7CiAK
K3N0cnVjdCBWUDhGcmFtZUhlYWRlciB7CisgICAgYm9vbCBrZXlmcmFtZSB7IGZhbHNlIH07Cisg
ICAgdWludDhfdCB2ZXJzaW9uIHsgMCB9OworICAgIGJvb2wgc2hvd0ZyYW1lIHsgdHJ1ZSB9Owor
ICAgIHVpbnQzMl90IHBhcnRpdGlvblNpemUgeyAwIH07CisgICAgdWludDhfdCBob3Jpem9udGFs
U2NhbGUgeyAwIH07CisgICAgdWludDE2X3Qgd2lkdGggeyAwIH07CisgICAgdWludDhfdCB2ZXJ0
aWNhbFNjYWxlIHsgMCB9OworICAgIHVpbnQxNl90IGhlaWdodDsKKyAgICBib29sIGNvbG9yU3Bh
Y2UgeyBmYWxzZSB9OworICAgIGJvb2wgbmVlZHNDbGFtcGluZyB7IGZhbHNlIH07Cit9OworCitP
cHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1aW50OF90KiBmcmFt
ZURhdGEsIHNpemVfdCBmcmFtZVNpemUpOworUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOEhlYWRlcihjb25zdCBWUDhGcmFtZUhl
YWRlciYsIGNvbnN0IHdlYm06OkVsZW1lbnQ8d2VibTo6Q29sb3VyPiYpOworCiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5
VXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA0MTIyNTBmOTc0N2E4OTkyNmFlZTViOTI4MWYx
YTQxM2JjMmU4YzEzLi42NjM1NzY5NDNkMTRhYjE2NTkzNzkyNGE2MTdkNDBjZjgxMTM4NTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMTA3LDYgKzEwNywxMSBAQCB2b2lkIHJlZ2lzdGVy
V2ViS2l0VlA5RGVjb2RlcigpCiAgICAgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0
VlA5RGVjb2RlcigpOwogfQogCit2b2lkIHJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpCit7Cisg
ICAgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA4RGVjb2RlcigpOworfQorCiB2
b2lkIHJlZ2lzdGVyU3VwcGxlbWVudGFsVlA5RGVjb2RlcigpCiB7CiAgICAgaWYgKCFWaWRlb1Rv
b2xib3hMaWJyYXJ5KHRydWUpKQpAQCAtMTIzLDcgKzEyOCwxNCBAQCBib29sIGlzVlA5RGVjb2Rl
ckF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIG5vRXJyID09IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9E
ZWNvZGVySW5zdGFuY2Uoa0NNVmlkZW9Db2RlY1R5cGVfVlA5LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBudWxscHRyLCBudWxscHRyKTsKIH0KIAotYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkU3VwcG9ydGVkKFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2RlY0NvbmZpZ3VyYXRp
b24pCitib29sIGlzVlA4RGVjb2RlckF2YWlsYWJsZSgpCit7CisgICAgaWYgKCFWaWRlb1Rvb2xi
b3hMaWJyYXJ5KHRydWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG5vRXJy
ID09IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoJ3ZwMDgnLCBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKK30KKworc3RhdGljIGJvb2wgaXNWUDlD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNv
cmQmIGNvZGVjQ29uZmlndXJhdGlvbikKIHsKICAgICBpZiAoIWlzVlA5RGVjb2RlckF2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzUsNiArMTg3LDM3IEBAIGJvb2wgaXNW
UENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJl
Y29yZCYgY29kZWNDb25mCiAgICAgcmV0dXJuIGhhczRrU2NyZWVuOwogfQogCitzdGF0aWMgYm9v
bCBpc1ZQOENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChWUENvZGVjQ29uZmlndXJh
dGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uKQoreworICAgIGlmICghaXNWUDhEZWNvZGVy
QXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFZQOCBkZWNvZGVy
IG9ubHkgc3VwcG9ydHMgUHJvZmlsZSAwOworICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24ucHJv
ZmlsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVlA4IGRlY29kZXIgb25seSBz
dXBwb3J0cyA0MjAgY2hyb21hIHN1YnNhbXBsaW5nLgorICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRp
b24uY2hyb21hU3Vic2FtcGxpbmcgPiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6
U3Vic2FtcGxpbmdfNDIwX0NvbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gVlA4IGRlY29kZXIgb25seSBzdXBwb3J0cyA4LWJpdCBjb2xvcjoKKyAgICBpZiAoY29kZWND
b25maWd1cmF0aW9uLmJpdERlcHRoID4gOCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBv
cnRlZChWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uKQorewor
ICAgIGlmIChjb2RlY0NvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDA4IiB8fCBjb2RlY0Nv
bmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDgiKQorICAgICAgICByZXR1cm4gaXNWUDhDb2Rl
Y0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9uKTsKKworICAg
IGlmIChjb2RlY0NvbmZpZ3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDA5IiB8fCBjb2RlY0NvbmZp
Z3VyYXRpb24uY29kZWNOYW1lID09ICJ2cDkiKQorICAgICAgICByZXR1cm4gaXNWUDlDb2RlY0Nv
bmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9uKTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogYm9vbCB2YWxpZGF0ZVZQUGFyYW1ldGVycyhWUENvZGVjQ29uZmln
dXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uLCBNZWRpYUNhcGFiaWxpdGllc0luZm8m
IGluZm8sIGNvbnN0IFZpZGVvQ29uZmlndXJhdGlvbiYgdmlkZW9Db25maWd1cmF0aW9uKQogewog
ICAgIGlmICghaXNWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZFN1cHBvcnRlZChjb2RlY0NvbmZp
Z3VyYXRpb24pKQpAQCAtNDM1LDcgKzQ3OCw3IEBAIHN0YXRpYyB1aW50OF90IGNvbnZlcnRTdWJz
YW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyh1aW50NjRfdCB4LCB1aW50NjRfdCB5KQogICAg
IHJldHVybiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdfNDIw
X0NvbG9jYXRlZDsKIH0KIAotUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0
ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb25zdCB2cDlfcGFyc2VyOjpW
cDlIZWFkZXJQYXJzZXImIHBhcnNlciwgY29uc3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+JiBjb2xv
cikKK3N0YXRpYyBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0
RGVzY3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgVlBDb2RlY0Nv
bmZpZ3VyYXRpb25SZWNvcmQmIHJlY29yZCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQp
CiB7CiAgICAgLy8gUmVmOiAiVlAgQ29kZWMgSVNPIE1lZGlhIEZpbGUgRm9ybWF0IEJpbmRpbmcs
IHYxLjAsIDIwMTctMDMtMzEiCiAgICAgLy8gPGh0dHBzOi8vd3d3LndlYm1wcm9qZWN0Lm9yZy92
cDkvbXA0Lz4KQEAgLTQ2NCwzNSArNTA3LDYgQEAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRp
b25SZWY+IGNyZWF0ZUZvcm1hdERlc2NyaXB0aW9uRnJvbVZQOUhlYWRlclBhcnNlcihjb24KICAg
ICAvLyBGSVhNRTogQ29udmVydCBleGlzdGluZyBzdHJ1Y3QgdG8gYW4gSVNPQm94IGFuZCByZXBs
YWNlIHRoZSB3cml0aW5nIGNvZGUgYmVsb3cKICAgICAvLyB3aXRoIGEgc3ViY2xhc3Mgb2YgSVNP
RnVsbEJveC4KIAotICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIHJlY29yZDsKLQotICAg
IHJlY29yZC5wcm9maWxlID0gcGFyc2VyLnByb2ZpbGUoKTsKLSAgICAvLyBDb3JlTWVkaWEgZG9l
cyBuYXQgY2FyZSBhYm91dCB0aGUgVlA5IGNvZGVjIGxldmVsOyBoYXJkLWNvZGUgdG8gTGV2ZWwg
MS4wIGhlcmU6Ci0gICAgcmVjb3JkLmxldmVsID0gMTA7Ci0gICAgcmVjb3JkLmJpdERlcHRoID0g
cGFyc2VyLmJpdF9kZXB0aCgpOwotICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBwYXJz
ZXIuY29sb3JfcmFuZ2UoKSA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENv
bmZpZ3VyYXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKLSAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxp
bmcgPSBjb252ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcocGFyc2VyLnN1YnNh
bXBsaW5nX3goKSwgcGFyc2VyLnN1YnNhbXBsaW5nX3koKSk7Ci0gICAgcmVjb3JkLmNvbG9yUHJp
bWFyaWVzID0gVlBDb25maWd1cmF0aW9uQ29sb3JQcmltYXJpZXM6OlVuc3BlY2lmaWVkOwotICAg
IHJlY29yZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IFZQQ29uZmlndXJhdGlvblRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzOjpVbnNwZWNpZmllZDsKLSAgICByZWNvcmQubWF0cml4Q29lZmZpY2ll
bnRzID0gVlBDb25maWd1cmF0aW9uTWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZDsKLQot
ICAgIC8vIENvbnRhaW5lciBjb2xvciB2YWx1ZXMgY2FuIG92ZXJyaWRlIHBlci1zYW1wbGUgb25l
czoKLSAgICBpZiAoY29sb3IuaXNfcHJlc2VudCgpKSB7Ci0gICAgICAgIGF1dG8mIGNvbG9yVmFs
dWUgPSBjb2xvci52YWx1ZSgpOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2Ft
cGxpbmdfeC5pc19wcmVzZW50KCkgJiYgY29sb3JWYWx1ZS5jaHJvbWFfc3Vic2FtcGxpbmdfeS5p
c19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBjb252
ZXJ0U3Vic2FtcGxpbmdYWVRvQ2hyb21hU3Vic2FtcGxpbmcoY29sb3JWYWx1ZS5jaHJvbWFfc3Vi
c2FtcGxpbmdfeC52YWx1ZSgpLCBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGluZ195LnZhbHVl
KCkpOwotICAgICAgICBpZiAoY29sb3JWYWx1ZS5yYW5nZS5pc19wcmVzZW50KCkgJiYgY29sb3JW
YWx1ZS5yYW5nZS52YWx1ZSgpICE9IFJhbmdlOjprVW5zcGVjaWZpZWQpCi0gICAgICAgICAgICBy
ZWNvcmQudmlkZW9GdWxsUmFuZ2VGbGFnID0gY29sb3JWYWx1ZS5yYW5nZS52YWx1ZSgpID09IFJh
bmdlOjprRnVsbCA/IFZQQ29uZmlndXJhdGlvblJhbmdlOjpGdWxsUmFuZ2UgOiBWUENvbmZpZ3Vy
YXRpb25SYW5nZTo6VmlkZW9SYW5nZTsKLSAgICAgICAgaWYgKGNvbG9yVmFsdWUuYml0c19wZXJf
Y2hhbm5lbC5pc19wcmVzZW50KCkpCi0gICAgICAgICAgICByZWNvcmQuYml0RGVwdGggPSBjb2xv
clZhbHVlLmJpdHNfcGVyX2NoYW5uZWwudmFsdWUoKTsKLSAgICAgICAgaWYgKGNvbG9yVmFsdWUu
dHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLmlzX3ByZXNlbnQoKSkKLSAgICAgICAgICAgIHJlY29y
ZC50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IGNvbnZlcnRUb1RyYW5zZmVyQ2hhcmFjdGVyaXN0
aWNzKGNvbG9yVmFsdWUudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzLnZhbHVlKCkpOwotICAgICAg
ICBpZiAoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLmlzX3ByZXNlbnQoKSkKLSAgICAg
ICAgICAgIHJlY29yZC5tYXRyaXhDb2VmZmljaWVudHMgPSBjb252ZXJ0VG9NYXRyaXhDb2VmZmlj
aWVudHMoY29sb3JWYWx1ZS5tYXRyaXhfY29lZmZpY2llbnRzLnZhbHVlKCkpOwotICAgICAgICBp
ZiAoY29sb3JWYWx1ZS5wcmltYXJpZXMuaXNfcHJlc2VudCgpKQotICAgICAgICAgICAgcmVjb3Jk
LmNvbG9yUHJpbWFyaWVzID0gY29udmVydFRvQ29sb3JQcmltYXJpZXMoY29sb3JWYWx1ZS5wcmlt
YXJpZXMudmFsdWUoKSk7Ci0gICAgfQotCiAgICAgY29uc3RleHByIHNpemVfdCBWUENvZGVjQ29u
ZmlndXJhdGlvbkNvbnRlbnRzU2l6ZSA9IDEyOwogCiAgICAgdWludDMyX3QgdmVyc2lvbkFuZEZs
YWdzID0gMSA8PCAyNDsKQEAgLTU0MSwxMSArNTU1LDE0MiBAQCBSZXRhaW5QdHI8Q01Gb3JtYXRE
ZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9tVlA5SGVhZGVyUGFyc2Vy
KGNvbgogICAgIGF1dG8gZXh0ZW5zaW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGV4dGVuc2lvbnNLZXlzLmRhdGEoKSwgZXh0ZW5zaW9uc1ZhbHVl
cy5kYXRhKCksIGV4dGVuc2lvbnNLZXlzLnNpemUoKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgQ01WaWRl
b0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICBp
ZiAobm9FcnIgIT0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtDTVZpZGVvQ29kZWNUeXBlX1ZQOSwgcGFyc2VyLndpZHRoKCksIHBhcnNlci5oZWln
aHQoKSwgZXh0ZW5zaW9ucy5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKKyAgICBDTVZpZGVv
Q29kZWNUeXBlIGNvZGVjID0gcmVjb3JkLmNvZGVjTmFtZSA9PSAidnAwOSIgPyBrQ01WaWRlb0Nv
ZGVjVHlwZV9WUDkgOiAndnAwOCc7CisgICAgaWYgKG5vRXJyICE9IENNVmlkZW9Gb3JtYXREZXNj
cmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb2RlYywgd2lkdGgsIGhlaWdodCwg
ZXh0ZW5zaW9ucy5nZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRpb24pOwogfQogCitSZXRh
aW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlRm9ybWF0RGVzY3JpcHRpb25Gcm9t
VlA5SGVhZGVyUGFyc2VyKGNvbnN0IHZwOV9wYXJzZXI6OlZwOUhlYWRlclBhcnNlciYgcGFyc2Vy
LCBjb25zdCB3ZWJtOjpFbGVtZW50PENvbG91cj4mIGNvbG9yKQoreworICAgIFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkIHJlY29yZDsKKworICAgIHJlY29yZC5jb2RlY05hbWUgPSAidnAwOSI7
CisgICAgcmVjb3JkLnByb2ZpbGUgPSBwYXJzZXIucHJvZmlsZSgpOworICAgIC8vIENvcmVNZWRp
YSBkb2VzIG5hdCBjYXJlIGFib3V0IHRoZSBWUDkgY29kZWMgbGV2ZWw7IGhhcmQtY29kZSB0byBM
ZXZlbCAxLjAgaGVyZToKKyAgICByZWNvcmQubGV2ZWwgPSAxMDsKKyAgICByZWNvcmQuYml0RGVw
dGggPSBwYXJzZXIuYml0X2RlcHRoKCk7CisgICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9
IHBhcnNlci5jb2xvcl9yYW5nZSgpID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6
IFZQQ29uZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOworICAgIHJlY29yZC5jaHJvbWFTdWJz
YW1wbGluZyA9IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhwYXJzZXIu
c3Vic2FtcGxpbmdfeCgpLCBwYXJzZXIuc3Vic2FtcGxpbmdfeSgpKTsKKyAgICByZWNvcmQuY29s
b3JQcmltYXJpZXMgPSBWUENvbmZpZ3VyYXRpb25Db2xvclByaW1hcmllczo6VW5zcGVjaWZpZWQ7
CisgICAgcmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gVlBDb25maWd1cmF0aW9uVHJh
bnNmZXJDaGFyYWN0ZXJpc3RpY3M6OlVuc3BlY2lmaWVkOworICAgIHJlY29yZC5tYXRyaXhDb2Vm
ZmljaWVudHMgPSBWUENvbmZpZ3VyYXRpb25NYXRyaXhDb2VmZmljaWVudHM6OlVuc3BlY2lmaWVk
OworCisgICAgLy8gQ29udGFpbmVyIGNvbG9yIHZhbHVlcyBjYW4gb3ZlcnJpZGUgcGVyLXNhbXBs
ZSBvbmVzOgorICAgIGlmIChjb2xvci5pc19wcmVzZW50KCkpIHsKKyAgICAgICAgYXV0byYgY29s
b3JWYWx1ZSA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLmNocm9tYV9z
dWJzYW1wbGluZ194LmlzX3ByZXNlbnQoKSAmJiBjb2xvclZhbHVlLmNocm9tYV9zdWJzYW1wbGlu
Z195LmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5jaHJvbWFTdWJzYW1wbGluZyA9
IGNvbnZlcnRTdWJzYW1wbGluZ1hZVG9DaHJvbWFTdWJzYW1wbGluZyhjb2xvclZhbHVlLmNocm9t
YV9zdWJzYW1wbGluZ194LnZhbHVlKCksIGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3ku
dmFsdWUoKSk7CisgICAgICAgIGlmIChjb2xvclZhbHVlLnJhbmdlLmlzX3ByZXNlbnQoKSAmJiBj
b2xvclZhbHVlLnJhbmdlLnZhbHVlKCkgIT0gUmFuZ2U6OmtVbnNwZWNpZmllZCkKKyAgICAgICAg
ICAgIHJlY29yZC52aWRlb0Z1bGxSYW5nZUZsYWcgPSBjb2xvclZhbHVlLnJhbmdlLnZhbHVlKCkg
PT0gUmFuZ2U6OmtGdWxsID8gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZSA6IFZQQ29u
ZmlndXJhdGlvblJhbmdlOjpWaWRlb1JhbmdlOworICAgICAgICBpZiAoY29sb3JWYWx1ZS5iaXRz
X3Blcl9jaGFubmVsLmlzX3ByZXNlbnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5iaXREZXB0aCA9
IGNvbG9yVmFsdWUuYml0c19wZXJfY2hhbm5lbC52YWx1ZSgpOworICAgICAgICBpZiAoY29sb3JW
YWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAg
cmVjb3JkLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gY29udmVydFRvVHJhbnNmZXJDaGFyYWN0
ZXJpc3RpY3MoY29sb3JWYWx1ZS50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MudmFsdWUoKSk7Cisg
ICAgICAgIGlmIChjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMuaXNfcHJlc2VudCgpKQor
ICAgICAgICAgICAgcmVjb3JkLm1hdHJpeENvZWZmaWNpZW50cyA9IGNvbnZlcnRUb01hdHJpeENv
ZWZmaWNpZW50cyhjb2xvclZhbHVlLm1hdHJpeF9jb2VmZmljaWVudHMudmFsdWUoKSk7CisgICAg
ICAgIGlmIChjb2xvclZhbHVlLnByaW1hcmllcy5pc19wcmVzZW50KCkpCisgICAgICAgICAgICBy
ZWNvcmQuY29sb3JQcmltYXJpZXMgPSBjb252ZXJ0VG9Db2xvclByaW1hcmllcyhjb2xvclZhbHVl
LnByaW1hcmllcy52YWx1ZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlRm9ybWF0RGVz
Y3JpcHRpb25Gcm9tVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQocmVjb3JkLCBwYXJzZXIud2lk
dGgoKSwgcGFyc2VyLmhlaWdodCgpKTsKK30KKworT3B0aW9uYWw8VlA4RnJhbWVIZWFkZXI+IHBh
cnNlVlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQor
eworICAgIC8vIFZQOCBmcmFtZSBoZWFkZXJzIGFyZSBkZWZpbmVkIGluIFJGQyA2Mzg2OiA8aHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYzODY+LgorCisgICAgLy8gQmFpbCBpZiB0aGUg
aGVhZGVyIGlzIGJlbG93IGEgbWluaW11bSBzaXplCisgICAgaWYgKGZyYW1lU2l6ZSA8IDExKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVlA4RnJhbWVIZWFkZXIgaGVhZGVy
OworICAgIHNpemVfdCBoZWFkZXJTaXplID0gMTE7CisKKyAgICBhdXRvIHZpZXcgPSBKU0M6OkRh
dGFWaWV3OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShmcmFtZURhdGEsIGhlYWRlclNpemUp
LCAwLCBoZWFkZXJTaXplKTsKKyAgICBib29sIHN0YXR1cyA9IHRydWU7CisKKyAgICBhdXRvIHVu
Y29tcHJlc3NlZENodW5rID0gdmlldy0+Z2V0PHVpbnQzMl90PigwLCB0cnVlLCAmc3RhdHVzKTsK
KyAgICBpZiAoIXN0YXR1cykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGhl
YWRlci5rZXlmcmFtZSA9IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwMDsKKyAgICBoZWFk
ZXIudmVyc2lvbiA9ICh1bmNvbXByZXNzZWRDaHVuayA+PiAyOCkgJiAweDc7CisgICAgaGVhZGVy
LnNob3dGcmFtZSA9IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwOworICAgIGhlYWRlci5w
YXJ0aXRpb25TaXplID0gKHVuY29tcHJlc3NlZENodW5rID4+IDgpICYgMHg3RkZGRjsKKworICAg
IGlmICghaGVhZGVyLmtleWZyYW1lKQorICAgICAgICByZXR1cm4gaGVhZGVyOworCisgICAgYXV0
byBzdGFydENvZGUwID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDMsIHRydWUsICZzdGF0dXMpOworICAg
IGlmICghc3RhdHVzIHx8IHN0YXJ0Q29kZTAgIT0gMHg5ZCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIGF1dG8gc3RhcnRDb2RlMSA9IHZpZXctPmdldDx1aW50OF90Pig0LCB0
cnVlLCAmc3RhdHVzKTsKKyAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENvZGUxICE9IDB4MDEpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIHN0YXJ0Q29kZTIgPSB2aWV3
LT5nZXQ8dWludDhfdD4oNSwgdHJ1ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMgfHwgc3Rh
cnRDb2RlMiAhPSAweDJhKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0
byBob3Jpem9udGFsQW5kV2lkdGhGaWVsZCA9IHZpZXctPmdldDx1aW50MTZfdD4oNiwgdHJ1ZSwg
JnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBoZWFkZXIuaG9yaXpvbnRhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaG9y
aXpvbnRhbEFuZFdpZHRoRmllbGQgPj4gMTQpOworICAgIGhlYWRlci53aWR0aCA9IHN0YXRpY19j
YXN0PHVpbnQxNl90Pihob3Jpem9udGFsQW5kV2lkdGhGaWVsZCAmIDB4M0ZGRik7CisKKyAgICBh
dXRvIHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDgsIHRydWUs
ICZzdGF0dXMpOworICAgIGlmICghc3RhdHVzKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgaGVhZGVyLnZlcnRpY2FsU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZXJ0
aWNhbEFuZEhlaWdodEZpZWxkID4+IDE0KTsKKyAgICBoZWFkZXIuaGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQgJiAweDNGRkYpOworCisgICAgYXV0
byBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCA9IHZpZXctPmdldDx1aW50OF90PigxMCwgdHJ1
ZSwgJnN0YXR1cyk7CisgICAgaWYgKCFzdGF0dXMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBoZWFkZXIuY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxk
ICYgMHg4MDsKKyAgICBoZWFkZXIubmVlZHNDbGFtcGluZyA9IGNvbG9yU3BhY2VBbmRDbGFtcGlu
Z0ZpZWxkICYgMHg0MDsKKworICAgIHJldHVybiBoZWFkZXI7Cit9CisKK1JldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUDhIZWFkZXIo
Y29uc3QgVlA4RnJhbWVIZWFkZXImIGhlYWRlciwgY29uc3Qgd2VibTo6RWxlbWVudDxDb2xvdXI+
JiBjb2xvcikKK3sKKyAgICBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCByZWNvcmQ7CisgICAg
cmVjb3JkLmNvZGVjTmFtZSA9ICJ2cDA4IjsKKyAgICByZWNvcmQucHJvZmlsZSA9IDA7CisgICAg
cmVjb3JkLmxldmVsID0gMTA7CisgICAgcmVjb3JkLmJpdERlcHRoID0gODsKKyAgICByZWNvcmQu
dmlkZW9GdWxsUmFuZ2VGbGFnID0gVlBDb25maWd1cmF0aW9uUmFuZ2U6OkZ1bGxSYW5nZTsKKyAg
ICByZWNvcmQuY2hyb21hU3Vic2FtcGxpbmcgPSBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1w
bGluZzo6U3Vic2FtcGxpbmdfNDIwX0NvbG9jYXRlZDsKKyAgICByZWNvcmQuY29sb3JQcmltYXJp
ZXMgPSBoZWFkZXIuY29sb3JTcGFjZSA/IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpV
bnNwZWNpZmllZCA6IFZQQ29uZmlndXJhdGlvbkNvbG9yUHJpbWFyaWVzOjpCVF82MDFfNzsKKyAg
ICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSAgaGVhZGVyLmNvbG9yU3BhY2UgPyBW
UENvbmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6VW5zcGVjaWZpZWQgOiBWUENv
bmZpZ3VyYXRpb25UcmFuc2ZlckNoYXJhY3RlcmlzdGljczo6QlRfNjAxXzc7CisgICAgcmVjb3Jk
Lm1hdHJpeENvZWZmaWNpZW50cyA9IGhlYWRlci5jb2xvclNwYWNlID8gVlBDb25maWd1cmF0aW9u
TWF0cml4Q29lZmZpY2llbnRzOjpVbnNwZWNpZmllZCA6IFZQQ29uZmlndXJhdGlvbk1hdHJpeENv
ZWZmaWNpZW50czo6QlRfNjAxXzc7CisKKyAgICAvLyBDb250YWluZXIgY29sb3IgdmFsdWVzIGNh
biBvdmVycmlkZSBwZXItc2FtcGxlIG9uZXM6CisgICAgaWYgKGNvbG9yLmlzX3ByZXNlbnQoKSkg
eworICAgICAgICBhdXRvJiBjb2xvclZhbHVlID0gY29sb3IudmFsdWUoKTsKKyAgICAgICAgaWYg
KGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3guaXNfcHJlc2VudCgpICYmIGNvbG9yVmFs
dWUuY2hyb21hX3N1YnNhbXBsaW5nX3kuaXNfcHJlc2VudCgpKQorICAgICAgICAgICAgcmVjb3Jk
LmNocm9tYVN1YnNhbXBsaW5nID0gY29udmVydFN1YnNhbXBsaW5nWFlUb0Nocm9tYVN1YnNhbXBs
aW5nKGNvbG9yVmFsdWUuY2hyb21hX3N1YnNhbXBsaW5nX3gudmFsdWUoKSwgY29sb3JWYWx1ZS5j
aHJvbWFfc3Vic2FtcGxpbmdfeS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUucmFu
Z2UuaXNfcHJlc2VudCgpICYmIGNvbG9yVmFsdWUucmFuZ2UudmFsdWUoKSAhPSBSYW5nZTo6a1Vu
c3BlY2lmaWVkKQorICAgICAgICAgICAgcmVjb3JkLnZpZGVvRnVsbFJhbmdlRmxhZyA9IGNvbG9y
VmFsdWUucmFuZ2UudmFsdWUoKSA9PSBSYW5nZTo6a0Z1bGwgPyBWUENvbmZpZ3VyYXRpb25SYW5n
ZTo6RnVsbFJhbmdlIDogVlBDb25maWd1cmF0aW9uUmFuZ2U6OlZpZGVvUmFuZ2U7CisgICAgICAg
IGlmIChjb2xvclZhbHVlLmJpdHNfcGVyX2NoYW5uZWwuaXNfcHJlc2VudCgpKQorICAgICAgICAg
ICAgcmVjb3JkLmJpdERlcHRoID0gY29sb3JWYWx1ZS5iaXRzX3Blcl9jaGFubmVsLnZhbHVlKCk7
CisgICAgICAgIGlmIChjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcy5pc19wcmVz
ZW50KCkpCisgICAgICAgICAgICByZWNvcmQudHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBjb252
ZXJ0VG9UcmFuc2ZlckNoYXJhY3RlcmlzdGljcyhjb2xvclZhbHVlLnRyYW5zZmVyX2NoYXJhY3Rl
cmlzdGljcy52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNp
ZW50cy5pc19wcmVzZW50KCkpCisgICAgICAgICAgICByZWNvcmQubWF0cml4Q29lZmZpY2llbnRz
ID0gY29udmVydFRvTWF0cml4Q29lZmZpY2llbnRzKGNvbG9yVmFsdWUubWF0cml4X2NvZWZmaWNp
ZW50cy52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGNvbG9yVmFsdWUucHJpbWFyaWVzLmlzX3ByZXNl
bnQoKSkKKyAgICAgICAgICAgIHJlY29yZC5jb2xvclByaW1hcmllcyA9IGNvbnZlcnRUb0NvbG9y
UHJpbWFyaWVzKGNvbG9yVmFsdWUucHJpbWFyaWVzLnZhbHVlKCkpOworICAgIH0KKworICAgIHJl
dHVybiBjcmVhdGVGb3JtYXREZXNjcmlwdGlvbkZyb21WUENvZGVjQ29uZmlndXJhdGlvblJlY29y
ZChyZWNvcmQsIGhlYWRlci53aWR0aCwgaGVhZGVyLmhlaWdodCk7Cit9CisKIH0KIAogI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRl
eCAyMTk4ODdmYTgxZTJiYWRhOTM1YjIyNGIxYjcwYzdlMTE5NjhlZTRhLi5jYTAwOTIxZGM0NjFl
OGViYmViYWZjMjFkYzU3YjdkNzNiYmZjMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCB3ZWJS
VENBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlcldlYktpdFZQOURlY29kZXIo
KTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKICAgICBzdGF0
aWMgdm9pZCBzZXRIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZChib29sKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXJDb2NvYS5jcHAKaW5kZXggNGEzMmQxZmRhNzg4M2E4Y2RhZTFhMGUzODhiMjUyNmE4YzM0
MzUwZS4uZTY4ZjkxNjBlZjE4NGJiODMyNGZiOThlMmEzMDM5M2FlZjJhZDk4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcApAQCAtMzQsNiArMzQsNyBA
QCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdERlY29kZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRF
bmNvZGVyLmg+CiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKKyNpbmNsdWRlIDx3ZWJydGMv
c2RrL1dlYktpdC9XZWJLaXRWUDhEZWNvZGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VlA5RGVjb2Rlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL2Rhcndpbi9XZWFrTGlua2luZy5oPgpAQCAtOTksNiArMTAwLDEzIEBAIHZvaWQg
TGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpCiAgICAgaWYgKHdl
YlJUQ0F2YWlsYWJsZSgpKQogICAgICAgICB3ZWJydGM6OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2Rl
cigpOwogfQorCit2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3RlcldlYktpdFZQOERlY29k
ZXIoKQoreworICAgIGlmICh3ZWJSVENBdmFpbGFibGUoKSkKKyAgICAgICAgd2VicnRjOjpyZWdp
c3RlcldlYktpdFZQOERlY29kZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0OGI3NGVhZTgwMWM2MjRk
MTIxNzMxMDk0OTA4MGVkYmE2MzQwNjkwLi41YzRjYTI1ZDRkYWE3ZDU4MTMxMTcwYzk3MjAzZjQw
NmViYjFkYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01MzgsOSArNTM4LDkgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRhdGVDYXB0dXJlQWNjZXNzKGJvb2wgYWxsb3dBdWRpb0Nh
cHR1cmUsIGJvb2wKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKLXZvaWQgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNv
ZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVy
LCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyKQogewotICAgIG1fZ3B1UHJvY2Vzcy0+ZW5hYmxlVlA5RGVjb2RlcnMoc2hvdWxkRW5hYmxl
VlA5RGVjb2Rlciwgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKKyAgICBtX2dwdVByb2Nlc3Mt
PmVuYWJsZVZQOURlY29kZXJzKHNob3VsZEVuYWJsZVZQOERlY29kZXIsIHNob3VsZEVuYWJsZVZQ
OURlY29kZXIsIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggYTI4YzhmZjVmNmMwNjRiZWViM2I4NmM2ZWE1NGMzZTQ3YjRhZjlkZi4uNGYyZDQ0ZmZi
NTUwYWE2ZGU4MTBiOWJmOTUyNjIwN2Q1NzlkYjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzYsNyArMTM2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sIFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvJiYpOwogCiAjaWYgRU5B
QkxFKFZQOSkKLSAgICB2b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5
RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOworICAgIHZvaWQgZW5hYmxl
VlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKICNlbmRpZgogCiAj
aWYgVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDlk
NTRlMTY0NTk1YjBhMzYxZGZlNGM3NWJmZjQwMThhODU3NTljOGYuLjhmYzBlZmFjOTMyMTgyMjJi
YjBiYzdjMjFhYWI5MTllNTNhOTczNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0zOCw3ICszOCw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2Fu
dHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIEVuc3VyZU1lZGlhU2Vzc2lvbkhlbHBlcigpCiAjZW5k
aWYKICNpZiBFTkFCTEUoVlA5KQotICAgIEVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5h
YmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpCisgICAgRW5hYmxl
VlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCBlM2Q1NmE4N2M3ZGRl
YWVmMDBhNmQxNzIwOGRiOGFlMWUyMjkxMGRiLi5jM2EzNjE5ZjY3ZWFiNGI0ZGUyM2UxMGZkNGM5
ODBiN2E0NTlmYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBA
IC0yOTIsMTIgKzI5MiwxOCBAQCBXb3JrUXVldWUmIEdQVVByb2Nlc3M6OmxpYldlYlJUQ0NvZGVj
c1F1ZXVlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKLXZvaWQgR1BVUHJvY2Vzczo6ZW5h
YmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVu
YWJsZVZQOVNXRGVjb2RlcikKK3ZvaWQgR1BVUHJvY2Vzczo6ZW5hYmxlVlA5RGVjb2RlcnMoYm9v
bCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJv
b2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogewogICAgIGlmIChzaG91bGRFbmFibGVWUDlE
ZWNvZGVyICYmICFtX2VuYWJsZVZQOURlY29kZXIpIHsKICAgICAgICAgbV9lbmFibGVWUDlEZWNv
ZGVyID0gdHJ1ZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgV2ViQ29yZTo6cmVnaXN0
ZXJTdXBwbGVtZW50YWxWUDlEZWNvZGVyKCk7CisjZW5kaWYKKyAgICB9CisgICAgaWYgKHNob3Vs
ZEVuYWJsZVZQOERlY29kZXIgJiYgIW1fZW5hYmxlVlA4RGVjb2RlcikgeworICAgICAgICBtX2Vu
YWJsZVZQOERlY29kZXIgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBXZWJD
b3JlOjpyZWdpc3RlcldlYktpdFZQOERlY29kZXIoKTsKICNlbmRpZgogICAgIH0KICAgICBpZiAo
c2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyICYmICFtX2VuYWJsZVZQOVNXRGVjb2RlcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggYjZlYTgxODNjZTY1MWU0OGQxMTdl
MjQ3YjU3ZmIwNTg3OTFjMjY5ZC4uYmVhNTYwM2MzNjQ4Yjc3NWFmYWVlMGI5MDAzYjkyZTIwNjY3
ODRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC04NCw3ICs4NCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZQOSkKLSAgICB2b2lkIGVuYWJsZVZQ
OURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVW
UDlTV0RlY29kZXIpOworICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFi
bGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5h
YmxlVlA5U1dEZWNvZGVyKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTQ4LDYgKzE0OCw3IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9TZXNzaW9u
UHJveHlNYW5hZ2VyPiBtX2F1ZGlvU2Vzc2lvbk1hbmFnZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUo
VlA5KQorICAgIGJvb2wgbV9lbmFibGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1f
ZW5hYmxlVlA5RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOVNXRGVjb2Rl
ciB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYWExN2I4YWMwOWQ0MTA2MTE3MmUyZDcyYjc2
Yzc4M2UzNjI3NjY0Yy4uOTE1NWMxNWY2YWU0YTM4OThmNjg3OGMyMGUzZjI3M2FjNTk5OTRjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKQEAgLTE2Miw2ICsxNjIsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKFdFQkdMKQog
ICAgIGVuY29kZXIgPDwgc2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3M7CiAjZW5kaWYKKyAg
ICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZVZQOERlY29kZXI7CiAgICAgZW5jb2RlciA8PCBzaG91
bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlVlA5U1dEZWNv
ZGVyOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUyNyw2ICs1MjgsOSBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2Vu
ZGlmCiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4
RGVjb2RlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlcikpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAzY2JjZWQxMTk4ZTdhYWYwMzNkZDZlYTVlM2EwNDlk
MjBiZGExNWM2Li4xZDE1NTBjMDZlMzYzZWVhN2JkNGZjYmI2N2NiYTRkY2QwODc4NDRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBA
IC0yMzMsNiArMjMzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lm
IEVOQUJMRShXRUJHTCkKICAgICBib29sIHNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzIHsg
ZmFsc2UgfTsKICNlbmRpZgorICAgIGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciB7IGZhbHNl
IH07CiAgICAgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29s
IHNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNEZWZhdWx0VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlcy5jcHAKaW5kZXggY2NkMzNjYzAyYTcyMjQ4OGFlZTEyYjMyNWU0Y2NkOTNm
YjFlMDdlYi4uMTBhNzNkNTMyZTg5OGQ0OTcxMWU1M2I2NDJlYjk5N2ZhZTU5ZjNjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMu
Y3BwCkBAIC0yNzgsNiArMjc4LDE1IEBAIGJvb2wgZGVmYXVsdFdlYlhSRW5hYmxlZCgpCiAKICNp
ZiBFTkFCTEUoVlA5KQogCitib29sIGRlZmF1bHRWUDhEZWNvZGVyRW5hYmxlZCgpCit7CisjaWYg
SEFWRShTWVNURU1fRkVBVFVSRV9GTEFHUykKKyAgICByZXR1cm4gaXNGZWF0dXJlRmxhZ0VuYWJs
ZWQoInZwOF9kZWNvZGVyIik7CisjZW5kaWYKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9v
bCBkZWZhdWx0VlA5RGVjb2RlckVuYWJsZWQoKQogewogI2lmIEhBVkUoU1lTVEVNX0ZFQVRVUkVf
RkxBR1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmF1bHRWYWx1ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlcy5oCmluZGV4IGQwOWQ0MzkzOTM3MDA0ZDNlMTBiOWI5NjZmOGUzMDZiMGFmODk1OGMu
LjJmYzdkOGVkMTI1NGQzNDY3NWQxZTJlOGY5YWEwMGRmNTAwNTNiNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oCkBAIC0xMDAs
NiArMTAwLDcgQEAgYm9vbCBkZWZhdWx0V2ViWFJFbmFibGVkKCk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShWUDkpCitib29sIGRlZmF1bHRWUDhEZWNvZGVyRW5hYmxlZCgpOwogYm9vbCBkZWZhdWx0
VlA5RGVjb2RlckVuYWJsZWQoKTsKIGJvb2wgZGVmYXVsdFZQOVNXRGVjb2RlckVuYWJsZWRPbkJh
dHRlcnkoKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWY3MzY0ZjZlZjRhZjg5MTQwYTM5NDcyYTFkMjcxZmU1
ZWM3MWFiNS4uNDU2NTZkNTRmZGY4ZWExMTRmNWI1YjhmMzcyNzM1N2RkZjk1YmNhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03OTk2LDYgKzc5OTYsNyBA
QCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0
ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVW
UDlEZWNvZGVyID0gcHJlZmVyZW5jZXMoKS52cDlEZWNvZGVyRW5hYmxlZCgpOwogI2lmIEVOQUJM
RShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4
RGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2RlckVuYWJsZWQoKTsKICAgICBwYXJhbWV0
ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlciA9IHByZWZlcmVuY2VzKCkudnA5RGVjb2RlckVu
YWJsZWQoKSAmJiAoIVdlYkNvcmU6OnN5c3RlbUhhc0JhdHRlcnkoKSB8fCBwcmVmZXJlbmNlcygp
LnZwOVNXRGVjb2RlckVuYWJsZWRPbkJhdHRlcnkoKSk7CiAjZW5kaWYKICAgICBwYXJhbWV0ZXJz
LnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkuY29uZmlndXJhdGlvbigpLnNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggMTFmYTcwZjJjZTliNDMzNTFlNTNiOWExZjNmNzNmY2E1MjhkNzRhMi4uYTI5
MzA3ZjcwYjZlZGY3Zjg0OTM2ZWRhNmRiY2ZiOGRiM2E2ZDAwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTE4
NSwxMiArMTg1LDEzIEBAIHZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVSZW1v
dGVDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDCiB2b2lkIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjp1cGRhdGVQYXJhbWV0ZXJzKGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7CiAjaWYgRU5BQkxFKFZQOSkKLSAgICBpZiAobV9lbmFibGVWUDlE
ZWNvZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciAmJiBtX2VuYWJsZVZQ
OVNXRGVjb2RlciA9PSBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikKKyAgICBp
ZiAobV9lbmFibGVWUDhEZWNvZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2Rl
ciAmJiBtX2VuYWJsZVZQOURlY29kZXIgPT0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNv
ZGVyICYmIG1fZW5hYmxlVlA5U1dEZWNvZGVyID09IHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5
U1dEZWNvZGVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2VuYWJsZVZQOURlY29kZXIgPSBw
YXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXI7CiAgICAgbV9lbmFibGVWUDlEZWNvZGVy
ID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyOwogICAgIG1fZW5hYmxlVlA5U1dE
ZWNvZGVyID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXI7Ci0gICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVuYWJsZVZQ
OURlY29kZXJzKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2RlciwgcGFyYW1ldGVycy5z
aG91bGRFbmFibGVWUDlTV0RlY29kZXIpLCB7IH0pOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFbmFibGVWUDlEZWNvZGVycyhwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIsIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5
RGVjb2RlciwgcGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIpLCB7IH0pOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaAppbmRleCAyYTA0Yzc0ZjdmYjYzNzcxYmFkZmI1NjM2ZDM3NTY4NThjYjMx
N2EwLi5mZjk5MjY1YWQ2YmQyMmQzMGRmYTVmNzEzNTUzMDQ2NDY1NjdjOGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBA
IC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVBhcmFtZXRlcnMoY29uc3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAjaWYgRU5BQkxFKFZQOSkKKyAgICBib29s
IGlzVlA4RGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZVZQOERlY29kZXI7
IH0KICAgICBib29sIGlzVlA5RGVjb2RlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZVZQOURlY29kZXI7IH0KICAgICBib29sIGlzVlBTV0RlY29kZXJFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmFibGVWUDlTV0RlY29kZXI7IH0KICNlbmRpZgpAQCAtMTIzLDYgKzEyNCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyPiBt
X2F1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZQOSkKKyAg
ICBib29sIG1fZW5hYmxlVlA4RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQ
OURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlTV0RlY29kZXIgeyBmYWxz
ZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDc5MTNhZTIxNjFjN2Y1YTA1NjkwZGM5NzRmNDcyYTJlZTg3OTFlZDQuLjgyMjA3
YWM4ZDUxYzk4NTcxOTMzNmFjNmY1MjQ0NTM3YTA5ZjQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MTksNiArODE5LDkgQEAgV2ViUGFn
ZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOURlY29k
ZXIpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVZQOURlY29kZXIoKTsK
IAorICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOERlY29kZXIpCisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuYWJsZVZQOFNXRGVjb2RlcigpOworCiAgICAgaWYgKHBh
cmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKQogICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbmFibGVWUDlTV0RlY29kZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRjYTA5N2EwYmI4NTEzNDI4MGVmNDJkZGFmNmU4
OTlmMDEwYWFmOTIuLjc4YjQwOTMwMjFkODMxYjE0YTIxNDY2OGQxOTk2OGE5ODE1YjFmY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5ODMsNiArMTk4Mywx
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVZQOURlY29kZXIoKQogI2VuZGlmCiB9CiAKK3Zv
aWQgV2ViUHJvY2Vzczo6ZW5hYmxlVlA4U1dEZWNvZGVyKCkKK3sKKyAgICBpZiAobV92cDlTV0Rl
Y29kZXJFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ZwOFNXRGVjb2RlckVuYWJs
ZWQgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdlYkNvcmU6OnJlZ2lzdGVyV2Vi
S2l0VlA4RGVjb2RlcigpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlVlA5
U1dEZWNvZGVyKCkKIHsKICAgICBpZiAobV92cDlTV0RlY29kZXJFbmFibGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZmRiNTZkNzlkZjIxZmU4Y2ExMmU4OTE2ZTk3
NTFlZDk2MjhiMjEyMS4uMzFhYmQ0ZjU4YTlhODNmNjc0ODJlZDJkNzZiMDQwOWQxYzhiYWFlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNTksNiArMzU5LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFZQOSkKICAgICB2b2lkIGVuYWJsZVZQOURlY29kZXIoKTsK
KyAgICB2b2lkIGVuYWJsZVZQOFNXRGVjb2RlcigpOwogICAgIHZvaWQgZW5hYmxlVlA5U1dEZWNv
ZGVyKCk7CiAjZW5kaWYKIApAQCAtNzA2LDYgKzcwNyw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoVlA5KQogICAgIGJvb2wgbV92cDlEZWNvZGVyRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX3ZwOFNXRGVjb2RlckVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV92cDlTV0RlY29k
ZXJFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTBhZTlmYTlhZmRkNDMxMGE4
NWY0NDg1ODc2YTUxMTVhNDVlNjUzZC4uNGE3MzkzMzE4YjAzZGFkMzAzZTRkZDNhMDVmMDgyODEz
NDVjNTRhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEyLTEwICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVyaW1lbnRhbCBW
UDggc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5NzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFj
LWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy1iaWdzdXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMTEtMDkgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTm9uLWZ1bGxzY3JlZW4g
cGFnZSBjb250ZW50cyB2aXNpYmxlIHdoZW4gcm90YXRpbmcgZGV2aWNlIGR1cmluZyBlbGVtZW50
IGZ1bGxzY3JlZW4gcHJlc2VudGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLWJpZ3N1ci9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
LXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhlMDMzMzk2ZGQwYzE1YWI1NTIyYTdhMTdiYTc0OTc0MzdkMDk3OTgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVy
KCkgaW4gJ2VuZGVkJyBzdGF0ZS4KK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIGVt
cHR5IHR5cGUKK1BBU1MgVGVzdCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIG51bGwKK1BBU1MgVGVz
dCBhZGRTb3VyY2VCdWZmZXIoKSB3aXRoIHVuc3VwcG9ydGVkIHR5cGUKK0ZBSUwgVGVzdCBhZGRT
b3VyY2VCdWZmZXIoKSB3aXRoIFZvcmJpcyBhbmQgVlA4IGFzc2VydF90cnVlOiB2aWRlby93ZWJt
O2NvZGVjcz0idnA4LHZvcmJpcyIgaXMgc3VwcG9ydGVkIGV4cGVjdGVkIHRydWUgZ290IGZhbHNl
CitGQUlMIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgd2l0aCBWb3JiaXMgYW5kIFZQOCBpbiBzZXBh
cmF0ZSBTb3VyY2VCdWZmZXJzIGFzc2VydF90cnVlOiBhdWRpby93ZWJtO2NvZGVjcz0idm9yYmlz
IiBpcyBzdXBwb3J0ZWQgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgVGVzdCBhZGRTb3Vy
Y2VCdWZmZXIoKSB2aWRlbyBvbmx5CitQQVNTIFRlc3QgYWRkU291cmNlQnVmZmVyKCkgYXVkaW8g
b25seQorUEFTUyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggQUFDIGFuZCBILjI2NAorUEFT
UyBUZXN0IGFkZFNvdXJjZUJ1ZmZlcigpIHdpdGggQUFDIGFuZCBILjI2NCBpbiBzZXBhcmF0ZSBT
b3VyY2VCdWZmZXJzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1iaWdz
dXIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtaW52YWxpZC1jb2RlYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
Ymlnc3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLWludmFsaWQtY29kZWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZTJkNTgxZmY5
MDY4NjZlOWNlYTdhYzliYzYyMzViMjFmN2Q4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtYmlnc3VyL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLWludmFsaWQtY29kZWMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorCitQQVNTIFRlc3QgYW4gTVA0IHdpdGggYW4gaW52YWxpZCBjb2RlYyByZXN1
bHRzIGluIGFuIGVycm9yLgorUEFTUyBUZXN0IGEgV2ViTSB3aXRoIGFuIGludmFsaWQgY29kZWMg
cmVzdWx0cyBpbiBhbiBlcnJvci4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCBiZWY1MDMwNjRhOThhZDA2NjJhODFlMzkwMTBhOWQ1MDI2NDNkZmYxLi5i
ZGFlNTFmZDg1ZTdlNWFmNmNhMTM4MTgzMTA1Njc1ZjBmZTBkMzVjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODU4LDggKzg1OCw4IEBAIHdlYmtpdC5v
cmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtZXJyCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWlzLXR5cGUtc3VwcG9ydGVkLmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3Zlc291cmNlYnVmZmVyLmh0bWwg
WyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1iZXlvbmQtZHVyYXRpb24uaHRtbCBb
IFNraXAgXQotd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrLWR1cmluZy1wZW5kaW5nLXNlZWsuaHRt
bCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE2MTcyNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zZWVrYWJsZS5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMTYxNzI1IFsgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc2Vlay1kdXJpbmctcGVuZGlu
Zy1zZWVrLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNjE3MjUgWyBNb2phdmUgQ2F0YWxp
bmEgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1zZWVrYWJsZS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYxNzI1IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNlcXVlbmNl
bW9kZS1hcHBlbmQtYnVmZmVyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNjE3MjUgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291
cmNlYnVmZmVyLW1vZGUtdGltZXN0YW1wcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTYx
NzI1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLXNvdXJjZWJ1ZmZlci1tb2RlLmh0bWwgWyBTa2lwIF0KQEAgLTg3MCw5ICs4NzAsOSBAQCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1j
b25maWctY2hhbmdlLXdlYm0tYS1iaQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLWF2LWF1ZGlvLWJpdHJh
dGUuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS13ZWJtLWF2LWZyYW1lc2l6ZS5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tYXYtdmlkZW8tYml0cmF0ZS5odG1sIFsgU2tpcCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJj
ZS1jb25maWctY2hhbmdlLXdlYm0tdi1iaXRyYXRlLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFu
Z2Utd2VibS12LWZyYW1lcmF0ZS5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLXdlYm0tdi1m
cmFtZXNpemUuaHRtbCBbIFNraXAgXQorWyBNb2phdmUgQ2F0YWxpbmEgXSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdl
LXdlYm0tdi1iaXRyYXRlLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIENhdGFsaW5hIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmln
LWNoYW5nZS13ZWJtLXYtZnJhbWVyYXRlLmh0bWwgWyBTa2lwIF0KK1sgTW9qYXZlIENhdGFsaW5h
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtY29uZmlnLWNoYW5nZS13ZWJtLXYtZnJhbWVzaXplLmh0bWwgWyBTa2lwIF0KIAogIyBTa2lw
cGVkIGluIFczQyBXZWIgUGxhdGZvcm0gVGVzdCBtYW5pZmVzdAogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtZ2V0dmlkZW9wbGF5YmFja3F1
YWxpdHkuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416083</attachid>
            <date>2020-12-11 18:33:38 -0800</date>
            <delta_ts>2020-12-11 18:34:51 -0800</delta_ts>
            <desc>Follow-up merge fix</desc>
            <filename>bug-219732-20201211183337.patch</filename>
            <type>text/plain</type>
            <size>1699</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJiYTdhNTkxNmFlYTcz
MGJlOThlZWI5MmJkYjJmN2UyOGM3MzIxZS4uMTEzODM3ZTE4ZDQzMDRiNWRmMTU1NzA0MjJkN2Ez
ZmIwYjVhMGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTExICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIEV4cGVy
aW1lbnRhbCBWUDggc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5NzMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjE3MTA1NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZSBlcnJv
ciBhZnRlciByMjcwNzIwOyBVc2UgdGhlIGxvY2FsIHZhbHVlIGlzS2V5LCByYXRoZXIgdGhhbiBx
dWVyeWluZyB0aGUgVlA5IGhlYWRlciBwYXJzZXIKKyAgICAgICAgdG8gdGVsbCB3aGV0aGVyIHRo
ZSBpbmNvbWluZyBmcmFtZSBpcyBhIGtleWZyYW1lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpWaWRlb1RyYWNrRGF0YTo6Y3JlYXRlU2FtcGxlQnVm
ZmVyKToKKwogMjAyMC0xMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBFeHBlcmltZW50YWwgVm9yYmlzIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNTI1ZTMwOGU1MjI2ZjE1MDU2ZTIw
NTEwZDIwOTZiNWIxNzg2ZmFjMC4uZmI5NjU2MTZjMTIyODhhYTU2YjQ3MTFjMjA5OGFlMjM0MTMy
NDRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTEwNjEsNyArMTA2
MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6VmlkZW9UcmFja0RhdGE6OmNyZWF0
ZVNhbXBsZUJ1ZmZlcihjb25zdCBDTVRpbWUmIHByCiAgICAgbV9jdXJyZW50QmxvY2tCdWZmZXIg
PSBudWxscHRyOwogICAgIG1fY3VycmVudEJsb2NrQnVmZmVyUG9zaXRpb24gPSAwOwogCi0gICAg
aWYgKCFtX2hlYWRlclBhcnNlci5rZXkoKSkgeworICAgIGlmICghaXNLZXkpIHsKICAgICAgICAg
YXV0byBhdHRhY2htZW50c0FycmF5ID0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50
c0FycmF5KHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChhdHRhY2ht
ZW50c0FycmF5KTsKICAgICAgICAgaWYgKCFhdHRhY2htZW50c0FycmF5KSB7Cg==
</data>
<flag name="review"
          id="433499"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>