<?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>30348</bug_id>
          
          <creation_ts>2009-10-13 17:31:38 -0700</creation_ts>
          <short_desc>Implement private mode for plug-ins on Windows</short_desc>
          <delta_ts>2010-03-08 04:47:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</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="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Mark Rowe (bdash)">mrowe</assigned_to>
          <cc>gustavo</cc>
    
    <cc>ismail</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>robert</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>154504</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2009-10-13 17:31:38 -0700</bug_when>
    <thetext>plugins/private-browsing-mode.html fails on Windows, as the private plugin mode is only implemented on Mac. I am going to add it to the Skipped list, and this bug is to track the implementing of the mode on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182911</commentid>
    <comment_count>1</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2010-01-20 13:59:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/7562261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195004</commentid>
    <comment_count>2</comment_count>
      <attachid>49796</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-03-02 03:04:31 -0800</bug_when>
    <thetext>Created attachment 49796
Implement the “get” side of NPNVprivateModeBool

This is mainly refactoring to remove the duplication within PluginView::getValue.  A side-effect of this is that Windows gains the implementation of getValue for NPNVprivateModeBool that Qt recently added.

A later patch will need to handle notifying plug-ins when the value for NPNVprivateModeBool changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195007</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-02 03:07:23 -0800</bug_when>
    <thetext>Attachment 49796 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/plugins/PluginView.cpp:1325:  Missing space before ( in switch(  [whitespace/parens] [5]
WebCore/plugins/win/PluginViewWin.cpp:60:  &quot;PluginPackage.h&quot; already included at WebCore/plugins/win/PluginViewWin.cpp:59  [build/include] [4]
WebCore/plugins/win/PluginViewWin.cpp:886:  Declaration has space between type name and * in NPBool *flag  [whitespace/declaration] [3]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195009</commentid>
    <comment_count>4</comment_count>
      <attachid>49798</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-03-02 03:13:49 -0800</bug_when>
    <thetext>Created attachment 49798
Updated patch

May as well fix those existing style issues while I’m touching the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195013</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-02 03:19:52 -0800</bug_when>
    <thetext>Attachment 49798 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/plugins/PluginView.cpp:1325:  Missing space before ( in switch(  [whitespace/parens] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195021</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-03-02 04:22:54 -0800</bug_when>
    <thetext>I filed bug 35576 to track the other half of this: notifying a plug-in instance when the private browsing state changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195030</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-02 05:32:42 -0800</bug_when>
    <thetext>Attachment 49798 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/320767</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195034</commentid>
    <comment_count>8</comment_count>
      <attachid>49801</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-03-02 05:47:37 -0800</bug_when>
    <thetext>Created attachment 49801
Updated patch

Switch to using “default&quot; to prevent warnings about unhandled enum values in switches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195035</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-02 05:54:44 -0800</bug_when>
    <thetext>Attachment 49801 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/320780</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195249</commentid>
    <comment_count>10</comment_count>
      <attachid>49801</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-02 14:38:43 -0800</bug_when>
    <thetext>Comment on attachment 49801
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195266</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-03-02 15:14:14 -0800</bug_when>
    <thetext>Landed in r55432.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197129</commentid>
    <comment_count>12</comment_count>
    <who name="Ismail Donmez">ismail</who>
    <bug_when>2010-03-08 04:47:29 -0800</bug_when>
    <thetext>This broke compilation with Qt/Linux with plugins disabled:

PluginView.h protects getValueStatic(..) function with 

#if ENABLE(NETSCAPE_PLUGIN_API)

but it does not do so in PluginView.cpp. There are some other compilation problems related to this commit as well but they&apos;ll need to be handled in seperate bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49796</attachid>
            <date>2010-03-02 03:04:31 -0800</date>
            <delta_ts>2010-03-02 03:13:49 -0800</delta_ts>
            <desc>Implement the “get” side of NPNVprivateModeBool</desc>
            <filename>0001-Part-of-Bug-30348-Implement-private-mode-for-plug-in.patch</filename>
            <type>text/plain</type>
            <size>32003</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">RnJvbSA0ZGRjYTdjOGQ2NjY4YmI2NjJmMGRlODhmNmRjZDRjNjZjOGU2ZTljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFJvd2UgPG1yb3dlQGFwcGxlLmNvbT4KRGF0ZTogVHVl
LCAyIE1hciAyMDEwIDAzOjAxOjEwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gUGFydCBvZiBCdWcg
MzAzNDg6IEltcGxlbWVudCBwcml2YXRlIG1vZGUgZm9yIHBsdWctaW5zIG9uIFdpbmRvd3MKIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzMwMzQ4PiAvIDxyZGFyOi8vcHJvYmxlbS83NTYyMjYxPgoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpXZWJDb3JlOgoKUmV3b3JrIFBsdWdpblZpZXc6Omdl
dFZhbHVlIGFuZCBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyB0byByZW1vdmUgdGhlIGFtb3Vu
dCBvZiBjb2RlIHRoYXQKd2FzIGR1cGxpY2F0ZWQgYWNyb3NzIHBsYXRmb3Jtcy4gIGdldFZhbHVl
IGFuZCBnZXRWYWx1ZVN0YXRpYyBub3cgY2FsbCBpbiB0byBwbGF0Zm9ybS1zcGVjaWZpYwp2YXJp
YW50cyB0aGF0IGluZGljYXRlIHdoZXRoZXIgdGhleSBoYW5kbGVkIHRoZSBxdWVyeS4gIElmIHRo
ZSBxdWVyeSBpcyBub3QgaGFuZGxlZCBieSB0aGUKcGxhdGZvcm0tc3BlY2lmaWMgdmFyaWFudHMg
dGhlbiB0aGUgY3Jvc3MtcGxhdGZvcm0gaGFuZGxlciBoYXMgYSBjaGFuY2UgdG8gaGFuZGxlIGl0
LgoKKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFs
dWVTdGF0aWMpOiBHaXZlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50IGEgY2hhbmNlIHRv
IGhhbmRsZSB0aGUKdmFyaWFibGUgbG9va3VwLiAgSWYgaXQgZG9lcyBub3QgaGFuZGxlIGl0LCBy
ZXR1cm4gYW4gZXJyb3IuCihXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRWYWx1ZSk6IEdpdmUgdGhl
IHBsYXRmb3JtLXNwZWNpZmljIHZhcmlhbnQgYW5kIHBsYXRmb3JtLXNwZWNpZmljIHN0YXRpYwp2
YXJpYW50IGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgdmFyaWFibGUgbG9va3VwLiAgSWYgdGhleSBk
byBub3QgaGFuZGxlIGl0LCBhcHBseSB0aGUgY3Jvc3MtcGxhdGZvcm0KaGFuZGxlci4gIEF0IHRo
ZSBtb21lbnQgdGhlIGNyb3NzLXBsYXRmb3JtIGNvZGUgaGFuZGxlcyBOUE5WV2luZG93TlBPYmpl
Y3QsIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3QsCmFuZCBOUE5WcHJpdmF0ZU1vZGVCb29sIGFz
IHRoZXkgaGF2ZSBhbiBpZGVudGljYWwgaW1wbGVtZW50YXRpb24gYWNyb3NzIHBvcnRzLgoqIHBs
dWdpbnMvUGx1Z2luVmlldy5oOgoqIHBsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwOgooV2ViQ29y
ZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6IFBsdWdpblZpZXdOb25lIGRvZXMgbm90
IGhhbmRsZSBhbnkgbG9va3Vwcy4KKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFs
dWVTdGF0aWMpOiBEaXR0by4KKiBwbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcDoKKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMpOgooV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6CnBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0
aW9uLgoqIHBsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwOgooV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9y
bUdldFZhbHVlKToKKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6CihXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKToKKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBs
YXRmb3JtR2V0VmFsdWUpOiBGaXggYSBidWcgbm90aWNlZCB3aGlsZSB1cGRhdGluZyB0aGlzIGNv
ZGUuClRoZSBRdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFuZGxlciBmb3IgTlBOVlRvb2xraXQg
d2FzIHJlbHlpbmcgb24gY2FzZSBmYWxsLXRocm91Z2gKdG8gaGF2ZSBzb21lIHZhbHVlcyBoYW5k
bGVkIGJ5IHRoZSBzdGF0aWMgaGFuZGxlci4gIFdoZW4gTlBOVnByaXZhdGVNb2RlQm9vbCB3YXMg
YWRkZWQKaXQgd2FzIHBsYWNlZCBiZWZvcmUgdGhlIGRlZmF1bHQgY2FzZSwgaW50ZXJmZXJyaW5n
IHdpdGggdGhpcyBmYWxsLXRocm91Z2guICBJdCBub3cKZXhwbGljaXRseSBpbmRpY2F0ZXMgaW4g
dGhpcyBzaXR1YXRpb24gdGhhdCBpdCB3YXMgbm90IGhhbmRsZWQuCiogcGx1Z2lucy9zeW1iaWFu
L1BsdWdpblZpZXdTeW1iaWFuLmNwcDoKKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0
VmFsdWVTdGF0aWMpOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6Ciog
cGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHA6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlU3RhdGljKToKKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFs
dWUpOgoKTGF5b3V0VGVzdHM6CgoqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBSZW1vdmUgcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sIG5vdyB0aGF0IGl0IHBhc3Nlcy4KLS0tCiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsrKwog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgICAgICAgICAgICAgIHwgICAgMyAtCiBX
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICsrKysr
KysrKysrKwogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwICAgICAgICAgICAgICAgIHwg
ICA3MyArKysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oICAg
ICAgICAgICAgICAgICAgfCAgICAzICsKIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5j
cHAgICAgICAgICAgICB8ICAgIDggKy0KIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0
ay5jcHAgICAgICAgICB8ICAgODggKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGx1
Z2lucy9tYWMvUGx1Z2luVmlld01hYy5jcHAgICAgICAgICB8ICAgNzQgKysrKystLS0tLS0tLS0t
LS0tLS0KIFdlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwICAgICAgICAgICB8ICAg
ODggKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGx1Z2lucy9zeW1iaWFuL1BsdWdp
blZpZXdTeW1iaWFuLmNwcCB8ICAgNTggKysrLS0tLS0tLS0tLS0tLQogV2ViQ29yZS9wbHVnaW5z
L3dpbi9QbHVnaW5WaWV3V2luLmNwcCAgICAgICAgIHwgICA5MyArKysrKysrLS0tLS0tLS0tLS0t
LS0tLS0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMjggaW5zZXJ0aW9ucygrKSwgMzEzIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA4MzI3YjZiLi5mZTA0NTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTAtMDMtMDIgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIEJ1ZyAzMDM0ODogSW1wbGVt
ZW50IHByaXZhdGUgbW9kZSBmb3IgcGx1Zy1pbnMgb24gV2luZG93cworICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zMDM0OD4gLyA8cmRhcjovL3Byb2JsZW0vNzU2MjI2MT4KKworICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBSZW1vdmUgcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5n
LW1vZGUtMi5odG1sIG5vdyB0aGF0IGl0IHBhc3Nlcy4KKwogMjAxMC0wMi0yOCAgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGU0NmM0
NzIuLjUyZjk5MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC02NzQsOSArNjc0LDYg
QEAgZmFzdC9kb20vV2luZG93L3Nsb3ctdW5sb2FkLWhhbmRsZXItb25seS1mcmFtZS1pcy1zdG9w
cGVkLmh0bWwKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM0
OD4KIHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLmh0bWwKIAotIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxODAKLXBsdWdpbnMvcHJpdmF0ZS1icm93c2lu
Zy1tb2RlLTIuaHRtbAotCiAjIFNraXAgdGhlc2UgdHdvIGZhaWx1cmVzIEkgaW50cm9kdWNlZCB0
aGlzIG1vcm5pbmcgd2hpbGUgSSBleHBsb3JlIHRoZW0uCiBodHRwL3Rlc3RzL2dsb2JhbGhpc3Rv
cnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy12aXNpdGVkLWxpbmtzLmh0bWwKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YjAyYmYyLi5j
NGM2M2UxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTAzLTAyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGFydCBvZiBCdWcgMzAzNDg6IEltcGxlbWVudCBwcml2YXRlIG1vZGUgZm9yIHBsdWctaW5zIG9u
IFdpbmRvd3MKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzAzNDg+IC8gPHJkYXI6Ly9w
cm9ibGVtLzc1NjIyNjE+CisKKyAgICAgICAgUmV3b3JrIFBsdWdpblZpZXc6OmdldFZhbHVlIGFu
ZCBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyB0byByZW1vdmUgdGhlIGFtb3VudCBvZiBjb2Rl
IHRoYXQKKyAgICAgICAgd2FzIGR1cGxpY2F0ZWQgYWNyb3NzIHBsYXRmb3Jtcy4gIGdldFZhbHVl
IGFuZCBnZXRWYWx1ZVN0YXRpYyBub3cgY2FsbCBpbiB0byBwbGF0Zm9ybS1zcGVjaWZpYworICAg
ICAgICB2YXJpYW50cyB0aGF0IGluZGljYXRlIHdoZXRoZXIgdGhleSBoYW5kbGVkIHRoZSBxdWVy
eS4gIElmIHRoZSBxdWVyeSBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgcGxhdGZvcm0t
c3BlY2lmaWMgdmFyaWFudHMgdGhlbiB0aGUgY3Jvc3MtcGxhdGZvcm0gaGFuZGxlciBoYXMgYSBj
aGFuY2UgdG8gaGFuZGxlIGl0LgorCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKTogR2l2ZSB0aGUg
cGxhdGZvcm0tc3BlY2lmaWMgdmFyaWFudCBhIGNoYW5jZSB0byBoYW5kbGUgdGhlCisgICAgICAg
IHZhcmlhYmxlIGxvb2t1cC4gIElmIGl0IGRvZXMgbm90IGhhbmRsZSBpdCwgcmV0dXJuIGFuIGVy
cm9yLgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWUpOiBHaXZlIHRoZSBw
bGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50IGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBzdGF0aWMKKyAg
ICAgICAgdmFyaWFudCBhIGNoYW5jZSB0byBoYW5kbGUgdGhlIHZhcmlhYmxlIGxvb2t1cC4gIElm
IHRoZXkgZG8gbm90IGhhbmRsZSBpdCwgYXBwbHkgdGhlIGNyb3NzLXBsYXRmb3JtCisgICAgICAg
IGhhbmRsZXIuICBBdCB0aGUgbW9tZW50IHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIGhhbmRsZXMg
TlBOVldpbmRvd05QT2JqZWN0LCBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0LAorICAgICAgICBh
bmQgTlBOVnByaXZhdGVNb2RlQm9vbCBhcyB0aGV5IGhhdmUgYW4gaWRlbnRpY2FsIGltcGxlbWVu
dGF0aW9uIGFjcm9zcyBwb3J0cy4KKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAg
ICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOiBQbHVnaW5WaWV3Tm9uZSBkb2VzIG5vdCBoYW5k
bGUgYW55IGxvb2t1cHMuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdl
dFZhbHVlU3RhdGljKTogRGl0dG8uCisgICAgICAgICogcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3Rh
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOgor
ICAgICAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBw
bHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZp
ZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGxhdGZvcm1HZXRWYWx1ZSk6CisgICAgICAgICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRp
Yyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKTogRml4
IGEgYnVnIG5vdGljZWQgd2hpbGUgdXBkYXRpbmcgdGhpcyBjb2RlLgorICAgICAgICBUaGUgUXQg
aW1wbGVtZW50YXRpb24gb2YgdGhlIGhhbmRsZXIgZm9yIE5QTlZUb29sa2l0IHdhcyByZWx5aW5n
IG9uIGNhc2UgZmFsbC10aHJvdWdoCisgICAgICAgIHRvIGhhdmUgc29tZSB2YWx1ZXMgaGFuZGxl
ZCBieSB0aGUgc3RhdGljIGhhbmRsZXIuICBXaGVuIE5QTlZwcml2YXRlTW9kZUJvb2wgd2FzIGFk
ZGVkCisgICAgICAgIGl0IHdhcyBwbGFjZWQgYmVmb3JlIHRoZSBkZWZhdWx0IGNhc2UsIGludGVy
ZmVycmluZyB3aXRoIHRoaXMgZmFsbC10aHJvdWdoLiAgSXQgbm93CisgICAgICAgIGV4cGxpY2l0
bHkgaW5kaWNhdGVzIGluIHRoaXMgc2l0dWF0aW9uIHRoYXQgaXQgd2FzIG5vdCBoYW5kbGVkLgor
ICAgICAgICAqIHBsdWdpbnMvc3ltYmlhbi9QbHVnaW5WaWV3U3ltYmlhbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOgorICAgICAgICAqIHBsdWdp
bnMvd2luL1BsdWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
bGF0Zm9ybUdldFZhbHVlKToKKwogMjAxMC0wMi0yOCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5v
cm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYzA3ZmJlOC4uM2FlNmQwMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTMwMCw0ICsxMzAwLDc3IEBAIHZvaWQgUGx1Z2luVmlldzo6
a2VlcEFsaXZlKE5QUCBpbnN0YW5jZSkKIH0KICNlbmRpZgogCitOUEVycm9yIFBsdWdpblZpZXc6
OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK3sKKyAg
ICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKCVzKSIsIHByZXR0eU5h
bWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKKworICAgIE5QRXJyb3IgcmVzdWx0
OworICAgIGlmIChwbGF0Zm9ybUdldFZhbHVlU3RhdGljKHZhcmlhYmxlLCB2YWx1ZSwgJnJlc3Vs
dCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKK30KKworTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJp
YWJsZSwgdm9pZCogdmFsdWUpCit7CisgICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRW
YWx1ZSglcykiLCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7CisK
KyAgICBOUEVycm9yIHJlc3VsdDsKKyAgICBpZiAocGxhdGZvcm1HZXRWYWx1ZSh2YXJpYWJsZSwg
dmFsdWUsICZyZXN1bHQpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKHBsYXRm
b3JtR2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlLCAmcmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKworICAgIHN3aXRjaCh2YXJpYWJsZSkgeworI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQorICAgIGNhc2UgTlBOVldpbmRvd05QT2JqZWN0OiB7CisgICAgICAgIGlm
IChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklD
X0VSUk9SOworCisgICAgICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHRPYmplY3QgPSBtX3BhcmVu
dEZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2NyaXB0TlBPYmplY3QoKTsKKworICAgICAgICAvLyBS
ZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJl
OiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+
CisgICAgICAgIGlmICh3aW5kb3dTY3JpcHRPYmplY3QpCisgICAgICAgICAgICBfTlBOX1JldGFp
bk9iamVjdCh3aW5kb3dTY3JpcHRPYmplY3QpOworCisgICAgICAgIHZvaWQqKiB2ID0gKHZvaWQq
Kil2YWx1ZTsKKyAgICAgICAgKnYgPSB3aW5kb3dTY3JpcHRPYmplY3Q7CisKKyAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKworICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1lbnRO
UE9iamVjdDogeworICAgICAgICBpZiAobV9pc0phdmFTY3JpcHRQYXVzZWQpCisgICAgICAgICAg
ICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKworICAgICAgICBOUE9iamVjdCogcGx1Z2lu
U2NyaXB0T2JqZWN0ID0gMDsKKworICAgICAgICBpZiAobV9lbGVtZW50LT5oYXNUYWdOYW1lKGFw
cGxldFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBtX2VsZW1lbnQt
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKKyAgICAgICAgICAgIHBsdWdpblNjcmlwdE9iamVjdCA9
IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9lbGVtZW50KS0+Z2V0TlBPYmplY3Qo
KTsKKworICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQs
IGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVn
aW4vbnBydW50aW1lLmh0bWw+CisgICAgICAgIGlmIChwbHVnaW5TY3JpcHRPYmplY3QpCisgICAg
ICAgICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVnaW5TY3JpcHRPYmplY3QpOworCisgICAgICAg
IHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKKyAgICAgICAgKnYgPSBwbHVnaW5TY3JpcHRPYmpl
Y3Q7CisKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKyNlbmRpZgorCisg
ICAgY2FzZSBOUE5WcHJpdmF0ZU1vZGVCb29sOiB7CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX3Bh
cmVudEZyYW1lLT5wYWdlKCk7CisgICAgICAgIGlmICghcGFnZSkKKyAgICAgICAgICAgIHJldHVy
biBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAqKChOUEJvb2wqKXZhbHVlKSA9ICFwYWdl
LT5zZXR0aW5ncygpIHx8IHBhZ2UtPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKworICAgIH0KKworICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oIGIvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuaAppbmRleCBmM2VhYzlhLi42ODk2NThlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmgKQEAgLTI0NCw2ICsyNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyBCT09MIFdJTkFQSSBob29rZWRFbmRQYWludChIV05ELCBjb25zdCBQQUlOVFNUUlVDVCopOwog
I2VuZGlmCiAKKyAgICAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyhOUE5W
YXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJlc3VsdCk7CisgICAgICAg
IGJvb2wgcGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUs
IE5QRXJyb3IqIHJlc3VsdCk7CisKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX3BhcmVudEZyYW1l
OwogICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gbV9wbHVnaW47CiAgICAgICAgIEVsZW1l
bnQqIG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9u
ZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCmluZGV4IGYwZDhhMjMu
LmVkNWFkMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAK
KysrIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcApAQCAtNjcsMTUgKzY3LDE1
IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYs
IHVpbnQzMiwgY29uc3QgY2hhciopCiAgICAgcmV0dXJuIDA7CiB9CiAKLU5QRXJyb3IgUGx1Z2lu
Vmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUsIHZvaWQqKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlLCB2b2lkKiwgTlBFcnJvciopCiB7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlLCB2b2lk
KikKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSwg
dm9pZCosIE5QRXJyb3IqKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwIGIvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcAppbmRleCBkOGNiZmZl
Li4yZjE1ZGNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKQEAgLTU4Nywx
MCArNTg3LDggQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9y
PGNoYXI+JiBidWZmZXIsIHVpbnQzMiBsZW4sIGNvbnN0IGMKICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZh
bHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlNFcnJvciogcmVz
dWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoJXMp
IiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAgICAgc3dp
dGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVlRvb2xraXQ6CiAjaWYgZGVmaW5lZChYUF9V
TklYKQpAQCAtNTk4LDcgKzU5Niw4IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0
aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogI2Vsc2UKICAgICAgICAgKnN0
YXRpY19jYXN0PHVpbnQzMio+KHZhbHVlKSA9IDA7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgogI2lmIGRl
ZmluZWQoWFBfVU5JWCkKQEAgLTYwNiwxMSArNjA1LDEzIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6
Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogI2Vsc2UK
ICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IGZhbHNlOwogI2VuZGlmCi0g
ICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05P
X0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgTlBOVmphdmFzY3JpcHRF
bmFibGVkQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7
Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJS
X05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgTlBOVlN1cHBvcnRz
V2luZG93bGVzczoKICNpZiBkZWZpbmVkKFhQX1VOSVgpCkBAIC02MTgsMTcgKzYxOSwxNSBAQCBO
UEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2
b2lkKiB2YWx1ZSkKICNlbHNlCiAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkg
PSBmYWxzZTsKICNlbmRpZgotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKnJl
c3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFy
aWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdl
dFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmVzdWx0
KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWUoJXMpIiwgcHJldHR5
TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAgICAgc3dpdGNoICh2YXJp
YWJsZSkgewogICAgIGNhc2UgTlBOVnhEaXNwbGF5OgogI2lmIGRlZmluZWQoWFBfVU5JWCkKQEAg
LTYzNiw1NiArNjM1LDIxIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0g
KHZvaWQgKilHREtfRElTUExBWSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqKHZvaWQg
KiopdmFsdWUgPSAodm9pZCAqKUdUS19YVEJJTihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+eHRj
bGllbnQueHRkaXNwbGF5OwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAg
ICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKICNlbHNlCi0gICAgICAgIHJldHVybiBOUEVSUl9H
RU5FUklDX0VSUk9SOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfR0VORVJJQ19FUlJPUjsKICNl
bmRpZgorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIGRlZmluZWQoWFBfVU5JWCkKICAgICBj
YXNlIE5QTlZ4dEFwcENvbnRleHQ6CiAgICAgICAgIGlmICghbV9uZWVkc1hFbWJlZCkgewogICAg
ICAgICAgICAgKih2b2lkICoqKXZhbHVlID0gWHREaXNwbGF5VG9BcHBsaWNhdGlvbkNvbnRleHQg
KEdUS19YVEJJTihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+eHRjbGllbnQueHRkaXNwbGF5KTsK
IAotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAgICAgKnJlc3Vs
dCA9IE5QRVJSX05PX0VSUk9SOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBO
UEVSUl9HRU5FUklDX0VSUk9SOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICAgICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAgICAgIGlm
IChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKLQotICAgICAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9
IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAg
ICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRl
c2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBy
dW50aW1lLmh0bWw+Ci0gICAgICAgICAgICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQotICAgICAg
ICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAg
ICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKLSAgICAgICAgICAgICp2ID0gd2luZG93
U2NyaXB0T2JqZWN0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIE5QTlZQbHVnaW5FbGVtZW50TlBPYmpl
Y3Q6IHsKLSAgICAgICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLQotICAgICAgICAgICAgTlBPYmplY3Qq
IHBsdWdpblNjcmlwdE9iamVjdCA9IDA7Ci0KLSAgICAgICAgICAgIGlmIChtX2VsZW1lbnQtPmhh
c1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8
IG1fZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgICAgIHBsdWdp
blNjcmlwdE9iamVjdCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9lbGVtZW50
KS0+Z2V0TlBPYmplY3QoKTsKLQotICAgICAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVj
dGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96aWxs
YS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAgICAgICAgICAgaWYgKHBs
dWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVn
aW5TY3JpcHRPYmplY3QpOwotCi0gICAgICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7
Ci0gICAgICAgICAgICAqdiA9IHBsdWdpblNjcmlwdE9iamVjdDsKLQotICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9CisgICAgICAgICAgICAqcmVzdWx0ID0gTlBF
UlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAogICAgICAg
ICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogewpAQCAtNjk3LDIwICs2NjEsMTIgQEAgTlBFcnJv
ciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUp
CiAgICAgICAgICAgICBIR0RJT0JKKiB3ID0gcmVpbnRlcnByZXRfY2FzdDxIR0RJT0JKKj4odmFs
dWUpOwogICAgICAgICAgICAgKncgPSBHREtfV0lORE9XX0hXTkQobV9wYXJlbnRGcmFtZS0+dmll
dygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT53aW5kb3cpOwogI2VuZGlm
Ci0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYXNlIE5QTlZwcml2YXRlTW9kZUJvb2w6IHsKLSAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBt
X3BhcmVudEZyYW1lLT5wYWdlKCk7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICAgICAqKChOUEJvb2wq
KXZhbHVlKSA9ICFwYWdlLT5zZXR0aW5ncygpIHx8IHBhZ2UtPnNldHRpbmdzKCktPnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAg
ICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBn
ZXRWYWx1ZVN0YXRpYyh2YXJpYWJsZSwgdmFsdWUpOwogICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLmNwcCBi
L1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5jcHAKaW5kZXggNzYyNzA5ZC4uNjBm
YmE0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLmNwcAor
KysgYi9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwCkBAIC0yNTQsMzMgKzI1
NCwzNiBAQCB2b2lkIFBsdWdpblZpZXc6OnBsYXRmb3JtRGVzdHJveSgpCiAKIC8vIFVzZWQgYmVm
b3JlIHRoZSBwbHVnaW4gdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZCBwcm9wZXJseSwgYW5kIGFz
IGEKIC8vIGZhbGxiYWNrIGZvciB2YXJpYWJsZXMgdGhhdCBkbyBub3QgcmVxdWlyZSBhIHZpZXcg
dG8gcmVzb2x2ZS4KLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZh
bHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmVz
dWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoJXMp
IiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAgICAgc3dp
dGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVlRvb2xraXQ6CiAgICAgICAgICpzdGF0aWNf
Y2FzdDx1aW50MzIqPih2YWx1ZSkgPSAwOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7
CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6CiAgICAgICAgICpzdGF0aWNf
Y2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICNpZm5kZWYgTlBfTk9fQ0FSQk9OCiAgICAgY2FzZSBOUE5Wc3VwcG9ydHNDYXJib25C
b29sOgogICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJS
T1I7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAjZW5kaWYKICAgICBjYXNlIE5QTlZzdXBwb3J0
c0NvY29hQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IGZhbHNl
OwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVS
Ul9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDb3JlR3JhcGhpY3Mg
aXMgdGhlIG9ubHkgZHJhd2luZyBtb2RlbCB3ZSBzdXBwb3J0CiAgICAgY2FzZSBOUE5Wc3VwcG9y
dHNDb3JlR3JhcGhpY3NCb29sOgogICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUp
ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAqcmVzdWx0
ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWZuZGVmIE5QX05P
X1FVSUNLRFJBVwogICAgIC8vIFF1aWNrRHJhdyBpcyBkZXByZWNhdGVkIGluIDEwLjUgYW5kIG5v
dCBzdXBwb3J0ZWQgb24gNjQtYml0CkBAIC0yODksNjAgKzI5MiwxNyBAQCBOUEVycm9yIFBsdWdp
blZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkK
ICAgICBjYXNlIE5QTlZzdXBwb3J0c09wZW5HTEJvb2w6CiAgICAgY2FzZSBOUE5Wc3VwcG9ydHND
b3JlQW5pbWF0aW9uQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9
IGZhbHNlOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5Q
RVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIC8vIFVzZWQgb25seSBmb3IgdmFyaWFibGVzIHRoYXQgbmVlZCBhIHZpZXcg
dG8gcmVzb2x2ZQotTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJp
YWJsZSwgdm9pZCogdmFsdWUpCitib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBOUEVycm9yKiBlcnJvcikKIHsKLSAgICBM
T0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlKCVzKSIsIHByZXR0eU5hbWVGb3JOUE5W
YXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQotICAgIHN3aXRjaCAodmFyaWFibGUpIHsKLSAg
ICBjYXNlIE5QTlZXaW5kb3dOUE9iamVjdDogewotICAgICAgICBpZiAobV9pc0phdmFTY3JpcHRQ
YXVzZWQpCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLQotICAgICAg
ICBOUE9iamVjdCogd2luZG93U2NyaXB0T2JqZWN0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkt
PndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7Ci0KLSAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4
cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaW4KLSAgICAgICAgLy8gPGh0dHA6
Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAgICAg
ICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQotICAgICAgICAgICAgX05QTl9SZXRhaW5PYmplY3Qo
d2luZG93U2NyaXB0T2JqZWN0KTsKLQotICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7
Ci0gICAgICAgICp2ID0gd2luZG93U2NyaXB0T2JqZWN0OwotCi0gICAgICAgIHJldHVybiBOUEVS
Ul9OT19FUlJPUjsKLSAgICB9Ci0KLSAgICBjYXNlIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3Q6
IHsKLSAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAgICAgICAgcmV0dXJu
IE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0KLSAgICAgICAgTlBPYmplY3QqIHBsdWdpblNjcmlwdE9i
amVjdCA9IDA7Ci0KLSAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcp
IHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdO
YW1lKG9iamVjdFRhZykpCi0gICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0aWNf
Y2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7Ci0KLSAg
ICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNj
cmliZWQgaW4KLSAgICAgICAgLy8gPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1
Z2luL25wcnVudGltZS5odG1sPgotICAgICAgICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0KQotICAg
ICAgICAgICAgX05QTl9SZXRhaW5PYmplY3QocGx1Z2luU2NyaXB0T2JqZWN0KTsKLQotICAgICAg
ICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7Ci0gICAgICAgICp2ID0gcGx1Z2luU2NyaXB0T2Jq
ZWN0OwotCi0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICB9Ci0KLSAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKLSAg
ICB9Ci0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudChT
Y3JvbGxWaWV3KiBwYXJlbnQpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1
Z2luVmlld1F0LmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4
IDAwYTkwNzMuLjIzM2E4MDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5W
aWV3UXQuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC01
NTMsMTA1ICs1NTMsNjMgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUo
VmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMiBsZW4sIGNvbnN0IGMKICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9y
bUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJv
ciogcmVzdWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0
aWMoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAg
ICAgc3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVlRvb2xraXQ6CiAgICAgICAgICpz
dGF0aWNfY2FzdDx1aW50MzIqPih2YWx1ZSkgPSAwOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6CiAgICAgICAgICpzdGF0
aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6CiAgICAgICAgICpz
dGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6CiAgICAgICAgICpz
dGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmll
dzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVn
aW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSwgTlBFcnJvciogcmVzdWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0
VmFsdWUoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwot
CiAgICAgc3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVnhEaXNwbGF5OgogICAgICAg
ICAqKHZvaWQgKiopdmFsdWUgPSBRWDExSW5mbzo6ZGlzcGxheSgpOwotICAgICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6Ci0gICAgICAgIHJl
dHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAgaWYgKG1faXNKYXZh
U2NyaXB0UGF1c2VkKQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0K
LSAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9IG1fcGFyZW50RnJhbWUtPnNj
cmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAgICAgIC8vIFJldHVybiB2YWx1
ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8v
d3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAg
aWYgKHdpbmRvd1NjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdp
bmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwot
ICAgICAgICAqdiA9IHdpbmRvd1NjcmlwdE9iamVjdDsKLQotICAgICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7Ci0gICAgfQotCi0gICAgY2FzZSBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7
Ci0gICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAgIHJldHVybiBO
UEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmpl
Y3QgPSAwOwotCi0gICAgICAgIGlmIChtX2VsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8
fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFt
ZShvYmplY3RUYWcpKQotICAgICAgICAgICAgcGx1Z2luU2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihtX2VsZW1lbnQpLT5nZXROUE9iamVjdCgpOwotCi0gICAg
ICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3Jp
YmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRp
bWUuaHRtbD4KLSAgICAgICAgaWYgKHBsdWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9O
UE5fUmV0YWluT2JqZWN0KHBsdWdpblNjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCoqIHYg
PSAodm9pZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHBsdWdpblNjcmlwdE9iamVjdDsKLQotICAg
ICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotI2VuZGlmCisgICAgICAgICpyZXN1
bHQgPSBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNh
c2UgTlBOVm5ldHNjYXBlV2luZG93OiB7CiAgICAgICAgIHZvaWQqIHcgPSByZWludGVycHJldF9j
YXN0PHZvaWQqPih2YWx1ZSk7CiAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3Bh
cmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CiAg
ICAgICAgICooKFhJRCAqKXcpID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdldCgpLT53aW5k
b3coKS0+d2luSWQoKSA6IDA7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAg
ICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICBjYXNlIE5QTlZUb29sa2l0OgogICAgICAgICBpZiAobV9wbHVnaW4tPnF1aXJrcygp
LmNvbnRhaW5zKFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0KSkgewogICAgICAgICAgICAg
KigodWludDMyICopdmFsdWUpID0gMjsKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJP
UjsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9Ci0KLSAgICBjYXNlIE5QTlZwcml2YXRlTW9kZUJvb2w6IHsK
LSAgICAgICAgUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsKLSAgICAgICAgaWYg
KCFwYWdlKQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAg
ICooKE5QQm9vbCopdmFsdWUpID0gIXBhZ2UtPnNldHRpbmdzKCkgfHwgcGFnZS0+c2V0dGluZ3Mo
KS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7Ci0gICAgfQotICAgICAgICAvLyBmYWxsIHRocm91Z2gKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3
OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbHVnaW5zL3N5bWJpYW4vUGx1Z2luVmlld1N5bWJpYW4uY3BwIGIvV2ViQ29yZS9wbHVnaW5z
L3N5bWJpYW4vUGx1Z2luVmlld1N5bWJpYW4uY3BwCmluZGV4IDM0OTI4NjguLmY0MWVmMWUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9zeW1iaWFuL1BsdWdpblZpZXdTeW1iaWFuLmNwcAor
KysgYi9XZWJDb3JlL3BsdWdpbnMvc3ltYmlhbi9QbHVnaW5WaWV3U3ltYmlhbi5jcHAKQEAgLTMw
Nyw2NiArMzA3LDI2IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZl
Y3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzIgbGVuLCBjb25zdCBjCiAgICAgcmV0dXJuIE5QRVJS
X05PX0VSUk9SOwogfQogCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZh
cmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1H
ZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3Iq
IHJlc3VsdCkKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGlj
KCVzKSIsIHByZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQogICAg
IHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6
CiAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6
CiAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBF
UlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5QRXJy
b3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVl
KQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlLCB2b2lkKiwg
TlBFcnJvciopCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRWYWx1ZSglcyki
LCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7Ci0KLSAgICBzd2l0
Y2ggKHZhcmlhYmxlKSB7Ci0gICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAg
aWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0KLSAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9IG1fcGFy
ZW50RnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAgICAgIC8v
IFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhl
cmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRt
bD4KLSAgICAgICAgaWYgKHdpbmRvd1NjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0
YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9p
ZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHdpbmRvd1NjcmlwdE9iamVjdDsKLSAgICAgICAgICAg
IAotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotCi0gICAgY2FzZSBOUE5W
UGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7Ci0gICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNl
ZCkKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgICAgIE5Q
T2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAwOwotCi0gICAgICAgIGlmIChtX2VsZW1lbnQt
Pmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcp
IHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgcGx1Z2lu
U2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihtX2VsZW1lbnQp
LT5nZXROUE9iamVjdCgpOwotCi0gICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0
byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3Jn
L3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAgaWYgKHBsdWdpblNjcmlw
dE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHBsdWdpblNjcmlwdE9iamVj
dCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHBs
dWdpblNjcmlwdE9iamVjdDsKLQotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAg
fSAgICAgICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RhdGljKHZh
cmlhYmxlLCB2YWx1ZSk7Ci0gICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy93
aW4vUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDRmZGE4ZS4uZTBhZDZmYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9XZWJDb3JlL3BsdWdp
bnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCkBAIC0yNiw0NCArMjYsNDAgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgotI2lmICFQTEFURk9STShXWCkKLSNpbmNsdWRlICJCaXRtYXBJbmZvLmgi
Ci0jZW5kaWYKICNpbmNsdWRlICJCcmlkZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvY3Vz
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgi
Ci0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJIb3N0V2luZG93LmgiCi0jaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIkZvY3VzQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBsdWdp
bkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKKyNpbmNsdWRlICJQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luTWVzc2FnZVRocm90dGxlcldp
bi5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKLSNpbmNsdWRlICJQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2luY2x1ZGUgIlJl
bmRlcldpZGdldC5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgotI2luY2x1ZGUgIlBs
dWdpbkRlYnVnLmgiCi0jaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBs
LmgiCkBAIC03Miw2ICs2OCwxMCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKKyNpZiAhUExBVEZPUk0oV1gpCisjaW5jbHVkZSAi
Qml0bWFwSW5mby5oIgorI2VuZGlmCisKICNpZiBPUyhXSU5DRSkKICN1bmRlZiBMT0dfTlBFUlJP
UgogI2RlZmluZSBMT0dfTlBFUlJPUih4KQpAQCAtODY3LDc0ICs4NjcsMjkgQEAgTlBFcnJvciBQ
bHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQz
MiBsZW4sIGNvbnN0IGMKICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiB9CiAKLU5QRXJyb3Ig
UGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZh
bHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxl
LCB2b2lkKiwgTlBFcnJvciopCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRW
YWx1ZVN0YXRpYyglcykiLCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEo
KSk7Ci0KLSAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUs
IHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlh
YmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmVzdWx0KQogewotICAgIExPRyhQ
bHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWUoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZhcmlh
YmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAgICAgc3dpdGNoICh2YXJpYWJsZSkgewotI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgICAgICBjYXNlIE5QTlZXaW5kb3dOUE9iamVj
dDogewotICAgICAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgICAgICAgICBOUE9iamVjdCog
d2luZG93U2NyaXB0T2JqZWN0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCktPndpbmRvd1Njcmlw
dE5QT2JqZWN0KCk7Ci0KLSAgICAgICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0
byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3Jn
L3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAgICAgIGlmICh3aW5kb3dT
Y3JpcHRPYmplY3QpCi0gICAgICAgICAgICAgICAgX05QTl9SZXRhaW5PYmplY3Qod2luZG93U2Ny
aXB0T2JqZWN0KTsKLQotICAgICAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwotICAg
ICAgICAgICAgKnYgPSB3aW5kb3dTY3JpcHRPYmplY3Q7Ci0KLSAgICAgICAgICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1l
bnROUE9iamVjdDogewotICAgICAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAg
ICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgICAgICAgICBO
UE9iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0ID0gMDsKLQotICAgICAgICAgICAgaWYgKG1fZWxl
bWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShlbWJl
ZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgICAgICAg
ICAgcGx1Z2luU2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPiht
X2VsZW1lbnQpLT5nZXROUE9iamVjdCgpOwotCi0gICAgICAgICAgICAvLyBSZXR1cm4gdmFsdWUg
aXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3
dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+Ci0gICAgICAgICAg
ICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0KQotICAgICAgICAgICAgICAgIF9OUE5fUmV0YWluT2Jq
ZWN0KHBsdWdpblNjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgICAgIHZvaWQqKiB2ID0gKHZvaWQq
Kil2YWx1ZTsKLSAgICAgICAgICAgICp2ID0gcGx1Z2luU2NyaXB0T2JqZWN0OwotCi0gICAgICAg
ICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIH0KLSNlbmRpZgotCiAgICAgICAg
IGNhc2UgTlBOVm5ldHNjYXBlV2luZG93OiB7CiAgICAgICAgICAgICBIV05EKiB3ID0gcmVpbnRl
cnByZXRfY2FzdDxIV05EKj4odmFsdWUpOwotCiAgICAgICAgICAgICAqdyA9IHdpbmRvd0hhbmRs
ZUZvclBhZ2VDbGllbnQocGFyZW50KCkgPyBwYXJlbnQoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKSA6IDApOwotCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7
CisgICAgICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVz
czogewotICAgICAgICAgICAgTlBCb29sICpyZXN1bHQgPSByZWludGVycHJldF9jYXN0PE5QQm9v
bCo+KHZhbHVlKTsKLQotICAgICAgICAgICAgKnJlc3VsdCA9IFRSVUU7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgICAgIE5QQm9vbCAq
ZmxhZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBCb29sKj4odmFsdWUpOworICAgICAgICAgICAgKmZs
YWcgPSBUUlVFOworICAgICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLQotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQotLSAKMS43LjAuODcuZzA5MDFkCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49798</attachid>
            <date>2010-03-02 03:13:49 -0800</date>
            <delta_ts>2010-03-02 05:47:37 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>0001-Part-of-Bug-30348-Implement-private-mode-for-plug-in.patch</filename>
            <type>text/plain</type>
            <size>31975</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">RnJvbSBkZWQyMTk5MDA5Y2I2MTBkOGMwOWExN2EyNmFkZDNkNTFiMzZmNjJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFJvd2UgPG1yb3dlQGFwcGxlLmNvbT4KRGF0ZTogVHVl
LCAyIE1hciAyMDEwIDAzOjAxOjEwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gUGFydCBvZiBCdWcg
MzAzNDg6IEltcGxlbWVudCBwcml2YXRlIG1vZGUgZm9yIHBsdWctaW5zIG9uIFdpbmRvd3MKIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzMwMzQ4PiAvIDxyZGFyOi8vcHJvYmxlbS83NTYyMjYxPgoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpXZWJDb3JlOgoKUmV3b3JrIFBsdWdpblZpZXc6Omdl
dFZhbHVlIGFuZCBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyB0byByZW1vdmUgdGhlIGFtb3Vu
dCBvZiBjb2RlIHRoYXQKd2FzIGR1cGxpY2F0ZWQgYWNyb3NzIHBsYXRmb3Jtcy4gIGdldFZhbHVl
IGFuZCBnZXRWYWx1ZVN0YXRpYyBub3cgY2FsbCBpbiB0byBwbGF0Zm9ybS1zcGVjaWZpYwp2YXJp
YW50cyB0aGF0IGluZGljYXRlIHdoZXRoZXIgdGhleSBoYW5kbGVkIHRoZSBxdWVyeS4gIElmIHRo
ZSBxdWVyeSBpcyBub3QgaGFuZGxlZCBieSB0aGUKcGxhdGZvcm0tc3BlY2lmaWMgdmFyaWFudHMg
dGhlbiB0aGUgY3Jvc3MtcGxhdGZvcm0gaGFuZGxlciBoYXMgYSBjaGFuY2UgdG8gaGFuZGxlIGl0
LgoKKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFs
dWVTdGF0aWMpOiBHaXZlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50IGEgY2hhbmNlIHRv
IGhhbmRsZSB0aGUKdmFyaWFibGUgbG9va3VwLiAgSWYgaXQgZG9lcyBub3QgaGFuZGxlIGl0LCBy
ZXR1cm4gYW4gZXJyb3IuCihXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRWYWx1ZSk6IEdpdmUgdGhl
IHBsYXRmb3JtLXNwZWNpZmljIHZhcmlhbnQgYW5kIHBsYXRmb3JtLXNwZWNpZmljIHN0YXRpYwp2
YXJpYW50IGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgdmFyaWFibGUgbG9va3VwLiAgSWYgdGhleSBk
byBub3QgaGFuZGxlIGl0LCBhcHBseSB0aGUgY3Jvc3MtcGxhdGZvcm0KaGFuZGxlci4gIEF0IHRo
ZSBtb21lbnQgdGhlIGNyb3NzLXBsYXRmb3JtIGNvZGUgaGFuZGxlcyBOUE5WV2luZG93TlBPYmpl
Y3QsIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3QsCmFuZCBOUE5WcHJpdmF0ZU1vZGVCb29sIGFz
IHRoZXkgaGF2ZSBhbiBpZGVudGljYWwgaW1wbGVtZW50YXRpb24gYWNyb3NzIHBvcnRzLgoqIHBs
dWdpbnMvUGx1Z2luVmlldy5oOgoqIHBsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwOgooV2ViQ29y
ZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6IFBsdWdpblZpZXdOb25lIGRvZXMgbm90
IGhhbmRsZSBhbnkgbG9va3Vwcy4KKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFs
dWVTdGF0aWMpOiBEaXR0by4KKiBwbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcDoKKFdlYkNv
cmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMpOgooV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6CnBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0
aW9uLgoqIHBsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwOgooV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9y
bUdldFZhbHVlKToKKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6CihXZWJDb3JlOjpQbHVn
aW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKToKKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBs
YXRmb3JtR2V0VmFsdWUpOiBGaXggYSBidWcgbm90aWNlZCB3aGlsZSB1cGRhdGluZyB0aGlzIGNv
ZGUuClRoZSBRdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFuZGxlciBmb3IgTlBOVlRvb2xraXQg
d2FzIHJlbHlpbmcgb24gY2FzZSBmYWxsLXRocm91Z2gKdG8gaGF2ZSBzb21lIHZhbHVlcyBoYW5k
bGVkIGJ5IHRoZSBzdGF0aWMgaGFuZGxlci4gIFdoZW4gTlBOVnByaXZhdGVNb2RlQm9vbCB3YXMg
YWRkZWQKaXQgd2FzIHBsYWNlZCBiZWZvcmUgdGhlIGRlZmF1bHQgY2FzZSwgaW50ZXJmZXJyaW5n
IHdpdGggdGhpcyBmYWxsLXRocm91Z2guICBJdCBub3cKZXhwbGljaXRseSBpbmRpY2F0ZXMgaW4g
dGhpcyBzaXR1YXRpb24gdGhhdCBpdCB3YXMgbm90IGhhbmRsZWQuCiogcGx1Z2lucy9zeW1iaWFu
L1BsdWdpblZpZXdTeW1iaWFuLmNwcDoKKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0
VmFsdWVTdGF0aWMpOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6Ciog
cGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHA6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlU3RhdGljKToKKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFs
dWUpOgoKTGF5b3V0VGVzdHM6CgoqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBSZW1vdmUgcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sIG5vdyB0aGF0IGl0IHBhc3Nlcy4KLS0tCiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsrKwog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgICAgICAgICAgICAgIHwgICAgMyAtCiBX
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICsrKysr
KysrKysrKwogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwICAgICAgICAgICAgICAgIHwg
ICA3MyArKysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oICAg
ICAgICAgICAgICAgICAgfCAgICAzICsKIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5j
cHAgICAgICAgICAgICB8ICAgIDggKy0KIFdlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0
ay5jcHAgICAgICAgICB8ICAgODggKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJDb3JlL3Bs
dWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwICAgICAgICAgfCAgIDc0ICsrKysrLS0tLS0tLS0t
LS0tLS0tCiBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCAgICAgICAgICAgfCAg
IDg4ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBXZWJDb3JlL3BsdWdpbnMvc3ltYmlhbi9QbHVn
aW5WaWV3U3ltYmlhbi5jcHAgfCAgIDU4ICsrKy0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGx1Z2lu
cy93aW4vUGx1Z2luVmlld1dpbi5jcHAgICAgICAgICB8ICAgOTIgKysrKysrLS0tLS0tLS0tLS0t
LS0tLS0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMjcgaW5zZXJ0aW9ucygrKSwgMzEzIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA4MzI3YjZiLi5mZTA0NTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTAtMDMtMDIgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIEJ1ZyAzMDM0ODogSW1wbGVt
ZW50IHByaXZhdGUgbW9kZSBmb3IgcGx1Zy1pbnMgb24gV2luZG93cworICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zMDM0OD4gLyA8cmRhcjovL3Byb2JsZW0vNzU2MjI2MT4KKworICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOiBSZW1vdmUgcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5n
LW1vZGUtMi5odG1sIG5vdyB0aGF0IGl0IHBhc3Nlcy4KKwogMjAxMC0wMi0yOCAgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGU0NmM0
NzIuLjUyZjk5MTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC02NzQsOSArNjc0LDYg
QEAgZmFzdC9kb20vV2luZG93L3Nsb3ctdW5sb2FkLWhhbmRsZXItb25seS1mcmFtZS1pcy1zdG9w
cGVkLmh0bWwKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM0
OD4KIHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLmh0bWwKIAotIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxODAKLXBsdWdpbnMvcHJpdmF0ZS1icm93c2lu
Zy1tb2RlLTIuaHRtbAotCiAjIFNraXAgdGhlc2UgdHdvIGZhaWx1cmVzIEkgaW50cm9kdWNlZCB0
aGlzIG1vcm5pbmcgd2hpbGUgSSBleHBsb3JlIHRoZW0uCiBodHRwL3Rlc3RzL2dsb2JhbGhpc3Rv
cnkvaGlzdG9yeS1kZWxlZ2F0ZS1iYXNpYy12aXNpdGVkLWxpbmtzLmh0bWwKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YjAyYmYyLi5j
NGM2M2UxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTAzLTAyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGFydCBvZiBCdWcgMzAzNDg6IEltcGxlbWVudCBwcml2YXRlIG1vZGUgZm9yIHBsdWctaW5zIG9u
IFdpbmRvd3MKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzAzNDg+IC8gPHJkYXI6Ly9w
cm9ibGVtLzc1NjIyNjE+CisKKyAgICAgICAgUmV3b3JrIFBsdWdpblZpZXc6OmdldFZhbHVlIGFu
ZCBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyB0byByZW1vdmUgdGhlIGFtb3VudCBvZiBjb2Rl
IHRoYXQKKyAgICAgICAgd2FzIGR1cGxpY2F0ZWQgYWNyb3NzIHBsYXRmb3Jtcy4gIGdldFZhbHVl
IGFuZCBnZXRWYWx1ZVN0YXRpYyBub3cgY2FsbCBpbiB0byBwbGF0Zm9ybS1zcGVjaWZpYworICAg
ICAgICB2YXJpYW50cyB0aGF0IGluZGljYXRlIHdoZXRoZXIgdGhleSBoYW5kbGVkIHRoZSBxdWVy
eS4gIElmIHRoZSBxdWVyeSBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgcGxhdGZvcm0t
c3BlY2lmaWMgdmFyaWFudHMgdGhlbiB0aGUgY3Jvc3MtcGxhdGZvcm0gaGFuZGxlciBoYXMgYSBj
aGFuY2UgdG8gaGFuZGxlIGl0LgorCisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKTogR2l2ZSB0aGUg
cGxhdGZvcm0tc3BlY2lmaWMgdmFyaWFudCBhIGNoYW5jZSB0byBoYW5kbGUgdGhlCisgICAgICAg
IHZhcmlhYmxlIGxvb2t1cC4gIElmIGl0IGRvZXMgbm90IGhhbmRsZSBpdCwgcmV0dXJuIGFuIGVy
cm9yLgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWUpOiBHaXZlIHRoZSBw
bGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50IGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBzdGF0aWMKKyAg
ICAgICAgdmFyaWFudCBhIGNoYW5jZSB0byBoYW5kbGUgdGhlIHZhcmlhYmxlIGxvb2t1cC4gIElm
IHRoZXkgZG8gbm90IGhhbmRsZSBpdCwgYXBwbHkgdGhlIGNyb3NzLXBsYXRmb3JtCisgICAgICAg
IGhhbmRsZXIuICBBdCB0aGUgbW9tZW50IHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIGhhbmRsZXMg
TlBOVldpbmRvd05QT2JqZWN0LCBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0LAorICAgICAgICBh
bmQgTlBOVnByaXZhdGVNb2RlQm9vbCBhcyB0aGV5IGhhdmUgYW4gaWRlbnRpY2FsIGltcGxlbWVu
dGF0aW9uIGFjcm9zcyBwb3J0cy4KKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAg
ICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOiBQbHVnaW5WaWV3Tm9uZSBkb2VzIG5vdCBoYW5k
bGUgYW55IGxvb2t1cHMuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdl
dFZhbHVlU3RhdGljKTogRGl0dG8uCisgICAgICAgICogcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3Rh
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOgor
ICAgICAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBw
bHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZp
ZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGxhdGZvcm1HZXRWYWx1ZSk6CisgICAgICAgICogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRp
Yyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKTogRml4
IGEgYnVnIG5vdGljZWQgd2hpbGUgdXBkYXRpbmcgdGhpcyBjb2RlLgorICAgICAgICBUaGUgUXQg
aW1wbGVtZW50YXRpb24gb2YgdGhlIGhhbmRsZXIgZm9yIE5QTlZUb29sa2l0IHdhcyByZWx5aW5n
IG9uIGNhc2UgZmFsbC10aHJvdWdoCisgICAgICAgIHRvIGhhdmUgc29tZSB2YWx1ZXMgaGFuZGxl
ZCBieSB0aGUgc3RhdGljIGhhbmRsZXIuICBXaGVuIE5QTlZwcml2YXRlTW9kZUJvb2wgd2FzIGFk
ZGVkCisgICAgICAgIGl0IHdhcyBwbGFjZWQgYmVmb3JlIHRoZSBkZWZhdWx0IGNhc2UsIGludGVy
ZmVycmluZyB3aXRoIHRoaXMgZmFsbC10aHJvdWdoLiAgSXQgbm93CisgICAgICAgIGV4cGxpY2l0
bHkgaW5kaWNhdGVzIGluIHRoaXMgc2l0dWF0aW9uIHRoYXQgaXQgd2FzIG5vdCBoYW5kbGVkLgor
ICAgICAgICAqIHBsdWdpbnMvc3ltYmlhbi9QbHVnaW5WaWV3U3ltYmlhbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOgorICAgICAgICAqIHBsdWdp
bnMvd2luL1BsdWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpw
bGF0Zm9ybUdldFZhbHVlKToKKwogMjAxMC0wMi0yOCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5v
cm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYzA3ZmJlOC4uM2FlNmQwMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTMwMCw0ICsxMzAwLDc3IEBAIHZvaWQgUGx1Z2luVmlldzo6
a2VlcEFsaXZlKE5QUCBpbnN0YW5jZSkKIH0KICNlbmRpZgogCitOUEVycm9yIFBsdWdpblZpZXc6
OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK3sKKyAg
ICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKCVzKSIsIHByZXR0eU5h
bWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKKworICAgIE5QRXJyb3IgcmVzdWx0
OworICAgIGlmIChwbGF0Zm9ybUdldFZhbHVlU3RhdGljKHZhcmlhYmxlLCB2YWx1ZSwgJnJlc3Vs
dCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKK30KKworTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJp
YWJsZSwgdm9pZCogdmFsdWUpCit7CisgICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRW
YWx1ZSglcykiLCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7CisK
KyAgICBOUEVycm9yIHJlc3VsdDsKKyAgICBpZiAocGxhdGZvcm1HZXRWYWx1ZSh2YXJpYWJsZSwg
dmFsdWUsICZyZXN1bHQpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKHBsYXRm
b3JtR2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlLCAmcmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKworICAgIHN3aXRjaCh2YXJpYWJsZSkgeworI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQorICAgIGNhc2UgTlBOVldpbmRvd05QT2JqZWN0OiB7CisgICAgICAgIGlm
IChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklD
X0VSUk9SOworCisgICAgICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHRPYmplY3QgPSBtX3BhcmVu
dEZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2NyaXB0TlBPYmplY3QoKTsKKworICAgICAgICAvLyBS
ZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJl
OiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+
CisgICAgICAgIGlmICh3aW5kb3dTY3JpcHRPYmplY3QpCisgICAgICAgICAgICBfTlBOX1JldGFp
bk9iamVjdCh3aW5kb3dTY3JpcHRPYmplY3QpOworCisgICAgICAgIHZvaWQqKiB2ID0gKHZvaWQq
Kil2YWx1ZTsKKyAgICAgICAgKnYgPSB3aW5kb3dTY3JpcHRPYmplY3Q7CisKKyAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKworICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1lbnRO
UE9iamVjdDogeworICAgICAgICBpZiAobV9pc0phdmFTY3JpcHRQYXVzZWQpCisgICAgICAgICAg
ICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKworICAgICAgICBOUE9iamVjdCogcGx1Z2lu
U2NyaXB0T2JqZWN0ID0gMDsKKworICAgICAgICBpZiAobV9lbGVtZW50LT5oYXNUYWdOYW1lKGFw
cGxldFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBtX2VsZW1lbnQt
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKKyAgICAgICAgICAgIHBsdWdpblNjcmlwdE9iamVjdCA9
IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9lbGVtZW50KS0+Z2V0TlBPYmplY3Qo
KTsKKworICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQs
IGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVn
aW4vbnBydW50aW1lLmh0bWw+CisgICAgICAgIGlmIChwbHVnaW5TY3JpcHRPYmplY3QpCisgICAg
ICAgICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVnaW5TY3JpcHRPYmplY3QpOworCisgICAgICAg
IHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKKyAgICAgICAgKnYgPSBwbHVnaW5TY3JpcHRPYmpl
Y3Q7CisKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKyNlbmRpZgorCisg
ICAgY2FzZSBOUE5WcHJpdmF0ZU1vZGVCb29sOiB7CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX3Bh
cmVudEZyYW1lLT5wYWdlKCk7CisgICAgICAgIGlmICghcGFnZSkKKyAgICAgICAgICAgIHJldHVy
biBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICAqKChOUEJvb2wqKXZhbHVlKSA9ICFwYWdl
LT5zZXR0aW5ncygpIHx8IHBhZ2UtPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKworICAgIH0KKworICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oIGIvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuaAppbmRleCBmM2VhYzlhLi42ODk2NThlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmgKQEAgLTI0NCw2ICsyNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyBCT09MIFdJTkFQSSBob29rZWRFbmRQYWludChIV05ELCBjb25zdCBQQUlOVFNUUlVDVCopOwog
I2VuZGlmCiAKKyAgICAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyhOUE5W
YXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJlc3VsdCk7CisgICAgICAg
IGJvb2wgcGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUs
IE5QRXJyb3IqIHJlc3VsdCk7CisKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX3BhcmVudEZyYW1l
OwogICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gbV9wbHVnaW47CiAgICAgICAgIEVsZW1l
bnQqIG1fZWxlbWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9u
ZS5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwCmluZGV4IGYwZDhhMjMu
LmVkNWFkMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAK
KysrIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcApAQCAtNjcsMTUgKzY3LDE1
IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYs
IHVpbnQzMiwgY29uc3QgY2hhciopCiAgICAgcmV0dXJuIDA7CiB9CiAKLU5QRXJyb3IgUGx1Z2lu
Vmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUsIHZvaWQqKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0
Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlLCB2b2lkKiwgTlBFcnJvciopCiB7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlLCB2b2lk
KikKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSwg
dm9pZCosIE5QRXJyb3IqKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwIGIvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcAppbmRleCBkOGNiZmZl
Li4yZjE1ZGNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKQEAgLTU4Nywx
MCArNTg3LDggQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9y
PGNoYXI+JiBidWZmZXIsIHVpbnQzMiBsZW4sIGNvbnN0IGMKICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZh
bHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlNFcnJvciogcmVz
dWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoJXMp
IiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAgICAgc3dp
dGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVlRvb2xraXQ6CiAjaWYgZGVmaW5lZChYUF9V
TklYKQpAQCAtNTk4LDcgKzU5Niw4IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0
aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogI2Vsc2UKICAgICAgICAgKnN0
YXRpY19jYXN0PHVpbnQzMio+KHZhbHVlKSA9IDA7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBOUE5WU3VwcG9ydHNYRW1iZWRCb29sOgogI2lmIGRl
ZmluZWQoWFBfVU5JWCkKQEAgLTYwNiwxMSArNjA1LDEzIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6
Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogI2Vsc2UK
ICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IGZhbHNlOwogI2VuZGlmCi0g
ICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05P
X0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgTlBOVmphdmFzY3JpcHRF
bmFibGVkQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7
Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJS
X05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgTlBOVlN1cHBvcnRz
V2luZG93bGVzczoKICNpZiBkZWZpbmVkKFhQX1VOSVgpCkBAIC02MTgsMTcgKzYxOSwxNSBAQCBO
UEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2
b2lkKiB2YWx1ZSkKICNlbHNlCiAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkg
PSBmYWxzZTsKICNlbmRpZgotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKnJl
c3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFy
aWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdl
dFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmVzdWx0
KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWUoJXMpIiwgcHJldHR5
TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAgICAgc3dpdGNoICh2YXJp
YWJsZSkgewogICAgIGNhc2UgTlBOVnhEaXNwbGF5OgogI2lmIGRlZmluZWQoWFBfVU5JWCkKQEAg
LTYzNiw1NiArNjM1LDIxIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0g
KHZvaWQgKilHREtfRElTUExBWSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqKHZvaWQg
KiopdmFsdWUgPSAodm9pZCAqKUdUS19YVEJJTihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+eHRj
bGllbnQueHRkaXNwbGF5OwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAg
ICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKICNlbHNlCi0gICAgICAgIHJldHVybiBOUEVSUl9H
RU5FUklDX0VSUk9SOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfR0VORVJJQ19FUlJPUjsKICNl
bmRpZgorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIGRlZmluZWQoWFBfVU5JWCkKICAgICBj
YXNlIE5QTlZ4dEFwcENvbnRleHQ6CiAgICAgICAgIGlmICghbV9uZWVkc1hFbWJlZCkgewogICAg
ICAgICAgICAgKih2b2lkICoqKXZhbHVlID0gWHREaXNwbGF5VG9BcHBsaWNhdGlvbkNvbnRleHQg
KEdUS19YVEJJTihwbGF0Zm9ybVBsdWdpbldpZGdldCgpKS0+eHRjbGllbnQueHRkaXNwbGF5KTsK
IAotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAgICAgKnJlc3Vs
dCA9IE5QRVJSX05PX0VSUk9SOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBO
UEVSUl9HRU5FUklDX0VSUk9SOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICAgICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAgICAgIGlm
IChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKLQotICAgICAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9
IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAg
ICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRl
c2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBy
dW50aW1lLmh0bWw+Ci0gICAgICAgICAgICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQotICAgICAg
ICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAg
ICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKLSAgICAgICAgICAgICp2ID0gd2luZG93
U2NyaXB0T2JqZWN0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIE5QTlZQbHVnaW5FbGVtZW50TlBPYmpl
Y3Q6IHsKLSAgICAgICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLQotICAgICAgICAgICAgTlBPYmplY3Qq
IHBsdWdpblNjcmlwdE9iamVjdCA9IDA7Ci0KLSAgICAgICAgICAgIGlmIChtX2VsZW1lbnQtPmhh
c1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8
IG1fZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgICAgIHBsdWdp
blNjcmlwdE9iamVjdCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9lbGVtZW50
KS0+Z2V0TlBPYmplY3QoKTsKLQotICAgICAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVj
dGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96aWxs
YS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAgICAgICAgICAgaWYgKHBs
dWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVn
aW5TY3JpcHRPYmplY3QpOwotCi0gICAgICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7
Ci0gICAgICAgICAgICAqdiA9IHBsdWdpblNjcmlwdE9iamVjdDsKLQotICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9CisgICAgICAgICAgICAqcmVzdWx0ID0gTlBF
UlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAogICAgICAg
ICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogewpAQCAtNjk3LDIwICs2NjEsMTIgQEAgTlBFcnJv
ciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUp
CiAgICAgICAgICAgICBIR0RJT0JKKiB3ID0gcmVpbnRlcnByZXRfY2FzdDxIR0RJT0JKKj4odmFs
dWUpOwogICAgICAgICAgICAgKncgPSBHREtfV0lORE9XX0hXTkQobV9wYXJlbnRGcmFtZS0+dmll
dygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT53aW5kb3cpOwogI2VuZGlm
Ci0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYXNlIE5QTlZwcml2YXRlTW9kZUJvb2w6IHsKLSAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBt
X3BhcmVudEZyYW1lLT5wYWdlKCk7Ci0gICAgICAgICAgICBpZiAoIXBhZ2UpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICAgICAqKChOUEJvb2wq
KXZhbHVlKSA9ICFwYWdlLT5zZXR0aW5ncygpIHx8IHBhZ2UtPnNldHRpbmdzKCktPnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAg
ICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBn
ZXRWYWx1ZVN0YXRpYyh2YXJpYWJsZSwgdmFsdWUpOwogICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLmNwcCBi
L1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5jcHAKaW5kZXggNzYyNzA5ZC4uNjBm
YmE0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLmNwcAor
KysgYi9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwCkBAIC0yNTQsMzMgKzI1
NCwzNiBAQCB2b2lkIFBsdWdpblZpZXc6OnBsYXRmb3JtRGVzdHJveSgpCiAKIC8vIFVzZWQgYmVm
b3JlIHRoZSBwbHVnaW4gdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZCBwcm9wZXJseSwgYW5kIGFz
IGEKIC8vIGZhbGxiYWNrIGZvciB2YXJpYWJsZXMgdGhhdCBkbyBub3QgcmVxdWlyZSBhIHZpZXcg
dG8gcmVzb2x2ZS4KLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZh
bHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmVz
dWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoJXMp
IiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAgICAgc3dp
dGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVlRvb2xraXQ6CiAgICAgICAgICpzdGF0aWNf
Y2FzdDx1aW50MzIqPih2YWx1ZSkgPSAwOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7
CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6CiAgICAgICAgICpzdGF0aWNf
Y2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICNpZm5kZWYgTlBfTk9fQ0FSQk9OCiAgICAgY2FzZSBOUE5Wc3VwcG9ydHNDYXJib25C
b29sOgogICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJS
T1I7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAjZW5kaWYKICAgICBjYXNlIE5QTlZzdXBwb3J0
c0NvY29hQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IGZhbHNl
OwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVS
Ul9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBDb3JlR3JhcGhpY3Mg
aXMgdGhlIG9ubHkgZHJhd2luZyBtb2RlbCB3ZSBzdXBwb3J0CiAgICAgY2FzZSBOUE5Wc3VwcG9y
dHNDb3JlR3JhcGhpY3NCb29sOgogICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUp
ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAqcmVzdWx0
ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWZuZGVmIE5QX05P
X1FVSUNLRFJBVwogICAgIC8vIFF1aWNrRHJhdyBpcyBkZXByZWNhdGVkIGluIDEwLjUgYW5kIG5v
dCBzdXBwb3J0ZWQgb24gNjQtYml0CkBAIC0yODksNjAgKzI5MiwxNyBAQCBOUEVycm9yIFBsdWdp
blZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkK
ICAgICBjYXNlIE5QTlZzdXBwb3J0c09wZW5HTEJvb2w6CiAgICAgY2FzZSBOUE5Wc3VwcG9ydHND
b3JlQW5pbWF0aW9uQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9
IGZhbHNlOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5Q
RVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIC8vIFVzZWQgb25seSBmb3IgdmFyaWFibGVzIHRoYXQgbmVlZCBhIHZpZXcg
dG8gcmVzb2x2ZQotTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJp
YWJsZSwgdm9pZCogdmFsdWUpCitib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBOUEVycm9yKiBlcnJvcikKIHsKLSAgICBM
T0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlKCVzKSIsIHByZXR0eU5hbWVGb3JOUE5W
YXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQotICAgIHN3aXRjaCAodmFyaWFibGUpIHsKLSAg
ICBjYXNlIE5QTlZXaW5kb3dOUE9iamVjdDogewotICAgICAgICBpZiAobV9pc0phdmFTY3JpcHRQ
YXVzZWQpCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLQotICAgICAg
ICBOUE9iamVjdCogd2luZG93U2NyaXB0T2JqZWN0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCkt
PndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7Ci0KLSAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4
cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaW4KLSAgICAgICAgLy8gPGh0dHA6
Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAgICAg
ICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQotICAgICAgICAgICAgX05QTl9SZXRhaW5PYmplY3Qo
d2luZG93U2NyaXB0T2JqZWN0KTsKLQotICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7
Ci0gICAgICAgICp2ID0gd2luZG93U2NyaXB0T2JqZWN0OwotCi0gICAgICAgIHJldHVybiBOUEVS
Ul9OT19FUlJPUjsKLSAgICB9Ci0KLSAgICBjYXNlIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3Q6
IHsKLSAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAgICAgICAgcmV0dXJu
IE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0KLSAgICAgICAgTlBPYmplY3QqIHBsdWdpblNjcmlwdE9i
amVjdCA9IDA7Ci0KLSAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcp
IHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdO
YW1lKG9iamVjdFRhZykpCi0gICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0aWNf
Y2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7Ci0KLSAg
ICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNj
cmliZWQgaW4KLSAgICAgICAgLy8gPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1
Z2luL25wcnVudGltZS5odG1sPgotICAgICAgICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0KQotICAg
ICAgICAgICAgX05QTl9SZXRhaW5PYmplY3QocGx1Z2luU2NyaXB0T2JqZWN0KTsKLQotICAgICAg
ICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7Ci0gICAgICAgICp2ID0gcGx1Z2luU2NyaXB0T2Jq
ZWN0OwotCi0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICB9Ci0KLSAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKLSAg
ICB9Ci0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudChT
Y3JvbGxWaWV3KiBwYXJlbnQpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1
Z2luVmlld1F0LmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCmluZGV4
IDAwYTkwNzMuLjIzM2E4MDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5W
aWV3UXQuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwCkBAIC01
NTMsMTA1ICs1NTMsNjMgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUo
VmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMiBsZW4sIGNvbnN0IGMKICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9y
bUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJv
ciogcmVzdWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0
aWMoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCiAg
ICAgc3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVlRvb2xraXQ6CiAgICAgICAgICpz
dGF0aWNfY2FzdDx1aW50MzIqPih2YWx1ZSkgPSAwOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1hFbWJlZEJvb2w6CiAgICAgICAgICpzdGF0
aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6CiAgICAgICAgICpz
dGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6CiAgICAgICAgICpz
dGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5QRXJyb3IgUGx1Z2luVmll
dzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQorYm9vbCBQbHVn
aW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSwgTlBFcnJvciogcmVzdWx0KQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0
VmFsdWUoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwot
CiAgICAgc3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVnhEaXNwbGF5OgogICAgICAg
ICAqKHZvaWQgKiopdmFsdWUgPSBRWDExSW5mbzo6ZGlzcGxheSgpOwotICAgICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6Ci0gICAgICAgIHJl
dHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAgaWYgKG1faXNKYXZh
U2NyaXB0UGF1c2VkKQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0K
LSAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9IG1fcGFyZW50RnJhbWUtPnNj
cmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAgICAgIC8vIFJldHVybiB2YWx1
ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8v
d3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAg
aWYgKHdpbmRvd1NjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdp
bmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwot
ICAgICAgICAqdiA9IHdpbmRvd1NjcmlwdE9iamVjdDsKLQotICAgICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7Ci0gICAgfQotCi0gICAgY2FzZSBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7
Ci0gICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAgIHJldHVybiBO
UEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmpl
Y3QgPSAwOwotCi0gICAgICAgIGlmIChtX2VsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8
fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFt
ZShvYmplY3RUYWcpKQotICAgICAgICAgICAgcGx1Z2luU2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihtX2VsZW1lbnQpLT5nZXROUE9iamVjdCgpOwotCi0gICAg
ICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3Jp
YmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRp
bWUuaHRtbD4KLSAgICAgICAgaWYgKHBsdWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9O
UE5fUmV0YWluT2JqZWN0KHBsdWdpblNjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCoqIHYg
PSAodm9pZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHBsdWdpblNjcmlwdE9iamVjdDsKLQotICAg
ICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotI2VuZGlmCisgICAgICAgICpyZXN1
bHQgPSBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNh
c2UgTlBOVm5ldHNjYXBlV2luZG93OiB7CiAgICAgICAgIHZvaWQqIHcgPSByZWludGVycHJldF9j
YXN0PHZvaWQqPih2YWx1ZSk7CiAgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSBtX3Bh
cmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CiAg
ICAgICAgICooKFhJRCAqKXcpID0gY2xpZW50ID8gY2xpZW50LT5vd25lcldpZGdldCgpLT53aW5k
b3coKS0+d2luSWQoKSA6IDA7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAg
ICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICAgICBjYXNlIE5QTlZUb29sa2l0OgogICAgICAgICBpZiAobV9wbHVnaW4tPnF1aXJrcygp
LmNvbnRhaW5zKFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0KSkgewogICAgICAgICAgICAg
KigodWludDMyICopdmFsdWUpID0gMjsKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJP
UjsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9Ci0KLSAgICBjYXNlIE5QTlZwcml2YXRlTW9kZUJvb2w6IHsK
LSAgICAgICAgUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsKLSAgICAgICAgaWYg
KCFwYWdlKQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAg
ICooKE5QQm9vbCopdmFsdWUpID0gIXBhZ2UtPnNldHRpbmdzKCkgfHwgcGFnZS0+c2V0dGluZ3Mo
KS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7Ci0gICAgfQotICAgICAgICAvLyBmYWxsIHRocm91Z2gKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3
OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbHVnaW5zL3N5bWJpYW4vUGx1Z2luVmlld1N5bWJpYW4uY3BwIGIvV2ViQ29yZS9wbHVnaW5z
L3N5bWJpYW4vUGx1Z2luVmlld1N5bWJpYW4uY3BwCmluZGV4IDM0OTI4NjguLmY0MWVmMWUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9zeW1iaWFuL1BsdWdpblZpZXdTeW1iaWFuLmNwcAor
KysgYi9XZWJDb3JlL3BsdWdpbnMvc3ltYmlhbi9QbHVnaW5WaWV3U3ltYmlhbi5jcHAKQEAgLTMw
Nyw2NiArMzA3LDI2IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZl
Y3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzIgbGVuLCBjb25zdCBjCiAgICAgcmV0dXJuIE5QRVJS
X05PX0VSUk9SOwogfQogCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZh
cmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1H
ZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3Iq
IHJlc3VsdCkKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGlj
KCVzKSIsIHByZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQogICAg
IHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6
CiAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6
CiAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBF
UlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5QRXJy
b3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVl
KQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlLCB2b2lkKiwg
TlBFcnJvciopCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRWYWx1ZSglcyki
LCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7Ci0KLSAgICBzd2l0
Y2ggKHZhcmlhYmxlKSB7Ci0gICAgY2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAg
aWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0KLSAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9IG1fcGFy
ZW50RnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAgICAgIC8v
IFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhl
cmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRt
bD4KLSAgICAgICAgaWYgKHdpbmRvd1NjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0
YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9p
ZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHdpbmRvd1NjcmlwdE9iamVjdDsKLSAgICAgICAgICAg
IAotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotCi0gICAgY2FzZSBOUE5W
UGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7Ci0gICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNl
ZCkKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgICAgIE5Q
T2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAwOwotCi0gICAgICAgIGlmIChtX2VsZW1lbnQt
Pmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcp
IHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICAgICAgcGx1Z2lu
U2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihtX2VsZW1lbnQp
LT5nZXROUE9iamVjdCgpOwotCi0gICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0
byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3Jn
L3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAgaWYgKHBsdWdpblNjcmlw
dE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHBsdWdpblNjcmlwdE9iamVj
dCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHBs
dWdpblNjcmlwdE9iamVjdDsKLQotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAg
fSAgICAgICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RhdGljKHZh
cmlhYmxlLCB2YWx1ZSk7Ci0gICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy93
aW4vUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDRmZGE4ZS4uMTJkMjYxMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9XZWJDb3JlL3BsdWdp
bnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCkBAIC0yNiw0NCArMjYsMzkgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgotI2lmICFQTEFURk9STShXWCkKLSNpbmNsdWRlICJCaXRtYXBJbmZvLmgi
Ci0jZW5kaWYKICNpbmNsdWRlICJCcmlkZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZvY3Vz
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgi
Ci0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJIb3N0V2luZG93LmgiCi0jaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIkZvY3VzQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBsdWdp
bkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKKyNpbmNsdWRlICJQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luTWVzc2FnZVRocm90dGxlcldp
bi5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKLSNpbmNsdWRlICJQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCi0jaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlBs
dWdpbkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKLSNpbmNsdWRlICJQbHVn
aW5QYWNrYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJjX2luc3RhbmNl
LmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKQEAgLTcyLDYgKzY3LDEwIEBACiAjaW5j
bHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAor
I2lmICFQTEFURk9STShXWCkKKyNpbmNsdWRlICJCaXRtYXBJbmZvLmgiCisjZW5kaWYKKwogI2lm
IE9TKFdJTkNFKQogI3VuZGVmIExPR19OUEVSUk9SCiAjZGVmaW5lIExPR19OUEVSUk9SKHgpCkBA
IC04NjcsNzQgKzg2NiwyOSBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmls
ZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyIGxlbiwgY29uc3QgYwogICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKIH0KIAotTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyhO
UE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCitib29sIFBsdWdpblZpZXc6OnBsYXRm
b3JtR2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUsIHZvaWQqLCBOUEVycm9yKikKIHsKLSAgICBM
T0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKCVzKSIsIHByZXR0eU5hbWVG
b3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQotICAgIHJldHVybiBOUEVSUl9HRU5F
UklDX0VSUk9SOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotTlBFcnJvciBQbHVnaW5WaWV3Ojpn
ZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCitib29sIFBsdWdpblZp
ZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBO
UEVycm9yKiByZXN1bHQpCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRWYWx1
ZSglcykiLCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7Ci0KICAg
ICBzd2l0Y2ggKHZhcmlhYmxlKSB7Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgICAgIGNhc2UgTlBOVldpbmRvd05QT2JqZWN0OiB7Ci0gICAgICAgICAgICBpZiAobV9pc0ph
dmFTY3JpcHRQYXVzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJS
T1I7Ci0KLSAgICAgICAgICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHRPYmplY3QgPSBtX3BhcmVu
dEZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2NyaXB0TlBPYmplY3QoKTsKLQotICAgICAgICAgICAg
Ly8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQg
aGVyZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5o
dG1sPgotICAgICAgICAgICAgaWYgKHdpbmRvd1NjcmlwdE9iamVjdCkKLSAgICAgICAgICAgICAg
ICBfTlBOX1JldGFpbk9iamVjdCh3aW5kb3dTY3JpcHRPYmplY3QpOwotCi0gICAgICAgICAgICB2
b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7Ci0gICAgICAgICAgICAqdiA9IHdpbmRvd1NjcmlwdE9i
amVjdDsKLQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0K
LSAgICAgICAgY2FzZSBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7Ci0gICAgICAgICAgICBp
ZiAobV9pc0phdmFTY3JpcHRQYXVzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dF
TkVSSUNfRVJST1I7Ci0KLSAgICAgICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3Qg
PSAwOwotCi0gICAgICAgICAgICBpZiAobV9lbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykg
fHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05h
bWUob2JqZWN0VGFnKSkKLSAgICAgICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0
aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7Ci0K
LSAgICAgICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwg
YXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdp
bi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAgICAgIGlmIChwbHVnaW5TY3JpcHRPYmplY3QpCi0g
ICAgICAgICAgICAgICAgX05QTl9SZXRhaW5PYmplY3QocGx1Z2luU2NyaXB0T2JqZWN0KTsKLQot
ICAgICAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwotICAgICAgICAgICAgKnYgPSBw
bHVnaW5TY3JpcHRPYmplY3Q7Ci0KLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
LSAgICAgICAgfQotI2VuZGlmCi0KICAgICAgICAgY2FzZSBOUE5WbmV0c2NhcGVXaW5kb3c6IHsK
ICAgICAgICAgICAgIEhXTkQqIHcgPSByZWludGVycHJldF9jYXN0PEhXTkQqPih2YWx1ZSk7Ci0K
ICAgICAgICAgICAgICp3ID0gd2luZG93SGFuZGxlRm9yUGFnZUNsaWVudChwYXJlbnQoKSA/IHBh
cmVudCgpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpIDogMCk7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOUEVS
Ul9OT19FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOiB7Ci0gICAgICAgICAgICBOUEJvb2wgKnJl
c3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlBCb29sKj4odmFsdWUpOwotCi0gICAgICAgICAgICAq
cmVzdWx0ID0gVFJVRTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05P
X0VSUk9SOworICAgICAgICAgICAgTlBCb29sKiBmbGFnID0gcmVpbnRlcnByZXRfY2FzdDxOUEJv
b2wqPih2YWx1ZSk7CisgICAgICAgICAgICAqZmxhZyA9IFRSVUU7CisgICAgICAgICAgICAqcmVz
dWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKICAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Omlu
dmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi0tIAoxLjcuMC44Ny5nMDkwMWQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49801</attachid>
            <date>2010-03-02 05:47:37 -0800</date>
            <delta_ts>2010-03-02 14:38:43 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>0001-Part-of-Bug-30348-Implement-private-mode-for-plug-in.patch</filename>
            <type>text/plain</type>
            <size>31934</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">RnJvbSA1YjRiOWY2OTZmMjk5ZWFhYjU5NDU3ZmQzZmJkNmE4OWYzNWUxYjQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFJvd2UgPG1yb3dlQGFwcGxlLmNvbT4KRGF0ZTogVHVl
LCAyIE1hciAyMDEwIDAzOjAxOjEwIC0wODAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIFBhcnQgb2Yg
QnVnIDMwMzQ4OiBJbXBsZW1lbnQgcHJpdmF0ZSBtb2RlIGZvciBwbHVnLWlucyBvbiBXaW5kb3dz
CiA8aHR0cDovL3dlYmtpdC5vcmcvYi8zMDM0OD4gLyA8cmRhcjovL3Byb2JsZW0vNzU2MjI2MT4K
ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKV2ViQ29yZToKClJld29yayBQbHVnaW5WaWV3
OjpnZXRWYWx1ZSBhbmQgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMgdG8gcmVtb3ZlIHRoZSBh
bW91bnQgb2YgY29kZSB0aGF0CndhcyBkdXBsaWNhdGVkIGFjcm9zcyBwbGF0Zm9ybXMuICBnZXRW
YWx1ZSBhbmQgZ2V0VmFsdWVTdGF0aWMgbm93IGNhbGwgaW4gdG8gcGxhdGZvcm0tc3BlY2lmaWMK
dmFyaWFudHMgdGhhdCBpbmRpY2F0ZSB3aGV0aGVyIHRoZXkgaGFuZGxlZCB0aGUgcXVlcnkuICBJ
ZiB0aGUgcXVlcnkgaXMgbm90IGhhbmRsZWQgYnkgdGhlCnBsYXRmb3JtLXNwZWNpZmljIHZhcmlh
bnRzIHRoZW4gdGhlIGNyb3NzLXBsYXRmb3JtIGhhbmRsZXIgaGFzIGEgY2hhbmNlIHRvIGhhbmRs
ZSBpdC4KCiogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKFdlYkNvcmU6OlBsdWdpblZpZXc6Omdl
dFZhbHVlU3RhdGljKTogR2l2ZSB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgdmFyaWFudCBhIGNoYW5j
ZSB0byBoYW5kbGUgdGhlCnZhcmlhYmxlIGxvb2t1cC4gIElmIGl0IGRvZXMgbm90IGhhbmRsZSBp
dCwgcmV0dXJuIGFuIGVycm9yLgooV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWUpOiBHaXZl
IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50IGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyBzdGF0
aWMKdmFyaWFudCBhIGNoYW5jZSB0byBoYW5kbGUgdGhlIHZhcmlhYmxlIGxvb2t1cC4gIElmIHRo
ZXkgZG8gbm90IGhhbmRsZSBpdCwgYXBwbHkgdGhlIGNyb3NzLXBsYXRmb3JtCmhhbmRsZXIuICBB
dCB0aGUgbW9tZW50IHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIGhhbmRsZXMgTlBOVldpbmRvd05Q
T2JqZWN0LCBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0LAphbmQgTlBOVnByaXZhdGVNb2RlQm9v
bCBhcyB0aGV5IGhhdmUgYW4gaWRlbnRpY2FsIGltcGxlbWVudGF0aW9uIGFjcm9zcyBwb3J0cy4K
KiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKiBwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcDoKKFdl
YkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOiBQbHVnaW5WaWV3Tm9uZSBkb2Vz
IG5vdCBoYW5kbGUgYW55IGxvb2t1cHMuCihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdl
dFZhbHVlU3RhdGljKTogRGl0dG8uCiogcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHA6CihX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKToKKFdlYkNvcmU6OlBs
dWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOgpwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbXBsZW1l
bnRhdGlvbi4KKiBwbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLmNwcDoKKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMpOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxh
dGZvcm1HZXRWYWx1ZSk6CiogcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwOgooV2ViQ29yZTo6
UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6CihXZWJDb3JlOjpQbHVnaW5WaWV3
OjpwbGF0Zm9ybUdldFZhbHVlKTogRml4IGEgYnVnIG5vdGljZWQgd2hpbGUgdXBkYXRpbmcgdGhp
cyBjb2RlLgpUaGUgUXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhbmRsZXIgZm9yIE5QTlZUb29s
a2l0IHdhcyByZWx5aW5nIG9uIGNhc2UgZmFsbC10aHJvdWdoCnRvIGhhdmUgc29tZSB2YWx1ZXMg
aGFuZGxlZCBieSB0aGUgc3RhdGljIGhhbmRsZXIuICBXaGVuIE5QTlZwcml2YXRlTW9kZUJvb2wg
d2FzIGFkZGVkCml0IHdhcyBwbGFjZWQgYmVmb3JlIHRoZSBkZWZhdWx0IGNhc2UsIGludGVyZmVy
cmluZyB3aXRoIHRoaXMgZmFsbC10aHJvdWdoLiAgSXQgbm93CmV4cGxpY2l0bHkgaW5kaWNhdGVz
IGluIHRoaXMgc2l0dWF0aW9uIHRoYXQgaXQgd2FzIG5vdCBoYW5kbGVkLgoqIHBsdWdpbnMvc3lt
Ymlhbi9QbHVnaW5WaWV3U3ltYmlhbi5jcHA6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9y
bUdldFZhbHVlU3RhdGljKToKKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUp
OgoqIHBsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwOgooV2ViQ29yZTo6UGx1Z2luVmlldzo6
cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6CihXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdl
dFZhbHVlKToKCkxheW91dFRlc3RzOgoKKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDogUmVtb3ZlIHBs
dWdpbnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbCBub3cgdGhhdCBpdCBwYXNzZXMuCi0t
LQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSAr
KysKIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkICAgICAgICAgICAgICB8ICAgIDMg
LQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NCAr
KysrKysrKysrKysKIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCAgICAgICAgICAgICAg
ICB8ICAgNzMgKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
aCAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld05v
bmUuY3BwICAgICAgICAgICAgfCAgICA4ICstCiBXZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZp
ZXdHdGsuY3BwICAgICAgICAgfCAgIDg0ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBXZWJDb3Jl
L3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwICAgICAgICAgfCAgIDcyICsrKysrLS0tLS0t
LS0tLS0tLS0tCiBXZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCAgICAgICAgICAg
fCAgIDgyICsrKysrKy0tLS0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGx1Z2lucy9zeW1iaWFuL1Bs
dWdpblZpZXdTeW1iaWFuLmNwcCB8ICAgNTUgKystLS0tLS0tLS0tLS0tCiBXZWJDb3JlL3BsdWdp
bnMvd2luL1BsdWdpblZpZXdXaW4uY3BwICAgICAgICAgfCAgIDkyICsrKysrKystLS0tLS0tLS0t
LS0tLS0tLS0KIDExIGZpbGVzIGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspLCAzMDEgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDgzMjdiNmIuLmZlMDQ1NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMC0wMy0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgQnVnIDMwMzQ4OiBJbXBs
ZW1lbnQgcHJpdmF0ZSBtb2RlIGZvciBwbHVnLWlucyBvbiBXaW5kb3dzCisgICAgICAgIDxodHRw
Oi8vd2Via2l0Lm9yZy9iLzMwMzQ4PiAvIDxyZGFyOi8vcHJvYmxlbS83NTYyMjYxPgorCisgICAg
ICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6IFJlbW92ZSBwbHVnaW5zL3ByaXZhdGUtYnJvd3Np
bmctbW9kZS0yLmh0bWwgbm93IHRoYXQgaXQgcGFzc2VzLgorCiAyMDEwLTAyLTI4ICBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggZTQ2
YzQ3Mi4uNTJmOTkxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTY3NCw5ICs2NzQs
NiBAQCBmYXN0L2RvbS9XaW5kb3cvc2xvdy11bmxvYWQtaGFuZGxlci1vbmx5LWZyYW1lLWlzLXN0
b3BwZWQuaHRtbAogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMw
MzQ4PgogcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUuaHRtbAogCi0jIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE4MAotcGx1Z2lucy9wcml2YXRlLWJyb3dz
aW5nLW1vZGUtMi5odG1sCi0KICMgU2tpcCB0aGVzZSB0d28gZmFpbHVyZXMgSSBpbnRyb2R1Y2Vk
IHRoaXMgbW9ybmluZyB3aGlsZSBJIGV4cGxvcmUgdGhlbS4KIGh0dHAvdGVzdHMvZ2xvYmFsaGlz
dG9yeS9oaXN0b3J5LWRlbGVnYXRlLWJhc2ljLXZpc2l0ZWQtbGlua3MuaHRtbAogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ3NGI0ZjQu
LmQxNmJiNzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMDMtMDIgIE1hcmsgUm93ZSAgPG1yb3dlQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBQYXJ0IG9mIEJ1ZyAzMDM0ODogSW1wbGVtZW50IHByaXZhdGUgbW9kZSBmb3IgcGx1Zy1pbnMg
b24gV2luZG93cworICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8zMDM0OD4gLyA8cmRhcjov
L3Byb2JsZW0vNzU2MjI2MT4KKworICAgICAgICBSZXdvcmsgUGx1Z2luVmlldzo6Z2V0VmFsdWUg
YW5kIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljIHRvIHJlbW92ZSB0aGUgYW1vdW50IG9mIGNv
ZGUgdGhhdAorICAgICAgICB3YXMgZHVwbGljYXRlZCBhY3Jvc3MgcGxhdGZvcm1zLiAgZ2V0VmFs
dWUgYW5kIGdldFZhbHVlU3RhdGljIG5vdyBjYWxsIGluIHRvIHBsYXRmb3JtLXNwZWNpZmljCisg
ICAgICAgIHZhcmlhbnRzIHRoYXQgaW5kaWNhdGUgd2hldGhlciB0aGV5IGhhbmRsZWQgdGhlIHF1
ZXJ5LiAgSWYgdGhlIHF1ZXJ5IGlzIG5vdCBoYW5kbGVkIGJ5IHRoZQorICAgICAgICBwbGF0Zm9y
bS1zcGVjaWZpYyB2YXJpYW50cyB0aGVuIHRoZSBjcm9zcy1wbGF0Zm9ybSBoYW5kbGVyIGhhcyBh
IGNoYW5jZSB0byBoYW5kbGUgaXQuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMpOiBHaXZlIHRo
ZSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50IGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUKKyAgICAg
ICAgdmFyaWFibGUgbG9va3VwLiAgSWYgaXQgZG9lcyBub3QgaGFuZGxlIGl0LCByZXR1cm4gYW4g
ZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRWYWx1ZSk6IEdpdmUgdGhl
IHBsYXRmb3JtLXNwZWNpZmljIHZhcmlhbnQgYW5kIHBsYXRmb3JtLXNwZWNpZmljIHN0YXRpYwor
ICAgICAgICB2YXJpYW50IGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgdmFyaWFibGUgbG9va3VwLiAg
SWYgdGhleSBkbyBub3QgaGFuZGxlIGl0LCBhcHBseSB0aGUgY3Jvc3MtcGxhdGZvcm0KKyAgICAg
ICAgaGFuZGxlci4gIEF0IHRoZSBtb21lbnQgdGhlIGNyb3NzLXBsYXRmb3JtIGNvZGUgaGFuZGxl
cyBOUE5WV2luZG93TlBPYmplY3QsIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3QsCisgICAgICAg
IGFuZCBOUE5WcHJpdmF0ZU1vZGVCb29sIGFzIHRoZXkgaGF2ZSBhbiBpZGVudGljYWwgaW1wbGVt
ZW50YXRpb24gYWNyb3NzIHBvcnRzLgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5oOgor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6IFBsdWdpblZpZXdOb25lIGRvZXMgbm90IGhh
bmRsZSBhbnkgbG9va3Vwcy4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3Jt
R2V0VmFsdWVTdGF0aWMpOiBEaXR0by4KKyAgICAgICAgKiBwbHVnaW5zL2d0ay9QbHVnaW5WaWV3
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWVT
dGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6
CisgICAgICAgIHBsYXRmb3JtLWluZGVwZW5kZW50IGltcGxlbWVudGF0aW9uLgorICAgICAgICAq
IHBsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3OjpwbGF0Zm9ybUdldFZhbHVlKToKKyAgICAgICAgKiBwbHVnaW5zL3F0L1BsdWdpblZpZXdR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3Rh
dGljKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUpOiBG
aXggYSBidWcgbm90aWNlZCB3aGlsZSB1cGRhdGluZyB0aGlzIGNvZGUuCisgICAgICAgIFRoZSBR
dCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFuZGxlciBmb3IgTlBOVlRvb2xraXQgd2FzIHJlbHlp
bmcgb24gY2FzZSBmYWxsLXRocm91Z2gKKyAgICAgICAgdG8gaGF2ZSBzb21lIHZhbHVlcyBoYW5k
bGVkIGJ5IHRoZSBzdGF0aWMgaGFuZGxlci4gIFdoZW4gTlBOVnByaXZhdGVNb2RlQm9vbCB3YXMg
YWRkZWQKKyAgICAgICAgaXQgd2FzIHBsYWNlZCBiZWZvcmUgdGhlIGRlZmF1bHQgY2FzZSwgaW50
ZXJmZXJyaW5nIHdpdGggdGhpcyBmYWxsLXRocm91Z2guICBJdCBub3cKKyAgICAgICAgZXhwbGlj
aXRseSBpbmRpY2F0ZXMgaW4gdGhpcyBzaXR1YXRpb24gdGhhdCBpdCB3YXMgbm90IGhhbmRsZWQu
CisgICAgICAgICogcGx1Z2lucy9zeW1iaWFuL1BsdWdpblZpZXdTeW1iaWFuLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZSk6CisgICAgICAgICogcGx1
Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnBsYXRmb3JtR2V0VmFsdWUpOgorCiAyMDEwLTAxLTI4ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhp
ZGF5YXQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYzA3ZmJlOC4uNWFjM2VjOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTMwMCw0ICsxMzAwLDc3IEBAIHZvaWQgUGx1Z2luVmlldzo6
a2VlcEFsaXZlKE5QUCBpbnN0YW5jZSkKIH0KICNlbmRpZgogCitOUEVycm9yIFBsdWdpblZpZXc6
OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK3sKKyAg
ICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKCVzKSIsIHByZXR0eU5h
bWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKKworICAgIE5QRXJyb3IgcmVzdWx0
OworICAgIGlmIChwbGF0Zm9ybUdldFZhbHVlU3RhdGljKHZhcmlhYmxlLCB2YWx1ZSwgJnJlc3Vs
dCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKK30KKworTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJp
YWJsZSwgdm9pZCogdmFsdWUpCit7CisgICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRW
YWx1ZSglcykiLCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7CisK
KyAgICBOUEVycm9yIHJlc3VsdDsKKyAgICBpZiAocGxhdGZvcm1HZXRWYWx1ZSh2YXJpYWJsZSwg
dmFsdWUsICZyZXN1bHQpKQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKHBsYXRm
b3JtR2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlLCAmcmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKworICAgIHN3aXRjaCAodmFyaWFibGUpIHsKKyNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKKyAgICBjYXNlIE5QTlZXaW5kb3dOUE9iamVjdDogeworICAgICAgICBp
ZiAobV9pc0phdmFTY3JpcHRQYXVzZWQpCisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUjsKKworICAgICAgICBOUE9iamVjdCogd2luZG93U2NyaXB0T2JqZWN0ID0gbV9wYXJl
bnRGcmFtZS0+c2NyaXB0KCktPndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CisKKyAgICAgICAgLy8g
UmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVy
ZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1s
PgorICAgICAgICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQorICAgICAgICAgICAgX05QTl9SZXRh
aW5PYmplY3Qod2luZG93U2NyaXB0T2JqZWN0KTsKKworICAgICAgICB2b2lkKiogdiA9ICh2b2lk
KiopdmFsdWU7CisgICAgICAgICp2ID0gd2luZG93U2NyaXB0T2JqZWN0OworCisgICAgICAgIHJl
dHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICB9CisKKyAgICBjYXNlIE5QTlZQbHVnaW5FbGVtZW50
TlBPYmplY3Q6IHsKKyAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQorICAgICAgICAg
ICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisKKyAgICAgICAgTlBPYmplY3QqIHBsdWdp
blNjcmlwdE9iamVjdCA9IDA7CisKKyAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFnTmFtZShh
cHBsZXRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9lbGVtZW50
LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCisgICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3Qg
PSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0
KCk7CisKKyAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVk
LCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1
Z2luL25wcnVudGltZS5odG1sPgorICAgICAgICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0KQorICAg
ICAgICAgICAgX05QTl9SZXRhaW5PYmplY3QocGx1Z2luU2NyaXB0T2JqZWN0KTsKKworICAgICAg
ICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7CisgICAgICAgICp2ID0gcGx1Z2luU2NyaXB0T2Jq
ZWN0OworCisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICB9CisjZW5kaWYKKwor
ICAgIGNhc2UgTlBOVnByaXZhdGVNb2RlQm9vbDogeworICAgICAgICBQYWdlKiBwYWdlID0gbV9w
YXJlbnRGcmFtZS0+cGFnZSgpOworICAgICAgICBpZiAoIXBhZ2UpCisgICAgICAgICAgICByZXR1
cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKigoTlBCb29sKil2YWx1ZSkgPSAhcGFn
ZS0+c2V0dGluZ3MoKSB8fCBwYWdlLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICB9CisKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICB9Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmggYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGYzZWFjOWEuLjY4OTY1OGUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMjQ0LDYgKzI0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc3RhdGljIEJPT0wgV0lOQVBJIGhvb2tlZEVuZFBhaW50KEhXTkQsIGNvbnN0
IFBBSU5UU1RSVUNUKik7CiAjZW5kaWYKIAorICAgICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUdl
dFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciog
cmVzdWx0KTsKKyAgICAgICAgYm9vbCBwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlh
YmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmVzdWx0KTsKKwogICAgICAgICBSZWZQdHI8RnJh
bWU+IG1fcGFyZW50RnJhbWU7CiAgICAgICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBtX3BsdWdp
bjsKICAgICAgICAgRWxlbWVudCogbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXdOb25lLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5j
cHAKaW5kZXggZjBkOGEyMy4uZWQ1YWQxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXdOb25lLmNwcAorKysgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld05vbmUuY3Bw
CkBAIC02NywxNSArNjcsMTUgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0UmVhZEZp
bGUoVmVjdG9yPGNoYXI+JiwgdWludDMyLCBjb25zdCBjaGFyKikKICAgICByZXR1cm4gMDsKIH0K
IAotTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSwgdm9pZCopCitib29s
IFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUsIHZvaWQqLCBOUEVycm9y
KikKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKLU5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMo
TlBOVmFyaWFibGUsIHZvaWQqKQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3Rh
dGljKE5QTlZhcmlhYmxlLCB2b2lkKiwgTlBFcnJvciopCiB7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luVmlld0d0ay5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwCmluZGV4IGQ4Y2JmZmUuLjRiNGNhZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luVmlld0d0ay5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3
R3RrLmNwcApAQCAtNTg3LDEwICs1ODcsOCBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBv
c3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyIGxlbiwgY29uc3QgYwogICAg
IHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KIAotTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1
ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCitib29sIFBsdWdpblZp
ZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZh
bHVlLCBOU0Vycm9yKiByZXN1bHQpCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3Ojpn
ZXRWYWx1ZVN0YXRpYyglcykiLCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRh
dGEoKSk7Ci0KICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CiAgICAgY2FzZSBOUE5WVG9vbGtpdDoK
ICNpZiBkZWZpbmVkKFhQX1VOSVgpCkBAIC01OTgsNyArNTk2LDggQEAgTlBFcnJvciBQbHVnaW5W
aWV3OjpnZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCiAj
ZWxzZQogICAgICAgICAqc3RhdGljX2Nhc3Q8dWludDMyKj4odmFsdWUpID0gMDsKICNlbmRpZgot
ICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9O
T19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1hF
bWJlZEJvb2w6CiAjaWYgZGVmaW5lZChYUF9VTklYKQpAQCAtNjA2LDExICs2MDUsMTMgQEAgTlBF
cnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9p
ZCogdmFsdWUpCiAjZWxzZQogICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0g
ZmFsc2U7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAq
cmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2Fz
ZSBOUE5WamF2YXNjcmlwdEVuYWJsZWRCb29sOgogICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29s
Kj4odmFsdWUpID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAg
ICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Y2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgogI2lmIGRlZmluZWQoWFBfVU5JWCkKQEAgLTYx
OCwxNyArNjE5LDE2IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFy
aWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogI2Vsc2UKICAgICAgICAgKnN0YXRpY19jYXN0
PE5QQm9vbCo+KHZhbHVlKSA9IGZhbHNlOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBOUEVSUl9O
T19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1OUEVycm9yIFBsdWdpblZp
ZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK2Jvb2wgUGx1
Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFs
dWUsIE5QRXJyb3IqIHJlc3VsdCkKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6Omdl
dFZhbHVlKCVzKSIsIHByZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsK
LQogICAgIHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlZ4RGlzcGxheToKICNpZiBk
ZWZpbmVkKFhQX1VOSVgpCkBAIC02MzYsNTYgKzYzNiwyMSBAQCBOUEVycm9yIFBsdWdpblZpZXc6
OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAg
ICoodm9pZCAqKil2YWx1ZSA9ICh2b2lkICopR0RLX0RJU1BMQVkoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgKih2b2lkICoqKXZhbHVlID0gKHZvaWQgKilHVEtfWFRCSU4ocGxhdGZvcm1Q
bHVnaW5XaWRnZXQoKSktPnh0Y2xpZW50Lnh0ZGlzcGxheTsKLSAgICAgICAgcmV0dXJuIE5QRVJS
X05PX0VSUk9SOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CiAjZWxzZQotICAg
ICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJS
X0dFTkVSSUNfRVJST1I7CiAjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBkZWZp
bmVkKFhQX1VOSVgpCiAgICAgY2FzZSBOUE5WeHRBcHBDb250ZXh0OgogICAgICAgICBpZiAoIW1f
bmVlZHNYRW1iZWQpIHsKICAgICAgICAgICAgICoodm9pZCAqKil2YWx1ZSA9IFh0RGlzcGxheVRv
QXBwbGljYXRpb25Db250ZXh0IChHVEtfWFRCSU4ocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSktPnh0
Y2xpZW50Lnh0ZGlzcGxheSk7CiAKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
KyAgICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgICAgIGNhc2UgTlBOVldpbmRvd05QT2JqZWN0
OiB7Ci0gICAgICAgICAgICBpZiAobV9pc0phdmFTY3JpcHRQYXVzZWQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0KLSAgICAgICAgICAgIE5QT2JqZWN0KiB3
aW5kb3dTY3JpcHRPYmplY3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2NyaXB0
TlBPYmplY3QoKTsKLQotICAgICAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRv
IGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcv
cHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAgICAgICAgICAgaWYgKHdpbmRvd1Nj
cmlwdE9iamVjdCkKLSAgICAgICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdCh3aW5kb3dTY3Jp
cHRPYmplY3QpOwotCi0gICAgICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7Ci0gICAg
ICAgICAgICAqdiA9IHdpbmRvd1NjcmlwdE9iamVjdDsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBOUE5W
UGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7Ci0gICAgICAgICAgICBpZiAobV9pc0phdmFTY3JpcHRQ
YXVzZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0KLSAg
ICAgICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAwOwotCi0gICAgICAgICAg
ICBpZiAobV9lbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbV9lbGVtZW50LT5oYXNU
YWdOYW1lKGVtYmVkVGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKLSAg
ICAgICAgICAgICAgICBwbHVnaW5TY3JpcHRPYmplY3QgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0lu
RWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5QT2JqZWN0KCk7Ci0KLSAgICAgICAgICAgIC8vIFJl
dHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6
IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4K
LSAgICAgICAgICAgIGlmIChwbHVnaW5TY3JpcHRPYmplY3QpCi0gICAgICAgICAgICAgICAgX05Q
Tl9SZXRhaW5PYmplY3QocGx1Z2luU2NyaXB0T2JqZWN0KTsKLQotICAgICAgICAgICAgdm9pZCoq
IHYgPSAodm9pZCoqKXZhbHVlOwotICAgICAgICAgICAgKnYgPSBwbHVnaW5TY3JpcHRPYmplY3Q7
Ci0KLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICAgICAgfQorICAgICAg
ICAgICAgKnJlc3VsdCA9IE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgICAgIHJldHVybiB0cnVl
OwogI2VuZGlmCiAKICAgICAgICAgY2FzZSBOUE5WbmV0c2NhcGVXaW5kb3c6IHsKQEAgLTY5Nywx
OSArNjYyLDEyIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFy
aWFibGUsIHZvaWQqIHZhbHVlKQogICAgICAgICAgICAgSEdESU9CSiogdyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SEdESU9CSio+KHZhbHVlKTsKICAgICAgICAgICAgICp3ID0gR0RLX1dJTkRPV19IV05E
KG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQo
KS0+d2luZG93KTsKICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBOUE5WcHJpdmF0ZU1vZGVCb29sOiB7Ci0gICAgICAg
ICAgICBQYWdlKiBwYWdlID0gbV9wYXJlbnRGcmFtZS0+cGFnZSgpOwotICAgICAgICAgICAgaWYg
KCFwYWdlKQotICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotICAg
ICAgICAgICAgKigoTlBCb29sKil2YWx1ZSkgPSAhcGFnZS0+c2V0dGluZ3MoKSB8fCBwYWdlLT5z
ZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CisgICAgICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL21h
Yy9QbHVnaW5WaWV3TWFjLmNwcAppbmRleCA3NjI3MDlkLi4xYWM1MDI0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMuY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lu
cy9tYWMvUGx1Z2luVmlld01hYy5jcHAKQEAgLTI1NCwzMyArMjU0LDM2IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6cGxhdGZvcm1EZXN0cm95KCkKIAogLy8gVXNlZCBiZWZvcmUgdGhlIHBsdWdpbiB2aWV3
IGhhcyBiZWVuIGluaXRpYWxpemVkIHByb3Blcmx5LCBhbmQgYXMgYQogLy8gZmFsbGJhY2sgZm9y
IHZhcmlhYmxlcyB0aGF0IGRvIG5vdCByZXF1aXJlIGEgdmlldyB0byByZXNvbHZlLgotTlBFcnJv
ciBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCog
dmFsdWUpCitib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBOUEVycm9yKiByZXN1bHQpCiB7Ci0gICAgTE9HKFBs
dWdpbnMsICJQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyglcykiLCBwcmV0dHlOYW1lRm9yTlBO
VmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7Ci0KICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CiAg
ICAgY2FzZSBOUE5WVG9vbGtpdDoKICAgICAgICAgKnN0YXRpY19jYXN0PHVpbnQzMio+KHZhbHVl
KSA9IDA7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9
IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgTlBOVmph
dmFzY3JpcHRFbmFibGVkQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVl
KSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3Vs
dCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmbmRlZiBOUF9O
T19DQVJCT04KICAgICBjYXNlIE5QTlZzdXBwb3J0c0NhcmJvbkJvb2w6CiAgICAgICAgICpzdGF0
aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICNlbmRpZgogICAgIGNhc2UgTlBOVnN1cHBvcnRzQ29jb2FCb29sOgogICAgICAg
ICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENvcmVHcmFwaGljcyBpcyB0aGUgb25seSBkcmF3aW5n
IG1vZGVsIHdlIHN1cHBvcnQKICAgICBjYXNlIE5QTlZzdXBwb3J0c0NvcmVHcmFwaGljc0Jvb2w6
CiAgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZm5kZWYgTlBfTk9fUVVJQ0tEUkFXCiAgICAgLy8g
UXVpY2tEcmF3IGlzIGRlcHJlY2F0ZWQgaW4gMTAuNSBhbmQgbm90IHN1cHBvcnRlZCBvbiA2NC1i
aXQKQEAgLTI4OSw2MSArMjkyLDIwIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0
aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogICAgIGNhc2UgTlBOVnN1cHBv
cnRzT3BlbkdMQm9vbDoKICAgICBjYXNlIE5QTlZzdXBwb3J0c0NvcmVBbmltYXRpb25Cb29sOgog
ICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOUEVS
Ul9HRU5FUklDX0VSUk9SOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCiAvLyBV
c2VkIG9ubHkgZm9yIHZhcmlhYmxlcyB0aGF0IG5lZWQgYSB2aWV3IHRvIHJlc29sdmUKLU5QRXJy
b3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVl
KQorYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxl
LCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogZXJyb3IpCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVn
aW5WaWV3OjpnZXRWYWx1ZSglcykiLCBwcmV0dHlOYW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUp
LmRhdGEoKSk7Ci0KLSAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7Ci0gICAgY2FzZSBOUE5WV2luZG93
TlBPYmplY3Q6IHsKLSAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAgICAgICAg
ICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0KLSAgICAgICAgTlBPYmplY3QqIHdpbmRv
d1NjcmlwdE9iamVjdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTY3JpcHROUE9i
amVjdCgpOwotCi0gICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRh
aW5lZCwgYXMgZGVzY3JpYmVkIGluCi0gICAgICAgIC8vIDxodHRwOi8vd3d3Lm1vemlsbGEub3Jn
L3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KLSAgICAgICAgaWYgKHdpbmRvd1Njcmlw
dE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVj
dCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHdp
bmRvd1NjcmlwdE9iamVjdDsKLQotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAg
fQotCi0gICAgY2FzZSBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7Ci0gICAgICAgIGlmICht
X2lzSmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOwotCi0gICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAwOwotCi0gICAg
ICAgIGlmIChtX2VsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBtX2VsZW1lbnQtPmhh
c1RhZ05hbWUoZW1iZWRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQot
ICAgICAgICAgICAgcGx1Z2luU2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVs
ZW1lbnQqPihtX2VsZW1lbnQpLT5nZXROUE9iamVjdCgpOwotCi0gICAgICAgIC8vIFJldHVybiB2
YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGluCi0gICAgICAg
IC8vIDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRt
bD4KLSAgICAgICAgaWYgKHBsdWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAgICAgIF9OUE5fUmV0
YWluT2JqZWN0KHBsdWdpblNjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgdm9pZCoqIHYgPSAodm9p
ZCoqKXZhbHVlOwotICAgICAgICAqdiA9IHBsdWdpblNjcmlwdE9iamVjdDsKLQotICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGdldFZhbHVlU3RhdGljKHZhcmlhYmxlLCB2YWx1ZSk7Ci0gICAgfQotCisgICAgcmV0dXJu
IGZhbHNlOwogfQorCiB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudChTY3JvbGxWaWV3KiBwYXJl
bnQpCiB7CiAgICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpzZXRQYXJlbnQoJXApIiwgcGFy
ZW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3BwIGIv
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKaW5kZXggMDBhOTA3My4uZmI4OGI4
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKKysrIGIv
V2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKQEAgLTU1MywxMDQgKzU1Myw2NCBA
QCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1
ZmZlciwgdWludDMyIGxlbiwgY29uc3QgYwogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0K
IAotTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJs
ZSwgdm9pZCogdmFsdWUpCitib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWVTdGF0aWMo
TlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBOUEVycm9yKiByZXN1bHQpCiB7Ci0g
ICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRWYWx1ZVN0YXRpYyglcykiLCBwcmV0dHlO
YW1lRm9yTlBOVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7Ci0KICAgICBzd2l0Y2ggKHZhcmlh
YmxlKSB7CiAgICAgY2FzZSBOUE5WVG9vbGtpdDoKICAgICAgICAgKnN0YXRpY19jYXN0PHVpbnQz
Mio+KHZhbHVlKSA9IDA7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAg
KnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNh
c2UgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+
KHZhbHVlKSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAg
KnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNh
c2UgTlBOVmphdmFzY3JpcHRFbmFibGVkQm9vbDoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9v
bCo+KHZhbHVlKSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAg
ICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGNhc2UgTlBOVlN1cHBvcnRzV2luZG93bGVzczoKICAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9v
bCo+KHZhbHVlKSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICAg
ICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5Q
TlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZv
cm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJl
c3VsdCkKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlKCVzKSIsIHBy
ZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQogICAgIHN3aXRjaCAo
dmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlZ4RGlzcGxheToKICAgICAgICAgKih2b2lkICoqKXZh
bHVlID0gUVgxMUluZm86OmRpc3BsYXkoKTsKLSAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9S
OworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgY2FzZSBOUE5WeHRBcHBDb250ZXh0OgotICAgICAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKLQotI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIGNhc2Ug
TlBOVldpbmRvd05QT2JqZWN0OiB7Ci0gICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkK
LSAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotCi0gICAgICAgIE5QT2Jq
ZWN0KiB3aW5kb3dTY3JpcHRPYmplY3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+d2luZG93
U2NyaXB0TlBPYmplY3QoKTsKLQotICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQg
dG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+Ci0gICAgICAgIGlmICh3aW5kb3dTY3Jp
cHRPYmplY3QpCi0gICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdCh3aW5kb3dTY3JpcHRPYmpl
Y3QpOwotCi0gICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKLSAgICAgICAgKnYgPSB3
aW5kb3dTY3JpcHRPYmplY3Q7Ci0KLSAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAg
IH0KLQotICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdDogewotICAgICAgICBpZiAo
bV9pc0phdmFTY3JpcHRQYXVzZWQpCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKLQotICAgICAgICBOUE9iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0ID0gMDsKLQotICAg
ICAgICBpZiAobV9lbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbV9lbGVtZW50LT5o
YXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkK
LSAgICAgICAgICAgIHBsdWdpblNjcmlwdE9iamVjdCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5F
bGVtZW50Kj4obV9lbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKLQotICAgICAgICAvLyBSZXR1cm4g
dmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0
cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+Ci0gICAg
ICAgIGlmIChwbHVnaW5TY3JpcHRPYmplY3QpCi0gICAgICAgICAgICBfTlBOX1JldGFpbk9iamVj
dChwbHVnaW5TY3JpcHRPYmplY3QpOwotCi0gICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1
ZTsKLSAgICAgICAgKnYgPSBwbHVnaW5TY3JpcHRPYmplY3Q7Ci0KLSAgICAgICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOwotICAgIH0KLSNlbmRpZgorICAgICAgICAqcmVzdWx0ID0gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZuZXRzY2Fw
ZVdpbmRvdzogewogICAgICAgICB2b2lkKiB3ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFs
dWUpOwogICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gbV9wYXJlbnRGcmFtZS0+dmll
dygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOwogICAgICAgICAqKChYSUQg
Kil3KSA9IGNsaWVudCA/IGNsaWVudC0+b3duZXJXaWRnZXQoKS0+d2luZG93KCktPndpbklkKCkg
OiAwOwotICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBO
UEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgY2FzZSBO
UE5WVG9vbGtpdDoKICAgICAgICAgaWYgKG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVn
aW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCkpIHsKICAgICAgICAgICAgICooKHVpbnQzMiAqKXZh
bHVlKSA9IDI7Ci0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICAg
ICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjYXNlIE5QTlZwcml2YXRlTW9k
ZUJvb2w6IHsKLSAgICAgICAgUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsKLSAg
ICAgICAgaWYgKCFwYWdlKQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7
Ci0gICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gIXBhZ2UtPnNldHRpbmdzKCkgfHwgcGFnZS0+
c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7Ci0gICAgfQotICAgICAgICAvLyBmYWxsIHRocm91Z2gKICAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5z
L3N5bWJpYW4vUGx1Z2luVmlld1N5bWJpYW4uY3BwIGIvV2ViQ29yZS9wbHVnaW5zL3N5bWJpYW4v
UGx1Z2luVmlld1N5bWJpYW4uY3BwCmluZGV4IDM0OTI4NjguLjNmM2UyYzAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGx1Z2lucy9zeW1iaWFuL1BsdWdpblZpZXdTeW1iaWFuLmNwcAorKysgYi9XZWJD
b3JlL3BsdWdpbnMvc3ltYmlhbi9QbHVnaW5WaWV3U3ltYmlhbi5jcHAKQEAgLTMwNyw2NiArMzA3
LDI3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFy
PiYgYnVmZmVyLCB1aW50MzIgbGVuLCBjb25zdCBjCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9S
OwogfQogCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkKiB2YWx1ZSkKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0
YXRpYyhOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJlc3VsdCkK
IHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKCVzKSIsIHBy
ZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQogICAgIHN3aXRjaCAo
dmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6CiAgICAgICAg
ICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBjYXNlIE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6CiAgICAgICAg
ICpzdGF0aWNfY2FzdDxOUEJvb2wqPih2YWx1ZSkgPSB0cnVlOwotICAgICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CisgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAotTlBFcnJvciBQbHVn
aW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCitib29s
IFBsdWdpblZpZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUsIHZvaWQqLCBOUEVycm9y
KikKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlKCVzKSIsIHByZXR0
eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQotICAgIHN3aXRjaCAodmFy
aWFibGUpIHsKLSAgICBjYXNlIE5QTlZXaW5kb3dOUE9iamVjdDogewotICAgICAgICBpZiAobV9p
c0phdmFTY3JpcHRQYXVzZWQpCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJP
UjsKLQotICAgICAgICBOUE9iamVjdCogd2luZG93U2NyaXB0T2JqZWN0ID0gbV9wYXJlbnRGcmFt
ZS0+c2NyaXB0KCktPndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7Ci0KLSAgICAgICAgLy8gUmV0dXJu
IHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0
dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAg
ICAgICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQotICAgICAgICAgICAgX05QTl9SZXRhaW5PYmpl
Y3Qod2luZG93U2NyaXB0T2JqZWN0KTsKLQotICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFs
dWU7Ci0gICAgICAgICp2ID0gd2luZG93U2NyaXB0T2JqZWN0OwotICAgICAgICAgICAgCi0gICAg
ICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICB9Ci0KLSAgICBjYXNlIE5QTlZQbHVnaW5F
bGVtZW50TlBPYmplY3Q6IHsKLSAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQotICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0KLSAgICAgICAgTlBPYmplY3Qq
IHBsdWdpblNjcmlwdE9iamVjdCA9IDA7Ci0KLSAgICAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFn
TmFtZShhcHBsZXRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgbV9l
bGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCi0gICAgICAgICAgICBwbHVnaW5TY3JpcHRP
YmplY3QgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG1fZWxlbWVudCktPmdldE5Q
T2JqZWN0KCk7Ci0KLSAgICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJl
dGFpbmVkLCBhcyBkZXNjcmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVj
dHMvcGx1Z2luL25wcnVudGltZS5odG1sPgotICAgICAgICBpZiAocGx1Z2luU2NyaXB0T2JqZWN0
KQotICAgICAgICAgICAgX05QTl9SZXRhaW5PYmplY3QocGx1Z2luU2NyaXB0T2JqZWN0KTsKLQot
ICAgICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7Ci0gICAgICAgICp2ID0gcGx1Z2luU2Ny
aXB0T2JqZWN0OwotCi0gICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICB9ICAgICAg
ICAKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUs
IHZhbHVlKTsKLSAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFBsdWdpblZpZXc6
OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwIGIvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVn
aW5WaWV3V2luLmNwcAppbmRleCAwNGZkYThlLi4xNWYzOWE5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lucy93aW4v
UGx1Z2luVmlld1dpbi5jcHAKQEAgLTI2LDQ0ICsyNiwzOSBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLQogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKIAogI2luY2x1ZGUgIkJpdG1hcElt
YWdlLmgiCi0jaWYgIVBMQVRGT1JNKFdYKQotI2luY2x1ZGUgIkJpdG1hcEluZm8uaCIKLSNlbmRp
ZgogI2luY2x1ZGUgIkJyaWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKLSNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisj
aW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1vdXNl
RXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGx1Z2luRGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgorI2luY2x1ZGUgIlBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmgiCiAj
aW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgotI2luY2x1ZGUgIlBsdWdpbk1haW5UaHJlYWRTY2hl
ZHVsZXIuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiUGx1Z2luRGF0
YWJhc2UuaCIKLSNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgotI2luY2x1ZGUgIlBsdWdpblBhY2th
Z2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNfaW5zdGFuY2UuaCIKICNp
bmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgpAQCAtNzIsNiArNjcsMTAgQEAKICNpbmNsdWRlIDxy
dW50aW1lL0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCisjaWYgIVBM
QVRGT1JNKFdYKQorI2luY2x1ZGUgIkJpdG1hcEluZm8uaCIKKyNlbmRpZgorCiAjaWYgT1MoV0lO
Q0UpCiAjdW5kZWYgTE9HX05QRVJST1IKICNkZWZpbmUgTE9HX05QRVJST1IoeCkKQEAgLTg2Nyw3
MyArODY2LDMwIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdFJlYWRGaWxlKFZlY3Rv
cjxjaGFyPiYgYnVmZmVyLCB1aW50MzIgbGVuLCBjb25zdCBjCiAgICAgcmV0dXJuIE5QRVJSX05P
X0VSUk9SOwogfQogCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlh
YmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRW
YWx1ZVN0YXRpYyhOUE5WYXJpYWJsZSwgdm9pZCosIE5QRXJyb3IqKQogewotICAgIExPRyhQbHVn
aW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZh
cmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwotCi0gICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJS
T1I7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi1OUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVl
KE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK2Jvb2wgUGx1Z2luVmlldzo6cGxh
dGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3Iq
IHJlc3VsdCkKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlKCVzKSIs
IHByZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKLQogICAgIHN3aXRj
aCAodmFyaWFibGUpIHsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICAgICAg
Y2FzZSBOUE5WV2luZG93TlBPYmplY3Q6IHsKLSAgICAgICAgICAgIGlmIChtX2lzSmF2YVNjcmlw
dFBhdXNlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLQot
ICAgICAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVjdCA9IG1fcGFyZW50RnJhbWUt
PnNjcmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOwotCi0gICAgICAgICAgICAvLyBSZXR1
cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8
aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+Ci0g
ICAgICAgICAgICBpZiAod2luZG93U2NyaXB0T2JqZWN0KQotICAgICAgICAgICAgICAgIF9OUE5f
UmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7Ci0KLSAgICAgICAgICAgIHZvaWQqKiB2
ID0gKHZvaWQqKil2YWx1ZTsKLSAgICAgICAgICAgICp2ID0gd2luZG93U2NyaXB0T2JqZWN0Owot
Ci0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYXNlIE5QTlZQbHVnaW5FbGVtZW50TlBPYmplY3Q6IHsKLSAgICAgICAgICAgIGlmIChtX2lz
SmF2YVNjcmlwdFBhdXNlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19F
UlJPUjsKLQotICAgICAgICAgICAgTlBPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdCA9IDA7Ci0K
LSAgICAgICAgICAgIGlmIChtX2VsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBtX2Vs
ZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShvYmpl
Y3RUYWcpKQotICAgICAgICAgICAgICAgIHBsdWdpblNjcmlwdE9iamVjdCA9IHN0YXRpY19jYXN0
PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9lbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKLQotICAgICAg
ICAgICAgLy8gUmV0dXJuIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHJldGFpbmVkLCBhcyBkZXNj
cmliZWQgaGVyZTogPGh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvcGx1Z2luL25wcnVu
dGltZS5odG1sPgotICAgICAgICAgICAgaWYgKHBsdWdpblNjcmlwdE9iamVjdCkKLSAgICAgICAg
ICAgICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVnaW5TY3JpcHRPYmplY3QpOwotCi0gICAgICAg
ICAgICB2b2lkKiogdiA9ICh2b2lkKiopdmFsdWU7Ci0gICAgICAgICAgICAqdiA9IHBsdWdpblNj
cmlwdE9iamVjdDsKLQotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotICAgICAg
ICB9Ci0jZW5kaWYKLQogICAgICAgICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogewogICAgICAg
ICAgICAgSFdORCogdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SFdORCo+KHZhbHVlKTsKLQogICAgICAg
ICAgICAgKncgPSB3aW5kb3dIYW5kbGVGb3JQYWdlQ2xpZW50KHBhcmVudCgpID8gcGFyZW50KCkt
Pmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkgOiAwKTsKLQotICAgICAgICAgICAg
cmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgICAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VS
Uk9SOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IE5QTlZTdXBwb3J0c1dpbmRvd2xlc3M6IHsKLSAgICAgICAgICAgIE5QQm9vbCAqcmVzdWx0ID0g
cmVpbnRlcnByZXRfY2FzdDxOUEJvb2wqPih2YWx1ZSk7Ci0KLSAgICAgICAgICAgICpyZXN1bHQg
PSBUUlVFOwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7
CisgICAgICAgICAgICBOUEJvb2wqIGZsYWcgPSByZWludGVycHJldF9jYXN0PE5QQm9vbCo+KHZh
bHVlKTsKKyAgICAgICAgICAgICpmbGFnID0gVFJVRTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBO
UEVSUl9OT19FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLS0gCjEuNy4w
LjEuNjEuZ2RjMDVkCgo=
</data>
<flag name="review"
          id="32779"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>