<?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>185459</bug_id>
          
          <creation_ts>2018-05-08 18:21:42 -0700</creation_ts>
          <short_desc>Download and present System Preview</short_desc>
          <delta_ts>2018-05-15 09:44:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1422091</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-05-08 18:21:42 -0700</bug_when>
    <thetext>Download and present System Preview</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422092</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-08 18:23:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/40079228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422093</commentid>
    <comment_count>2</comment_count>
      <attachid>339909</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-05-08 18:28:43 -0700</bug_when>
    <thetext>Created attachment 339909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423862</commentid>
    <comment_count>3</comment_count>
      <attachid>340378</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-05-14 16:54:22 -0700</bug_when>
    <thetext>Created attachment 340378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423868</commentid>
    <comment_count>4</comment_count>
      <attachid>340378</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-14 17:08:11 -0700</bug_when>
    <thetext>Comment on attachment 340378
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:88
&gt; +#if USE(SYSTEM_PREVIEW)

I’m sure you could use an early return and avoid conditionalizing quite so much chaos here.

&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:96
&gt; +    if (downloadProxy.isSystemPreviewDownload()) {

I wonder if in all of these we could hide the logic away in some System Preview class instead, make it conform to the normal delegate protocol, and just change where we send the messages if it’s a system preview download? Can you get enough information back out of the objects handed to the delegate?

&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:121
&gt; +        if (m_delegateMethods.downloadDidReceiveData)

I still think these should all be early returns

&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:208
&gt; +#if USE(SYSTEM_PREVIEW)

Why is this in the else? If the delegate implements that method we should skip the system preview path??

&gt; Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:86
&gt; +        [_itemProvider registerItemForTypeIdentifier:contentType loadHandler:^(NSItemProviderCompletionHandler _Null_unspecified completionHandler, Class _Null_unspecified __unsafe_unretained expectedValueClass, NSDictionary * _Null_unspecified options) {

Get those _Null_unspecifieds out of there?

&gt; Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:171
&gt; +        [m_qlPreviewController.get() dismissViewControllerAnimated:(BOOL)YES completion:nullptr];

(BOOL)YES WHAT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423878</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-05-14 17:49:07 -0700</bug_when>
    <thetext>please fix build errors too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423967</commentid>
    <comment_count>6</comment_count>
      <attachid>340378</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-05-15 01:47:14 -0700</bug_when>
    <thetext>Comment on attachment 340378
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:88
&gt;&gt; +#if USE(SYSTEM_PREVIEW)
&gt; 
&gt; I’m sure you could use an early return and avoid conditionalizing quite so much chaos here.

I&apos;m not sure. It definitely is a mess, but I can&apos;t think of a better way to do it.

Well, the best way would be if I could install another DownloadClient just for this task. I should probably investigate that. A special client that handles these types of downloads.
https://bugs.webkit.org/show_bug.cgi?id=185646

&gt;&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:96
&gt;&gt; +    if (downloadProxy.isSystemPreviewDownload()) {
&gt; 
&gt; I wonder if in all of these we could hide the logic away in some System Preview class instead, make it conform to the normal delegate protocol, and just change where we send the messages if it’s a system preview download? Can you get enough information back out of the objects handed to the delegate?

Yes, I think this is a good idea. I&apos;ll put that as an option in the bug above.

I&apos;m not sure it will make things cleaner, since there still will be only one official client, and one official delegate. So something needs to do a test on the type of download to decide to use a different delegate or different client.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:121
&gt;&gt; +        if (m_delegateMethods.downloadDidReceiveData)
&gt; 
&gt; I still think these should all be early returns

Yeah, I&apos;ll return after system preview to remove one level of braces (and one ugly #if)

&gt;&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.mm:208
&gt;&gt; +#if USE(SYSTEM_PREVIEW)
&gt; 
&gt; Why is this in the else? If the delegate implements that method we should skip the system preview path??

This was a mistake.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:86
&gt;&gt; +        [_itemProvider registerItemForTypeIdentifier:contentType loadHandler:^(NSItemProviderCompletionHandler _Null_unspecified completionHandler, Class _Null_unspecified __unsafe_unretained expectedValueClass, NSDictionary * _Null_unspecified options) {
&gt; 
&gt; Get those _Null_unspecifieds out of there?

Killed!

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:171
&gt;&gt; +        [m_qlPreviewController.get() dismissViewControllerAnimated:(BOOL)YES completion:nullptr];
&gt; 
&gt; (BOOL)YES WHAT?

Oops. Copy and paste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423971</commentid>
    <comment_count>7</comment_count>
      <attachid>340400</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-05-15 02:18:15 -0700</bug_when>
    <thetext>Created attachment 340400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423972</commentid>
    <comment_count>8</comment_count>
      <attachid>340400</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-05-15 02:40:52 -0700</bug_when>
    <thetext>Comment on attachment 340400
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.h:85
&gt; +#if PLATFORM(IOS) &amp;&amp; USE(SYSTEM_PREVIEW)

This variable is used in a few places that could potentially cause build errors because the code is not wrapped up in this specific conditional.

&gt; Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:77
&gt; +    if (!_item) {

Consider reversing this with an early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423973</commentid>
    <comment_count>9</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-05-15 02:50:43 -0700</bug_when>
    <thetext>Committed r231795: &lt;https://trac.webkit.org/changeset/231795&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423974</commentid>
    <comment_count>10</comment_count>
      <attachid>340400</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-05-15 03:01:21 -0700</bug_when>
    <thetext>Comment on attachment 340400
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.h:85
&gt;&gt; +#if PLATFORM(IOS) &amp;&amp; USE(SYSTEM_PREVIEW)
&gt; 
&gt; This variable is used in a few places that could potentially cause build errors because the code is not wrapped up in this specific conditional.

You&apos;re right. It works because SYSTEM_PREVIEW is only IOS at the moment.

I&apos;ll add IOS around the places that use it.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:77
&gt;&gt; +    if (!_item) {
&gt; 
&gt; Consider reversing this with an early return.

But the function always returns _item.get()? This is basically initialize-if-you-don&apos;t-yet-have-it.

Or am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424047</commentid>
    <comment_count>11</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-05-15 09:44:04 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #10)
&gt; Comment on attachment 340400 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340400&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/Cocoa/DownloadClient.h:85
&gt; &gt;&gt; +#if PLATFORM(IOS) &amp;&amp; USE(SYSTEM_PREVIEW)
&gt; &gt; 
&gt; &gt; This variable is used in a few places that could potentially cause build errors because the code is not wrapped up in this specific conditional.
&gt; 
&gt; You&apos;re right. It works because SYSTEM_PREVIEW is only IOS at the moment.
&gt; 
&gt; I&apos;ll add IOS around the places that use it.
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:77
&gt; &gt;&gt; +    if (!_item) {
&gt; &gt; 
&gt; &gt; Consider reversing this with an early return.
&gt; 
&gt; But the function always returns _item.get()? This is basically
&gt; initialize-if-you-don&apos;t-yet-have-it.
&gt; 
&gt; Or am I missing something?
There would be one repeated line of code. But the entire function is essentially inside the then clause, so doing the reverse would reduce indentation, get rid of a clause, and improve readability.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339909</attachid>
            <date>2018-05-08 18:28:43 -0700</date>
            <delta_ts>2018-05-08 18:58:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185459-20180508182843.patch</filename>
            <type>text/plain</type>
            <size>20982</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlMTk1Y2U0NjcyZWRmM2Ey
OGUwNDJkOTcxNDYwNGM3MTU1ZDZlOTIuLjFjYzdhY2MxYjMyZDhhNDZmYTk1ODFlZWRiMGQwYzBk
M2M2NmEyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTgtMDUtMDggIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIERvd25sb2FkIGFuZCBwcmVzZW50IFN5
c3RlbSBQcmV2aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU0NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwMDc5MjI4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4dGVuZCBEb3dubG9hZENs
aWVudCBzbyB0aGF0IGl0IGNhbiBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUKKyAgICAgICAgdGhlIGRv
d25sb2FkIHdhcyB0cmlnZ2VyZWQgYnkgYSBTeXN0ZW0gUHJldmlldy4gSW4gdGhpcyBzaXR1YXRp
b24KKyAgICAgICAgdGhlIHJlc3VsdCAoYW5kIHByb2dyZXNzKSBhcmUgcGlwZWQgaW50byBRdWlj
a0xvb2sgdmlhIHRoZSBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci4KKworICAgICAgICBUaGUgRG93
bmxvYWRQcm94eSBjbGFzcyBpcyBhbHNvIGV4dGVuZGVkIHRvIGhhbmRsZSB0aGUgZGVzdGluYXRp
b24KKyAgICAgICAgZmlsZW5hbWUgYW5kIHRoZSBzaXplIG9mIHRoZSBjb250ZW50LgorCisgICAg
ICAgIExhc3RseSwgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIgaXMgdXBkYXRlZCB0byBoYXZlIGEg
c3RhcnQoKSwgc2hvdygpCisgICAgICAgIGFuZCBoaWRlKCkgaW50ZXJmYWNlLCBhbmQgbm8gbG9u
Z2VyIGFkanVzdHMgcGFnZSBuYXZpZ2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50Lm1tOiBIYW5kbGUgdGhlIFN5c3RlbVByZXZpZXcgY2FzZSwgd2hpY2gK
KyAgICAgICAgZG9lc24ndCBoYXZlIGEgZG93bmxvYWQgZGVsZWdhdGUsIGJ1dCBpbnN0ZWFkIG5l
ZWRzIHRvIGNvbW11bmljYXRlIHdpdGgKKyAgICAgICAgdGhlIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyLCBpZiBvbmUgZXhpc3RzLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlk
U3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZp
bmlzaCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXJDb2NvYS5tbTogSW1wbGVtZW50IHRoZSBuZXcgQVBJLgorICAgICAgICAoLVtfV0tQcmV2aWV3
Q29udHJvbGxlckRhdGFTb3VyY2UgaW5pdF0pOgorICAgICAgICAoLVtfV0tQcmV2aWV3Q29udHJv
bGxlckRhdGFTb3VyY2UgcHJldmlld0NvbnRyb2xsZXI6cHJldmlld0l0ZW1BdEluZGV4Ol0pOgor
ICAgICAgICAoLVtfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2Ugc2V0UHJvZ3Jlc3M6XSk6
CisgICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6XSk6Cisg
ICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGVsZWdhdGUgcHJldmlld0NvbnRyb2xsZXJE
aWREaXNtaXNzOl0pOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dXBkYXRl
UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Zmlu
aXNoKToKKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmhpZGUpOgor
ICAgICAgICAoLVtfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgaW5pdFdpdGhVUkw6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGVsZWdhdGUgcHJldmll
d0NvbnRyb2xsZXJXaWxsRGlzbWlzczpdKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3lz
dGVtUHJldmlld0NvbnRyb2xsZXI6OnNob3dQcmV2aWV3KTogRGVsZXRlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOiBUcmFjayB0aGUgZGVzdGluYXRp
b24gZmlsZW5hbWUKKyAgICAgICAgYW5kIHRoZSBzaXplIG9mIHRoZSBjb250ZW50LgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZXN0aW5hdGlvbkZpbGVuYW1lIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RGVzdGluYXRpb25GaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmV4cGVjdGVkQ29udGVudExlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldEV4cGVjdGVkQ29udGVudExl
bmd0aCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmJ5dGVzTG9hZGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0Qnl0ZXNMb2FkZWQpOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcDogVXBkYXRlIGZv
ciBuZXcgQVBJLgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6c2Vu
ZFBhZ2VCYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJldmlld0NvbnRy
b2xsZXI6OmNhblByZXZpZXcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlcjo6c2hvd1ByZXZpZXcpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2NvbmZpZ3VyYXRpb25QcmVmZXJl
bmNlVmFsdWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE4LTA1LTA4ICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTeXN0ZW0gUHJldmlldyBsaW5rcyBz
aG91bGQgdHJpZ2dlciBhIGRvd25sb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IGI2NTM1OGU3MjFmM2Y2Y2NiZDY1OGYyYjQxOTdk
MzJiYzc1M2ZhMWUuLmFkZjgwYTUxMjUwOWM3NTIxMDIwYjBhMDRhYTA0NGYyZjBhN2NmZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBA
IC0zMiwxMSArMzIsMTQgQEAKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5l
ci5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAi
RG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKICNp
bXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tOU1VS
TEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgorI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tEb3du
bG9hZEludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTY5LDIwICs3Miw0NyBAQCBEb3du
bG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVn
YXRlKQogCiB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0
OndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgIGlmIChkb3dubG9hZFByb3h5LnJlcXVlc3Qo
KS5pc1N5c3RlbVByZXZpZXcoKSkgeworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICAgICAg
V2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKTsK
KyAgICAgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcigpLT5zdGFydCgpOworI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkU3RhcnQpCisgICAgICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICB9CiB9
CiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9u
c2UoKV07CisgICAgaWYgKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLmlzU3lzdGVtUHJldmlldygp
KSB7CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgICAgICBkb3dubG9hZFByb3h5LnNldEV4
cGVjdGVkQ29udGVudExlbmd0aChyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7Cisg
ICAgICAgIGRvd25sb2FkUHJveHkuc2V0Qnl0ZXNMb2FkZWQoMCk7CisgICAgICAgIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCk7CisgICAgICAg
IGlmICh3ZWJQYWdlKQorICAgICAgICAgICAgd2ViUGFnZS0+c3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIoKS0+dXBkYXRlUHJvZ3Jlc3MoMCk7CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCisgICAgICAg
ICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKKyAgICB9CiB9CiAKIHZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoKQogewotICAgIGlmIChtX2RlbGVn
YXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQotICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpsZW5ndGhdOwor
ICAgIGlmIChkb3dubG9hZFByb3h5LnJlcXVlc3QoKS5pc1N5c3RlbVByZXZpZXcoKSkgeworI2lm
IFVTRShTWVNURU1fUFJFVklFVykKKyAgICAgICAgZG93bmxvYWRQcm94eS5zZXRCeXRlc0xvYWRl
ZChkb3dubG9hZFByb3h5LmJ5dGVzTG9hZGVkKCkgKyBsZW5ndGgpOworICAgICAgICBXZWJQYWdl
UHJveHkqIHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpOworICAgICAg
ICBpZiAod2ViUGFnZSkKKyAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3RlbVByZXZpZXdDb250cm9s
bGVyKCktPnVwZGF0ZVByb2dyZXNzKHN0YXRpY19jYXN0PGZsb2F0Pihkb3dubG9hZFByb3h5LmJ5
dGVzTG9hZGVkKCkpIC8gZG93bmxvYWRQcm94eS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7Cisj
ZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxv
YWREaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0aF07CisgICAgfQogfQogCiB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKQEAgLTEyNiw4ICsxNTYs
MTIgQEAgdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWQKIAogdm9pZCBEb3dubG9hZENsaWVudDo6ZGlk
Q3JlYXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQogewotICAgIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpk
ZXN0aW5hdGlvbl07CisgICAgaWYgKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLmlzU3lzdGVtUHJl
dmlldygpKQorICAgICAgICBkb3dubG9hZFByb3h5LnNldERlc3RpbmF0aW9uRmlsZW5hbWUoZGVz
dGluYXRpb24pOworICAgIGVsc2UgeworICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93
bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0
aW9uXTsKKyAgICB9CiB9CiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCkBAIC0xNDksMTkg
KzE4MywzNSBAQCB2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvdwogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFsbG93
T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKICAgICB9
IGVsc2UgewotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21w
bGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEJPT0wsIE5TU3RyaW5nICopPjo6ZnJvbUNhbGxh
YmxlKFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBO
U1N0cmluZyAqZGVzdGluYXRpb24pIHsKLSAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0
aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6
IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwotICAgICAgICB9KS5nZXQoKV07Cisg
ICAgICAgIGlmIChkb3dubG9hZFByb3h5LnJlcXVlc3QoKS5pc1N5c3RlbVByZXZpZXcoKSkgewor
ICAgICAgICAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlN5c3RlbVByZXZpZXdzIik7CisgICAg
ICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbdGVtcG9yYXJ5RGlyZWN0b3J5IHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlbmFtZV07CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6WWVzLCBkZXN0aW5hdGlvbik7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEJPT0wsIE5TU3RyaW5nICopPjo6ZnJvbUNh
bGxhYmxlKFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1f
ZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRl
LCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hlY2tlci0+
Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFs
bG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKKyAg
ICAgICAgICAgIH0pLmdldCgpXTsKKyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBEb3dubG9h
ZENsaWVudDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gp
Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXTsKKyAgICBpZiAoZG93bmxvYWRQcm94eS5yZXF1ZXN0KCkuaXNTeXN0ZW1QcmV2aWV3
KCkpIHsKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgICAgIFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCk7CisgICAgICAgIGlmICh3ZWJQ
YWdlKSB7CisgICAgICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOihOU1N0cmluZyAqKWRvd25sb2FkUHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgp
XTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3RlbVByZXZpZXdDb250cm9sbGVyKCktPmZpbmlz
aChXZWJDb3JlOjpVUkwoZGVzdGluYXRpb25VUkwpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNo
KQorICAgICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93
bmxvYWRQcm94eSldOworICAgIH0KIH0KIAogdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXgg
ZDIzYTIyZTBjYmEzMWQzZTVlMjkxODhlZTE1Mzc0NDJiNTg3MGU4Ni4uNTFjZDA2NzhmNjhmN2Zk
YTU5MWE3ZWI3OTlkZDFmOThmMTAyNDU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBA
IC0zMSw4ICszMSwxMCBAQAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgogCisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZp
Y2VzLmg+CiAjaW1wb3J0IDxRdWlja0xvb2svUXVpY2tMb29rLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SVZpZXdDb250cm9sbGVyLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKQEAgLTQxLDIyICs0MywyNCBAQAogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFF1aWNrTG9vaykK
IFNPRlRfTElOS19DTEFTUyhRdWlja0xvb2ssIFFMUHJldmlld0NvbnRyb2xsZXIpOworU09GVF9M
SU5LX0NMQVNTKFF1aWNrTG9vaywgUUxJdGVtKTsKIAogQGludGVyZmFjZSBfV0tQcmV2aWV3Q29u
dHJvbGxlckRhdGFTb3VyY2UgOiBOU09iamVjdCA8UUxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3Vy
Y2U+IHsKKyAgICBSZXRhaW5QdHI8TlNJdGVtUHJvdmlkZXI+IF9pdGVtUHJvdmlkZXI7CisgICAg
UmV0YWluUHRyPFFMSXRlbT4gX2l0ZW07CiB9OwogCi1AcHJvcGVydHkgKG5vbmF0b21pYykgV2Vi
Q29yZTo6VVJMIHVybDsKK0Bwcm9wZXJ0eSAoc3Ryb25nKSBOU0l0ZW1Qcm92aWRlckNvbXBsZXRp
b25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBf
V0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UKIAotLSAoaWQpaW5pdFdpdGhVUkw6KGNvbnN0
IFdlYkNvcmU6OlVSTCYpdXJsCistIChpZClpbml0CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBzZWxmLnVybCA9IHVybDsKICAg
ICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNjcsNyArNzEsMzAgQEAgU09GVF9MSU5LX0NMQVNTKFF1
aWNrTG9vaywgUUxQcmV2aWV3Q29udHJvbGxlcik7CiAKIC0gKGlkPFFMUHJldmlld0l0ZW0+KXBy
ZXZpZXdDb250cm9sbGVyOihRTFByZXZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBwcmV2aWV3
SXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleAogewotICAgIHJldHVybiAoTlNVUkwqKXNlbGYu
dXJsOworICAgIGlmICghX2l0ZW0pIHsKKyAgICAgICAgX2l0ZW1Qcm92aWRlciA9IGFkb3B0TlMo
W1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgICAgICBOU1N0cmluZyAqY29udGVu
dFR5cGUgPSBAImNvbS5waXhhci51bml2ZXJzYWwtc2NlbmUtZGVzY3JpcHRpb24tbW9iaWxlIjsK
KyAgICAgICAgX2l0ZW0gPSBhZG9wdE5TKFthbGxvY1FMSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhQ
cmV2aWV3SXRlbVByb3ZpZGVyOl9pdGVtUHJvdmlkZXIuZ2V0KCkgY29udGVudFR5cGU6Y29udGVu
dFR5cGUgcHJldmlld1RpdGxlOkAiUHJldmlldyIgZmlsZVNpemU6QCgwKV0pOworICAgICAgICBb
X2l0ZW0gc2V0VXNlTG9hZGluZ1RpbWVvdXQ6Tk9dOworCisgICAgICAgIFtfaXRlbVByb3ZpZGVy
IHJlZ2lzdGVySXRlbUZvclR5cGVJZGVudGlmaWVyOmNvbnRlbnRUeXBlIGxvYWRIYW5kbGVyOl4o
TlNJdGVtUHJvdmlkZXJDb21wbGV0aW9uSGFuZGxlciBfTnVsbF91bnNwZWNpZmllZCBjb21wbGV0
aW9uSGFuZGxlciwgQ2xhc3MgX051bGxfdW5zcGVjaWZpZWQgX191bnNhZmVfdW5yZXRhaW5lZCBl
eHBlY3RlZFZhbHVlQ2xhc3MsIE5TRGljdGlvbmFyeSAqIF9OdWxsX3Vuc3BlY2lmaWVkIG9wdGlv
bnMpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBnZXQgY2FsbGVkIG9uY2UgdGhlIGRvd25s
b2FkIGNvbXBsZXRlcy4KKyAgICAgICAgICAgIHNlbGYuY29tcGxldGlvbkhhbmRsZXIgPSBjb21w
bGV0aW9uSGFuZGxlcjsKKyAgICAgICAgfV07CisgICAgfQorICAgIHJldHVybiBfaXRlbS5nZXQo
KTsKK30KKworLSAodm9pZClzZXRQcm9ncmVzczooZmxvYXQpcHJvZ3Jlc3MKK3sKKyAgICBpZiAo
X2l0ZW0pCisgICAgICAgIFtfaXRlbSBzZXRQcmV2aWV3SXRlbVByb3ZpZGVyUHJvZ3Jlc3M6QChw
cm9ncmVzcyldOworfQorCistICh2b2lkKWZpbmlzaDooV2ViQ29yZTo6VVJMKXVybAoreworICAg
IGlmIChzZWxmLmNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBzZWxmLmNvbXBsZXRpb25IYW5k
bGVyKChOU1VSTCopdXJsLCBuaWwpOwogfQogCiBAZW5kCkBAIC04OCwxMCArMTE1LDEwIEBAIFNP
RlRfTElOS19DTEFTUyhRdWlja0xvb2ssIFFMUHJldmlld0NvbnRyb2xsZXIpOwogICAgIHJldHVy
biBzZWxmOwogfQogCi0tICh2b2lkKXByZXZpZXdDb250cm9sbGVyV2lsbERpc21pc3M6KFFMUHJl
dmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCistICh2b2lkKXByZXZpZXdDb250cm9sbGVyRGlk
RGlzbWlzczooUUxQcmV2aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKIHsKICAgICBpZiAoX3By
ZXZpZXdDb250cm9sbGVyKQotICAgICAgICBfcHJldmlld0NvbnRyb2xsZXItPnNlbmRQYWdlQmFj
aygpOworICAgICAgICBfcHJldmlld0NvbnRyb2xsZXItPmhpZGUoKTsKIH0KIEBlbmQKIApAQCAt
MTA3LDcgKzEzNCw3IEBAIGJvb2wgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmNhblByZXZpZXco
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKICNlbmRpZgogfQogCi12b2lkIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyOjpzaG93UHJldmlldyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3Zv
aWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnN0YXJ0KCkKIHsKICAgICAvLyBGSVhNRTogTWFr
ZSBzdXJlIHlvdSBjYW4ndCBzaG93IGEgcHJldmlldyBpZiB3ZSdyZSBhbHJlYWR5IHByZXZpZXdp
bmcuCiAKQEAgLTEyMiwxNCArMTQ5LDMwIEBAIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6
OnNob3dQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogICAgICAgICBtX3FsUHJldmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tfV0tQcmV2aWV3Q29udHJvbGxlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFN5c3RlbVByZXZpZXdDb250cm9sbGVyOnRoaXNdKTsKICAgICAg
ICAgW21fcWxQcmV2aWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3FsUHJldmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICAgICAgbV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNv
dXJjZSA9IGFkb3B0TlMoW1tfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgYWxsb2NdIGlu
aXRXaXRoVVJMOnVybF0pOworICAgICAgICBtX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNl
ID0gYWRvcHROUyhbW19XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBhbGxvY10gaW5pdF0p
OwogICAgICAgICBbbV9xbFByZXZpZXdDb250cm9sbGVyIHNldERhdGFTb3VyY2U6bV9xbFByZXZp
ZXdDb250cm9sbGVyRGF0YVNvdXJjZS5nZXQoKV07Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcWxQ
cmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UuZ2V0KCkudXJsID0gdXJsOwogCi0gICAgW21fcWxQ
cmV2aWV3Q29udHJvbGxlciByZWxvYWREYXRhXTsKKyAgICAgICAgW3ByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6bV9xbFByZXZpZXdDb250cm9sbGVyLmdldCgp
IGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOworICAgIH0KK30KKwordm9pZCBTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlcjo6dXBkYXRlUHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCit7Cisg
ICAgaWYgKG1fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UpCisgICAgICAgIFttX3FsUHJl
dmlld0NvbnRyb2xsZXJEYXRhU291cmNlIHNldFByb2dyZXNzOnByb2dyZXNzXTsKK30KIAotICAg
IFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOm1fcWxQcmV2
aWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpudWxscHRyXTsKK3Zv
aWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmZpbmlzaChXZWJDb3JlOjpVUkwgdXJsKQorewor
ICAgIGlmIChtX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlKQorICAgICAgICBbbV9xbFBy
ZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBmaW5pc2g6dXJsXTsKK30KKwordm9pZCBTeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlcjo6aGlkZSgpCit7CisgICAgbV9xbFByZXZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgPSBudWxscHRyOworICAgIG1fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgPSBu
dWxscHRyOworICAgIG1fcWxQcmV2aWV3Q29udHJvbGxlciA9IG51bGxwdHI7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmlu
ZGV4IGYyNTg2MzNjNjBmYTY3MzI5MzA3MTYyOTY1OTIwZDU3Y2M4MzhlZDYuLjBkZTM2NDRlMjg3
YTg3NDMwNWJhOGI1MWM5NmE1MDc4YmFhNGRjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtODAsNiArODAsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0V2FzVXNlckluaXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNl
ckluaXRpYXRlZCA9IHZhbHVlOyB9CiAgICAgYm9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV93YXNVc2VySW5pdGlhdGVkOyB9CiAKKyAgICBTdHJpbmcgZGVzdGluYXRpb25G
aWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25GaWxlbmFtZTsgfQorICAgIHZv
aWQgc2V0RGVzdGluYXRpb25GaWxlbmFtZShjb25zdCBTdHJpbmcmIGQpIHsgbV9kZXN0aW5hdGlv
bkZpbGVuYW1lID0gZDsgfQorCisgICAgdWludDY0X3QgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7IH0KKyAgICB2b2lkIHNldEV4
cGVjdGVkQ29udGVudExlbmd0aCh1aW50NjRfdCBleHBlY3RlZENvbnRlbnRMZW5ndGgpIHsgbV9l
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGg7IH0KKworICAgIHVp
bnQ2NF90IGJ5dGVzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc0xvYWRlZDsgfQorICAg
IHZvaWQgc2V0Qnl0ZXNMb2FkZWQodWludDY0X3QgYnl0ZXNMb2FkZWQpIHsgbV9ieXRlc0xvYWRl
ZCA9IGJ5dGVzTG9hZGVkOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRG93bmxvYWRQcm94
eShEb3dubG9hZFByb3h5TWFwJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKIApAQCAtMTA2LDYgKzExNSw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEFQSTo6RGF0YT4gbV9yZXN1bWVEYXRhOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X3JlcXVlc3Q7CiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgU3RyaW5nIG1f
ZGVzdGluYXRpb25GaWxlbmFtZTsKKyAgICB1aW50NjRfdCBtX2V4cGVjdGVkQ29udGVudExlbmd0
aCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX2J5dGVzTG9hZGVkIHsgMCB9OwogCiAgICAgV2Vha1B0
cjxXZWJQYWdlUHJveHk+IG1fb3JpZ2luYXRpbmdQYWdlOwogICAgIFZlY3RvcjxXZWJDb3JlOjpV
Ukw+IG1fcmVkaXJlY3RDaGFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAppbmRleCBkNDViODE5Y2Q0YjA3MzkwMjI1MTY5MGRj
NWYyNmQxNzc2N2FmNjlhLi4yZDc1ZDJhOTM4ZTEyNmVlZjg1NmNhNzJjNjgyNDYxNTg2ZjBmZGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKIAorI2lmIFVTRShTWVNURU1fUFJFVklFVykK
KwogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM1
LDIwICszNyw2IEBAIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpTeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIHsKIH0KIAotdm9pZCBTeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcjo6c2VuZFBhZ2VCYWNrKCkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS5nb0Jh
Y2soKTsKLX0KLQotI2lmICFQTEFURk9STShJT1MpIHx8ICFVU0UoUVVJQ0tfTE9PSykKLWJvb2wg
U3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmNhblByZXZpZXcoY29uc3QgU3RyaW5nJikgY29uc3QK
LXsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6
OnNob3dQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OlVSTCYpCi17Ci19CiAjZW5kaWYKLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKaW5k
ZXggODE0MTgxMDcwMmU2ZjBkMGNlN2U0NzUwYjAxZDExYzU0YWMyNzI3NC4uYjBiOGU4MDFjMjgx
YzQ5MDBhZTE5NTEwNmExNDBhNDRjMTE5ZTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisKICNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRGT1JNKElP
UykgJiYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnRyb2xsZXI7CiBP
QkpDX0NMQVNTIF9XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZTsKIE9CSkNfQ0xBU1MgX1dL
UHJldmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApAQCAtNDMsMTkgKzQzLDE5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsKIAogICAgIGJvb2wgY2FuUHJldmlldyhjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKLSAgICB2b2lkIHNob3dQcmV2aWV3KGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwogCi0gICAgdm9pZCBzZW5kUGFnZUJhY2soKTsKKyAgICB2b2lkIHN0YXJ0KCk7
CisgICAgdm9pZCB1cGRhdGVQcm9ncmVzcyhmbG9hdCk7CisgICAgdm9pZCBmaW5pc2goV2ViQ29y
ZTo6VVJMKTsKKyAgICB2b2lkIGhpZGUoKTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkm
IG1fd2ViUGFnZVByb3h5OwotCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBVU0UoUVVJQ0tfTE9PSykK
ICAgICBSZXRhaW5QdHI8UUxQcmV2aWV3Q29udHJvbGxlcj4gbV9xbFByZXZpZXdDb250cm9sbGVy
OwogICAgIFJldGFpblB0cjxfV0tQcmV2aWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3FsUHJldmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8X1dLUHJldmlld0NvbnRyb2xsZXJE
YXRhU291cmNlPiBtX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlOwotI2VuZGlmCiB9Owog
CiB9CiAKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZjQ5YTRmODI0NTU3ZmJlZTlmYzUyMzlkMTAwZmNlMzk4NzhiMjk4Yy4uNjM0MGIyYjZiYWQ2
NzEyNDNiODUxMWI5MzE2ODEyNzNjMjY5MWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC00MzQsNyArNDM0LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1
aW4KICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCisjaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQogICAgIG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5
c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhpcyk7CisjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eT4oKnRoaXMpOwpAQCAtNzQ2LDcgKzc0OCw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIEFQSTo6TmF2CiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAor
I2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+KCp0aGlzKTsKQEAg
LTU5MTQsNyArNTkxOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3Rh
dGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG51
bGxwdHI7CiAjZW5kaWYKIAorI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBtX3N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyID0gbnVsbHB0cjsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKICAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWQxMzU1ZDBjZDdjOWRhZWJiYjgzNzE3NmQ3NDdm
M2RmNTdlYmFlZC4uNGJjZTk1M2Q0NzlmYmE2OWE3MTk0MGY5Y2U3OTIzOTNiMDA1NDhjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM4OCw3ICszODgsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9v
bCk7CiAjZW5kaWYKIAorI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlciogc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoKSB7IHJldHVybiBtX3N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQogICAgIEFQSTo6Q29udGV4dE1lbnVDbGllbnQmIGNvbnRleHRNZW51Q2xpZW50KCkgeyBy
ZXR1cm4gKm1fY29udGV4dE1lbnVDbGllbnQ7IH0KQEAgLTE4NDYsNyArMTg0OCw5IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiBtX3Bh
eW1lbnRDb29yZGluYXRvcjsKICNlbmRpZgogCisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4gbV9zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcjsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ3JlZGVudGlhbHNNZXNzZW5nZXJQcm94eT4gbV9jcmVkZW50aWFsc01lc3Nl
bmdlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340378</attachid>
            <date>2018-05-14 16:54:22 -0700</date>
            <delta_ts>2018-05-14 17:08:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185459-20180515095420.patch</filename>
            <type>text/plain</type>
            <size>27877</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJlNTRmNWYxMmJmMDMw
MTlmMDdmYzgwNTMwNjYzNDJkMTZiMjAxMS4uYWNlZDAzY2MzMWJhNjk3YThiZDIxNGRhN2ZmYWVm
NmIzZTBhNmQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA1LTE0ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBEb3dubG9hZCBhbmQgcHJlc2Vu
dCBTeXN0ZW0gUHJldmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDA3OTIyOD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBhbiA8YT4gaXMg
YSBzeXN0ZW0gcHJldmlldywgdGVsbCB0aGUgcmVzb3VyY2UgcmVxdWVzdCBhYm91dCBpdC4KKwor
ICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKToKKwogMjAxOC0wNS0xMSAgRGVhbiBKYWNr
c29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgU3lzdGVtIHByZXZpZXcgYmFkZ2UgZG9l
c24ndCBzaG93IG9uIDxwaWN0dXJlPiBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MWFiMDQ4Y2I0NmRm
OTRmNWY0ZDQwYjIxYjJjMTFlNzc2OTI5YThjLi45Y2M1ZjkyZTg3YzhlOGQxOWZmYzdlNDVmYTEx
ODViMWFkNWJkNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE4LTA1LTE0ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBEb3dubG9hZCBhbmQgcHJlc2Vu
dCBTeXN0ZW0gUHJldmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDA3OTIyOD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRlbmQgRG93bmxv
YWRDbGllbnQgc28gdGhhdCBpdCBjYW4gaGFuZGxlIHRoZSBjYXNlIHdoZXJlCisgICAgICAgIHRo
ZSBkb3dubG9hZCB3YXMgdHJpZ2dlcmVkIGJ5IGEgU3lzdGVtIFByZXZpZXcuIEluIHRoaXMgc2l0
dWF0aW9uCisgICAgICAgIHRoZSByZXN1bHQgKGFuZCBwcm9ncmVzcykgYXJlIHBpcGVkIGludG8g
UXVpY2tMb29rIHZpYSB0aGUgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuCisKKyAgICAgICAgVGhl
IERvd25sb2FkUHJveHkgY2xhc3MgaXMgYWxzbyBleHRlbmRlZCB0byBoYW5kbGUgdGhlIGRlc3Rp
bmF0aW9uCisgICAgICAgIGZpbGVuYW1lIGFuZCB0aGUgc2l6ZSBvZiB0aGUgY29udGVudC4KKwor
ICAgICAgICBMYXN0bHksIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIGlzIHVwZGF0ZWQgdG8gaGF2
ZSBhIHN0YXJ0KCksIHNob3coKQorICAgICAgICBhbmQgY2FuY2VsKCkgaW50ZXJmYWNlLCBhbmQg
bm8gbG9uZ2VyIGFkanVzdHMgcGFnZSBuYXZpZ2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tOiBIYW5kbGUgdGhlIFN5c3RlbVByZXZpZXcgY2FzZSwgd2hpY2gKKyAgICAg
ICAgZG9lc24ndCBoYXZlIGEgZG93bmxvYWQgZGVsZWdhdGUsIGJ1dCBpbnN0ZWFkIG5lZWRzIHRv
IGNvbW11bmljYXRlIHdpdGgKKyAgICAgICAgdGhlIFN5c3RlbVByZXZpZXdDb250cm9sbGVyLCBp
ZiBvbmUgZXhpc3RzLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW4pOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW06IEltcGxlbWVudCB0aGUgbmV3IEFQSS4K
KyAgICAgICAgKC1bX1dLUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIGluaXRXaXRoTUlNRVR5
cGU6XSk6CisgICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBwcmV2aWV3
Q29udHJvbGxlcjpwcmV2aWV3SXRlbUF0SW5kZXg6XSk6CisgICAgICAgICgtW19XS1ByZXZpZXdD
b250cm9sbGVyRGF0YVNvdXJjZSBzZXRQcm9ncmVzczpdKToKKyAgICAgICAgKC1bX1dLUHJldmll
d0NvbnRyb2xsZXJEYXRhU291cmNlIGZpbmlzaDpdKToKKyAgICAgICAgKC1bX1dLUHJldmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSBwcmV2aWV3Q29udHJvbGxlckRpZERpc21pc3M6XSk6CisgICAgICAg
IChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp1cGRhdGVQcm9ncmVzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0
OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Y2FuY2VsKToKKyAgICAgICAgKC1bX1dLUHJldmll
d0NvbnRyb2xsZXJEYXRhU291cmNlIGluaXRXaXRoVVJMOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtfV0tQcmV2aWV3Q29udHJvbGxlckRlbGVnYXRlIHByZXZpZXdDb250cm9sbGVyV2lsbERpc21p
c3M6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVy
OjpjYW5QcmV2aWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJl
dmlld0NvbnRyb2xsZXI6OnNob3dQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDogVHJhY2sgdGhlIGRlc3RpbmF0aW9uIGZpbGUg
YnkgbmFtZQorICAgICAgICBhbmQgc2l6ZS4gQWxzbyBleHBvc2UgYSBoZWxwZXIgdG8gaWRlbnRp
Znkgc3lzdGVtIHByZXZpZXcgZG93bmxvYWRzLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFBy
b3h5OjpkZXN0aW5hdGlvbkZpbGVuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6c2V0RGVzdGluYXRpb25GaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmV4cGVjdGVkQ29udGVudExlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHk6OnNldEV4cGVjdGVkQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkUHJveHk6OmJ5dGVzTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eTo6c2V0Qnl0ZXNMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZFByb3h5Ojppc1N5c3RlbVByZXZpZXdEb3dubG9hZCBjb25zdCk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwOiBOZXcgQVBJLgorICAgICAgICAoV2Vi
S2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Y2FuUHJldmlldyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzZW5kUGFnZUJhY2spOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6c2hvd1ByZXZpZXcp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisKIDIwMTgtMDUtMTEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlciBzaG91bGQga25vdyB3aGF0IE1JTUUgdHlwZSBp
dCB3YXMgY3JlYXRlZCB0byBoYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKaW5kZXggYTczZjY4MGUyNTliNjRiZjQxMjM1NDMxMDhjZDZkZDQyMGY0ZTQwZi4u
ODlhMzhjMTc4MmMzOGMzYjNiMTJhMmZlMTBkYjczMDY0MGVjOTVmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTQxOCw2ICs0MTgsMTAgQEAgdm9pZCBI
VE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soRXZlbnQmIGV2ZW50KQogI2VuZGlmCiAKICAg
ICBib29sIGlzU3lzdGVtUHJldmlldyA9IGZhbHNlOworI2lmIFVTRShTWVNURU1fUFJFVklFVykK
KyAgICBpc1N5c3RlbVByZXZpZXcgPSBpc1N5c3RlbVByZXZpZXdMaW5rKCk7CisjZW5kaWYKKwog
ICAgIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIgPSBoYXNSZWwoUmVsYXRp
b246Ok5vUmVmZXJyZXIpID8gTmV2ZXJTZW5kUmVmZXJyZXIgOiBNYXliZVNlbmRSZWZlcnJlcjsK
ICAgICBhdXRvIG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gaGFzUmVsKFJlbGF0aW9uOjpOb09wZW5l
cikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKSA6
IHN0ZDo6bnVsbG9wdDsKICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoY29tcGxldGVk
VVJMLCB0YXJnZXQoKSwgJmV2ZW50LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vLCBzaG91bGRTZW5kUmVmZXJyZXIsIGRvY3VtZW50KCkuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBkb3dubG9hZEF0
dHJpYnV0ZSwgaXNTeXN0ZW1QcmV2aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5oCmluZGV4IGYxNjNlYTA4NzYzZTY5NzBiY2NhNzVhNjU3YjM2
ZjNiZjhmNWYwOTYuLmRiM2VmYjc5OTI4Y2Q5NGIwOTU3ODc4ZjlhYzdiMThlYmE5ZmQ3YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaApAQCAt
MzAsNiArMzAsNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIkFQSURvd25sb2Fk
Q2xpZW50LmgiCisjaW1wb3J0ICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW1wb3J0ICJXZWFrT2Jq
Q1B0ci5oIgogCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsKQEAgLTU5LDYgKzYwLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHByb2Nl
c3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKIAorI2lm
IFBMQVRGT1JNKElPUykgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIHZvaWQgcmVsZWFzZUFj
dGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYpOworI2VuZGlmCisKICAgICBXZWFrT2JqQ1B0cjxp
ZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CiAKICAgICBzdHJ1Y3QgewpAQCAt
NzYsNiArODEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBkb3dubG9hZERpZENyZWF0ZURl
c3RpbmF0aW9uIDogMTsKICAgICAgICAgYm9vbCBkb3dubG9hZFByb2Nlc3NEaWRDcmFzaCA6IDE7
CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKKworI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQorICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuIG1fYWN0aXZpdHlUb2tlbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmlu
ZGV4IGI2NTM1OGU3MjFmM2Y2Y2NiZDY1OGYyYjQxOTdkMzJiYzc1M2ZhMWUuLjIzZGE0NDg2MTQz
YjkzNzNjZjA1NzVhZGI0YTk3MTEyM2UxNWQ1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMiwxMSArMzIsMTYgQEAKICNpbXBv
cnQgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2ltcG9ydCAiQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9y
dCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKICNpbXBv
cnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgpAQCAtNjksMjAgKzc0LDU1IEBAIERvd25sb2FkQ2xpZW50OjpEb3dubG9hZENsaWVudChpZCA8
X1dLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGUpCiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsK
LSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisjaWYg
VVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmll
d0Rvd25sb2FkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5
Lm9yaWdpbmF0aW5nUGFnZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRih3ZWJQYWdl
LT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFVJ
UHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGl0IGlzIGRv
d25sb2FkaW5nIGEgc3lzdGVtIHByZXZpZXciLCB0aGlzKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
bV9hY3Rpdml0eVRva2VuKTsKKyAgICAgICAgICAgIG1fYWN0aXZpdHlUb2tlbiA9IHdlYlBhZ2Ut
PnByb2Nlc3MoKS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyNlbmRpZgorICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRTdGFydCkKKyAgICAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0
YXJ0OndyYXBwZXIoZG93bmxvYWRQcm94eSldOworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAg
ICB9CisjZW5kaWYKIH0KIAogdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9u
c2UubnNVUkxSZXNwb25zZSgpXTsKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRv
d25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgeworICAgICAgICBkb3dubG9h
ZFByb3h5LnNldEV4cGVjdGVkQ29udGVudExlbmd0aChyZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKSk7CisgICAgICAgIGRvd25sb2FkUHJveHkuc2V0Qnl0ZXNMb2FkZWQoMCk7CisgICAg
ICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkg
eworICAgICAgICAgICAgd2ViUGFnZS0+c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoKS0+c3RhcnQo
cmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcigpLT51cGRhdGVQcm9ncmVzcygwKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisjZW5kaWYKKyAgICAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2
ZVJlc3BvbnNlKQorICAgICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07
CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6bGVuZ3RoXTsKKyNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3
RG93bmxvYWQoKSkgeworICAgICAgICBkb3dubG9hZFByb3h5LnNldEJ5dGVzTG9hZGVkKGRvd25s
b2FkUHJveHkuYnl0ZXNMb2FkZWQoKSArIGxlbmd0aCk7CisgICAgICAgIGlmIChhdXRvKiB3ZWJQ
YWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkKKyAgICAgICAgICAgIHdlYlBh
Z2UtPnN5c3RlbVByZXZpZXdDb250cm9sbGVyKCktPnVwZGF0ZVByb2dyZXNzKHN0YXRpY19jYXN0
PGZsb2F0Pihkb3dubG9hZFByb3h5LmJ5dGVzTG9hZGVkKCkpIC8gZG93bmxvYWRQcm94eS5leHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSk7CisgICAgfSBlbHNlIHsKKyNlbmRpZgorICAgICAgICBpZiAo
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKKyAgICAgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRh
Omxlbmd0aF07CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIH0KKyNlbmRpZgogfQogCiB2
b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKQEAgLTEyNiwxNCArMTY2
LDMxIEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkCiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKLSAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246
ZGVzdGluYXRpb25dOworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBpZiAoZG93bmxvYWRQ
cm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKQorICAgICAgICBkb3dubG9hZFByb3h5LnNl
dERlc3RpbmF0aW9uRmlsZW5hbWUoZGVzdGluYXRpb24pOworICAgIGVsc2UgeworI2VuZGlmCisg
ICAgICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9u
KQorICAgICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOworI2lmIFVTRShTWVNURU1fUFJF
VklFVykKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBEb3dubG9hZENsaWVudDo6cHJvY2Vzc0Rp
ZENyYXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsK
LSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCi0gICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXTsKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHku
aXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgeworICAgICAgICBpZiAobV9hY3Rpdml0eVRva2Vu
KQorICAgICAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW4oZG93bmxvYWRQcm94eSk7CisgICAg
fSBlbHNlIHsKKyNlbmRpZgorICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRQ
cm9jZXNzRGlkQ3Jhc2gpCisgICAgICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNz
RGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQorICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxs
b3dPdmVyd3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNDgsNiArMjA1
LDEyIEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93CiAgICAgICAgIE5TU3RyaW5nICpkZXN0aW5h
dGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3ZlcndyaXRl
OiZhbGxvd092ZXJ3cml0ZV07CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6
IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOworI2lmIFVTRShTWVNURU1fUFJFVklF
VykKKyAgICB9IGVsc2UgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQo
KSkgeworICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsKKyAg
ICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZW5hbWVdOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihBbGxvd092ZXJ3cml0ZTo6WWVzLCBkZXN0aW5hdGlvbik7CisjZW5kaWYKICAgICB9IGVs
c2UgewogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0
aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKEJPT0wsIE5TU3RyaW5nICopPjo6ZnJvbUNhbGxhYmxl
KFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0
cmluZyAqZGVzdGluYXRpb24pIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKQEAgLTE2MCwyMCArMjIzLDU1IEBAIHZvaWQgRG93bmxv
YWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nl
c3NQb29sJiwgRG93CiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7Ci0gICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisjaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFn
ZSgpKSB7CisgICAgICAgICAgICBOU1VSTCAqZGVzdGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOihOU1N0cmluZyAqKWRvd25sb2FkUHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgp
XTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3RlbVByZXZpZXdDb250cm9sbGVyKCktPmZpbmlz
aChXZWJDb3JlOjpVUkwoZGVzdGluYXRpb25VUkwpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bV9hY3Rpdml0eVRva2VuKQorICAgICAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW4oZG93bmxv
YWRQcm94eSk7CisgICAgfSBlbHNlIHsKKyNlbmRpZgorICAgICAgICBpZiAobV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCisgICAgICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisjaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQorICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdl
YlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkRmFpbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworI2lmIFVTRShT
WVNURU1fUFJFVklFVykKKyAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmln
aW5hdGluZ1BhZ2UoKSkKKyAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3RlbVByZXZpZXdDb250cm9s
bGVyKCktPmNhbmNlbCgpOworICAgICAgICBpZiAobV9hY3Rpdml0eVRva2VuKQorICAgICAgICAg
ICAgcmVsZWFzZUFjdGl2aXR5VG9rZW4oZG93bmxvYWRQcm94eSk7CisgICAgfSBlbHNlIHsKKyNl
bmRpZgorICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGYWlsKQorICAg
ICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlk
RmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworI2lmIFVTRShTWVNURU1fUFJFVklFVykK
KyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKLSAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5jZWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyNpZiBVU0UoU1lTVEVN
X1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQo
KSkgeworICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRp
bmdQYWdlKCkpCisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigp
LT5jYW5jZWwoKTsKKyAgICAgICAgaWYgKG1fYWN0aXZpdHlUb2tlbikKKyAgICAgICAgICAgIHJl
bGVhc2VBY3Rpdml0eVRva2VuKGRvd25sb2FkUHJveHkpOworICAgIH0gZWxzZSB7CisjZW5kaWYK
KyAgICAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQorICAgICAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94
eSldOworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBE
b3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTg0
LDYgKzI4MiwxNSBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFBybwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBEb3du
bG9hZENsaWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKK3sKKyAgICBSRUxFQVNFX0xPR19JRihkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFn
ZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCBV
SVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHN5
c3RlbSBwcmV2aWV3IGRvd25sb2FkIGNvbXBsZXRlZCIsIHRoaXMpOworICAgIEFTU0VSVChtX2Fj
dGl2aXR5VG9rZW4pOworICAgIG1fYWN0aXZpdHlUb2tlbiA9IG51bGxwdHI7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZDIzYTIyZTBjYmEzMWQzZTVlMjkxODhlZTE1Mzc0
NDJiNTg3MGU4Ni4uNzU4NjZmZDQ5ZWU2ZDljNGQxNzE0ZmZhOTdhMzliZDE5YzQ1Yzk3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0zMSw4ICszMSwxMCBAQAogI2ltcG9ydCAiQVBJ
VUlDbGllbnQuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogCisjaW1wb3J0IDxNb2JpbGVD
b3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxRdWlja0xvb2svUXVp
Y2tMb29rLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyLmg+CisjaW1wb3J0IDxw
YWwvc3BpL2lvcy9RdWlja0xvb2tTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgog
CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKQEAgLTQxLDIyICs0MywyNyBAQAogCiBTT0ZU
X0xJTktfRlJBTUVXT1JLKFF1aWNrTG9vaykKIFNPRlRfTElOS19DTEFTUyhRdWlja0xvb2ssIFFM
UHJldmlld0NvbnRyb2xsZXIpOworU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywgUUxJdGVtKTsK
IAogQGludGVyZmFjZSBfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgOiBOU09iamVjdCA8
UUxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2U+IHsKKyAgICBSZXRhaW5QdHI8TlNJdGVtUHJv
dmlkZXI+IF9pdGVtUHJvdmlkZXI7CisgICAgUmV0YWluUHRyPFFMSXRlbT4gX2l0ZW07CiB9Owog
Ci1AcHJvcGVydHkgKG5vbmF0b21pYykgV2ViQ29yZTo6VVJMIHVybDsKK0Bwcm9wZXJ0eSAoc3Ry
b25nKSBOU0l0ZW1Qcm92aWRlckNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyOwor
QHByb3BlcnR5IChyZXRhaW4pIE5TU3RyaW5nICptaW1lVHlwZTsKIAogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gX1dLUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlCiAKLS0gKGlkKWluaXRXaXRo
VVJMOihjb25zdCBXZWJDb3JlOjpVUkwmKXVybAorLSAoaWQpaW5pdFdpdGhNSU1FVHlwZTooTlNT
dHJpbmcqKW1pbWVUeXBlCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBzZWxmLnVybCA9IHVybDsKKyAgICBzZWxmLm1pbWVUeXBl
ID0gbWltZVR5cGU7CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNjcsNyArNzQsMzMgQEAg
U09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywgUUxQcmV2aWV3Q29udHJvbGxlcik7CiAKIC0gKGlk
PFFMUHJldmlld0l0ZW0+KXByZXZpZXdDb250cm9sbGVyOihRTFByZXZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlciBwcmV2aWV3SXRlbUF0SW5kZXg6KE5TSW50ZWdlcilpbmRleAogewotICAgIHJl
dHVybiAoTlNVUkwqKXNlbGYudXJsOworICAgIGlmICghX2l0ZW0pIHsKKyAgICAgICAgX2l0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgICAg
ICBOU1N0cmluZyAqY29udGVudFR5cGUgPSBAInB1YmxpYy5jb250ZW50IjsKKyNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQorICAgICAgICBjb250ZW50VHlwZSA9IFdlYktpdDo6Z2V0VVRJRm9y
TUlNRVR5cGUoc2VsZi5taW1lVHlwZSk7CisjZW5kaWYKKyAgICAgICAgX2l0ZW0gPSBhZG9wdE5T
KFthbGxvY1FMSXRlbUluc3RhbmNlKCkgaW5pdFdpdGhQcmV2aWV3SXRlbVByb3ZpZGVyOl9pdGVt
UHJvdmlkZXIuZ2V0KCkgY29udGVudFR5cGU6Y29udGVudFR5cGUgcHJldmlld1RpdGxlOkAiUHJl
dmlldyIgZmlsZVNpemU6QCgwKV0pOworICAgICAgICBbX2l0ZW0gc2V0VXNlTG9hZGluZ1RpbWVv
dXQ6Tk9dOworCisgICAgICAgIFtfaXRlbVByb3ZpZGVyIHJlZ2lzdGVySXRlbUZvclR5cGVJZGVu
dGlmaWVyOmNvbnRlbnRUeXBlIGxvYWRIYW5kbGVyOl4oTlNJdGVtUHJvdmlkZXJDb21wbGV0aW9u
SGFuZGxlciBfTnVsbF91bnNwZWNpZmllZCBjb21wbGV0aW9uSGFuZGxlciwgQ2xhc3MgX051bGxf
dW5zcGVjaWZpZWQgX191bnNhZmVfdW5yZXRhaW5lZCBleHBlY3RlZFZhbHVlQ2xhc3MsIE5TRGlj
dGlvbmFyeSAqIF9OdWxsX3Vuc3BlY2lmaWVkIG9wdGlvbnMpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgd2lsbCBnZXQgY2FsbGVkIG9uY2UgdGhlIGRvd25sb2FkIGNvbXBsZXRlcy4KKyAgICAgICAg
ICAgIHNlbGYuY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAg
fV07CisgICAgfQorICAgIHJldHVybiBfaXRlbS5nZXQoKTsKK30KKworLSAodm9pZClzZXRQcm9n
cmVzczooZmxvYXQpcHJvZ3Jlc3MKK3sKKyAgICBpZiAoX2l0ZW0pCisgICAgICAgIFtfaXRlbSBz
ZXRQcmV2aWV3SXRlbVByb3ZpZGVyUHJvZ3Jlc3M6QChwcm9ncmVzcyldOworfQorCistICh2b2lk
KWZpbmlzaDooV2ViQ29yZTo6VVJMKXVybAoreworICAgIGlmIChzZWxmLmNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICBzZWxmLmNvbXBsZXRpb25IYW5kbGVyKChOU1VSTCopdXJsLCBuaWwpOwog
fQogCiBAZW5kCkBAIC04OCwyNiArMTIxLDE2IEBAIFNPRlRfTElOS19DTEFTUyhRdWlja0xvb2ss
IFFMUHJldmlld0NvbnRyb2xsZXIpOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXBy
ZXZpZXdDb250cm9sbGVyV2lsbERpc21pc3M6KFFMUHJldmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyCistICh2b2lkKXByZXZpZXdDb250cm9sbGVyRGlkRGlzbWlzczooUUxQcmV2aWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIKIHsKICAgICBpZiAoX3ByZXZpZXdDb250cm9sbGVyKQotICAgICAg
ICBfcHJldmlld0NvbnRyb2xsZXItPnNlbmRQYWdlQmFjaygpOworICAgICAgICBfcHJldmlld0Nv
bnRyb2xsZXItPmNhbmNlbCgpOwogfQogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9v
bCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Y2FuUHJldmlldyhjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKSBjb25zdAotewotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0gICAgcmV0dXJuIGNh
blNob3dTeXN0ZW1QcmV2aWV3Rm9yTUlNRVR5cGUobWltZVR5cGUpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0obWltZVR5cGUpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi12b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzaG93UHJldmlldyhjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCkKK3ZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnN0YXJ0KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiB7CiAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB5b3UgY2FuJ3Qgc2hvdyBhIHBy
ZXZpZXcgaWYgd2UncmUgYWxyZWFkeSBwcmV2aWV3aW5nLgogCkBAIC0xMjIsMTYgKzE0NSwzNiBA
QCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzaG93UHJldmlldyhjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCkKICAgICAgICAgbV9xbFByZXZpZXdDb250cm9sbGVyRGVsZWdhdGUgPSBhZG9w
dE5TKFtbX1dLUHJldmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlcjp0aGlzXSk7CiAgICAgICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXIg
c2V0RGVsZWdhdGU6bV9xbFByZXZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwogCi0gICAg
ICAgIG1fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgPSBhZG9wdE5TKFtbX1dLUHJldmll
d0NvbnRyb2xsZXJEYXRhU291cmNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdKTsKKyAgICAgICAg
bV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSA9IGFkb3B0TlMoW1tfV0tQcmV2aWV3Q29u
dHJvbGxlckRhdGFTb3VyY2UgYWxsb2NdIGluaXRXaXRoTUlNRVR5cGU6bWltZVR5cGVdKTsKICAg
ICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlciBzZXREYXRhU291cmNlOm1fcWxQcmV2aWV3Q29u
dHJvbGxlckRhdGFTb3VyY2UuZ2V0KCldOwotICAgIH0gZWxzZQotICAgICAgICBtX3FsUHJldmll
d0NvbnRyb2xsZXJEYXRhU291cmNlLmdldCgpLnVybCA9IHVybDsKIAotICAgIFttX3FsUHJldmll
d0NvbnRyb2xsZXIgcmVsb2FkRGF0YV07CisgICAgfQogCiAgICAgW3ByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6bV9xbFByZXZpZXdDb250cm9sbGVyLmdldCgp
IGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwogfQogCit2b2lkIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyOjp1cGRhdGVQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykKK3sKKyAgICBpZiAo
bV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKKyAgICAgICAgW21fcWxQcmV2aWV3Q29u
dHJvbGxlckRhdGFTb3VyY2Ugc2V0UHJvZ3Jlc3M6cHJvZ3Jlc3NdOworfQorCit2b2lkIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goV2ViQ29yZTo6VVJMIHVybCkKK3sKKyAgICBpZiAo
bV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKKyAgICAgICAgW21fcWxQcmV2aWV3Q29u
dHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07Cit9CisKK3ZvaWQgU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXI6OmNhbmNlbCgpCit7CisgICAgaWYgKG1fcWxQcmV2aWV3Q29udHJvbGxlcikKKyAg
ICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlci5nZXQoKSBkaXNtaXNzVmlld0NvbnRyb2xsZXJB
bmltYXRlZDooQk9PTClZRVMgY29tcGxldGlvbjpudWxscHRyXTsKKworICAgIG1fcWxQcmV2aWV3
Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX3FsUHJldmlld0NvbnRyb2xsZXJE
YXRhU291cmNlID0gbnVsbHB0cjsKKyAgICBtX3FsUHJldmlld0NvbnRyb2xsZXIgPSBudWxscHRy
OworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZjI1ODYzM2M2MGZhNjczMjkzMDcxNjI5NjU5MjBk
NTdjYzgzOGVkNi4uOTAzYmM1NjM0Yjc0ZjUxOTlhMzRmMTYyMTJmN2Y0Y2VmZTdmNjRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
CkBAIC04MCw2ICs4MCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXYXNVc2VySW5pdGlhdGVk
KGJvb2wgdmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBib29sIHdh
c1VzZXJJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7IH0KIAor
ICAgIFN0cmluZyBkZXN0aW5hdGlvbkZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbkZpbGVuYW1lOyB9CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbkZpbGVuYW1lKGNvbnN0IFN0
cmluZyYgZCkgeyBtX2Rlc3RpbmF0aW9uRmlsZW5hbWUgPSBkOyB9CisKKyAgICB1aW50NjRfdCBl
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkQ29udGVudExl
bmd0aDsgfQorICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKHVpbnQ2NF90IGV4cGVj
dGVkQ29udGVudExlbmd0aCkgeyBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA9IGV4cGVjdGVkQ29u
dGVudExlbmd0aDsgfQorCisgICAgdWludDY0X3QgYnl0ZXNMb2FkZWQoKSBjb25zdCB7IHJldHVy
biBtX2J5dGVzTG9hZGVkOyB9CisgICAgdm9pZCBzZXRCeXRlc0xvYWRlZCh1aW50NjRfdCBieXRl
c0xvYWRlZCkgeyBtX2J5dGVzTG9hZGVkID0gYnl0ZXNMb2FkZWQ7IH0KKworI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKKyAgICBib29sIGlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgY29uc3QgeyBy
ZXR1cm4gcmVxdWVzdCgpLmlzU3lzdGVtUHJldmlldygpOyB9CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9jZXNz
UG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC0xMDYsNiArMTE5
LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBtX3Jlc3VtZURhdGE7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBTdHJpbmcgbV9zdWdnZXN0
ZWRGaWxlbmFtZTsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvbkZpbGVuYW1lOworICAgIHVpbnQ2
NF90IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoIHsgMCB9OworICAgIHVpbnQ2NF90IG1fYnl0ZXNM
b2FkZWQgeyAwIH07CiAKICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV9vcmlnaW5hdGluZ1Bh
Z2U7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gbV9yZWRpcmVjdENoYWluOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCmluZGV4
IGQ0NWI4MTljZDRiMDczOTAyMjUxNjkwZGM1ZjI2ZDE3NzY3YWY2OWEuLmM3MjEyZGM3ZDBlYTU3
ODk4ODMwOGQ4Y2IwODdkZWY5ZDA1NjExYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKQEAgLTI2LDggKzI2LDE0IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIK
IAorI2lmIFVTRShTWVNURU1fUFJFVklFVykKKwogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgog
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9T
eXN0ZW1QcmV2aWV3VHlwZXMuY3BwPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6U3lzdGVtUHJldmlld0NvbnRyb2xsZXIoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHkpCkBAIC0zNSwyMCArNDEsMTYgQEAgU3lzdGVtUHJldmlld0NvbnRy
b2xsZXI6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
KQogewogfQogCi12b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzZW5kUGFnZUJhY2soKQot
ewotICAgIG1fd2ViUGFnZVByb3h5LmdvQmFjaygpOwotfQotCi0jaWYgIVBMQVRGT1JNKElPUykg
fHwgIVVTRShRVUlDS19MT09LKQotYm9vbCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Y2FuUHJl
dmlldyhjb25zdCBTdHJpbmcmKSBjb25zdAorYm9vbCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
Y2FuUHJldmlldyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogeworI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisgICAgcmV0dXJuIGNhblNob3dTeXN0ZW1QcmV2aWV3Rm9yTUlNRVR5
cGUobWltZVR5cGUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogfQogCi12b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpz
aG93UHJldmlldyhjb25zdCBXZWJDb3JlOjpVUkwmKQotewogfQotI2VuZGlmCiAKLX0KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
LmgKaW5kZXggODE0MTgxMDcwMmU2ZjBkMGNlN2U0NzUwYjAxZDExYzU0YWMyNzI3NC4uZjlkNGM5
YTg4MzE0MDMwNWFhODI1OWY0M2Y0MmUxOTI4ZTQ5MjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCkBAIC0yNSwxMCArMjUsMTIg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisKICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFBMQVRG
T1JNKElPUykgJiYgVVNFKFFVSUNLX0xPT0spCisjaWYgVVNFKFFVSUNLX0xPT0spCiBPQkpDX0NM
QVNTIFFMUHJldmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIF9XS1ByZXZpZXdDb250cm9sbGVy
RGF0YVNvdXJjZTsKIE9CSkNfQ0xBU1MgX1dLUHJldmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKQEAg
LTQzLDE0ICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIoV2ViUGFnZVByb3h5Jik7CiAKICAgICBib29sIGNhblByZXZpZXcoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkgY29uc3Q7Ci0gICAgdm9pZCBzaG93UHJldmlldyhjb25zdCBXZWJDb3JlOjpV
UkwmKTsKIAotICAgIHZvaWQgc2VuZFBhZ2VCYWNrKCk7CisgICAgdm9pZCBzdGFydChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2b2lkIHVwZGF0ZVByb2dyZXNzKGZsb2F0KTsKKyAgICB2
b2lkIGZpbmlzaChXZWJDb3JlOjpVUkwpOworICAgIHZvaWQgY2FuY2VsKCk7CiAKIHByaXZhdGU6
CiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsKLQotI2lmIFBMQVRGT1JNKElPUykg
JiYgVVNFKFFVSUNLX0xPT0spCisjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgUmV0YWluUHRyPFFM
UHJldmlld0NvbnRyb2xsZXI+IG1fcWxQcmV2aWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8
X1dLUHJldmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9xbFByZXZpZXdDb250cm9sbGVyRGVsZWdh
dGU7CiAgICAgUmV0YWluUHRyPF9XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZT4gbV9xbFBy
ZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZTsKQEAgLTU5LDMgKzYyLDQgQEAgcHJpdmF0ZToKIAog
fQogCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGQ3ZGY0Y2Y4MTY2OWQyM2VjNzBmODlmMWE0ZTg3ZDRmYTQwOTJhYWYuLjliNTY4MjU5ZDQzYTlm
MWE2MzUzMTkyMGM2NWQ1ZTRhODBlNjU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtNDM4LDcgKzQzOCw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWlu
CiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAorI2lmIFVTRShTWVNURU1fUFJFVklF
VykKICAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQogICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNy
ZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+KCp0aGlzKTsKQEAgLTc1MCw3ICs3NTIsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBBUEk6Ok5hdgogICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKKyNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKKyNlbmRpZgog
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5PigqdGhpcyk7CkBAIC01
OTI2LDcgKzU5MzAsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRl
UmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBudWxs
cHRyOwogI2VuZGlmCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgbV9zeXN0ZW1QcmV2
aWV3Q29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwZjk4Njc1YmU2ZGYzNzZlNzQ1MTgxMzk2NTQwYjlm
OGIxZTA3ZTIuLmY1OWQ1OGQ1MTczZWY2NjJjYzc0YzQ5MTJiMzg1YzI5NGE5NjgzNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zOTEsNyArMzkxLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wp
OwogI2VuZGlmCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXIqIHN5c3RlbVByZXZpZXdDb250cm9sbGVyKCkgeyByZXR1cm4gbV9zeXN0ZW1QcmV2
aWV3Q29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICBBUEk6OkNvbnRleHRNZW51Q2xpZW50JiBjb250ZXh0TWVudUNsaWVudCgpIHsgcmV0
dXJuICptX2NvbnRleHRNZW51Q2xpZW50OyB9CkBAIC0xODUyLDcgKzE4NTQsOSBAQCBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4gbV9wYXlt
ZW50Q29vcmRpbmF0b3I7CiAjZW5kaWYKIAorI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+IG1fc3lzdGVtUHJldmlld0Nv
bnRyb2xsZXI7CisjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+IG1fY3JlZGVudGlhbHNNZXNzZW5n
ZXI7Cg==
</data>
<flag name="review"
          id="358634"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340400</attachid>
            <date>2018-05-15 02:18:15 -0700</date>
            <delta_ts>2018-05-15 02:18:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185459-20180515191813.patch</filename>
            <type>text/plain</type>
            <size>25897</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJlNTRmNWYxMmJmMDMw
MTlmMDdmYzgwNTMwNjYzNDJkMTZiMjAxMS4uYWNlZDAzY2MzMWJhNjk3YThiZDIxNGRhN2ZmYWVm
NmIzZTBhNmQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA1LTE0ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBEb3dubG9hZCBhbmQgcHJlc2Vu
dCBTeXN0ZW0gUHJldmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDA3OTIyOD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBhbiA8YT4gaXMg
YSBzeXN0ZW0gcHJldmlldywgdGVsbCB0aGUgcmVzb3VyY2UgcmVxdWVzdCBhYm91dCBpdC4KKwor
ICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKToKKwogMjAxOC0wNS0xMSAgRGVhbiBKYWNr
c29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgU3lzdGVtIHByZXZpZXcgYmFkZ2UgZG9l
c24ndCBzaG93IG9uIDxwaWN0dXJlPiBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MWFiMDQ4Y2I0NmRm
OTRmNWY0ZDQwYjIxYjJjMTFlNzc2OTI5YThjLi45Y2M1ZjkyZTg3YzhlOGQxOWZmYzdlNDVmYTEx
ODViMWFkNWJkNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE4LTA1LTE0ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBEb3dubG9hZCBhbmQgcHJlc2Vu
dCBTeXN0ZW0gUHJldmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg1NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDA3OTIyOD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRlbmQgRG93bmxv
YWRDbGllbnQgc28gdGhhdCBpdCBjYW4gaGFuZGxlIHRoZSBjYXNlIHdoZXJlCisgICAgICAgIHRo
ZSBkb3dubG9hZCB3YXMgdHJpZ2dlcmVkIGJ5IGEgU3lzdGVtIFByZXZpZXcuIEluIHRoaXMgc2l0
dWF0aW9uCisgICAgICAgIHRoZSByZXN1bHQgKGFuZCBwcm9ncmVzcykgYXJlIHBpcGVkIGludG8g
UXVpY2tMb29rIHZpYSB0aGUgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuCisKKyAgICAgICAgVGhl
IERvd25sb2FkUHJveHkgY2xhc3MgaXMgYWxzbyBleHRlbmRlZCB0byBoYW5kbGUgdGhlIGRlc3Rp
bmF0aW9uCisgICAgICAgIGZpbGVuYW1lIGFuZCB0aGUgc2l6ZSBvZiB0aGUgY29udGVudC4KKwor
ICAgICAgICBMYXN0bHksIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIGlzIHVwZGF0ZWQgdG8gaGF2
ZSBhIHN0YXJ0KCksIHNob3coKQorICAgICAgICBhbmQgY2FuY2VsKCkgaW50ZXJmYWNlLCBhbmQg
bm8gbG9uZ2VyIGFkanVzdHMgcGFnZSBuYXZpZ2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25s
b2FkQ2xpZW50Lm1tOiBIYW5kbGUgdGhlIFN5c3RlbVByZXZpZXcgY2FzZSwgd2hpY2gKKyAgICAg
ICAgZG9lc24ndCBoYXZlIGEgZG93bmxvYWQgZGVsZWdhdGUsIGJ1dCBpbnN0ZWFkIG5lZWRzIHRv
IGNvbW11bmljYXRlIHdpdGgKKyAgICAgICAgdGhlIFN5c3RlbVByZXZpZXdDb250cm9sbGVyLCBp
ZiBvbmUgZXhpc3RzLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENs
aWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW4pOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW06IEltcGxlbWVudCB0aGUgbmV3IEFQSS4K
KyAgICAgICAgKC1bX1dLUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIGluaXRXaXRoTUlNRVR5
cGU6XSk6CisgICAgICAgICgtW19XS1ByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSBwcmV2aWV3
Q29udHJvbGxlcjpwcmV2aWV3SXRlbUF0SW5kZXg6XSk6CisgICAgICAgICgtW19XS1ByZXZpZXdD
b250cm9sbGVyRGF0YVNvdXJjZSBzZXRQcm9ncmVzczpdKToKKyAgICAgICAgKC1bX1dLUHJldmll
d0NvbnRyb2xsZXJEYXRhU291cmNlIGZpbmlzaDpdKToKKyAgICAgICAgKC1bX1dLUHJldmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSBwcmV2aWV3Q29udHJvbGxlckRpZERpc21pc3M6XSk6CisgICAgICAg
IChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp1cGRhdGVQcm9ncmVzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0
OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Y2FuY2VsKToKKyAgICAgICAgKC1bX1dLUHJldmll
d0NvbnRyb2xsZXJEYXRhU291cmNlIGluaXRXaXRoVVJMOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtfV0tQcmV2aWV3Q29udHJvbGxlckRlbGVnYXRlIHByZXZpZXdDb250cm9sbGVyV2lsbERpc21p
c3M6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVy
OjpjYW5QcmV2aWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3lzdGVtUHJl
dmlld0NvbnRyb2xsZXI6OnNob3dQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDogVHJhY2sgdGhlIGRlc3RpbmF0aW9uIGZpbGUg
YnkgbmFtZQorICAgICAgICBhbmQgc2l6ZS4gQWxzbyBleHBvc2UgYSBoZWxwZXIgdG8gaWRlbnRp
Znkgc3lzdGVtIHByZXZpZXcgZG93bmxvYWRzLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFBy
b3h5OjpkZXN0aW5hdGlvbkZpbGVuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6c2V0RGVzdGluYXRpb25GaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmV4cGVjdGVkQ29udGVudExlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHk6OnNldEV4cGVjdGVkQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkUHJveHk6OmJ5dGVzTG9hZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eTo6c2V0Qnl0ZXNMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZFByb3h5Ojppc1N5c3RlbVByZXZpZXdEb3dubG9hZCBjb25zdCk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwOiBOZXcgQVBJLgorICAgICAgICAoV2Vi
S2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Y2FuUHJldmlldyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzZW5kUGFnZUJhY2spOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6c2hvd1ByZXZpZXcp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisKIDIwMTgtMDUtMTEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlciBzaG91bGQga25vdyB3aGF0IE1JTUUgdHlwZSBp
dCB3YXMgY3JlYXRlZCB0byBoYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKaW5kZXggYTczZjY4MGUyNTliNjRiZjQxMjM1NDMxMDhjZDZkZDQyMGY0ZTQwZi4u
ODlhMzhjMTc4MmMzOGMzYjNiMTJhMmZlMTBkYjczMDY0MGVjOTVmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTQxOCw2ICs0MTgsMTAgQEAgdm9pZCBI
VE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soRXZlbnQmIGV2ZW50KQogI2VuZGlmCiAKICAg
ICBib29sIGlzU3lzdGVtUHJldmlldyA9IGZhbHNlOworI2lmIFVTRShTWVNURU1fUFJFVklFVykK
KyAgICBpc1N5c3RlbVByZXZpZXcgPSBpc1N5c3RlbVByZXZpZXdMaW5rKCk7CisjZW5kaWYKKwog
ICAgIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIgPSBoYXNSZWwoUmVsYXRp
b246Ok5vUmVmZXJyZXIpID8gTmV2ZXJTZW5kUmVmZXJyZXIgOiBNYXliZVNlbmRSZWZlcnJlcjsK
ICAgICBhdXRvIG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gaGFzUmVsKFJlbGF0aW9uOjpOb09wZW5l
cikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKSA6
IHN0ZDo6bnVsbG9wdDsKICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoY29tcGxldGVk
VVJMLCB0YXJnZXQoKSwgJmV2ZW50LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vLCBzaG91bGRTZW5kUmVmZXJyZXIsIGRvY3VtZW50KCkuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBkb3dubG9hZEF0
dHJpYnV0ZSwgaXNTeXN0ZW1QcmV2aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5oCmluZGV4IGYxNjNlYTA4NzYzZTY5NzBiY2NhNzVhNjU3YjM2
ZjNiZjhmNWYwOTYuLmRiM2VmYjc5OTI4Y2Q5NGIwOTU3ODc4ZjlhYzdiMThlYmE5ZmQ3YTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaApAQCAt
MzAsNiArMzAsNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIkFQSURvd25sb2Fk
Q2xpZW50LmgiCisjaW1wb3J0ICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW1wb3J0ICJXZWFrT2Jq
Q1B0ci5oIgogCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsKQEAgLTU5LDYgKzYwLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHByb2Nl
c3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKIAorI2lm
IFBMQVRGT1JNKElPUykgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIHZvaWQgcmVsZWFzZUFj
dGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYpOworI2VuZGlmCisKICAgICBXZWFrT2JqQ1B0cjxp
ZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CiAKICAgICBzdHJ1Y3QgewpAQCAt
NzYsNiArODEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBkb3dubG9hZERpZENyZWF0ZURl
c3RpbmF0aW9uIDogMTsKICAgICAgICAgYm9vbCBkb3dubG9hZFByb2Nlc3NEaWRDcmFzaCA6IDE7
CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKKworI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQorICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuIG1fYWN0aXZpdHlUb2tlbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmlu
ZGV4IGI2NTM1OGU3MjFmM2Y2Y2NiZDY1OGYyYjQxOTdkMzJiYzc1M2ZhMWUuLjEzYWU2ZGE3YmIz
MGIyODJhMzQxZmZjM2NiY2M1MWFjZTllNTJhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMiwxMSArMzIsMTYgQEAKICNpbXBv
cnQgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2ltcG9ydCAiQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9y
dCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKICNpbXBv
cnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkRGVs
ZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgpAQCAtNjksMjQgKzc0LDU3IEBAIERvd25sb2FkQ2xpZW50OjpEb3dubG9hZENsaWVudChpZCA8
X1dLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGUpCiAKIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsK
KyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1Q
cmV2aWV3RG93bmxvYWQoKSkgeworICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2Fk
UHJveHkub3JpZ2luYXRpbmdQYWdlKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHdl
YlBhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IC0gVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgaXQg
aXMgZG93bmxvYWRpbmcgYSBzeXN0ZW0gcHJldmlldyIsIHRoaXMpOworICAgICAgICAgICAgQVNT
RVJUKCFtX2FjdGl2aXR5VG9rZW4pOworICAgICAgICAgICAgbV9hY3Rpdml0eVRva2VuID0gd2Vi
UGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkU3RhcnQpCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZERpZFN0YXJ0OndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCiB2b2lkIERvd25sb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgeworICAgICAgICBkb3dubG9hZFByb3h5LnNldEV4cGVj
dGVkQ29udGVudExlbmd0aChyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CisgICAg
ICAgIGRvd25sb2FkUHJveHkuc2V0Qnl0ZXNMb2FkZWQoMCk7CisgICAgICAgIGlmIChhdXRvKiB3
ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkgeworICAgICAgICAgICAg
d2ViUGFnZS0+c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoKS0+c3RhcnQocmVzcG9uc2UubWltZVR5
cGUoKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT51
cGRhdGVQcm9ncmVzcygwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9u
c2UpCiAgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCiB2b2lk
IERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkKIHsKKyNpZiBVU0UoU1lTVEVN
X1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQo
KSkgeworICAgICAgICBkb3dubG9hZFByb3h5LnNldEJ5dGVzTG9hZGVkKGRvd25sb2FkUHJveHku
Ynl0ZXNMb2FkZWQoKSArIGxlbmd0aCk7CisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93
bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKSkKKyAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3Rl
bVByZXZpZXdDb250cm9sbGVyKCktPnVwZGF0ZVByb2dyZXNzKHN0YXRpY19jYXN0PGZsb2F0Pihk
b3dubG9hZFByb3h5LmJ5dGVzTG9hZGVkKCkpIC8gZG93bmxvYWRQcm94eS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQogICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpsZW5n
dGhdOwogfQogCiB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsK
KyAgICAvLyBGSVhNRTogU3lzdGVtIFByZXZpZXcgbmVlZHMgY29kZSBoZXJlLgogICAgIGlmICgh
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5s
aXN0ZW5lcigpLT5wZXJmb3JtRGVmYXVsdEhhbmRsaW5nKCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTEyNiwxOCArMTY0LDQyIEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkCiAKIHZvaWQgRG93bmxv
YWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKKyNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3
RG93bmxvYWQoKSkgeworICAgICAgICBkb3dubG9hZFByb3h5LnNldERlc3RpbmF0aW9uRmlsZW5h
bWUoZGVzdGluYXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbikKICAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRl
RGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQogCiB2b2lkIERvd25sb2FkQ2xpZW50Ojpwcm9j
ZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KQogeworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5
c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CisgICAgICAgIGlmIChtX2FjdGl2aXR5VG9rZW4pCisg
ICAgICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbihkb3dubG9hZFByb3h5KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNz
RGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKIHZvaWQgRG93bmxvYWRDbGll
bnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29s
JiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
RnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgeworICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGly
ZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAi
U3lzdGVtUHJldmlld3MiKTsKKyAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW3RlbXBv
cmFyeURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZW5hbWVdOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6WWVzLCBkZXN0aW5hdGlv
bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICghbV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFs
bG93T3ZlcndyaXRlICYmICFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CiAKQEAgLTE2MCwx
OCArMjIyLDUwIEBAIHZvaWQgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93CiAKIHZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpCiB7CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5Lmlz
U3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBk
b3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpKSB7CisgICAgICAgICAgICBOU1VSTCAqZGVz
dGluYXRpb25VUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOihOU1N0cmluZyAqKWRvd25sb2Fk
UHJveHkuZGVzdGluYXRpb25GaWxlbmFtZSgpXTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3Rl
bVByZXZpZXdDb250cm9sbGVyKCktPmZpbmlzaChXZWJDb3JlOjpVUkwoZGVzdGluYXRpb25VUkwp
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9hY3Rpdml0eVRva2VuKQorICAgICAgICAgICAg
cmVsZWFzZUFjdGl2aXR5VG9rZW4oZG93bmxvYWRQcm94eSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKwogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZpbmlz
aCkKICAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93bmxv
YWRQcm94eSldOwogfQogCiB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChkb3du
bG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpKQorICAgICAgICAgICAg
d2ViUGFnZS0+c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoKS0+Y2FuY2VsKCk7CisgICAgICAgIGlm
IChtX2FjdGl2aXR5VG9rZW4pCisgICAgICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbihkb3du
bG9hZFByb3h5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmFpbCkKICAgICAgICAgW21fZGVsZWdhdGUgX2Rv
d25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vy
cm9yKCldOwogfQogCiB2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bv
b2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogeworI2lmIFVTRShTWVNURU1fUFJF
VklFVykKKyAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7
CisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1Bh
Z2UoKSkKKyAgICAgICAgICAgIHdlYlBhZ2UtPnN5c3RlbVByZXZpZXdDb250cm9sbGVyKCktPmNh
bmNlbCgpOworICAgICAgICBpZiAobV9hY3Rpdml0eVRva2VuKQorICAgICAgICAgICAgcmVsZWFz
ZUFjdGl2aXR5VG9rZW4oZG93bmxvYWRQcm94eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKICAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94
eSldOwogfQpAQCAtMTg0LDYgKzI3OCwxNSBAQCB2b2lkIERvd25sb2FkQ2xpZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFBybwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogfQogCisjaWYgUExBVEZPUk0o
SU9TKSAmJiBVU0UoU1lTVEVNX1BSRVZJRVcpCit2b2lkIERvd25sb2FkQ2xpZW50OjpyZWxlYXNl
QWN0aXZpdHlUb2tlbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQoreworICAgIFJFTEVB
U0VfTE9HX0lGKGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCktPmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIFVJUHJvY2VzcyBpcyByZWxlYXNp
bmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGEgc3lzdGVtIHByZXZpZXcgZG93bmxv
YWQgY29tcGxldGVkIiwgdGhpcyk7CisgICAgQVNTRVJUKG1fYWN0aXZpdHlUb2tlbik7CisgICAg
bV9hY3Rpdml0eVRva2VuID0gbnVsbHB0cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5t
bQppbmRleCBkMjNhMjJlMGNiYTMxZDNlNWUyOTE4OGVlMTUzNzQ0MmI1ODcwZTg2Li40YmFhZWJh
NTRhNjYwMTVmMjJjMDJjZWI0MjY1NWZmOGVmYzgyODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0KQEAgLTMxLDggKzMxLDEwIEBACiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVD
b3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFF1aWNrTG9vay9RdWlja0xvb2suaD4KICNpbXBvcnQg
PFVJS2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPHBhbC9zcGkvaW9zL1F1aWNrTG9v
a1NQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQpAQCAtNDEsMjIgKzQzLDI3IEBACiAKIFNPRlRfTElOS19GUkFNRVdPUksoUXVp
Y2tMb29rKQogU09GVF9MSU5LX0NMQVNTKFF1aWNrTG9vaywgUUxQcmV2aWV3Q29udHJvbGxlcik7
CitTT0ZUX0xJTktfQ0xBU1MoUXVpY2tMb29rLCBRTEl0ZW0pOwogCiBAaW50ZXJmYWNlIF9XS1By
ZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSA6IE5TT2JqZWN0IDxRTFByZXZpZXdDb250cm9sbGVy
RGF0YVNvdXJjZT4geworICAgIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gX2l0ZW1Qcm92aWRl
cjsKKyAgICBSZXRhaW5QdHI8UUxJdGVtPiBfaXRlbTsKIH07CiAKLUBwcm9wZXJ0eSAobm9uYXRv
bWljKSBXZWJDb3JlOjpVUkwgdXJsOworQHByb3BlcnR5IChzdHJvbmcpIE5TSXRlbVByb3ZpZGVy
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CitAcHJvcGVydHkgKHJldGFpbikg
TlNTdHJpbmcgKm1pbWVUeXBlOwogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tQcmV2aWV3
Q29udHJvbGxlckRhdGFTb3VyY2UKIAotLSAoaWQpaW5pdFdpdGhVUkw6KGNvbnN0IFdlYkNvcmU6
OlVSTCYpdXJsCistIChpZClpbml0V2l0aE1JTUVUeXBlOihOU1N0cmluZyopbWltZVR5cGUKIHsK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIHNlbGYudXJsID0gdXJsOworICAgIHNlbGYubWltZVR5cGUgPSBtaW1lVHlwZTsKKwogICAg
IHJldHVybiBzZWxmOwogfQogCkBAIC02Nyw3ICs3NCwzMyBAQCBTT0ZUX0xJTktfQ0xBU1MoUXVp
Y2tMb29rLCBRTFByZXZpZXdDb250cm9sbGVyKTsKIAogLSAoaWQ8UUxQcmV2aWV3SXRlbT4pcHJl
dmlld0NvbnRyb2xsZXI6KFFMUHJldmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHByZXZpZXdJ
dGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4CiB7Ci0gICAgcmV0dXJuIChOU1VSTCopc2VsZi51
cmw7CisgICAgaWYgKCFfaXRlbSkgeworICAgICAgICBfaXRlbVByb3ZpZGVyID0gYWRvcHROUyhb
W05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIE5TU3RyaW5nICpjb250ZW50
VHlwZSA9IEAicHVibGljLmNvbnRlbnQiOworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisg
ICAgICAgIGNvbnRlbnRUeXBlID0gV2ViS2l0OjpnZXRVVElGb3JNSU1FVHlwZShzZWxmLm1pbWVU
eXBlKTsKKyNlbmRpZgorICAgICAgICBfaXRlbSA9IGFkb3B0TlMoW2FsbG9jUUxJdGVtSW5zdGFu
Y2UoKSBpbml0V2l0aFByZXZpZXdJdGVtUHJvdmlkZXI6X2l0ZW1Qcm92aWRlci5nZXQoKSBjb250
ZW50VHlwZTpjb250ZW50VHlwZSBwcmV2aWV3VGl0bGU6QCJQcmV2aWV3IiBmaWxlU2l6ZTpAKDAp
XSk7CisgICAgICAgIFtfaXRlbSBzZXRVc2VMb2FkaW5nVGltZW91dDpOT107CisKKyAgICAgICAg
W19pdGVtUHJvdmlkZXIgcmVnaXN0ZXJJdGVtRm9yVHlwZUlkZW50aWZpZXI6Y29udGVudFR5cGUg
bG9hZEhhbmRsZXI6XihOU0l0ZW1Qcm92aWRlckNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25I
YW5kbGVyLCBDbGFzcyBleHBlY3RlZFZhbHVlQ2xhc3MsIE5TRGljdGlvbmFyeSAqIG9wdGlvbnMp
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBnZXQgY2FsbGVkIG9uY2UgdGhlIGRvd25sb2Fk
IGNvbXBsZXRlcy4KKyAgICAgICAgICAgIHNlbGYuY29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0
aW9uSGFuZGxlcjsKKyAgICAgICAgfV07CisgICAgfQorICAgIHJldHVybiBfaXRlbS5nZXQoKTsK
K30KKworLSAodm9pZClzZXRQcm9ncmVzczooZmxvYXQpcHJvZ3Jlc3MKK3sKKyAgICBpZiAoX2l0
ZW0pCisgICAgICAgIFtfaXRlbSBzZXRQcmV2aWV3SXRlbVByb3ZpZGVyUHJvZ3Jlc3M6QChwcm9n
cmVzcyldOworfQorCistICh2b2lkKWZpbmlzaDooV2ViQ29yZTo6VVJMKXVybAoreworICAgIGlm
IChzZWxmLmNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBzZWxmLmNvbXBsZXRpb25IYW5kbGVy
KChOU1VSTCopdXJsLCBuaWwpOwogfQogCiBAZW5kCkBAIC04OCwyNiArMTIxLDE2IEBAIFNPRlRf
TElOS19DTEFTUyhRdWlja0xvb2ssIFFMUHJldmlld0NvbnRyb2xsZXIpOwogICAgIHJldHVybiBz
ZWxmOwogfQogCi0tICh2b2lkKXByZXZpZXdDb250cm9sbGVyV2lsbERpc21pc3M6KFFMUHJldmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyCistICh2b2lkKXByZXZpZXdDb250cm9sbGVyRGlkRGlz
bWlzczooUUxQcmV2aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKIHsKICAgICBpZiAoX3ByZXZp
ZXdDb250cm9sbGVyKQotICAgICAgICBfcHJldmlld0NvbnRyb2xsZXItPnNlbmRQYWdlQmFjaygp
OworICAgICAgICBfcHJldmlld0NvbnRyb2xsZXItPmNhbmNlbCgpOwogfQogQGVuZAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotYm9vbCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6Y2FuUHJldmll
dyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAotewotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0gICAgcmV0dXJuIGNhblNob3dTeXN0ZW1QcmV2aWV3Rm9yTUlNRVR5cGUobWltZVR5
cGUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgotfQotCi12b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzaG93UHJldmll
dyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKK3ZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6
OnN0YXJ0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgLy8gRklYTUU6IE1ha2Ugc3Vy
ZSB5b3UgY2FuJ3Qgc2hvdyBhIHByZXZpZXcgaWYgd2UncmUgYWxyZWFkeSBwcmV2aWV3aW5nLgog
CkBAIC0xMjIsMTYgKzE0NSwzNiBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpzaG93
UHJldmlldyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKICAgICAgICAgbV9xbFByZXZpZXdDb250
cm9sbGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbX1dLUHJldmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjp0aGlzXSk7CiAgICAgICAgIFtt
X3FsUHJldmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9xbFByZXZpZXdDb250cm9sbGVyRGVs
ZWdhdGUuZ2V0KCldOwogCi0gICAgICAgIG1fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2Ug
PSBhZG9wdE5TKFtbX1dLUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlIGFsbG9jXSBpbml0V2l0
aFVSTDp1cmxdKTsKKyAgICAgICAgbV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSA9IGFk
b3B0TlMoW1tfV0tQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgYWxsb2NdIGluaXRXaXRoTUlN
RVR5cGU6bWltZVR5cGVdKTsKICAgICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlciBzZXREYXRh
U291cmNlOm1fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UuZ2V0KCldOwotICAgIH0gZWxz
ZQotICAgICAgICBtX3FsUHJldmlld0NvbnRyb2xsZXJEYXRhU291cmNlLmdldCgpLnVybCA9IHVy
bDsKIAotICAgIFttX3FsUHJldmlld0NvbnRyb2xsZXIgcmVsb2FkRGF0YV07CisgICAgfQogCiAg
ICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6bV9xbFBy
ZXZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwog
fQogCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp1cGRhdGVQcm9ncmVzcyhmbG9hdCBw
cm9ncmVzcykKK3sKKyAgICBpZiAobV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKKyAg
ICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2Ugc2V0UHJvZ3Jlc3M6cHJvZ3Jl
c3NdOworfQorCit2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmaW5pc2goV2ViQ29yZTo6
VVJMIHVybCkKK3sKKyAgICBpZiAobV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZSkKKyAg
ICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlckRhdGFTb3VyY2UgZmluaXNoOnVybF07Cit9CisK
K3ZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmNhbmNlbCgpCit7CisgICAgaWYgKG1fcWxQ
cmV2aWV3Q29udHJvbGxlcikKKyAgICAgICAgW21fcWxQcmV2aWV3Q29udHJvbGxlci5nZXQoKSBk
aXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpudWxscHRyXTsKKwor
ICAgIG1fcWxQcmV2aWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX3FsUHJl
dmlld0NvbnRyb2xsZXJEYXRhU291cmNlID0gbnVsbHB0cjsKKyAgICBtX3FsUHJldmlld0NvbnRy
b2xsZXIgPSBudWxscHRyOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggZjI1ODYzM2M2MGZhNjcz
MjkzMDcxNjI5NjU5MjBkNTdjYzgzOGVkNi4uOTAzYmM1NjM0Yjc0ZjUxOTlhMzRmMTYyMTJmN2Y0
Y2VmZTdmNjRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCkBAIC04MCw2ICs4MCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRX
YXNVc2VySW5pdGlhdGVkKGJvb2wgdmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7
IH0KICAgICBib29sIHdhc1VzZXJJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJ
bml0aWF0ZWQ7IH0KIAorICAgIFN0cmluZyBkZXN0aW5hdGlvbkZpbGVuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbkZpbGVuYW1lOyB9CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbkZp
bGVuYW1lKGNvbnN0IFN0cmluZyYgZCkgeyBtX2Rlc3RpbmF0aW9uRmlsZW5hbWUgPSBkOyB9CisK
KyAgICB1aW50NjRfdCBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2V4
cGVjdGVkQ29udGVudExlbmd0aDsgfQorICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KHVpbnQ2NF90IGV4cGVjdGVkQ29udGVudExlbmd0aCkgeyBtX2V4cGVjdGVkQ29udGVudExlbmd0
aCA9IGV4cGVjdGVkQ29udGVudExlbmd0aDsgfQorCisgICAgdWludDY0X3QgYnl0ZXNMb2FkZWQo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVzTG9hZGVkOyB9CisgICAgdm9pZCBzZXRCeXRlc0xvYWRl
ZCh1aW50NjRfdCBieXRlc0xvYWRlZCkgeyBtX2J5dGVzTG9hZGVkID0gYnl0ZXNMb2FkZWQ7IH0K
KworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBib29sIGlzU3lzdGVtUHJldmlld0Rvd25s
b2FkKCkgY29uc3QgeyByZXR1cm4gcmVxdWVzdCgpLmlzU3lzdGVtUHJldmlldygpOyB9CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlN
YXAmLCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
CkBAIC0xMDYsNiArMTE5LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBtX3Jl
c3VtZURhdGE7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBT
dHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBTdHJpbmcgbV9kZXN0aW5hdGlvbkZpbGVu
YW1lOworICAgIHVpbnQ2NF90IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoIHsgMCB9OworICAgIHVp
bnQ2NF90IG1fYnl0ZXNMb2FkZWQgeyAwIH07CiAKICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4g
bV9vcmlnaW5hdGluZ1BhZ2U7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlVSTD4gbV9yZWRpcmVjdENo
YWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIuY3BwCmluZGV4IGQ0NWI4MTljZDRiMDczOTAyMjUxNjkwZGM1ZjI2ZDE3NzY3YWY2OWEu
LmM3MjEyZGM3ZDBlYTU3ODk4ODMwOGQ4Y2IwODdkZWY5ZDA1NjExYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKQEAgLTI2
LDggKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuaCIKIAorI2lmIFVTRShTWVNURU1fUFJFVklFVykKKwogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdl
YktpdEFkZGl0aW9ucy9TeXN0ZW1QcmV2aWV3VHlwZXMuY3BwPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6U3lzdGVtUHJldmlld0NvbnRy
b2xsZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCkBAIC0zNSwyMCArNDEsMTYgQEAgU3lz
dGVtUHJldmlld0NvbnRyb2xsZXI6OlN5c3RlbVByZXZpZXdDb250cm9sbGVyKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZVByb3h5KQogewogfQogCi12b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpz
ZW5kUGFnZUJhY2soKQotewotICAgIG1fd2ViUGFnZVByb3h5LmdvQmFjaygpOwotfQotCi0jaWYg
IVBMQVRGT1JNKElPUykgfHwgIVVTRShRVUlDS19MT09LKQotYm9vbCBTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcjo6Y2FuUHJldmlldyhjb25zdCBTdHJpbmcmKSBjb25zdAorYm9vbCBTeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcjo6Y2FuUHJldmlldyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAog
eworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgcmV0dXJuIGNhblNob3dTeXN0ZW1Q
cmV2aWV3Rm9yTUlNRVR5cGUobWltZVR5cGUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWlt
ZVR5cGUpOwogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCi12b2lkIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyOjpzaG93UHJldmlldyhjb25zdCBXZWJDb3JlOjpVUkwmKQotewogfQotI2Vu
ZGlmCiAKLX0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyLmgKaW5kZXggODE0MTgxMDcwMmU2ZjBkMGNlN2U0NzUwYjAxZDExYzU0
YWMyNzI3NC4uZjlkNGM5YTg4MzE0MDMwNWFhODI1OWY0M2Y0MmUxOTI4ZTQ5MjIxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCkBA
IC0yNSwxMCArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJ
RVcpCisKICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAotI2lmIFBMQVRGT1JNKElPUykgJiYgVVNFKFFVSUNLX0xPT0spCisjaWYgVVNFKFFVSUNL
X0xPT0spCiBPQkpDX0NMQVNTIFFMUHJldmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIF9XS1By
ZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZTsKIE9CSkNfQ0xBU1MgX1dLUHJldmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZTsKQEAgLTQzLDE0ICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CiAKICAgICBib29sIGNhblByZXZp
ZXcoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7Ci0gICAgdm9pZCBzaG93UHJldmlldyhj
b25zdCBXZWJDb3JlOjpVUkwmKTsKIAotICAgIHZvaWQgc2VuZFBhZ2VCYWNrKCk7CisgICAgdm9p
ZCBzdGFydChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2b2lkIHVwZGF0ZVByb2dyZXNz
KGZsb2F0KTsKKyAgICB2b2lkIGZpbmlzaChXZWJDb3JlOjpVUkwpOworICAgIHZvaWQgY2FuY2Vs
KCk7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsKLQotI2lm
IFBMQVRGT1JNKElPUykgJiYgVVNFKFFVSUNLX0xPT0spCisjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgUmV0YWluUHRyPFFMUHJldmlld0NvbnRyb2xsZXI+IG1fcWxQcmV2aWV3Q29udHJvbGxlcjsK
ICAgICBSZXRhaW5QdHI8X1dLUHJldmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9xbFByZXZpZXdD
b250cm9sbGVyRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPF9XS1ByZXZpZXdDb250cm9sbGVyRGF0
YVNvdXJjZT4gbV9xbFByZXZpZXdDb250cm9sbGVyRGF0YVNvdXJjZTsKQEAgLTU5LDMgKzYyLDQg
QEAgcHJpdmF0ZToKIAogfQogCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGQ3ZGY0Y2Y4MTY2OWQyM2VjNzBmODlmMWE0ZTg3ZDRmYTQwOTJhYWYu
LjliNTY4MjU5ZDQzYTlmMWE2MzUzMTkyMGM2NWQ1ZTRhODBlNjU3ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDM4LDcgKzQzOCw5IEBAIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgdWluCiAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAorI2lmIFVT
RShTWVNURU1fUFJFVklFVykKICAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCiAKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+KCp0aGlzKTsKQEAgLTc1MCw3
ICs3NTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdgogICAgIG1fcGF5bWVudENvb3JkaW5h
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMp
OwogI2VuZGlmCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgbV9zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0
aGlzKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBtX2NyZWRlbnRpYWxz
TWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDcmVkZW50aWFsc01lc3NlbmdlclByb3h5
PigqdGhpcyk7CkBAIC01OTI2LDcgKzU5MzAsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAgICAgbV9wYXltZW50Q29v
cmRpbmF0b3IgPSBudWxscHRyOwogI2VuZGlmCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAg
ICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwZjk4Njc1YmU2ZGYzNzZl
NzQ1MTgxMzk2NTQwYjlmOGIxZTA3ZTIuLmY1OWQ1OGQ1MTczZWY2NjJjYzc0YzQ5MTJiMzg1YzI5
NGE5NjgzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zOTEs
NyArMzkxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrKGJvb2wpOwogI2VuZGlmCiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
U3lzdGVtUHJldmlld0NvbnRyb2xsZXIqIHN5c3RlbVByZXZpZXdDb250cm9sbGVyKCkgeyByZXR1
cm4gbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKICAgICBBUEk6OkNvbnRleHRNZW51Q2xpZW50JiBjb250ZXh0TWVu
dUNsaWVudCgpIHsgcmV0dXJuICptX2NvbnRleHRNZW51Q2xpZW50OyB9CkBAIC0xODUyLDcgKzE4
NTQsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eT4gbV9wYXltZW50Q29vcmRpbmF0b3I7CiAjZW5kaWYKIAorI2lmIFVTRShTWVNURU1f
UFJFVklFVykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+IG1f
c3lzdGVtUHJldmlld0NvbnRyb2xsZXI7CisjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNyZWRlbnRpYWxzTWVzc2VuZ2VyUHJveHk+IG1fY3Jl
ZGVudGlhbHNNZXNzZW5nZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>