<?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>234131</bug_id>
          
          <creation_ts>2021-12-10 01:28:48 -0800</creation_ts>
          <short_desc>[Cocoa] -[AVPlayerItem liveUpdateTime] can hang the main thread for ~60ms</short_desc>
          <delta_ts>2021-12-11 00:48:39 -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>Media</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>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1822575</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-10 01:28:48 -0800</bug_when>
    <thetext>[Cocoa] -[AVPlayerItem liveUpdateThread] can hang the main thread for ~60ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822576</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-10 01:29:17 -0800</bug_when>
    <thetext>&lt;rdar://86307593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822578</commentid>
    <comment_count>2</comment_count>
      <attachid>446682</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-10 01:34:04 -0800</bug_when>
    <thetext>Created attachment 446682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822728</commentid>
    <comment_count>3</comment_count>
      <attachid>446682</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-12-10 08:39:36 -0800</bug_when>
    <thetext>Comment on attachment 446682
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [Cocoa] -[AVPlayerItem liveUpdateThread] can hang the main thread for ~60ms

Do you mean -[AVPlayerItem liveUpdateInterval]?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3839
&gt; +    auto queueTaskOnEventLoopWithPlayer = [self, strongSelf = retainPtr(self)] (Function&lt;void(MediaPlayerPrivateAVFoundationObjC&amp;)&gt;&amp;&amp; function) mutable {

s/strongSelf = retainPtr(self)/strongSelf = RetainPtr { self }/

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3856
&gt; +        auto seekableTimeRanges = retainPtr((NSArray*)newValue);

s/ = retainPtr( ... )/ = RetainPtr { ... }/

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3858
&gt; +        auto playerItem = retainPtr((AVPlayerItem*)object);

The player doesn&apos;t need to be kept alive so you could avoid the refcount churn by just casting to an AVPlayerItem

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3866
&gt; +    queueTaskOnEventLoopWithPlayer([keyPath = retainPtr(keyPath), change = retainPtr(change), object = retainPtr(object), context] (auto&amp; player) mutable {

s/ = retainPtr( ... )/ = RetainPtr { ... }/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822750</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-10 09:20:40 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #3)
&gt; Comment on attachment 446682 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446682&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        [Cocoa] -[AVPlayerItem liveUpdateThread] can hang the main thread for ~60ms
&gt; 
&gt; Do you mean -[AVPlayerItem liveUpdateInterval]?

Whoops, yes I do.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3839
&gt; &gt; +    auto queueTaskOnEventLoopWithPlayer = [self, strongSelf = retainPtr(self)] (Function&lt;void(MediaPlayerPrivateAVFoundationObjC&amp;)&gt;&amp;&amp; function) mutable {
&gt; 
&gt; s/strongSelf = retainPtr(self)/strongSelf = RetainPtr { self }/

Ok.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3856
&gt; &gt; +        auto seekableTimeRanges = retainPtr((NSArray*)newValue);
&gt; 
&gt; s/ = retainPtr( ... )/ = RetainPtr { ... }/
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:3858
&gt; &gt; +        auto playerItem = retainPtr((AVPlayerItem*)object);
&gt; 
&gt; The player doesn&apos;t need to be kept alive so you could avoid the refcount
&gt; churn by just casting to an AVPlayerItem

So, I think I&apos;m going to have to modify the patch to explicitly do this query on a background queue. The KVO will happen on the main thread most of the time, in which case, I need to keep this a RetainPtr so I can pass it through to a background queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822792</commentid>
    <comment_count>5</comment_count>
      <attachid>446753</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-10 10:30:11 -0800</bug_when>
    <thetext>Created attachment 446753
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823177</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-11 00:48:37 -0800</bug_when>
    <thetext>Committed r286907 (245133@main): &lt;https://commits.webkit.org/245133@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446753.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446682</attachid>
            <date>2021-12-10 01:34:04 -0800</date>
            <delta_ts>2021-12-10 08:39:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234131-20211210013403.patch</filename>
            <type>text/plain</type>
            <size>18098</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcyOTUzNTU0OTEwMzk4
Y2ZiZTk1YzMzM2U5NzkwZmUyY2IzMTQyZS4uNDI2MmMxYWI0ODA0NjM4ZGI0YWIzZjliYjk0MGYy
ODk3ZmI2YzQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTEwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gLVtBVlBsYXll
ckl0ZW0gbGl2ZVVwZGF0ZVRocmVhZF0gY2FuIGhhbmcgdGhlIG1haW4gdGhyZWFkIGZvciB+NjBt
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTMx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlyZWN0
IHByb3BlcnR5IGFjY2VzcyBvZiBBVkZvdW5kYXRpb24gb2JqZWN0cyBjYW4gdGFrZSB0ZW5zIG9m
IG1pbGxpc2Vjb25kcyB0byByZXR1cm4KKyAgICAgICAgYSB2YWx1ZSwgZXZlbiBmb3Igc2ltcGxl
IHByb3BlcnRpZXMuIFRoaXMgaW1wYWN0cyBzY3JvbGxpbmcgcmVzcG9uc2l2ZW5lc3MuCisKKyAg
ICAgICAgLWxpdmVVcGRhdGVUaHJlYWQgaXMgbm90IEtWTy1vYnNlcnZhYmxlLCBidXQgb25seSBj
aGFuZ2VzIHdoZW4gLXNlZWthYmxlVGltZVJhbmdlcyBkb2VzCisgICAgICAgIGFzIHdlbGwuIFF1
ZXJ5IGFuZCBjYWNoZSB0aGF0IHByb3BlcnR5IGR1cmluZyBLVk8gb2YgLXNlZWthYmxlVGltZVJh
bmdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6c2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpsaXZlVXBkYXRl
SW50ZXJ2YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c2Vla2FibGVUaW1lUmFuZ2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKC1b
V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpj
aGFuZ2U6Y29udGV4dDpdKToKKwogMjAyMS0xMi0xMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIElPU3VyZmFjZSBtZW1vcnkgYXR0cmlidXRpb24gaXMg
aGFyZCB0byB1c2UgaW4gY29uc3RydWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAw
ZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uMjdmMWVkMDgyYWY2YmY5NzY4
ZGUwNGUwMDRlZjI1NmRjZjI1MjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNTMsNiAr
NTMsNyBAQCBPQkpDX0NMQVNTIFdlYkNvcmVBVkZQdWxsRGVsZWdhdGU7CiB0eXBlZGVmIHN0cnVj
dCBDR0ltYWdlICpDR0ltYWdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhl
bEJ1ZmZlclJlZjsKIHR5cGVkZWYgTlNTdHJpbmcgKkFWTWVkaWFDaGFyYWN0ZXJpc3RpYzsKK3R5
cGVkZWYgZG91YmxlIE5TVGltZUludGVydmFsOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTEwMSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5YmFja0J1ZmZlckZ1bGxXaWxs
Q2hhbmdlKCk7CiAgICAgdm9pZCBwbGF5YmFja0J1ZmZlckZ1bGxEaWRDaGFuZ2UoYm9vbCk7CiAg
ICAgdm9pZCBsb2FkZWRUaW1lUmFuZ2VzRGlkQ2hhbmdlKFJldGFpblB0cjxOU0FycmF5PiYmKTsK
LSAgICB2b2lkIHNlZWthYmxlVGltZVJhbmdlc0RpZENoYW5nZShSZXRhaW5QdHI8TlNBcnJheT4m
Jik7CisgICAgdm9pZCBzZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJy
YXk+JiYsIE5TVGltZUludGVydmFsLCBOU1RpbWVJbnRlcnZhbCk7CiAgICAgdm9pZCB0cmFja3NE
aWRDaGFuZ2UoY29uc3QgUmV0YWluUHRyPE5TQXJyYXk+Jik7CiAgICAgdm9pZCBoYXNFbmFibGVk
QXVkaW9EaWRDaGFuZ2UoYm9vbCk7CiAgICAgdm9pZCBwcmVzZW50YXRpb25TaXplRGlkQ2hhbmdl
KEZsb2F0U2l6ZSk7CkBAIC00NjEsNiArNDYyLDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
aWQ+IG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXI7CiAgICAgYm9vbCBtX2lz
R2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFs
PFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0YWRhdGE7CisgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZFNlZWthYmxlVGltZVJhbmdlc0xh
c3RNb2RpZmllZFRpbWU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFs
PiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGQ3Y2Y5ZDRiZjFmZWQ2OWE1ZjNjYWMzMWVhZmVlN2YzOThhNDUzYzEuLjM4ODU4
YjUxOWQwNjZjM2JiZjA0NThhY2IzNjg2NzhiN2IzZTBmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTY3Nyw3ICsxNjc3LDkgQEAgZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmVmZmVjdGl2ZVJhdGUoKSBjb25zdAogZG91YmxlIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUo
KSBjb25zdAogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICByZXR1cm4gW21fYXZQbGF5ZXJJdGVtIHNlZWthYmxlVGltZVJh
bmdlc0xhc3RNb2RpZmllZFRpbWVdOworICAgIGlmICghbV9jYWNoZWRTZWVrYWJsZVRpbWVSYW5n
ZXNMYXN0TW9kaWZpZWRUaW1lKQorICAgICAgICBtX2NhY2hlZFNlZWthYmxlVGltZVJhbmdlc0xh
c3RNb2RpZmllZFRpbWUgPSBbbV9hdlBsYXllckl0ZW0gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1v
ZGlmaWVkVGltZV07CisgICAgcmV0dXJuICptX2NhY2hlZFNlZWthYmxlVGltZVJhbmdlc0xhc3RN
b2RpZmllZFRpbWU7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNjg2LDcgKzE2
ODgsOSBAQCBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2Vla2Fi
bGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpCiBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QKIHsKICNpZiBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAg
cmV0dXJuIFttX2F2UGxheWVySXRlbSBsaXZlVXBkYXRlSW50ZXJ2YWxdOworICAgIGlmICghbV9j
YWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWwpCisgICAgICAgIG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVy
dmFsID0gW21fYXZQbGF5ZXJJdGVtIGxpdmVVcGRhdGVJbnRlcnZhbF07CisgICAgcmV0dXJuICpt
X2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
QEAgLTMzMjcsOSArMzMzMSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnBsYXliYWNrQnVmZmVyRnVsbERpZENoYW5nZShib29sIGJ1ZmZlcgogICAgICAgICB1
cGRhdGVTdGF0ZXMoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+JiYgc2Vl
a2FibGVSYW5nZXMpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
ZWthYmxlVGltZVJhbmdlc0RpZENoYW5nZShSZXRhaW5QdHI8TlNBcnJheT4mJiBzZWVrYWJsZVJh
bmdlcywgTlNUaW1lSW50ZXJ2YWwgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSwg
TlNUaW1lSW50ZXJ2YWwgbGl2ZVVwZGF0ZUludGVydmFsKQogewogICAgIG1fY2FjaGVkU2Vla2Fi
bGVSYW5nZXMgPSBXVEZNb3ZlKHNlZWthYmxlUmFuZ2VzKTsKKyAgICBtX2NhY2hlZFNlZWthYmxl
VGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgPSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZp
ZWRUaW1lOworICAgIG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsID0gbGl2ZVVwZGF0ZUludGVy
dmFsOwogCiAgICAgc2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdlZCgpOwogICAgIHVwZGF0ZVN0YXRl
cygpOwpAQCAtMzgzMCwxMDEgKzM4MzYsMTE2IEBAIC0gKHZvaWQpY2hhcHRlck1ldGFkYXRhRGlk
Q2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKXVudXNlZE5vdGlmaWNhdGlvbgogCiAtICh2b2lkKW9i
c2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZToo
TlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2Jz
ZXJ2YXRpb25Db250ZXh0KWNvbnRleHQKIHsKLSAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3NlbGYs
IHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGtleVBhdGggPSByZXRhaW5QdHIoa2V5UGF0
aCksIGNoYW5nZSA9IHJldGFpblB0cihjaGFuZ2UpLCBvYmplY3QgPSByZXRhaW5QdHIob2JqZWN0
KSwgY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIHF1ZXVlVGFza09uRXZlbnRMb29wV2l0
aFBsYXllciA9IFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoRnVuY3Rpb248
dm9pZChNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDJik+JiYgZnVuY3Rpb24pIG11
dGFibGUgewogICAgICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIG1fcGxheWVyLT5xdWV1ZVRhc2tPbkV2ZW50TG9vcChbcGxheWVyID0gbV9wbGF5ZXIs
IGtleVBhdGggPSBXVEZNb3ZlKGtleVBhdGgpLCBjaGFuZ2UgPSBXVEZNb3ZlKGNoYW5nZSksIG9i
amVjdCA9IFdURk1vdmUob2JqZWN0KSwgY29udGV4dF0geworICAgICAgICBtX3BsYXllci0+cXVl
dWVUYXNrT25FdmVudExvb3AoW3BsYXllciA9IG1fcGxheWVyLCBmdW5jdGlvbiA9IFdURk1vdmUo
ZnVuY3Rpb24pXSB7CiAgICAgICAgICAgICBpZiAoIXBsYXllcikKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFk
IHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKCpwbGF5ZXIpOwor
ICAgICAgICB9KTsKKyAgICB9OwogCi0gICAgICAgICAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2Ug
dmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgICAgICBib29sIHdp
bGxDaGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90aWZpY2F0
aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXTsKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkTG9nVmFs
dWUgPSAhd2lsbENoYW5nZTsKKyAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRh
dGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllckl0ZW0gJiYgW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pIHsKKyAgICAgICAgLy8gLWxpdmVVcGRhdGVJbnRl
cnZhbCBhbmQgLXNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgYXJlIG5vdCBLVk8g
b2JzZXJ2YWJsZSwgYnV0IG1heSBhbHNvIGhhbmcgd2hlbiBxdWVyaWVkLgorICAgICAgICAvLyBR
dWVyeSB0aGVpciB2YWx1ZXMgaGVyZSBvbiBhIGJhY2tncm91bmQgdGhyZWFkLCBhbmQgcGFzcyB0
byB0aGUgbWFpbiB0aHJlYWQgZm9yIGNhY2hpbmcuCisgICAgICAgIGlkIG5ld1ZhbHVlID0gW2No
YW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICAgICAgYXV0byBz
ZWVrYWJsZVRpbWVSYW5nZXMgPSByZXRhaW5QdHIoKE5TQXJyYXkqKW5ld1ZhbHVlKTsKKworICAg
ICAgICBhdXRvIHBsYXllckl0ZW0gPSByZXRhaW5QdHIoKEFWUGxheWVySXRlbSopb2JqZWN0KTsK
KyAgICAgICAgYXV0byBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lID0gW3BsYXll
ckl0ZW0gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZV07CisgICAgICAgIGF1dG8g
bGl2ZVVwZGF0ZUludGVydmFsID0gW3BsYXllckl0ZW0gbGl2ZVVwZGF0ZUludGVydmFsXTsKKyAg
ICAgICAgcXVldWVUYXNrT25FdmVudExvb3BXaXRoUGxheWVyKFtzZWVrYWJsZVRpbWVSYW5nZXMg
PSBXVEZNb3ZlKHNlZWthYmxlVGltZVJhbmdlcyksIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2Rp
ZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbF0gKGF1dG8mIHBsYXllcikgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBwbGF5ZXIuc2Vla2FibGVUaW1lUmFuZ2VzRGlkQ2hhbmdlKFdURk1vdmUoc2Vl
a2FibGVUaW1lUmFuZ2VzKSwgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSwgbGl2
ZVVwZGF0ZUludGVydmFsKTsKKyAgICAgICAgfSk7CisgICAgfQogCi0gICAgICAgICAgICBpZiAo
Y29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dEFWUGxh
eWVyTGF5ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAicmVhZHlGb3JEaXNwbGF5Il0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+Zmlyc3RG
cmFtZUF2YWlsYWJsZURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAgICAg
ICB9CisgICAgcXVldWVUYXNrT25FdmVudExvb3BXaXRoUGxheWVyKFtrZXlQYXRoID0gcmV0YWlu
UHRyKGtleVBhdGgpLCBjaGFuZ2UgPSByZXRhaW5QdHIoY2hhbmdlKSwgb2JqZWN0ID0gcmV0YWlu
UHRyKG9iamVjdCksIGNvbnRleHRdIChhdXRvJiBwbGF5ZXIpIG11dGFibGUgeworICAgICAgICBp
ZCBuZXdWYWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07
CisgICAgICAgIGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFs
dWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOworICAgICAgICBib29s
IHNob3VsZExvZ1ZhbHVlID0gIXdpbGxDaGFuZ2U7CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0
ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRlbVRy
YWNrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImVu
YWJsZWQiXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT50cmFja0VuYWJsZWREaWRDaGFu
Z2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoY29u
dGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dEFWUGxheWVy
TGF5ZXIpIHsKKyAgICAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyZWFk
eUZvckRpc3BsYXkiXSkKKyAgICAgICAgICAgICAgICBwbGF5ZXIuZmlyc3RGcmFtZUF2YWlsYWJs
ZURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgIH0KIAotICAgICAgICAg
ICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRl
eHRQbGF5ZXJJdGVtICYmIHdpbGxDaGFuZ2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tMaWtlbHlUb0tlZXBVcCJdKQotICAgICAgICAg
ICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrTGlrZWx5VG9LZWVwVXBXaWxsQ2hhbmdlKCk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJh
Y2tCdWZmZXJFbXB0eSJdKQotICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPnBsYXliYWNrQnVm
ZmVyRW1wdHlXaWxsQ2hhbmdlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tCdWZmZXJGdWxsIl0pCi0gICAgICAgICAgICAgICAg
ICAgIHBsYXllci0+cGxheWJhY2tCdWZmZXJGdWxsV2lsbENoYW5nZSgpOwotICAgICAgICAgICAg
fQorICAgICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0
aW9uQ29udGV4dFBsYXllckl0ZW1UcmFjaykgeworICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAImVuYWJsZWQiXSkKKyAgICAgICAgICAgICAgICBwbGF5ZXIudHJhY2tF
bmFibGVkRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9u
Q29udGV4dFBsYXllckl0ZW0gJiYgIXdpbGxDaGFuZ2UpIHsKLSAgICAgICAgICAgICAgICAvLyBB
IHZhbHVlIGNoYW5nZWQgZm9yIGFuIEFWUGxheWVySXRlbQotICAgICAgICAgICAgICAgIGlmIChb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkKLSAgICAgICAgICAgICAgICAgICAg
cGxheWVyLT5wbGF5ZXJJdGVtU3RhdHVzRGlkQ2hhbmdlKFtuZXdWYWx1ZSBpbnRWYWx1ZV0pOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXli
YWNrTGlrZWx5VG9LZWVwVXAiXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFj
a0xpa2VseVRvS2VlcFVwRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKLSAgICAgICAg
ICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZl
ckVtcHR5Il0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tCdWZmZXJFbXB0
eURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tCdWZmZXJGdWxsIl0pCi0gICAg
ICAgICAgICAgICAgICAgIHBsYXllci0+cGxheWJhY2tCdWZmZXJGdWxsRGlkQ2hhbmdlKFtuZXdW
YWx1ZSBib29sVmFsdWVdKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJhc3NldCJdKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+c2V0
QXNzZXQoUmV0YWluUHRyPGlkPihuZXdWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRMb2dWYWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAibG9hZGVkVGltZVJhbmdlcyJdKQotICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXItPmxvYWRlZFRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+KG5l
d1ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+
c2Vla2FibGVUaW1lUmFuZ2VzRGlkQ2hhbmdlKFJldGFpblB0cjxOU0FycmF5PihuZXdWYWx1ZSkp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInRy
YWNrcyJdKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+dHJhY2tzRGlkQ2hhbmdlKFJl
dGFpblB0cjxOU0FycmF5PihuZXdWYWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRM
b2dWYWx1ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBhdGggaXNF
cXVhbFRvU3RyaW5nOkAiaGFzRW5hYmxlZEF1ZGlvIl0pCi0gICAgICAgICAgICAgICAgICAgIHBs
YXllci0+aGFzRW5hYmxlZEF1ZGlvRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwcmVzZW50
YXRpb25TaXplIl0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+cHJlc2VudGF0aW9uU2l6
ZURpZENoYW5nZShGbG9hdFNpemUoW25ld1ZhbHVlIHNpemVWYWx1ZV0pKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJkdXJhdGlvbiJdKQotICAg
ICAgICAgICAgICAgICAgICBwbGF5ZXItPmR1cmF0aW9uRGlkQ2hhbmdlKFBBTDo6dG9NZWRpYVRp
bWUoW25ld1ZhbHVlIENNVGltZVZhbHVlXSkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImNhblBsYXlGYXN0UmV2ZXJzZSJdKQotICAgICAgICAg
ICAgICAgICAgICBwbGF5ZXItPmNhblBsYXlGYXN0UmV2ZXJzZURpZENoYW5nZShbbmV3VmFsdWUg
Ym9vbFZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRv
U3RyaW5nOkAiY2FuUGxheUZhc3RGb3J3YXJkIl0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXll
ci0+Y2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRp
b25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJJdGVtICYmIHdpbGxDaGFuZ2UpIHsKKyAgICAgICAg
ICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0xpa2VseVRvS2VlcFVw
Il0pCisgICAgICAgICAgICAgICAgcGxheWVyLnBsYXliYWNrTGlrZWx5VG9LZWVwVXBXaWxsQ2hh
bmdlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJw
bGF5YmFja0J1ZmZlckVtcHR5Il0pCisgICAgICAgICAgICAgICAgcGxheWVyLnBsYXliYWNrQnVm
ZmVyRW1wdHlXaWxsQ2hhbmdlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZlckZ1bGwiXSkKKyAgICAgICAgICAgICAgICBwbGF5
ZXIucGxheWJhY2tCdWZmZXJGdWxsV2lsbENoYW5nZSgpOworICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250
ZXh0UGxheWVyICYmICF3aWxsQ2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAgLy8gQSB2YWx1ZSBj
aGFuZ2VkIGZvciBhbiBBVlBsYXllci4KLSAgICAgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNF
cXVhbFRvU3RyaW5nOkAicmF0ZSJdKQotICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPnJhdGVE
aWRDaGFuZ2UoW25ld1ZhbHVlIGRvdWJsZVZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAidGltZUNvbnRyb2xTdGF0dXMiXSkKLSAgICAg
ICAgICAgICAgICAgICAgcGxheWVyLT50aW1lQ29udHJvbFN0YXR1c0RpZENoYW5nZShbbmV3VmFs
dWUgaW50VmFsdWVdKTsKKyAgICAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5k
YXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJJdGVtICYmICF3aWxsQ2hhbmdlKSB7CisgICAg
ICAgICAgICAvLyBBIHZhbHVlIGNoYW5nZWQgZm9yIGFuIEFWUGxheWVySXRlbQorICAgICAgICAg
ICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKQorICAgICAgICAgICAg
ICAgIHBsYXllci5wbGF5ZXJJdGVtU3RhdHVzRGlkQ2hhbmdlKFtuZXdWYWx1ZSBpbnRWYWx1ZV0p
OworICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJh
Y2tMaWtlbHlUb0tlZXBVcCJdKQorICAgICAgICAgICAgICAgIHBsYXllci5wbGF5YmFja0xpa2Vs
eVRvS2VlcFVwRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXliYWNrQnVmZmVyRW1wdHkiXSkK
KyAgICAgICAgICAgICAgICBwbGF5ZXIucGxheWJhY2tCdWZmZXJFbXB0eURpZENoYW5nZShbbmV3
VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZlckZ1bGwiXSkKKyAgICAgICAgICAgICAgICBwbGF5ZXIu
cGxheWJhY2tCdWZmZXJGdWxsRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImFzc2V0Il0pIHsKKyAg
ICAgICAgICAgICAgICBwbGF5ZXIuc2V0QXNzZXQoUmV0YWluUHRyPGlkPihuZXdWYWx1ZSkpOwor
ICAgICAgICAgICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSkKKyAg
ICAgICAgICAgICAgICBwbGF5ZXIubG9hZGVkVGltZVJhbmdlc0RpZENoYW5nZShSZXRhaW5QdHI8
TlNBcnJheT4obmV3VmFsdWUpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1
YWxUb1N0cmluZzpAInRyYWNrcyJdKSB7CisgICAgICAgICAgICAgICAgcGxheWVyLnRyYWNrc0Rp
ZENoYW5nZShSZXRhaW5QdHI8TlNBcnJheT4obmV3VmFsdWUpKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRMb2dWYWx1ZSA9IGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmIChba2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJoYXNFbmFibGVkQXVkaW8iXSkKKyAgICAgICAgICAgICAgICBwbGF5
ZXIuaGFzRW5hYmxlZEF1ZGlvRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInByZXNlbnRhdGlvblNp
emUiXSkKKyAgICAgICAgICAgICAgICBwbGF5ZXIucHJlc2VudGF0aW9uU2l6ZURpZENoYW5nZShG
bG9hdFNpemUoW25ld1ZhbHVlIHNpemVWYWx1ZV0pKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImR1cmF0aW9uIl0pCisgICAgICAgICAgICAgICAgcGxh
eWVyLmR1cmF0aW9uRGlkQ2hhbmdlKFBBTDo6dG9NZWRpYVRpbWUoW25ld1ZhbHVlIENNVGltZVZh
bHVlXSkpOworICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
Y2FuUGxheUZhc3RSZXZlcnNlIl0pCisgICAgICAgICAgICAgICAgcGxheWVyLmNhblBsYXlGYXN0
UmV2ZXJzZURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgICAgICBlbHNl
IGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5QbGF5RmFzdEZvcndhcmQiXSkKKyAg
ICAgICAgICAgICAgICBwbGF5ZXIuY2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlKFtuZXdWYWx1
ZSBib29sVmFsdWVdKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb250ZXh0ID09IE1lZGlh
UGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyICYmICF3aWxsQ2hhbmdl
KSB7CisgICAgICAgICAgICAvLyBBIHZhbHVlIGNoYW5nZWQgZm9yIGFuIEFWUGxheWVyLgorICAg
ICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUiXSkKKyAgICAgICAg
ICAgICAgICBwbGF5ZXIucmF0ZURpZENoYW5nZShbbmV3VmFsdWUgZG91YmxlVmFsdWVdKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInRpbWVDb250cm9s
U3RhdHVzIl0pCisgICAgICAgICAgICAgICAgcGxheWVyLnRpbWVDb250cm9sU3RhdHVzRGlkQ2hh
bmdlKFtuZXdWYWx1ZSBpbnRWYWx1ZV0pOwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAiZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSJdIHx8IFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpA
ImFsbG93c0V4dGVybmFsUGxheWJhY2siXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5w
bGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiXSB8fCBb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJhbGxvd3NFeHRlcm5hbFBsYXliYWNrIl0pCisgICAg
ICAgICAgICAgICAgcGxheWVyLnBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0RpZENoYW5nZSgpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNS
WVBURURfTUVESUEpCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRv
U3RyaW5nOkAib3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlv
biJdKQotICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPm91dHB1dE9ic2N1cmVkRHVlVG9JbnN1
ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAIm91dHB1dE9i
c2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb24iXSkKKyAgICAgICAgICAg
ICAgICBwbGF5ZXIub3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVj
dGlvbkNoYW5nZWQoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwogI2VuZGlmCi0gICAgICAgICAgICB9
CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHBsYXllci0+bG9nZ2VyKCkud2lsbExvZyhw
bGF5ZXItPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKSAmJiAhKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSB8fCBba2V5UGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24iLCAib2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCIsIHBsYXllci0+bG9nSWRlbnRp
ZmllcigpKTsKLQotICAgICAgICAgICAgICAgIGlmIChzaG91bGRMb2dWYWx1ZSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZHVyYXRpb24iXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVidWcocGxheWVyLT5s
b2dDaGFubmVsKCksIGlkZW50aWZpZXIsICJkaWQgY2hhbmdlICciLCBba2V5UGF0aCBVVEY4U3Ry
aW5nXSwgIicgdG8gIiwgUEFMOjp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVdKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiB2YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhGb3JtYXQ6QCIlQCIsIG5ld1ZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXllci0+bG9nQ2hhbm5lbCgpLCBpZGVudGlmaWVy
LCAiZGlkIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIHRvICIsIFt2YWx1ZVN0
cmluZyBVVEY4U3RyaW5nXSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5sb2dnZXIoKS5kZWJ1ZyhwbGF5
ZXItPmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgd2lsbENoYW5nZSA/ICJ3aWxsIiA6ICJkaWQi
LCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICInIik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0pOworICAgICAgICBpZiAocGxheWVyLmxvZ2dlcigpLndpbGxMb2cocGxheWVy
LmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKSAmJiAhKFtrZXlQYXRoIGlzRXF1YWxU
b1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSB8fCBba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9
IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
biIsICJvYnNlcnZlVmFsdWVGb3JLZXlQYXRoIiwgcGxheWVyLmxvZ0lkZW50aWZpZXIoKSk7CisK
KyAgICAgICAgICAgIGlmIChzaG91bGRMb2dWYWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJkdXJhdGlvbiJdKQorICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXIubG9nZ2VyKCkuZGVidWcocGxheWVyLmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwg
ImRpZCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0byAiLCBQQUw6OnRvTWVk
aWFUaW1lKFtuZXdWYWx1ZSBDTVRpbWVWYWx1ZV0pKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB2YWx1ZVN0cmluZyA9IGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCIsIFtuZXdWYWx1ZSBk
ZXNjcmlwdGlvbl1dKTsKKyAgICAgICAgICAgICAgICAgICAgcGxheWVyLmxvZ2dlcigpLmRlYnVn
KHBsYXllci5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsICJkaWQgY2hhbmdlICciLCBba2V5UGF0
aCBVVEY4U3RyaW5nXSwgIicgdG8gIiwgW3ZhbHVlU3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwbGF5ZXIu
bG9nZ2VyKCkuZGVidWcocGxheWVyLmxvZ0NoYW5uZWwoKSwgaWRlbnRpZmllciwgd2lsbENoYW5n
ZSA/ICJ3aWxsIiA6ICJkaWQiLCAiIGNoYW5nZSAnIiwgW2tleVBhdGggVVRGOFN0cmluZ10sICIn
Iik7CisgICAgICAgIH0KICAgICB9KTsKIH0KIAo=
</data>
<flag name="review"
          id="472144"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446753</attachid>
            <date>2021-12-10 10:30:11 -0800</date>
            <delta_ts>2021-12-11 00:48:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234131-20211210103010.patch</filename>
            <type>text/plain</type>
            <size>19413</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcyOTUzNTU0OTEwMzk4
Y2ZiZTk1YzMzM2U5NzkwZmUyY2IzMTQyZS4uYTc3YTNjZjRlZjU1YjRkZTUzNzdkNzZiYWM2Nzkx
YWY2YWZlYzY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTEwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gLVtBVlBsYXll
ckl0ZW0gbGl2ZVVwZGF0ZUludGVydmFsXSBjYW4gaGFuZyB0aGUgbWFpbiB0aHJlYWQgZm9yIH42
MG1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQx
MzEKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgRGlyZWN0
IHByb3BlcnR5IGFjY2VzcyBvZiBBVkZvdW5kYXRpb24gb2JqZWN0cyBjYW4gdGFrZSB0ZW5zIG9m
IG1pbGxpc2Vjb25kcyB0byByZXR1cm4KKyAgICAgICAgYSB2YWx1ZSwgZXZlbiBmb3Igc2ltcGxl
IHByb3BlcnRpZXMuIFRoaXMgaW1wYWN0cyBzY3JvbGxpbmcgcmVzcG9uc2l2ZW5lc3MuCisKKyAg
ICAgICAgLWxpdmVVcGRhdGVJbnRlcnZhbCBpcyBub3QgS1ZPLW9ic2VydmFibGUsIGJ1dCBvbmx5
IGNoYW5nZXMgd2hlbiAtc2Vla2FibGVUaW1lUmFuZ2VzIGRvZXMKKyAgICAgICAgYXMgd2VsbC4g
UXVlcnkgYW5kIGNhY2hlIHRoYXQgcHJvcGVydHkgZHVyaW5nIEtWTyBvZiAtc2Vla2FibGVUaW1l
UmFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmxpdmVVcGRh
dGVJbnRlcnZhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UpOgorICAgICAgICAo
LVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0
OmNoYW5nZTpjb250ZXh0Ol0pOgorCiAyMDIxLTEyLTEwICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgSU9TdXJmYWNlIG1lbW9yeSBhdHRyaWJ1dGlvbiBp
cyBoYXJkIHRvIHVzZSBpbiBjb25zdHJ1Y3RvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAy
MDBlMWE4ZjlhZmJhMGZjYmJhNWIwYTNlZDcwNGNkMzQxYjQ1MGQ2Li4yN2YxZWQwODJhZjZiZjk3
NjhkZTA0ZTAwNGVmMjU2ZGNmMjUyNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC01Myw2
ICs1Myw3IEBAIE9CSkNfQ0xBU1MgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZTsKIHR5cGVkZWYgc3Ry
dWN0IENHSW1hZ2UgKkNHSW1hZ2VSZWY7CiB0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBp
eGVsQnVmZmVyUmVmOwogdHlwZWRlZiBOU1N0cmluZyAqQVZNZWRpYUNoYXJhY3RlcmlzdGljOwor
dHlwZWRlZiBkb3VibGUgTlNUaW1lSW50ZXJ2YWw7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTAxLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXliYWNrQnVmZmVyRnVsbFdp
bGxDaGFuZ2UoKTsKICAgICB2b2lkIHBsYXliYWNrQnVmZmVyRnVsbERpZENoYW5nZShib29sKTsK
ICAgICB2b2lkIGxvYWRlZFRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+JiYp
OwotICAgIHZvaWQgc2Vla2FibGVUaW1lUmFuZ2VzRGlkQ2hhbmdlKFJldGFpblB0cjxOU0FycmF5
PiYmKTsKKyAgICB2b2lkIHNlZWthYmxlVGltZVJhbmdlc0RpZENoYW5nZShSZXRhaW5QdHI8TlNB
cnJheT4mJiwgTlNUaW1lSW50ZXJ2YWwsIE5TVGltZUludGVydmFsKTsKICAgICB2b2lkIHRyYWNr
c0RpZENoYW5nZShjb25zdCBSZXRhaW5QdHI8TlNBcnJheT4mKTsKICAgICB2b2lkIGhhc0VuYWJs
ZWRBdWRpb0RpZENoYW5nZShib29sKTsKICAgICB2b2lkIHByZXNlbnRhdGlvblNpemVEaWRDaGFu
Z2UoRmxvYXRTaXplKTsKQEAgLTQ2MSw2ICs0NjIsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxpZD4gbV92aWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmdPYnNlcnZlcjsKICAgICBib29sIG1f
aXNHYXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9u
YWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBtX3ZpZGVvRnJhbWVNZXRhZGF0YTsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2FjaGVkU2Vla2FibGVUaW1lUmFuZ2Vz
TGFzdE1vZGlmaWVkVGltZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2
YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggZDdjZjlkNGJmMWZlZDY5YTVmM2NhYzMxZWFmZWU3ZjM5OGE0NTNjMS4uZWJm
MWFiNThhZDU3NDVhNDAyNmJlMDNlZWVhZGM3Yzg4YzBjYmViZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0xMDIsNiArMTAyLDcgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CisjaW1w
b3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90aHJlYWRzL0JpbmFy
eVNlbWFwaG9yZS5oPgpAQCAtMTgzLDYgKzE4NCw3IEBAIEBpbnRlcmZhY2UgV2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFB1c2hEZWxl
CiB7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiBtX3Bs
YXllcjsKICAgICBpbnQgbV9kZWxheUNhbGxiYWNrczsKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBt
X2JhY2tncm91bmRRdWV1ZTsKIH0KIC0oaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJiljYWxsYmFjazsKIC0odm9pZClkaXNjb25u
ZWN0OwpAQCAtMTY3Nyw3ICsxNjc5LDkgQEAgZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmVmZmVjdGl2ZVJhdGUoKSBjb25zdAogZG91YmxlIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUo
KSBjb25zdAogewogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICByZXR1cm4gW21fYXZQbGF5ZXJJdGVtIHNlZWthYmxlVGltZVJh
bmdlc0xhc3RNb2RpZmllZFRpbWVdOworICAgIGlmICghbV9jYWNoZWRTZWVrYWJsZVRpbWVSYW5n
ZXNMYXN0TW9kaWZpZWRUaW1lKQorICAgICAgICBtX2NhY2hlZFNlZWthYmxlVGltZVJhbmdlc0xh
c3RNb2RpZmllZFRpbWUgPSBbbV9hdlBsYXllckl0ZW0gc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1v
ZGlmaWVkVGltZV07CisgICAgcmV0dXJuICptX2NhY2hlZFNlZWthYmxlVGltZVJhbmdlc0xhc3RN
b2RpZmllZFRpbWU7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNjg2LDcgKzE2
OTAsOSBAQCBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2Vla2Fi
bGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpCiBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6bGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QKIHsKICNpZiBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAg
cmV0dXJuIFttX2F2UGxheWVySXRlbSBsaXZlVXBkYXRlSW50ZXJ2YWxdOworICAgIGlmICghbV9j
YWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWwpCisgICAgICAgIG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVy
dmFsID0gW21fYXZQbGF5ZXJJdGVtIGxpdmVVcGRhdGVJbnRlcnZhbF07CisgICAgcmV0dXJuICpt
X2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
QEAgLTMzMjcsOSArMzMzMywxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnBsYXliYWNrQnVmZmVyRnVsbERpZENoYW5nZShib29sIGJ1ZmZlcgogICAgICAgICB1
cGRhdGVTdGF0ZXMoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+JiYgc2Vl
a2FibGVSYW5nZXMpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNl
ZWthYmxlVGltZVJhbmdlc0RpZENoYW5nZShSZXRhaW5QdHI8TlNBcnJheT4mJiBzZWVrYWJsZVJh
bmdlcywgTlNUaW1lSW50ZXJ2YWwgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSwg
TlNUaW1lSW50ZXJ2YWwgbGl2ZVVwZGF0ZUludGVydmFsKQogewogICAgIG1fY2FjaGVkU2Vla2Fi
bGVSYW5nZXMgPSBXVEZNb3ZlKHNlZWthYmxlUmFuZ2VzKTsKKyAgICBtX2NhY2hlZFNlZWthYmxl
VGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgPSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZp
ZWRUaW1lOworICAgIG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsID0gbGl2ZVVwZGF0ZUludGVy
dmFsOwogCiAgICAgc2Vla2FibGVUaW1lUmFuZ2VzQ2hhbmdlZCgpOwogICAgIHVwZGF0ZVN0YXRl
cygpOwpAQCAtMzc3OSw2ICszNzg3LDcgQEAgLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5ZXIKICAgICBpZiAoIXNl
bGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgbV9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7
CisgICAgbV9iYWNrZ3JvdW5kUXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiV2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXIgQmFja2dyb3VuZCBRdWV1ZSIpOwogICAgIHJldHVybiBzZWxmOwogfQogCkBA
IC0zODMwLDEwMSArMzgzOSwxMTkgQEAgLSAodm9pZCljaGFwdGVyTWV0YWRhdGFEaWRDaGFuZ2U6
KE5TTm90aWZpY2F0aW9uICopdW51c2VkTm90aWZpY2F0aW9uCiAKIC0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkgKiljaGFuZ2UgY29udGV4dDooTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlv
bkNvbnRleHQpY29udGV4dAogewotICAgIGVuc3VyZU9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25n
U2VsZiA9IHJldGFpblB0cihzZWxmKSwga2V5UGF0aCA9IHJldGFpblB0cihrZXlQYXRoKSwgY2hh
bmdlID0gcmV0YWluUHRyKGNoYW5nZSksIG9iamVjdCA9IHJldGFpblB0cihvYmplY3QpLCBjb250
ZXh0XSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fcGxheWVyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIG1fcGxheWVyLT5xdWV1ZVRhc2tPbkV2ZW50TG9vcChbcGxheWVyID0g
bV9wbGF5ZXIsIGtleVBhdGggPSBXVEZNb3ZlKGtleVBhdGgpLCBjaGFuZ2UgPSBXVEZNb3ZlKGNo
YW5nZSksIG9iamVjdCA9IFdURk1vdmUob2JqZWN0KSwgY29udGV4dF0gewotICAgICAgICAgICAg
aWYgKCFwbGF5ZXIpCisgICAgYXV0byBxdWV1ZVRhc2tPbkV2ZW50TG9vcFdpdGhQbGF5ZXIgPSBb
c2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKEZ1bmN0aW9uPHZvaWQoTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyYpPiYmIGZ1bmN0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gV1RGTW92ZShzdHJv
bmdTZWxmKSwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOworICAgICAgICAgICAgbV9wbGF5ZXItPnF1ZXVlVGFza09uRXZlbnRMb29wKFtwbGF5
ZXIgPSBtX3BsYXllciwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICAg
ICAgICAgIGlmICghcGxheWVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdl
TmV3S2V5XTsKLSAgICAgICAgICAgIGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9y
S2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOwot
ICAgICAgICAgICAgYm9vbCBzaG91bGRMb2dWYWx1ZSA9ICF3aWxsQ2hhbmdlOworICAgICAgICAg
ICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93
ZWRTY29wZTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigqcGxheWVyKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9OwogCi0gICAgICAgICAgICBpZiAoY29udGV4dCA9PSBN
ZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dEFWUGxheWVyTGF5ZXIpIHsK
LSAgICAgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmVhZHlGb3JE
aXNwbGF5Il0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+Zmlyc3RGcmFtZUF2YWlsYWJs
ZURpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAgICAgICB9CisgICAgaWYg
KGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRQbGF5
ZXJJdGVtICYmIFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInNlZWthYmxlVGltZVJhbmdlcyJd
KSB7CisgICAgICAgIC8vIC1saXZlVXBkYXRlSW50ZXJ2YWwgYW5kIC1zZWVrYWJsZVRpbWVSYW5n
ZXNMYXN0TW9kaWZpZWRUaW1lIGFyZSBub3QgS1ZPIG9ic2VydmFibGUsIGJ1dCBtYXkgYWxzbyBo
YW5nIHdoZW4gcXVlcmllZC4KKyAgICAgICAgLy8gUXVlcnkgdGhlaXIgdmFsdWVzIGhlcmUgb24g
YSBiYWNrZ3JvdW5kIHRocmVhZCwgYW5kIHBhc3MgdG8gdGhlIG1haW4gdGhyZWFkIGZvciBjYWNo
aW5nLgorICAgICAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1
ZUNoYW5nZU5ld0tleV07CisgICAgICAgIGF1dG8gc2Vla2FibGVUaW1lUmFuZ2VzID0gUmV0YWlu
UHRyPE5TQXJyYXk+IHsgbmV3VmFsdWUgfTsKKworICAgICAgICBtX2JhY2tncm91bmRRdWV1ZS0+
ZGlzcGF0Y2goW3NlZWthYmxlVGltZVJhbmdlcyA9IFdURk1vdmUoc2Vla2FibGVUaW1lUmFuZ2Vz
KSwgcGxheWVySXRlbSA9IFJldGFpblB0cjxBVlBsYXllckl0ZW0+IHsgb2JqZWN0IH0sIHF1ZXVl
VGFza09uRXZlbnRMb29wV2l0aFBsYXllcl0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRv
IHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUgPSBbcGxheWVySXRlbSBzZWVrYWJs
ZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lXTsKKyAgICAgICAgICAgIGF1dG8gbGl2ZVVwZGF0
ZUludGVydmFsID0gW3BsYXllckl0ZW0gbGl2ZVVwZGF0ZUludGVydmFsXTsKKyAgICAgICAgICAg
IHF1ZXVlVGFza09uRXZlbnRMb29wV2l0aFBsYXllcihbc2Vla2FibGVUaW1lUmFuZ2VzID0gV1RG
TW92ZShzZWVrYWJsZVRpbWVSYW5nZXMpLCBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRU
aW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWxdIChhdXRvJiBwbGF5ZXIpIG11dGFibGUgeworICAgICAg
ICAgICAgICAgIHBsYXllci5zZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UoV1RGTW92ZShzZWVr
YWJsZVRpbWVSYW5nZXMpLCBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lLCBsaXZl
VXBkYXRlSW50ZXJ2YWwpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KIAot
ICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZh
dGlvbkNvbnRleHRQbGF5ZXJJdGVtVHJhY2spIHsKLSAgICAgICAgICAgICAgICBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiZW5hYmxlZCJdKQotICAgICAgICAgICAgICAgICAgICBwbGF5
ZXItPnRyYWNrRW5hYmxlZERpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci0gICAgICAg
ICAgICB9CisgICAgcXVldWVUYXNrT25FdmVudExvb3BXaXRoUGxheWVyKFtrZXlQYXRoID0gUmV0
YWluUHRyIHsga2V5UGF0aCB9LCBjaGFuZ2UgPSBSZXRhaW5QdHIgeyBjaGFuZ2UgfSwgb2JqZWN0
ID0gUmV0YWluUHRyIHsgb2JqZWN0IH0sIGNvbnRleHRdIChhdXRvJiBwbGF5ZXIpIG11dGFibGUg
eworICAgICAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNo
YW5nZU5ld0tleV07CisgICAgICAgIGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9y
S2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOwor
ICAgICAgICBib29sIHNob3VsZExvZ1ZhbHVlID0gIXdpbGxDaGFuZ2U7CiAKLSAgICAgICAgICAg
IGlmIChjb250ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0
UGxheWVySXRlbSAmJiB3aWxsQ2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRo
IGlzRXF1YWxUb1N0cmluZzpAInBsYXliYWNrTGlrZWx5VG9LZWVwVXAiXSkKLSAgICAgICAgICAg
ICAgICAgICAgcGxheWVyLT5wbGF5YmFja0xpa2VseVRvS2VlcFVwV2lsbENoYW5nZSgpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBsYXliYWNr
QnVmZmVyRW1wdHkiXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFja0J1ZmZl
ckVtcHR5V2lsbENoYW5nZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAInBsYXliYWNrQnVmZmVyRnVsbCJdKQotICAgICAgICAgICAgICAgICAg
ICBwbGF5ZXItPnBsYXliYWNrQnVmZmVyRnVsbFdpbGxDaGFuZ2UoKTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbnRleHQgPT0gTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNlcnZhdGlv
bkNvbnRleHRBVlBsYXllckxheWVyKSB7CisgICAgICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVh
bFRvU3RyaW5nOkAicmVhZHlGb3JEaXNwbGF5Il0pCisgICAgICAgICAgICAgICAgcGxheWVyLmZp
cnN0RnJhbWVBdmFpbGFibGVEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0ID09IE1lZGlhUGxheWVyQVZGb3VuZGF0aW9u
T2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRlbSAmJiAhd2lsbENoYW5nZSkgewotICAgICAgICAg
ICAgICAgIC8vIEEgdmFsdWUgY2hhbmdlZCBmb3IgYW4gQVZQbGF5ZXJJdGVtCi0gICAgICAgICAg
ICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKQotICAgICAgICAg
ICAgICAgICAgICBwbGF5ZXItPnBsYXllckl0ZW1TdGF0dXNEaWRDaGFuZ2UoW25ld1ZhbHVlIGlu
dFZhbHVlXSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAicGxheWJhY2tMaWtlbHlUb0tlZXBVcCJdKQotICAgICAgICAgICAgICAgICAgICBwbGF5
ZXItPnBsYXliYWNrTGlrZWx5VG9LZWVwVXBEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0p
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBs
YXliYWNrQnVmZmVyRW1wdHkiXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFj
a0J1ZmZlckVtcHR5RGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZlckZ1
bGwiXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5wbGF5YmFja0J1ZmZlckZ1bGxEaWRD
aGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImFzc2V0Il0pIHsKLSAgICAgICAgICAgICAgICAgICAg
cGxheWVyLT5zZXRBc3NldChSZXRhaW5QdHI8aWQ+KG5ld1ZhbHVlKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJsb2FkZWRUaW1lUmFuZ2VzIl0pCi0gICAgICAg
ICAgICAgICAgICAgIHBsYXllci0+bG9hZGVkVGltZVJhbmdlc0RpZENoYW5nZShSZXRhaW5QdHI8
TlNBcnJheT4obmV3VmFsdWUpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkKLSAgICAgICAgICAgICAgICAg
ICAgcGxheWVyLT5zZWVrYWJsZVRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+
KG5ld1ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRv
U3RyaW5nOkAidHJhY2tzIl0pIHsKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT50cmFja3NE
aWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHNob3VsZExvZ1ZhbHVlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJoYXNFbmFibGVkQXVkaW8iXSkKLSAgICAgICAgICAg
ICAgICAgICAgcGxheWVyLT5oYXNFbmFibGVkQXVkaW9EaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xW
YWx1ZV0pOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmlu
ZzpAInByZXNlbnRhdGlvblNpemUiXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5wcmVz
ZW50YXRpb25TaXplRGlkQ2hhbmdlKEZsb2F0U2l6ZShbbmV3VmFsdWUgc2l6ZVZhbHVlXSkpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImR1cmF0
aW9uIl0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+ZHVyYXRpb25EaWRDaGFuZ2UoUEFM
Ojp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVdKSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RSZXZlcnNlIl0p
Ci0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+Y2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hhbmdl
KFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJjYW5QbGF5RmFzdEZvcndhcmQiXSkKLSAgICAgICAgICAgICAg
ICAgICAgcGxheWVyLT5jYW5QbGF5RmFzdEZvcndhcmREaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xW
YWx1ZV0pOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXll
ckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllckl0ZW1UcmFjaykgeworICAgICAg
ICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImVuYWJsZWQiXSkKKyAgICAgICAg
ICAgICAgICBwbGF5ZXIudHJhY2tFbmFibGVkRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVd
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb250ZXh0ID09IE1lZGlhUGxheWVyQVZGb3Vu
ZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRlbSAmJiB3aWxsQ2hhbmdlKSB7CisgICAg
ICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tMaWtlbHlUb0tl
ZXBVcCJdKQorICAgICAgICAgICAgICAgIHBsYXllci5wbGF5YmFja0xpa2VseVRvS2VlcFVwV2ls
bENoYW5nZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAicGxheWJhY2tCdWZmZXJFbXB0eSJdKQorICAgICAgICAgICAgICAgIHBsYXllci5wbGF5YmFj
a0J1ZmZlckVtcHR5V2lsbENoYW5nZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAicGxheWJhY2tCdWZmZXJGdWxsIl0pCisgICAgICAgICAgICAgICAg
cGxheWVyLnBsYXliYWNrQnVmZmVyRnVsbFdpbGxDaGFuZ2UoKTsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoY29udGV4dCA9PSBNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9u
Q29udGV4dFBsYXllciAmJiAhd2lsbENoYW5nZSkgewotICAgICAgICAgICAgICAgIC8vIEEgdmFs
dWUgY2hhbmdlZCBmb3IgYW4gQVZQbGF5ZXIuCi0gICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRo
IGlzRXF1YWxUb1N0cmluZzpAInJhdGUiXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5y
YXRlRGlkQ2hhbmdlKFtuZXdWYWx1ZSBkb3VibGVWYWx1ZV0pOwotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInRpbWVDb250cm9sU3RhdHVzIl0pCi0g
ICAgICAgICAgICAgICAgICAgIHBsYXllci0+dGltZUNvbnRyb2xTdGF0dXNEaWRDaGFuZ2UoW25l
d1ZhbHVlIGludFZhbHVlXSk7CisgICAgICAgIGlmIChjb250ZXh0ID09IE1lZGlhUGxheWVyQVZG
b3VuZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVySXRlbSAmJiAhd2lsbENoYW5nZSkgewor
ICAgICAgICAgICAgLy8gQSB2YWx1ZSBjaGFuZ2VkIGZvciBhbiBBVlBsYXllckl0ZW0KKyAgICAg
ICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkKKyAgICAgICAg
ICAgICAgICBwbGF5ZXIucGxheWVySXRlbVN0YXR1c0RpZENoYW5nZShbbmV3VmFsdWUgaW50VmFs
dWVdKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInBs
YXliYWNrTGlrZWx5VG9LZWVwVXAiXSkKKyAgICAgICAgICAgICAgICBwbGF5ZXIucGxheWJhY2tM
aWtlbHlUb0tlZXBVcERpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5YmFja0J1ZmZlckVtcHR5
Il0pCisgICAgICAgICAgICAgICAgcGxheWVyLnBsYXliYWNrQnVmZmVyRW1wdHlEaWRDaGFuZ2Uo
W25ld1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAgICAgICAgZWxzZSBpZiAoW2tleVBhdGggaXNF
cXVhbFRvU3RyaW5nOkAicGxheWJhY2tCdWZmZXJGdWxsIl0pCisgICAgICAgICAgICAgICAgcGxh
eWVyLnBsYXliYWNrQnVmZmVyRnVsbERpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJhc3NldCJdKSB7
CisgICAgICAgICAgICAgICAgcGxheWVyLnNldEFzc2V0KFJldGFpblB0cjxpZD4obmV3VmFsdWUp
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRMb2dWYWx1ZSA9IGZhbHNlOworICAgICAgICAgICAg
fSBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJsb2FkZWRUaW1lUmFuZ2VzIl0p
CisgICAgICAgICAgICAgICAgcGxheWVyLmxvYWRlZFRpbWVSYW5nZXNEaWRDaGFuZ2UoUmV0YWlu
UHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7CisgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJ0cmFja3MiXSkgeworICAgICAgICAgICAgICAgIHBsYXllci50cmFj
a3NEaWRDaGFuZ2UoUmV0YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgc2hvdWxkTG9nVmFsdWUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiaGFzRW5hYmxlZEF1ZGlvIl0pCisgICAgICAgICAgICAgICAg
cGxheWVyLmhhc0VuYWJsZWRBdWRpb0RpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJwcmVzZW50YXRp
b25TaXplIl0pCisgICAgICAgICAgICAgICAgcGxheWVyLnByZXNlbnRhdGlvblNpemVEaWRDaGFu
Z2UoRmxvYXRTaXplKFtuZXdWYWx1ZSBzaXplVmFsdWVdKSk7CisgICAgICAgICAgICBlbHNlIGlm
IChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJkdXJhdGlvbiJdKQorICAgICAgICAgICAgICAg
IHBsYXllci5kdXJhdGlvbkRpZENoYW5nZShQQUw6OnRvTWVkaWFUaW1lKFtuZXdWYWx1ZSBDTVRp
bWVWYWx1ZV0pKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmlu
ZzpAImNhblBsYXlGYXN0UmV2ZXJzZSJdKQorICAgICAgICAgICAgICAgIHBsYXllci5jYW5QbGF5
RmFzdFJldmVyc2VEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0pOworICAgICAgICAgICAg
ZWxzZSBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiY2FuUGxheUZhc3RGb3J3YXJkIl0p
CisgICAgICAgICAgICAgICAgcGxheWVyLmNhblBsYXlGYXN0Rm9yd2FyZERpZENoYW5nZShbbmV3
VmFsdWUgYm9vbFZhbHVlXSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29udGV4dCA9PSBN
ZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllciAmJiAhd2lsbENo
YW5nZSkgeworICAgICAgICAgICAgLy8gQSB2YWx1ZSBjaGFuZ2VkIGZvciBhbiBBVlBsYXllci4K
KyAgICAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJyYXRlIl0pCisgICAg
ICAgICAgICAgICAgcGxheWVyLnJhdGVEaWRDaGFuZ2UoW25ld1ZhbHVlIGRvdWJsZVZhbHVlXSk7
CisgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0aW1lQ29u
dHJvbFN0YXR1cyJdKQorICAgICAgICAgICAgICAgIHBsYXllci50aW1lQ29udHJvbFN0YXR1c0Rp
ZENoYW5nZShbbmV3VmFsdWUgaW50VmFsdWVdKTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0
cmluZzpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiXSB8fCBba2V5UGF0aCBpc0VxdWFsVG9TdHJp
bmc6QCJhbGxvd3NFeHRlcm5hbFBsYXliYWNrIl0pCi0gICAgICAgICAgICAgICAgICAgIHBsYXll
ci0+cGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICBlbHNl
IGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJleHRlcm5hbFBsYXliYWNrQWN0aXZlIl0g
fHwgW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiYWxsb3dzRXh0ZXJuYWxQbGF5YmFjayJdKQor
ICAgICAgICAgICAgICAgIHBsYXllci5wbGF5YmFja1RhcmdldElzV2lyZWxlc3NEaWRDaGFuZ2Uo
KTsKICNlbmRpZgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFtrZXlQYXRoIGlzRXF1
YWxUb1N0cmluZzpAIm91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3Rl
Y3Rpb24iXSkKLSAgICAgICAgICAgICAgICAgICAgcGxheWVyLT5vdXRwdXRPYnNjdXJlZER1ZVRv
SW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChbbmV3VmFsdWUgYm9vbFZhbHVl
XSk7CisgICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJvdXRw
dXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uIl0pCisgICAgICAg
ICAgICAgICAgcGxheWVyLm91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFBy
b3RlY3Rpb25DaGFuZ2VkKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKICNlbmRpZgotICAgICAgICAg
ICAgfQorICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChwbGF5ZXItPmxvZ2dlcigpLndpbGxM
b2cocGxheWVyLT5sb2dDaGFubmVsKCksIFdURkxvZ0xldmVsOjpEZWJ1ZykgJiYgIShba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJsb2FkZWRUaW1lUmFuZ2VzIl0gfHwgW2tleVBhdGggaXNFcXVh
bFRvU3RyaW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBpZGVudGlmaWVyID0gTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uIiwgIm9ic2VydmVWYWx1ZUZvcktleVBhdGgiLCBwbGF5ZXItPmxvZ0lk
ZW50aWZpZXIoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc2hvdWxkTG9nVmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImR1cmF0aW9u
Il0pCi0gICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXItPmxvZ2dlcigpLmRlYnVnKHBsYXll
ci0+bG9nQ2hhbm5lbCgpLCBpZGVudGlmaWVyLCAiZGlkIGNoYW5nZSAnIiwgW2tleVBhdGggVVRG
OFN0cmluZ10sICInIHRvICIsIFBBTDo6dG9NZWRpYVRpbWUoW25ld1ZhbHVlIENNVGltZVZhbHVl
XSkpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJldGFpblB0cjxOU1N0cmluZz4gdmFsdWVTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRm9ybWF0OkAiJUAiLCBuZXdWYWx1ZV0pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcGxheWVyLT5sb2dnZXIoKS5kZWJ1ZyhwbGF5ZXItPmxvZ0NoYW5uZWwoKSwgaWRlbnRp
ZmllciwgImRpZCBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyB0byAiLCBbdmFs
dWVTdHJpbmcgVVRGOFN0cmluZ10pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBsYXllci0+bG9nZ2VyKCkuZGVidWco
cGxheWVyLT5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsIHdpbGxDaGFuZ2UgPyAid2lsbCIgOiAi
ZGlkIiwgIiBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmddLCAiJyIpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9KTsKKyAgICAgICAgaWYgKHBsYXllci5sb2dnZXIoKS53aWxsTG9nKHBs
YXllci5sb2dDaGFubmVsKCksIFdURkxvZ0xldmVsOjpEZWJ1ZykgJiYgIShba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJsb2FkZWRUaW1lUmFuZ2VzIl0gfHwgW2tleVBhdGggaXNFcXVhbFRvU3Ry
aW5nOkAic2Vla2FibGVUaW1lUmFuZ2VzIl0pKSB7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24iLCAib2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCIsIHBsYXllci5sb2dJZGVudGlmaWVyKCkp
OworCisgICAgICAgICAgICBpZiAoc2hvdWxkTG9nVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiZHVyYXRpb24iXSkKKyAgICAgICAgICAgICAg
ICAgICAgcGxheWVyLmxvZ2dlcigpLmRlYnVnKHBsYXllci5sb2dDaGFubmVsKCksIGlkZW50aWZp
ZXIsICJkaWQgY2hhbmdlICciLCBba2V5UGF0aCBVVEY4U3RyaW5nXSwgIicgdG8gIiwgUEFMOjp0
b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVdKSk7CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gdmFsdWVTdHJpbmcg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAiLCBbbmV3VmFs
dWUgZGVzY3JpcHRpb25dXSk7CisgICAgICAgICAgICAgICAgICAgIHBsYXllci5sb2dnZXIoKS5k
ZWJ1ZyhwbGF5ZXIubG9nQ2hhbm5lbCgpLCBpZGVudGlmaWVyLCAiZGlkIGNoYW5nZSAnIiwgW2tl
eVBhdGggVVRGOFN0cmluZ10sICInIHRvICIsIFt2YWx1ZVN0cmluZyBVVEY4U3RyaW5nXSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcGxh
eWVyLmxvZ2dlcigpLmRlYnVnKHBsYXllci5sb2dDaGFubmVsKCksIGlkZW50aWZpZXIsIHdpbGxD
aGFuZ2UgPyAid2lsbCIgOiAiZGlkIiwgIiBjaGFuZ2UgJyIsIFtrZXlQYXRoIFVURjhTdHJpbmdd
LCAiJyIpOworICAgICAgICB9CiAgICAgfSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>