<?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>90601</bug_id>
          
          <creation_ts>2012-07-05 04:24:14 -0700</creation_ts>
          <short_desc>[WK2][EFL] Ewk_View should provide more resource loading notifications</short_desc>
          <delta_ts>2012-07-11 20:22:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90566</dependson>
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663485</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-05 04:24:14 -0700</bug_when>
    <thetext>Basic resource loading notifications such as:
- Resource request sent
- Resource request failed
- Resource request finished

are not currently supported by Ewk_View. We need to implement this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663500</commentid>
    <comment_count>1</comment_count>
      <attachid>150925</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-05 05:11:03 -0700</bug_when>
    <thetext>Created attachment 150925
Patch

I&apos;ll need to update the patch after Bug 90566 lands. I need to clear the resource HashMap when the main frame provisional load starts. However, the &quot;provisional load started&quot; callback is introduced in Bug 90566.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663842</commentid>
    <comment_count>2</comment_count>
      <attachid>150925</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-05 19:37:10 -0700</bug_when>
    <thetext>Comment on attachment 150925
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:155
&gt; +    Ewk_Url_Response *redirectResponse; /**&lt; Possible redirect response for the resource */

s/redirectResponse/redirect_response/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663901</commentid>
    <comment_count>3</comment_count>
      <attachid>151022</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-05 23:20:34 -0700</bug_when>
    <thetext>Created attachment 151022
Patch

Take Gyuyoung&apos;s feedback into consideration and rebase on master now that the dependency landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666398</commentid>
    <comment_count>4</comment_count>
      <attachid>151609</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-10 23:26:23 -0700</bug_when>
    <thetext>Created attachment 151609
Patch

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666404</commentid>
    <comment_count>5</comment_count>
      <attachid>151609</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-10 23:31:16 -0700</bug_when>
    <thetext>Comment on attachment 151609
Patch

Attachment 151609 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13180322</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666407</commentid>
    <comment_count>6</comment_count>
      <attachid>151611</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-10 23:33:48 -0700</bug_when>
    <thetext>Created attachment 151611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666889</commentid>
    <comment_count>7</comment_count>
      <attachid>151736</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-11 11:15:05 -0700</bug_when>
    <thetext>Created attachment 151736
Patch

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666929</commentid>
    <comment_count>8</comment_count>
      <attachid>151744</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-11 11:56:46 -0700</bug_when>
    <thetext>Created attachment 151744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667015</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-11 13:31:28 -0700</bug_when>
    <thetext>Rakuco, can you please double-check and cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667323</commentid>
    <comment_count>10</comment_count>
      <attachid>151744</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-11 19:13:11 -0700</bug_when>
    <thetext>Comment on attachment 151744
Patch

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

Looks mostly OK to me. I&apos;m cq+&apos;ing it, and we can discuss details later. I think we talked about this a few months ago -- wouldn&apos;t it make sense to initialize `url&apos; and `mimeType&apos; in ewk_url_response_new and avoid the casts in ewk_url_response_{mime_type,url_}_get()?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_response.h:53
&gt; + * When the reference count it&apos;s reached 0, the URL request is freed.

Nit: s/it&apos;s reached/reaches/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667360</commentid>
    <comment_count>11</comment_count>
      <attachid>151744</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-11 20:22:18 -0700</bug_when>
    <thetext>Comment on attachment 151744
Patch

Clearing flags on attachment: 151744

Committed r122411: &lt;http://trac.webkit.org/changeset/122411&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667361</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-11 20:22:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150925</attachid>
            <date>2012-07-05 05:11:03 -0700</date>
            <delta_ts>2012-07-05 23:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90601_resource_load_notifications.patch</filename>
            <type>text/plain</type>
            <size>25431</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMWMxYjQ5Li5mZjg1ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTItMDctMDUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBFd2tfVmlldyBzaG91bGQgcHJvdmlkZSBtb3JlIHJlc291
cmNlIGxvYWRpbmcgbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbmV3ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAicmVzb3Vy
Y2UscmVxdWVzdCxyZXNwb25zZSIsCisgICAgICAgICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIg
YW5kICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB0bworICAgICAgICBFd2tfVmlldyBpbiBv
cmRlciB0byBub3RpZnkgdGhlIGNsaWVudHMgb2YgdGhlIG1haW4gcmVzb3VyY2UKKyAgICAgICAg
bG9hZCBzdGF0ZSBjaGFuZ2VzLgorCisgICAgICAgIEludHJvZHVjZSBuZXcgRXdrX1VybF9SZXNw
b25zZSB0eXBlIHRoYXQgaXMgdXNlZCB0byBwcm92aWRlCisgICAgICAgIGluZm9ybWF0aW9uIHRv
IHRoZSBjbGllbnRzIHJlZ2FyZGluZyB0aGUgcmVzb3VyY2UgbG9hZAorICAgICAgICByZXNwb25z
ZXMgdGhhdCBhcmUgcmVjZWl2ZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfVXJs
X1Jlc3BvbnNlKToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2VfcmVmKToKKyAgICAgICAgKGV3
a191cmxfcmVzcG9uc2VfdW5yZWYpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV91cmxfZ2V0
KToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2Vfc3RhdHVzX2NvZGVfZ2V0KToKKyAgICAgICAg
KGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldCk6CisgICAgICAgIChld2tfdXJsX3Jlc3Bv
bnNlX25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlX3By
aXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
OgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2luaXRpYXRlZCk6CisgICAgICAgIChld2tfdmlld19yZXNvdXJjZV9sb2Fk
X3Jlc3BvbnNlKToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKToKKyAg
ICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2Ns
aWVudC5jcHA6CisgICAgICAgIChkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlKToKKyAgICAgICAg
KGRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlKToKKyAgICAgICAgKGRpZEZpbmlzaExvYWRG
b3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRGYWlsTG9hZEZvclJlc291cmNlKToKKyAgICAgICAg
KGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaCk6CisKIDIwMTItMDctMDUgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtXazJdW0VGTF0g
RUZMIG5lZWRzIGEgV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA3ZDA2MTg0Li5kYmIwM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzcsNiAr
MzcsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfaW50ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2Vydmlj
ZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xp
ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5k
ZXggNzk5ZDI1OC4uOWFmYTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgog
I2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVz
dC5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNsdWRlICJld2tfdmlldy5o
IgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJs
X3Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YTNjMzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dXJsX3Jlc3BvbnNlLmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKKworI2lu
Y2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKworLyoqCisgKiBcc3RydWN0ICBfRXdrX1VybF9SZXNwb25zZQorICogQGJyaWVm
ICAgQ29udGFpbnMgdGhlIFVSTCByZXNwb25zZSBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19Vcmxf
UmVzcG9uc2UgeworICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0aGUgcmVmZXJlbmNlIGNv
dW50IG9mIHRoZSBvYmplY3QgKi8KKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIGNvcmVS
ZXNwb25zZTsKKworICAgIGNvbnN0IGNoYXIqIHVybDsKKyAgICBjb25zdCBjaGFyKiBtaW1lVHlw
ZTsKK307CisKK3ZvaWQgZXdrX3VybF9yZXNwb25zZV9yZWYoRXdrX1VybF9SZXNwb25zZSogcmVz
cG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocmVzcG9uc2UpOworICAg
ICsrcmVzcG9uc2UtPl9fcmVmOworfQorCit2b2lkIGV3a191cmxfcmVzcG9uc2VfdW5yZWYoRXdr
X1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4ocmVzcG9uc2UpOworCisgICAgaWYgKC0tcmVzcG9uc2UtPl9fcmVmKQorICAgICAgICByZXR1
cm47CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXNwb25zZS0+dXJsKTsKKyAgICBlaW5h
X3N0cmluZ3NoYXJlX2RlbChyZXNwb25zZS0+bWltZVR5cGUpOworICAgIGZyZWUocmVzcG9uc2Up
OworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3Jlc3BvbnNlX3VybF9nZXQoY29uc3QgRXdrX1Vy
bF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHJlc3BvbnNlLCAwKTsKKworICAgIEV3a19VcmxfUmVzcG9uc2UqIGV3a1Jlc3BvbnNlID0g
Y29uc3RfY2FzdDxFd2tfVXJsX1Jlc3BvbnNlKj4ocmVzcG9uc2UpOworICAgIGVpbmFfc3RyaW5n
c2hhcmVfcmVwbGFjZSgmZXdrUmVzcG9uc2UtPnVybCwgcmVzcG9uc2UtPmNvcmVSZXNwb25zZS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXNwb25zZS0+dXJs
OworfQorCitpbnQgZXdrX3VybF9yZXNwb25zZV9zdGF0dXNfY29kZV9nZXQoY29uc3QgRXdrX1Vy
bF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHJlc3BvbnNlLCAwKTsKKworICAgIHJldHVybiByZXNwb25zZS0+Y29yZVJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a191cmxfcmVzcG9uc2VfbWltZV90
eXBlX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzcG9uc2UsIDApOworCisgICAgRXdrX1VybF9SZXNw
b25zZSogZXdrUmVzcG9uc2UgPSBjb25zdF9jYXN0PEV3a19VcmxfUmVzcG9uc2UqPihyZXNwb25z
ZSk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tSZXNwb25zZS0+bWltZVR5cGUs
IHJlc3BvbnNlLT5jb3JlUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpKTsKKworICAg
IHJldHVybiByZXNwb25zZS0+bWltZVR5cGU7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBD
b25zdHJ1Y3RzIGEgRXdrX1VybF9SZXNwb25zZSBmcm9tIGEgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZS4KKyAqLworRXdrX1VybF9SZXNwb25zZSogZXdrX3VybF9yZXNwb25zZV9uZXcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgY29yZVJlc3BvbnNlKQoreworICAgIEV3a19Vcmxf
UmVzcG9uc2UqIGV3a1VybFJlc3BvbnNlID0gc3RhdGljX2Nhc3Q8RXdrX1VybF9SZXNwb25zZSo+
KGNhbGxvYygxLCBzaXplb2YoRXdrX1VybF9SZXNwb25zZSkpKTsKKyAgICBld2tVcmxSZXNwb25z
ZS0+X19yZWYgPSAxOworICAgIGV3a1VybFJlc3BvbnNlLT5jb3JlUmVzcG9uc2UgPSBjb3JlUmVz
cG9uc2U7CisKKyAgICByZXR1cm4gZXdrVXJsUmVzcG9uc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1ZTlhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaApAQCAtMCwwICsx
LDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfdXJsX3Jl
c3BvbnNlLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFVSTCByZXNwb25zZSBBUEku
CisgKi8KKworI2lmbmRlZiBld2tfdXJsX3Jlc3BvbnNlX2gKKyNkZWZpbmUgZXdrX3VybF9yZXNw
b25zZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfVXJsX1Jl
c3BvbnNlICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3Bv
bnNlOworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZl
biBvYmplY3QuCisgKgorICogQHBhcmFtIHJlc3BvbnNlIHRoZSBVUkwgcmVzcG9uc2Ugb2JqZWN0
IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQSSB2b2lkIGV3a191cmxf
cmVzcG9uc2VfcmVmKEV3a19VcmxfUmVzcG9uc2UgKnJlc3BvbnNlKTsKKworLyoqCisgKiBEZWNy
ZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBm
cmVlaW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBpdCdzIHJlYWNoZWQg
MCwgdGhlIFVSTCByZXF1ZXN0IGlzIGZyZWVkLgorICoKKyAqIEBwYXJhbSByZXNwb25zZSB0aGUg
VVJMIHJlc3BvbnNlIG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKi8K
K0VBUEkgdm9pZCBld2tfdXJsX3Jlc3BvbnNlX3VucmVmKEV3a19VcmxfUmVzcG9uc2UgKnJlc3Bv
bnNlKTsKKworLyoqCisgKiBRdWVyeSBVUkwgZm9yIHRoaXMgcmVzcG9uc2UuCisgKgorICogQHBh
cmFtIHJlc3BvbnNlIHJlc3BvbnNlIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRo
ZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAg
ICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9z
c2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQor
ICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdz
aGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFy
ICpld2tfdXJsX3Jlc3BvbnNlX3VybF9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9u
c2UpOworCisvKioKKyAqIFF1ZXJ5IEhUVFAgc3RhdHVzIGNvZGUgZm9yIHRoaXMgcmVzcG9uc2Uu
CisgKgorICogSFRUUCBzdGF0dXMgY29kZSBhcmUgZGVmaW5lZCBieToKKyAqIGh0dHA6Ly93d3cu
dzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbAorICoKKyAqIEBwYXJh
bSByZXNwb25zZSByZXNwb25zZSBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUg
SFRUUCBzdGF0dXMgY29kZS4KKyAqLworRUFQSSBpbnQgZXdrX3VybF9yZXNwb25zZV9zdGF0dXNf
Y29kZV9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2UpOworCisvKioKKyAqIFF1
ZXJ5IE1JTUUgdHlwZSBmb3IgdGhpcyByZXNwb25zZS4KKyAqCisgKiBAcGFyYW0gcmVzcG9uc2Ug
cmVzcG9uc2Ugb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIE1JTUUgdHlwZSBw
b2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAg
Z3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQor
ICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAg
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a191
cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25z
ZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfdXJs
X3Jlc3BvbnNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzJkNTYzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3VybF9yZXNwb25zZV9wcml2YXRl
X2gKKyNkZWZpbmUgZXdrX3VybF9yZXNwb25zZV9wcml2YXRlX2gKKworI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25z
ZSBFd2tfVXJsX1Jlc3BvbnNlOworCitFd2tfVXJsX1Jlc3BvbnNlKiBld2tfdXJsX3Jlc3BvbnNl
X25ldyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKTsK
KworI2VuZGlmIC8vIGV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggM2Q4OTRiYS4uNWEwZTRkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImV3a192aWV3X2xvYWRlcl9jbGllbnRfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19yZXNv
dXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTQxLDEwICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGlj
IGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1ZpZXciOwogCit0eXBlZGVm
IEhhc2hNYXA8dWludDY0X3QsIEV3a19XZWJfUmVzb3VyY2UqPiBMb2FkaW5nUmVzb3VyY2VzTWFw
OworCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGll
bnRJbXBsPiBwYWdlQ2xpZW50OwogICAgIGNvbnN0IGNoYXIqIHVyaTsKICAgICBjb25zdCBjaGFy
KiB0aXRsZTsKKyAgICBMb2FkaW5nUmVzb3VyY2VzTWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiB9
OwogCiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmlldywgcmVzdWx0KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNTY3LDEyICs1NzEsOTYgQEAgRWluYV9C
b29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgKi8KIHZvaWQgZXdrX3Zp
ZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19Vcmxf
UmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBFd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QgcmVzb3Vy
Y2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0fTsKLSAgICAvLyBGSVhNRTogV2Ugd2lsbCBu
ZWVkIHRvIHN0b3JlIHRoZSByZXNvdXJjZSBhbmQgaXRzIGlkZW50aWZpZXIgYXQgc29tZSBwb2lu
dAotICAgIC8vIHRvIGdldCB0aGUgcmVzb3VyY2UgYmFjayBmcm9tIHRoZSBpZGVudGlmaWVyIG9u
IHJlc291cmNlIGxvYWQgZmluaXNoLgorICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2KTsKKworICAgIEV3a19XZWJfUmVzb3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIDB9OworCisgICAgLy8gS2VlcCB0aGUgcmVzb3VyY2Ug
aW50ZXJuYWxseSB0byByZXVzZSBpdCBsYXRlci4KKyAgICBld2tfd2ViX3Jlc291cmNlX3JlZihy
ZXNvdXJjZSk7CisgICAgcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5hZGQocmVzb3VyY2VJZGVu
dGlmaWVyLCByZXNvdXJjZSk7CisKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICZyZXNvdXJjZVJlcXVlc3QpOwogfQog
CisvKioKKyAqIEBpbnRlcm5hbAorICogUmVjZWl2ZWQgYSByZXNwb25zZSB0byBhIHJlc291cmNl
IGxvYWQgcmVxdWVzdCBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJj
ZSxyZXF1ZXN0LHJlc3BvbnNlIiB3aXRoIHBvaW50ZXIgdG8gcmVzb3VyY2UgcmVzcG9uc2UuCisg
Ki8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdr
VmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNw
b25zZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisK
KyAgICBpZiAoIXByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3Vy
Y2UgPSBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9
IHtyZXNvdXJjZSwgcmVzcG9uc2V9OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiLCAmcmVzb3VyY2VMb2FkUmVz
cG9uc2UpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRmFpbGVkIGxvYWRpbmcgYSByZXNv
dXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0
LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIGxvYWQgZXJyb3IuCisgKi8K
K3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAgaWYgKCFw
cml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291cmNlSWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlID0gcHJpdi0+
bG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBFd2tfV2Vi
X1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3IgPSB7cmVzb3VyY2UsIGVycm9y
fTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJj
ZSxyZXF1ZXN0LGZhaWxlZCIsICZyZXNvdXJjZUxvYWRFcnJvcik7Cit9CisKKy8qKgorICogQGlu
dGVybmFsCisgKiBGaW5pc2hlZCBsb2FkaW5nIGEgcmVzb3VyY2UgaW4gdGhlIHZpZXcuCisgKgor
ICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVy
IHRvIHRoZSByZXNvdXJjZS4KKyAqLwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2Zpbmlz
aGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAgaWYg
KCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291cmNlSWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlID0gcHJp
di0+bG9hZGluZ1Jlc291cmNlc01hcC50YWtlKHJlc291cmNlSWRlbnRpZmllcik7CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxm
aW5pc2hlZCIsIHJlc291cmNlKTsKKworICAgIGV3a193ZWJfcmVzb3VyY2VfdW5yZWYocmVzb3Vy
Y2UpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVxdWVzdCB3YXMgc2VudCBmb3IgYSBy
ZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1
ZXN0LHNlbnQiIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0IGFuZCBwb3NzaWJsZSBy
ZWRpcmVjdCByZXNwb25zZS4KKyAqLwordm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3Nl
bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsK
KyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAg
IGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jb250YWlucyhyZXNvdXJjZUlkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSA9
IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7CisgICAg
RXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZX07CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAmcmVzb3VyY2VSZXF1ZXN0
KTsKK30KKwogY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CmluZGV4IDVmMDllZWMuLjA2NzU0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaApAQCAtMzAsNyArMzAsMTEgQEAKICAqIC0gImludGVudCxzZXJ2aWNl
LHJlZ2lzdGVyIiwgRXdrX0ludGVudF9TZXJ2aWNlKjogcmVwb3J0cyBuZXcgV2ViIGludGVudCBz
ZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KICAqIC0gImxvYWQsZXJyb3IiLCBjb25zdCBFd2tfV2ViX0Vy
cm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgogICogLSAibG9hZCxwcm9ncmVz
cyIsIGRvdWJsZSo6IGxvYWQgcHJvZ3Jlc3MgaGFzIGNoYW5nZWQgKHZhbHVlIGZyb20gMC4wIHRv
IDEuMCkuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsIGNvbnN0IEV3a19XZWJfUmVz
b3VyY2VfTG9hZF9FcnJvcio6IGEgcmVzb3VyY2UgZmFpbGVkIGxvYWRpbmcuCisgKiAtICJyZXNv
dXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZSo6IGEgcmVzb3Vy
Y2UgZmluaXNoZWQgbG9hZGluZy4KICAqIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgY29uc3Qg
RXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBpbml0aWF0
ZWQuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgRXdrX1dlYl9SZXNvdXJjZV9M
b2FkX1Jlc3BvbnNlKjogYSByZXNwb25zZSB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2Vp
dmVkLgorICogLSAicmVzb3VyY2UscmVxdWVzdCxzZW50IiwgY29uc3QgRXdrX1dlYl9SZXNvdXJj
ZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBzZW50LgogICogLSAidGl0bGUsY2hh
bmdlZCIsIGNvbnN0IGNoYXIqOiB0aXRsZSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4K
ICAqLwogCkBAIC00OCw3ICs1Miw5IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9E
YXRhIEV3a19WaWV3X1NtYXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRf
Q2xhc3MgRXdrX1ZpZXdfU21hcnRfQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0ludGVudCBF
d2tfSW50ZW50OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVl
c3Q7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKK3R5cGVk
ZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7CiAKIAogLy8vIEV3ayB2aWV3
J3MgY2xhc3MsIHRvIGJlIG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCkBAIC0xNDIsMTIgKzE0
OCwzNSBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IEV3a19XZWJf
UmVzb3VyY2VfUmVxdWVzdDsKIAogLyoqCiAgKiBAYnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcg
ZGV0YWlscyBhYm91dCBhIHJlc291cmNlIHJlcXVlc3QuCi0gKgotICogRGV0YWlscyBnaXZlbiBh
Ym91dCBhIHJlc291cmNlIGlzIGxvYWRlZC4KICAqLwogc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNl
X1JlcXVlc3QgewogICAgIEV3a19XZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNl
IGJlaW5nIHJlcXVlc3RlZCAqLwogICAgIEV3a19VcmxfUmVxdWVzdCAqcmVxdWVzdDsgLyoqPCBV
UkwgcmVxdWVzdCBmb3IgdGhlIHJlc291cmNlICovCisgICAgRXdrX1VybF9SZXNwb25zZSAqcmVk
aXJlY3RSZXNwb25zZTsgLyoqPCBQb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZSBmb3IgdGhlIHJl
c291cmNlICovCit9OworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19XZWJfUmVz
b3VyY2VfTG9hZF9SZXNwb25zZS4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xv
YWRfUmVzcG9uc2UgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlOworCisvKioKKyAqIEBi
cmllZiBTdHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzcG9uc2UgdG8gYSBy
ZXNvdXJjZSByZXF1ZXN0LgorICovCitzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNw
b25zZSB7CisgICAgIEV3a19XZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNlIHJl
cXVlc3RlZCAqLworICAgICBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25zZTsgLyoqPCByZXNvdXJj
ZSBsb2FkIHJlc3BvbnNlICovCit9OworCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3
a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvci4KK3R5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291
cmNlX0xvYWRfRXJyb3IgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yOworCisvKioKKyAqIEBi
cmllZiBTdHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzb3VyY2UgbG9hZCBl
cnJvci4KKyAqCisgKiBEZXRhaWxzIGdpdmVuIGFib3V0IGEgcmVzb3VyY2UgbG9hZCBmYWlsdXJl
LgorICovCitzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvciB7CisgICAgRXdrX1dl
Yl9SZXNvdXJjZSAqcmVzb3VyY2U7IC8qKjwgcmVzb3VyY2UgdGhhdCBmYWlsZWQgbG9hZGluZyAq
LworICAgIEV3a19XZWJfRXJyb3IgKmVycm9yOyAvKio8IGxvYWQgZXJyb3IgKi8KIH07CiAKIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJp
dmF0ZS5oCmluZGV4IDlkNGJkZmYuLjAyN2MwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTMxLDYgKzMxLDcgQEAg
Y2xhc3MgSW50U2l6ZTsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tf
VXJsX1JlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jl
c3BvbnNlOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKIHR5
cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlIEV3a19XZWJfUmVzb3VyY2U7CiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQpAQCAtNDUsNyArNDYsMTEgQEAgdm9pZCBld2tfdmlld19pbWFnZV9k
YXRhX3NldChFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJD
b3IKIHZvaWQgZXdrX3ZpZXdfbG9hZF9lcnJvcihFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
RXdrX1dlYl9FcnJvciogZXJyb3IpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5n
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGRvdWJsZSBwcm9ncmVzcyk7CiB2b2lkIGV3a192aWV3
X3RpdGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsK
K3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpOwordm9p
ZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1
aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2Fk
X2luaXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0
KTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdr
VmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNw
b25zZSk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2VudChFdmFzX09iamVjdCog
ZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1JlcXVlc3QqIHJl
cXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpOwogCiBFdmFzX09iamVj
dCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCmluZGV4IDZiZTM5
YTIuLjJiNWIxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKQEAgLTMx
LDEwICszMSwxNSBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tVUkwu
aCIKICNpbmNsdWRlICJXS1VSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS1VSTFJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0
X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCisjaW5jbHVkZSAiZXdr
X3VybF9yZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJld2tfd2ViX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3Vy
Y2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU0LDYgKzU5
LDQzIEBAIHN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiB3a0ZyYW1lLCB1aW50NjRfdCByCiAgICAgZXdrX3VybF9yZXF1ZXN0X3VucmVm
KHJlcXVlc3QpOwogfQogCitzdGF0aWMgdm9pZCBkaWRTZW5kUmVxdWVzdEZvclJlc291cmNlKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS1VSTFJl
cXVlc3RSZWYgd2tSZXF1ZXN0LCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVkaXJlY3RSZXNwb25zZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0
YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwor
CisgICAgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0ID0gZXdrX3VybF9yZXF1ZXN0X25ldyh3a1Jl
cXVlc3QpOworICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UgPSBld2tfdXJs
X3Jlc3BvbnNlX25ldyh0b0ltcGwod2tSZWRpcmVjdFJlc3BvbnNlKS0+cmVzb3VyY2VSZXNwb25z
ZSgpKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQoZXdrVmlldywgcmVzb3Vy
Y2VJZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBld2tfdXJsX3Jl
cXVlc3RfdW5yZWYocmVxdWVzdCk7CisgICAgZXdrX3VybF9yZXNwb25zZV91bnJlZihyZWRpcmVj
dFJlc3BvbnNlKTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3Vy
Y2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdL
VVJMUmVzcG9uc2VSZWYgd2tSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCisgICAgRXdrX1VybF9SZXNwb25zZSogcmVzcG9u
c2UgPSBld2tfdXJsX3Jlc3BvbnNlX25ldyh0b0ltcGwod2tSZXNwb25zZSktPnJlc291cmNlUmVz
cG9uc2UoKSk7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShld2tWaWV3LCBy
ZXNvdXJjZUlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICBld2tfdXJsX3Jlc3BvbnNlX3VucmVm
KHJlc3BvbnNlKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gc3RhdGljX2Nh
c3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisKKyAgICBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKGV3a1ZpZXcsIHJlc291cmNlSWRlbnRpZmll
cik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLRXJyb3JSZWYgd2tFcnJv
ciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFdmFzX09iamVjdCogZXdrVmlldyA9
IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OworCisgICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9yX25ldyh3a0Vy
cm9yKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChld2tWaWV3LCByZXNvdXJj
ZUlkZW50aWZpZXIsIGV3a0Vycm9yKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2Zpbmlz
aGVkKGV3a1ZpZXcsIHJlc291cmNlSWRlbnRpZmllcik7CisgICAgZXdrX3dlYl9lcnJvcl9mcmVl
KGV3a0Vycm9yKTsKK30KKwogdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRh
Y2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIFdLUGFn
ZVJlc291cmNlTG9hZENsaWVudCB3a1Jlc291cmNlTG9hZENsaWVudDsKQEAgLTYxLDYgKzEwMywx
MCBAQCB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYg
cGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZQogICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LnZl
cnNpb24gPSBrV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Q3VycmVudFZlcnNpb247CiAgICAgd2tS
ZXNvdXJjZUxvYWRDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgd2tSZXNvdXJjZUxv
YWRDbGllbnQuZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UgPSBkaWRJbml0aWF0ZUxvYWRGb3JS
ZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRTZW5kUmVxdWVzdEZvclJlc291
cmNlID0gZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVu
dC5kaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSA9IGRpZFJlY2VpdmVSZXNwb25zZUZvclJl
c291cmNlOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNvdXJj
ZSA9IGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5k
aWRGYWlsTG9hZEZvclJlc291cmNlID0gZGlkRmFpbExvYWRGb3JSZXNvdXJjZTsKIAogICAgIFdL
UGFnZVNldFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQocGFnZVJlZiwgJndrUmVzb3VyY2VMb2FkQ2xp
ZW50KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151022</attachid>
            <date>2012-07-05 23:20:34 -0700</date>
            <delta_ts>2012-07-10 23:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90601_resource_load_notifications.patch</filename>
            <type>text/plain</type>
            <size>26245</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZjA1MmI3Li44NTAyNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTAg
QEAKIDIwMTItMDctMDUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbRUZMXSBFd2tfVmlldyBzaG91bGQgcHJvdmlkZSBtb3JlIHJlc291
cmNlIGxvYWRpbmcgbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbmV3ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAicmVzb3Vy
Y2UscmVxdWVzdCxyZXNwb25zZSIsCisgICAgICAgICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIg
YW5kICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB0bworICAgICAgICBFd2tfVmlldyBpbiBv
cmRlciB0byBub3RpZnkgdGhlIGNsaWVudHMgb2YgdGhlIG1haW4gcmVzb3VyY2UKKyAgICAgICAg
bG9hZCBzdGF0ZSBjaGFuZ2VzLgorCisgICAgICAgIEludHJvZHVjZSBuZXcgRXdrX1VybF9SZXNw
b25zZSB0eXBlIHRoYXQgaXMgdXNlZCB0byBwcm92aWRlCisgICAgICAgIGluZm9ybWF0aW9uIHRv
IHRoZSBjbGllbnRzIHJlZ2FyZGluZyB0aGUgcmVzb3VyY2UgbG9hZAorICAgICAgICByZXNwb25z
ZXMgdGhhdCBhcmUgcmVjZWl2ZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfVXJs
X1Jlc3BvbnNlKToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2VfcmVmKToKKyAgICAgICAgKGV3
a191cmxfcmVzcG9uc2VfdW5yZWYpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV91cmxfZ2V0
KToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2Vfc3RhdHVzX2NvZGVfZ2V0KToKKyAgICAgICAg
KGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldCk6CisgICAgICAgIChld2tfdXJsX3Jlc3Bv
bnNlX25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlX3By
aXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
OgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2luaXRpYXRlZCk6CisgICAgICAgIChld2tfdmlld19yZXNvdXJjZV9sb2Fk
X3Jlc3BvbnNlKToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKToKKyAg
ICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvdmlz
aW9uYWxfc3RhcnRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOgor
ICAgICAgICAoZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRSZWNlaXZl
UmVzcG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2Up
OgorICAgICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorCisyMDEyLTA3LTA1ICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKICAgICAgICAgW1dLMl1bRUZMXSBF
d2tfVmlldyBuZWVkcyB0byByZXBvcnQgbG9hZCBzdGF0dXMgY2hhbmdlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1NjYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCA3ZDA2MTg0Li5kYmIwM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMzcsNiArMzcsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19pbnRlbnRfc2VydmljZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVl
c3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19sb2FkZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jl
c291cmNlX2xvYWRfY2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VXZWJLaXQyLmgKaW5kZXggNzk5ZDI1OC4uOWFmYTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
ZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5oIgogI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdC5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2UuaCIKICNpbmNs
dWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRlICJl
d2tfd2ViX3Jlc291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjE3YTNjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a191cmxfcmVz
cG9uc2UuaCIKKworI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworLyoqCisgKiBcc3RydWN0ICBfRXdrX1VybF9SZXNw
b25zZQorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIFVSTCByZXNwb25zZSBkYXRhLgorICovCitz
dHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgeworICAgIHVuc2lnbmVkIGludCBfX3JlZjsgLyoqPCB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgKi8KKyAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIGNvcmVSZXNwb25zZTsKKworICAgIGNvbnN0IGNoYXIqIHVybDsKKyAgICBjb25z
dCBjaGFyKiBtaW1lVHlwZTsKK307CisKK3ZvaWQgZXdrX3VybF9yZXNwb25zZV9yZWYoRXdrX1Vy
bF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
cmVzcG9uc2UpOworICAgICsrcmVzcG9uc2UtPl9fcmVmOworfQorCit2b2lkIGV3a191cmxfcmVz
cG9uc2VfdW5yZWYoRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4ocmVzcG9uc2UpOworCisgICAgaWYgKC0tcmVzcG9uc2UtPl9fcmVm
KQorICAgICAgICByZXR1cm47CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXNwb25zZS0+
dXJsKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXNwb25zZS0+bWltZVR5cGUpOworICAg
IGZyZWUocmVzcG9uc2UpOworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3Jlc3BvbnNlX3VybF9n
ZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHJlc3BvbnNlLCAwKTsKKworICAgIEV3a19VcmxfUmVzcG9uc2Uq
IGV3a1Jlc3BvbnNlID0gY29uc3RfY2FzdDxFd2tfVXJsX1Jlc3BvbnNlKj4ocmVzcG9uc2UpOwor
ICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrUmVzcG9uc2UtPnVybCwgcmVzcG9uc2Ut
PmNvcmVSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVy
biByZXNwb25zZS0+dXJsOworfQorCitpbnQgZXdrX3VybF9yZXNwb25zZV9zdGF0dXNfY29kZV9n
ZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHJlc3BvbnNlLCAwKTsKKworICAgIHJldHVybiByZXNwb25zZS0+
Y29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a191cmxf
cmVzcG9uc2VfbWltZV90eXBlX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzcG9uc2UsIDApOworCisg
ICAgRXdrX1VybF9SZXNwb25zZSogZXdrUmVzcG9uc2UgPSBjb25zdF9jYXN0PEV3a19VcmxfUmVz
cG9uc2UqPihyZXNwb25zZSk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tSZXNw
b25zZS0+bWltZVR5cGUsIHJlc3BvbnNlLT5jb3JlUmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCku
ZGF0YSgpKTsKKworICAgIHJldHVybiByZXNwb25zZS0+bWltZVR5cGU7Cit9CisKKy8qKgorICog
QGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1VybF9SZXNwb25zZSBmcm9tIGEgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZS4KKyAqLworRXdrX1VybF9SZXNwb25zZSogZXdrX3VybF9yZXNw
b25zZV9uZXcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgY29yZVJlc3BvbnNlKQor
eworICAgIEV3a19VcmxfUmVzcG9uc2UqIGV3a1VybFJlc3BvbnNlID0gc3RhdGljX2Nhc3Q8RXdr
X1VybF9SZXNwb25zZSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1VybF9SZXNwb25zZSkpKTsKKyAg
ICBld2tVcmxSZXNwb25zZS0+X19yZWYgPSAxOworICAgIGV3a1VybFJlc3BvbnNlLT5jb3JlUmVz
cG9uc2UgPSBjb3JlUmVzcG9uc2U7CisKKyAgICByZXR1cm4gZXdrVXJsUmVzcG9uc2U7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1ZTlhNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9u
c2UuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBld2tfdXJsX3Jlc3BvbnNlLmgKKyAqIEBicmllZiAgIERlc2NyaWJlcyB0aGUgRXdrIFVS
TCByZXNwb25zZSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3Jlc3BvbnNlX2gKKyNkZWZp
bmUgZXdrX3VybF9yZXNwb25zZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUg
Zm9yIF9Fd2tfVXJsX1Jlc3BvbnNlICovCit0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25z
ZSBFd2tfVXJsX1Jlc3BvbnNlOworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNv
dW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIHJlc3BvbnNlIHRoZSBVUkwg
cmVzcG9uc2Ugb2JqZWN0IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQ
SSB2b2lkIGV3a191cmxfcmVzcG9uc2VfcmVmKEV3a19VcmxfUmVzcG9uc2UgKnJlc3BvbnNlKTsK
KworLyoqCisgKiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2Jq
ZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3Vu
dCBpdCdzIHJlYWNoZWQgMCwgdGhlIFVSTCByZXF1ZXN0IGlzIGZyZWVkLgorICoKKyAqIEBwYXJh
bSByZXNwb25zZSB0aGUgVVJMIHJlc3BvbnNlIG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVmZXJl
bmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3Jlc3BvbnNlX3VucmVmKEV3a19Vcmxf
UmVzcG9uc2UgKnJlc3BvbnNlKTsKKworLyoqCisgKiBRdWVyeSBVUkwgZm9yIHRoaXMgcmVzcG9u
c2UuCisgKgorICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlIG9iamVjdCB0byBxdWVyeS4KKyAq
CisgKiBAcmV0dXJuIHRoZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBw
b2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwg
c28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQg
b2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLwor
RUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3Jlc3BvbnNlX3VybF9nZXQoY29uc3QgRXdrX1VybF9S
ZXNwb25zZSAqcmVzcG9uc2UpOworCisvKioKKyAqIFF1ZXJ5IEhUVFAgc3RhdHVzIGNvZGUgZm9y
IHRoaXMgcmVzcG9uc2UuCisgKgorICogSFRUUCBzdGF0dXMgY29kZSBhcmUgZGVmaW5lZCBieToK
KyAqIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRt
bAorICoKKyAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZSBvYmplY3QgdG8gcXVlcnkuCisgKgor
ICogQHJldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZS4KKyAqLworRUFQSSBpbnQgZXdrX3VybF9y
ZXNwb25zZV9zdGF0dXNfY29kZV9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2Up
OworCisvKioKKyAqIFF1ZXJ5IE1JTUUgdHlwZSBmb3IgdGhpcyByZXNwb25zZS4KKyAqCisgKiBA
cGFyYW0gcmVzcG9uc2UgcmVzcG9uc2Ugb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4g
dGhlIE1JTUUgdHlwZSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIg
aXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVu
ZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBh
bmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5h
X3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNv
bnN0IGNoYXIgKmV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldChjb25zdCBFd2tfVXJsX1Jl
c3BvbnNlICpyZXNwb25zZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvLyBld2tfdXJsX3Jlc3BvbnNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJkNTYzZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5o
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3VybF9y
ZXNwb25zZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3VybF9yZXNwb25zZV9wcml2YXRlX2gKKwor
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCit0eXBlZGVmIHN0cnVjdCBf
RXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOworCitFd2tfVXJsX1Jlc3BvbnNlKiBl
d2tfdXJsX3Jlc3BvbnNlX25ldyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNv
dXJjZVJlc3BvbnNlKTsKKworI2VuZGlmIC8vIGV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggZWI2
YjE1Yi4uMjU1ZDVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImV3a192aWV3X2xvYWRlcl9j
bGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKQEAgLTQxLDEwICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJbXSA9ICJFV0syX1Zp
ZXciOwogCit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEV3a19XZWJfUmVzb3VyY2UqPiBMb2Fk
aW5nUmVzb3VyY2VzTWFwOworCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAg
T3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogICAgIGNvbnN0IGNoYXIqIHVyaTsK
ICAgICBjb25zdCBjaGFyKiB0aXRsZTsKKyAgICBMb2FkaW5nUmVzb3VyY2VzTWFwIGxvYWRpbmdS
ZXNvdXJjZXNNYXA7CiB9OwogCiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hFQ0soZXdrVmlldywg
cmVzdWx0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNTY3LDEyICs1
NzEsOTYgQEAgRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAg
Ki8KIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVz
b3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBFd2tfV2ViX1Jlc291cmNl
X1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0fTsKLSAgICAvLyBG
SVhNRTogV2Ugd2lsbCBuZWVkIHRvIHN0b3JlIHRoZSByZXNvdXJjZSBhbmQgaXRzIGlkZW50aWZp
ZXIgYXQgc29tZSBwb2ludAotICAgIC8vIHRvIGdldCB0aGUgcmVzb3VyY2UgYmFjayBmcm9tIHRo
ZSBpZGVudGlmaWVyIG9uIHJlc291cmNlIGxvYWQgZmluaXNoLgorICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9P
Ul9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIEV3a19XZWJfUmVzb3VyY2VfUmVxdWVz
dCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIDB9OworCisgICAgLy8gS2Vl
cCB0aGUgcmVzb3VyY2UgaW50ZXJuYWxseSB0byByZXVzZSBpdCBsYXRlci4KKyAgICBld2tfd2Vi
X3Jlc291cmNlX3JlZihyZXNvdXJjZSk7CisgICAgcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5h
ZGQocmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSk7CisKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5ldyIsICZyZXNvdXJj
ZVJlcXVlc3QpOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVjZWl2ZWQgYSByZXNwb25z
ZSB0byBhIHJlc291cmNlIGxvYWQgcmVxdWVzdCBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBz
aWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiB3aXRoIHBvaW50ZXIgdG8gcmVzb3Vy
Y2UgcmVzcG9uc2UuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShF
dmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJs
X1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgcHJpdik7CisKKyAgICBpZiAoIXByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuY29udGFp
bnMocmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXdrX1dlYl9S
ZXNvdXJjZSogcmVzb3VyY2UgPSBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmdldChyZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSByZXNvdXJj
ZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9OworICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiLCAm
cmVzb3VyY2VMb2FkUmVzcG9uc2UpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogRmFpbGVk
IGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJy
ZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIGxv
YWQgZXJyb3IuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJv
ciogZXJyb3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYp
OworCisgICAgaWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJfUmVzb3VyY2UqIHJl
c291cmNlID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICBFd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VMb2FkRXJyb3IgPSB7
cmVzb3VyY2UsIGVycm9yfTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3
a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsICZyZXNvdXJjZUxvYWRFcnJvcik7Cit9
CisKKy8qKgorICogQGludGVybmFsCisgKiBGaW5pc2hlZCBsb2FkaW5nIGEgcmVzb3VyY2UgaW4g
dGhlIHZpZXcuCisgKgorICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hl
ZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJjZS4KKyAqLwordm9pZCBld2tfdmlld19yZXNv
dXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBz
bWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHBy
aXYpOworCisgICAgaWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291
cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJfUmVzb3VyY2Uq
IHJlc291cmNlID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC50YWtlKHJlc291cmNlSWRlbnRp
Zmllcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicmVz
b3VyY2UscmVxdWVzdCxmaW5pc2hlZCIsIHJlc291cmNlKTsKKworICAgIGV3a193ZWJfcmVzb3Vy
Y2VfdW5yZWYocmVzb3VyY2UpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVxdWVzdCB3
YXMgc2VudCBmb3IgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0cyBzaWduYWw6
ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXF1ZXN0
IGFuZCBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KKyAqLwordm9pZCBld2tfdmlld19yZXNv
dXJjZV9yZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNl
SWRlbnRpZmllciwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiBy
ZWRpcmVjdFJlc3BvbnNlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2KTsKKworICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jb250YWlucyhy
ZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfV2ViX1Jlc291
cmNlKiByZXNvdXJjZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0KHJlc291cmNlSWRl
bnRpZmllcik7CisgICAgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVzdCA9
IHtyZXNvdXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZX07CisKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAm
cmVzb3VyY2VSZXF1ZXN0KTsKK30KKwogY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKQEAgLTc3Myw2ICs4NjEsMTcgQEAgdm9pZCBld2tf
dmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICov
CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09iamVjdCogZXdr
VmlldykKIHsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0
YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisK
KyAgICAvLyBUaGUgbWFpbiBmcmFtZSBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQsIHdlIHNob3Vs
ZCBjbGVhcgorICAgIC8vIHRoZSBsb2FkaW5nUmVzb3VyY2VzIEhhc2hNYXAgdG8gc3RhcnQgY2xl
YW4uCisgICAgTG9hZGluZ1Jlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBwcml2LT5sb2FkaW5n
UmVzb3VyY2VzTWFwLmJlZ2luKCk7CisgICAgTG9hZGluZ1Jlc291cmNlc01hcDo6aXRlcmF0b3Ig
ZW5kID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5lbmQoKTsKKyAgICBmb3IgKCA7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgZXdrX3dlYl9yZXNvdXJjZV91bnJlZihpdC0+c2Vjb25kKTsK
KyAgICBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNsZWFyKCk7CisKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQi
LCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
aW5kZXggYTFhM2E3ZC4uODJiOTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5oCkBAIC0zNCw3ICszNCwxMSBAQAogICogLSAibG9hZCxwcm92aXNpb25h
bCxmYWlsZWQiLCBjb25zdCBFd2tfV2ViX0Vycm9yKjogdmlldyBwcm92aXNpb25hbCBsb2FkIGZh
aWxlZC4KICAqIC0gImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lkOiB2aWV3IHJlY2Vp
dmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9hZCxwcm92aXNpb25h
bCxzdGFydGVkIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQuCisgKiAtICJy
ZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsIGNvbnN0IEV3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJv
cio6IGEgcmVzb3VyY2UgZmFpbGVkIGxvYWRpbmcuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LGZp
bmlzaGVkIiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZSo6IGEgcmVzb3VyY2UgZmluaXNoZWQgbG9h
ZGluZy4KICAqIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgY29uc3QgRXdrX1dlYl9SZXNvdXJj
ZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBpbml0aWF0ZWQuCisgKiAtICJyZXNv
dXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlKjog
YSByZXNwb25zZSB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVkLgorICogLSAicmVz
b3VyY2UscmVxdWVzdCxzZW50IiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0KjogYSBy
ZXNvdXJjZSByZXF1ZXN0IHdhcyBzZW50LgogICogLSAidGl0bGUsY2hhbmdlZCIsIGNvbnN0IGNo
YXIqOiB0aXRsZSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KICAqLwogCkBAIC01Miw3
ICs1Niw5IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIEV3a19WaWV3X1Nt
YXJ0X0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1ZpZXdfU21hcnRfQ2xhc3MgRXdrX1ZpZXdf
U21hcnRfQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX0ludGVudCBFd2tfSW50ZW50OwogdHlw
ZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7Cit0eXBlZGVmIHN0
cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwogdHlwZWRlZiBzdHJ1Y3Qg
X0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKK3R5cGVkZWYgc3RydWN0IF9Fd2tf
V2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7CiAKIAogLy8vIEV3ayB2aWV3J3MgY2xhc3MsIHRvIGJl
IG92ZXJyaWRkZW4gYnkgc3ViLWNsYXNzZXMuCkBAIC0xNDYsMTIgKzE1MiwzNSBAQCB0eXBlZGVm
IHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IEV3a19XZWJfUmVzb3VyY2VfUmVxdWVz
dDsKIAogLyoqCiAgKiBAYnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBh
IHJlc291cmNlIHJlcXVlc3QuCi0gKgotICogRGV0YWlscyBnaXZlbiBhYm91dCBhIHJlc291cmNl
IGlzIGxvYWRlZC4KICAqLwogc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QgewogICAg
IEV3a19XZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNlIGJlaW5nIHJlcXVlc3Rl
ZCAqLwogICAgIEV3a19VcmxfUmVxdWVzdCAqcmVxdWVzdDsgLyoqPCBVUkwgcmVxdWVzdCBmb3Ig
dGhlIHJlc291cmNlICovCisgICAgRXdrX1VybF9SZXNwb25zZSAqcmVkaXJlY3RfcmVzcG9uc2U7
IC8qKjwgUG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UgZm9yIHRoZSByZXNvdXJjZSAqLworfTsK
KworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVz
cG9uc2UuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlIEV3
a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNwb25zZTsKKworLyoqCisgKiBAYnJpZWYgU3RydWN0dXJl
IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2UgcmVxdWVz
dC4KKyAqLworc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UgeworICAgICBF
d2tfV2ViX1Jlc291cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJjZSByZXF1ZXN0ZWQgKi8KKyAg
ICAgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2U7IC8qKjwgcmVzb3VyY2UgbG9hZCByZXNwb25z
ZSAqLworfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2ViX1Jlc291cmNl
X0xvYWRfRXJyb3IuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9y
IEV3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvcjsKKworLyoqCisgKiBAYnJpZWYgU3RydWN0dXJl
IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc291cmNlIGxvYWQgZXJyb3IuCisgKgorICog
RGV0YWlscyBnaXZlbiBhYm91dCBhIHJlc291cmNlIGxvYWQgZmFpbHVyZS4KKyAqLworc3RydWN0
IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgeworICAgIEV3a19XZWJfUmVzb3VyY2UgKnJl
c291cmNlOyAvKio8IHJlc291cmNlIHRoYXQgZmFpbGVkIGxvYWRpbmcgKi8KKyAgICBFd2tfV2Vi
X0Vycm9yICplcnJvcjsgLyoqPCBsb2FkIGVycm9yICovCiB9OwogCiAvKioKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCBm
OWYyMTEzLi45MTMyODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0zMSw2ICszMSw3IEBAIGNsYXNzIEludFNpemU7
CiB9CiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1VybF9SZXF1ZXN0Owor
dHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgRXdrX1VybF9SZXNwb25zZTsKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7CiB0eXBlZGVmIHN0cnVjdCBf
RXdrX1dlYl9SZXNvdXJjZSBFd2tfV2ViX1Jlc291cmNlOwogI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKQEAgLTQ5LDcgKzUwLDExIEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWls
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJyb3IqCiB2b2lkIGV3a192
aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9p
ZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Owogdm9pZCBld2tfdmlld190aXRsZV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBjaGFyKiB0aXRsZSk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19XZWJfRXJy
b3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZChFdmFzX09i
amVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgZXdrX3Zp
ZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19Vcmxf
UmVxdWVzdCogcmVxdWVzdCk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2Uo
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1Vy
bF9SZXNwb25zZSogcmVzcG9uc2UpOwordm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3Nl
bnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdr
X1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNl
KTsKIAogRXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250
ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
LmNwcAppbmRleCA2YmUzOWEyLi4yYjViMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9j
bGllbnQuY3BwCkBAIC0zMSwxMCArMzEsMTUgQEAKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgog
I2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
V0tVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgogI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5o
IgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192
aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9w
cml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgorI2luY2x1ZGUgImV3a193ZWJf
ZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2UuaCIKICNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC01NCw2ICs1OSw0MyBAQCBzdGF0aWMgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNv
dXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgd2tGcmFtZSwgdWludDY0X3QgcgogICAgIGV3a191
cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKIH0KIAorc3RhdGljIHZvaWQgZGlkU2VuZFJlcXVl
c3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgV0tVUkxSZXNwb25zZVJlZiB3a1Jl
ZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKTsKKworICAgIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCA9IGV3a191cmxf
cmVxdWVzdF9uZXcod2tSZXF1ZXN0KTsKKyAgICBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJl
c3BvbnNlID0gZXdrX3VybF9yZXNwb25zZV9uZXcodG9JbXBsKHdrUmVkaXJlY3RSZXNwb25zZSkt
PnJlc291cmNlUmVzcG9uc2UoKSk7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50
KGV3a1ZpZXcsIHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
CisgICAgZXdrX3VybF9yZXF1ZXN0X3VucmVmKHJlcXVlc3QpOworICAgIGV3a191cmxfcmVzcG9u
c2VfdW5yZWYocmVkaXJlY3RSZXNwb25zZSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZUZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3Vy
Y2VJZGVudGlmaWVyLCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgRXZhc19PYmplY3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFz
X09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKKworICAgIEV3a19Vcmxf
UmVzcG9uc2UqIHJlc3BvbnNlID0gZXdrX3VybF9yZXNwb25zZV9uZXcodG9JbXBsKHdrUmVzcG9u
c2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVz
cG9uc2UoZXdrVmlldywgcmVzb3VyY2VJZGVudGlmaWVyLCByZXNwb25zZSk7CisgICAgZXdrX3Vy
bF9yZXNwb25zZV91bnJlZihyZXNwb25zZSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExv
YWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFdmFzX09iamVjdCogZXdr
VmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOworCisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZChld2tWaWV3LCBy
ZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZEZvclJlc291
cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBX
S0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXZhc19P
YmplY3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKTsKKworICAgIEV3a19XZWJfRXJyb3IqIGV3a0Vycm9yID0gZXdrX3dl
Yl9lcnJvcl9uZXcod2tFcnJvcik7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQo
ZXdrVmlldywgcmVzb3VyY2VJZGVudGlmaWVyLCBld2tFcnJvcik7CisgICAgZXdrX3ZpZXdfcmVz
b3VyY2VfbG9hZF9maW5pc2hlZChld2tWaWV3LCByZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGV3
a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7Cit9CisKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmll
dykKIHsKICAgICBXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnQgd2tSZXNvdXJjZUxvYWRDbGllbnQ7
CkBAIC02MSw2ICsxMDMsMTAgQEAgdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9h
dHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWUKICAgICB3a1Jlc291
cmNlTG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZVJlc291cmNlTG9hZENsaWVudEN1cnJlbnRW
ZXJzaW9uOwogICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmNsaWVudEluZm8gPSBld2tWaWV3Owog
ICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlID0gZGlk
SW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U7CisgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkU2Vu
ZFJlcXVlc3RGb3JSZXNvdXJjZSA9IGRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2U7CisgICAgd2tS
ZXNvdXJjZUxvYWRDbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UgPSBkaWRSZWNl
aXZlUmVzcG9uc2VGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRGaW5p
c2hMb2FkRm9yUmVzb3VyY2UgPSBkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2U7CisgICAgd2tSZXNv
dXJjZUxvYWRDbGllbnQuZGlkRmFpbExvYWRGb3JSZXNvdXJjZSA9IGRpZEZhaWxMb2FkRm9yUmVz
b3VyY2U7CiAKICAgICBXS1BhZ2VTZXRQYWdlUmVzb3VyY2VMb2FkQ2xpZW50KHBhZ2VSZWYsICZ3
a1Jlc291cmNlTG9hZENsaWVudCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151609</attachid>
            <date>2012-07-10 23:26:23 -0700</date>
            <delta_ts>2012-07-10 23:33:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90601_resource_load_notifications.patch</filename>
            <type>text/plain</type>
            <size>25919</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmODcxMmUyLi5iNGMxYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTItMDctMDUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBFd2tfVmlldyBzaG91bGQgcHJvdmlkZSBtb3JlIHJlc291
cmNlIGxvYWRpbmcgbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbmV3ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAicmVzb3Vy
Y2UscmVxdWVzdCxyZXNwb25zZSIsCisgICAgICAgICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIg
YW5kICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB0bworICAgICAgICBFd2tfVmlldyBpbiBv
cmRlciB0byBub3RpZnkgdGhlIGNsaWVudHMgb2YgdGhlIG1haW4gcmVzb3VyY2UKKyAgICAgICAg
bG9hZCBzdGF0ZSBjaGFuZ2VzLgorCisgICAgICAgIEludHJvZHVjZSBuZXcgRXdrX1VybF9SZXNw
b25zZSB0eXBlIHRoYXQgaXMgdXNlZCB0byBwcm92aWRlCisgICAgICAgIGluZm9ybWF0aW9uIHRv
IHRoZSBjbGllbnRzIHJlZ2FyZGluZyB0aGUgcmVzb3VyY2UgbG9hZAorICAgICAgICByZXNwb25z
ZXMgdGhhdCBhcmUgcmVjZWl2ZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfVXJs
X1Jlc3BvbnNlKToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2VfcmVmKToKKyAgICAgICAgKGV3
a191cmxfcmVzcG9uc2VfdW5yZWYpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV91cmxfZ2V0
KToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2Vfc3RhdHVzX2NvZGVfZ2V0KToKKyAgICAgICAg
KGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldCk6CisgICAgICAgIChld2tfdXJsX3Jlc3Bv
bnNlX25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlX3By
aXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
OgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2luaXRpYXRlZCk6CisgICAgICAgIChld2tfdmlld19yZXNvdXJjZV9sb2Fk
X3Jlc3BvbnNlKToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKToKKyAg
ICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvdmlz
aW9uYWxfc3RhcnRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOgor
ICAgICAgICAoZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRSZWNlaXZl
UmVzcG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2Up
OgorICAgICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorCiAyMDEyLTA3LTEwICBObydhbSBSb3NlbnRo
YWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBFbmFibGUgYW50
aWFsaWFzaW5nIGZvciBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDdkMDYxODQuLmRiYjAzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNyw2ICsz
Nyw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNl
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGll
bnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGll
bnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2Vi
S2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRl
eCA3OTlkMjU4Li45YWZhNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VXZWJLaXQyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAj
aW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0
LmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a192aWV3Lmgi
CiAjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2Uu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9y
ZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhM2MzMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfcmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgorCisjaW5j
bHVkZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfVXJsX1Jlc3BvbnNlCisgKiBAYnJpZWYg
ICBDb250YWlucyB0aGUgVVJMIHJlc3BvbnNlIGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1VybF9S
ZXNwb25zZSB7CisgICAgdW5zaWduZWQgaW50IF9fcmVmOyAvKio8IHRoZSByZWZlcmVuY2UgY291
bnQgb2YgdGhlIG9iamVjdCAqLworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgY29yZVJl
c3BvbnNlOworCisgICAgY29uc3QgY2hhciogdXJsOworICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBl
OworfTsKKwordm9pZCBld2tfdXJsX3Jlc3BvbnNlX3JlZihFd2tfVXJsX1Jlc3BvbnNlKiByZXNw
b25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXNwb25zZSk7CisgICAg
KytyZXNwb25zZS0+X19yZWY7Cit9CisKK3ZvaWQgZXdrX3VybF9yZXNwb25zZV91bnJlZihFd2tf
VXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihyZXNwb25zZSk7CisKKyAgICBpZiAoLS1yZXNwb25zZS0+X19yZWYpCisgICAgICAgIHJldHVy
bjsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHJlc3BvbnNlLT51cmwpOworICAgIGVpbmFf
c3RyaW5nc2hhcmVfZGVsKHJlc3BvbnNlLT5taW1lVHlwZSk7CisgICAgZnJlZShyZXNwb25zZSk7
Cit9CisKK2NvbnN0IGNoYXIqIGV3a191cmxfcmVzcG9uc2VfdXJsX2dldChjb25zdCBFd2tfVXJs
X1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocmVzcG9uc2UsIDApOworCisgICAgRXdrX1VybF9SZXNwb25zZSogZXdrUmVzcG9uc2UgPSBj
b25zdF9jYXN0PEV3a19VcmxfUmVzcG9uc2UqPihyZXNwb25zZSk7CisgICAgZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZld2tSZXNwb25zZS0+dXJsLCByZXNwb25zZS0+Y29yZVJlc3BvbnNlLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIHJlc3BvbnNlLT51cmw7
Cit9CisKK2ludCBld2tfdXJsX3Jlc3BvbnNlX3N0YXR1c19jb2RlX2dldChjb25zdCBFd2tfVXJs
X1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocmVzcG9uc2UsIDApOworCisgICAgcmV0dXJuIHJlc3BvbnNlLT5jb3JlUmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKTsKK30KKworY29uc3QgY2hhciogZXdrX3VybF9yZXNwb25zZV9taW1lX3R5
cGVfZ2V0KGNvbnN0IEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXNwb25zZSwgMCk7CisKKyAgICBFd2tfVXJsX1Jlc3Bv
bnNlKiBld2tSZXNwb25zZSA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXNwb25zZSo+KHJlc3BvbnNl
KTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a1Jlc3BvbnNlLT5taW1lVHlwZSwg
cmVzcG9uc2UtPmNvcmVSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
cmV0dXJuIHJlc3BvbnNlLT5taW1lVHlwZTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENv
bnN0cnVjdHMgYSBFd2tfVXJsX1Jlc3BvbnNlIGZyb20gYSBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlLgorICovCitFd2tfVXJsX1Jlc3BvbnNlKiBld2tfdXJsX3Jlc3BvbnNlX25ldyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCit7CisgICAgRXdrX1VybF9S
ZXNwb25zZSogZXdrVXJsUmVzcG9uc2UgPSBzdGF0aWNfY2FzdDxFd2tfVXJsX1Jlc3BvbnNlKj4o
Y2FsbG9jKDEsIHNpemVvZihFd2tfVXJsX1Jlc3BvbnNlKSkpOworICAgIGV3a1VybFJlc3BvbnNl
LT5fX3JlZiA9IDE7CisgICAgZXdrVXJsUmVzcG9uc2UtPmNvcmVSZXNwb25zZSA9IGNvcmVSZXNw
b25zZTsKKworICAgIHJldHVybiBld2tVcmxSZXNwb25zZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjVlOWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a191cmxfcmVz
cG9uc2UuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgVVJMIHJlc3BvbnNlIEFQSS4K
KyAqLworCisjaWZuZGVmIGV3a191cmxfcmVzcG9uc2VfaAorI2RlZmluZSBld2tfdXJsX3Jlc3Bv
bnNlX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19VcmxfUmVz
cG9uc2UgKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3a19VcmxfUmVzcG9u
c2U7CisKKy8qKgorICogSW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVu
IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gcmVzcG9uc2UgdGhlIFVSTCByZXNwb25zZSBvYmplY3Qg
dG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdrX3VybF9y
ZXNwb25zZV9yZWYoRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2UpOworCisvKioKKyAqIERlY3Jl
YXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QsIHBvc3NpYmx5IGZy
ZWVpbmcgaXQuCisgKgorICogV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGl0J3MgcmVhY2hlZCAw
LCB0aGUgVVJMIHJlcXVlc3QgaXMgZnJlZWQuCisgKgorICogQHBhcmFtIHJlc3BvbnNlIHRoZSBV
UkwgcmVzcG9uc2Ugb2JqZWN0IHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLwor
RUFQSSB2b2lkIGV3a191cmxfcmVzcG9uc2VfdW5yZWYoRXdrX1VybF9SZXNwb25zZSAqcmVzcG9u
c2UpOworCisvKioKKyAqIFF1ZXJ5IFVSTCBmb3IgdGhpcyByZXNwb25zZS4KKyAqCisgKiBAcGFy
YW0gcmVzcG9uc2UgcmVzcG9uc2Ugb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhl
IFVSTCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAg
ICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3Nz
aWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisg
KiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3No
YXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIg
KmV3a191cmxfcmVzcG9uc2VfdXJsX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25z
ZSk7CisKKy8qKgorICogUXVlcnkgSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhpcyByZXNwb25zZS4K
KyAqCisgKiBIVFRQIHN0YXR1cyBjb2RlIGFyZSBkZWZpbmVkIGJ5OgorICogaHR0cDovL3d3dy53
My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sCisgKgorICogQHBhcmFt
IHJlc3BvbnNlIHJlc3BvbnNlIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBI
VFRQIHN0YXR1cyBjb2RlLgorICovCitFQVBJIGludCBld2tfdXJsX3Jlc3BvbnNlX3N0YXR1c19j
b2RlX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25zZSk7CisKKy8qKgorICogUXVl
cnkgTUlNRSB0eXBlIGZvciB0aGlzIHJlc3BvbnNlLgorICoKKyAqIEBwYXJhbSByZXNwb25zZSBy
ZXNwb25zZSBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgTUlNRSB0eXBlIHBv
aW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBn
dWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisg
KiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Vy
bF9yZXNwb25zZV9taW1lX3R5cGVfZ2V0KGNvbnN0IEV3a19VcmxfUmVzcG9uc2UgKnJlc3BvbnNl
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a191cmxf
cmVzcG9uc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zMmQ1NjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGVf
aAorI2RlZmluZSBld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNl
IEV3a19VcmxfUmVzcG9uc2U7CisKK0V3a19VcmxfUmVzcG9uc2UqIGV3a191cmxfcmVzcG9uc2Vf
bmV3KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpOwor
CisjZW5kaWYgLy8gZXdrX3VybF9yZXNwb25zZV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBlYjZiMTViLi4yNTVkNWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiZXdrX3ZpZXdfbG9hZGVyX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291
cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwpAQCAtNDEsMTAgKzQyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMg
Y29uc3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CiAKK3R5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgRXdrX1dlYl9SZXNvdXJjZSo+IExvYWRpbmdSZXNvdXJjZXNNYXA7
CisKIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVu
dEltcGw+IHBhZ2VDbGllbnQ7CiAgICAgY29uc3QgY2hhciogdXJpOwogICAgIGNvbnN0IGNoYXIq
IHRpdGxlOworICAgIExvYWRpbmdSZXNvdXJjZXNNYXAgbG9hZGluZ1Jlc291cmNlc01hcDsKIH07
CiAKICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3LCByZXN1bHQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC01NjcsMTIgKzU3MSw5NiBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogZXdrVmlldykKICAqLwogdm9pZCBld2tfdmll
d19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9S
ZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIEV3a19XZWJfUmVzb3VyY2VfUmVxdWVzdCByZXNvdXJj
ZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3R9OwotICAgIC8vIEZJWE1FOiBXZSB3aWxsIG5l
ZWQgdG8gc3RvcmUgdGhlIHJlc291cmNlIGFuZCBpdHMgaWRlbnRpZmllciBhdCBzb21lIHBvaW50
Ci0gICAgLy8gdG8gZ2V0IHRoZSByZXNvdXJjZSBiYWNrIGZyb20gdGhlIGlkZW50aWZpZXIgb24g
cmVzb3VyY2UgbG9hZCBmaW5pc2guCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOworCisgICAgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVz
dCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgMH07CisKKyAgICAvLyBLZWVwIHRoZSByZXNvdXJjZSBp
bnRlcm5hbGx5IHRvIHJldXNlIGl0IGxhdGVyLgorICAgIGV3a193ZWJfcmVzb3VyY2VfcmVmKHJl
c291cmNlKTsKKyAgICBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmFkZChyZXNvdXJjZUlkZW50
aWZpZXIsIHJlc291cmNlKTsKKwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgJnJlc291cmNlUmVxdWVzdCk7CiB9CiAK
Ky8qKgorICogQGludGVybmFsCisgKiBSZWNlaXZlZCBhIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2Ug
bG9hZCByZXF1ZXN0IGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNl
LHJlcXVlc3QscmVzcG9uc2UiIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXNwb25zZS4KKyAq
Lwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3Bv
bnNlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKwor
ICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jb250YWlucyhyZXNvdXJjZUlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJj
ZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlIHJlc291cmNlTG9hZFJlc3BvbnNlID0g
e3Jlc291cmNlLCByZXNwb25zZX07CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIsICZyZXNvdXJjZUxvYWRSZXNw
b25zZSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBGYWlsZWQgbG9hZGluZyBhIHJlc291
cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qs
ZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgbG9hZCBlcnJvci4KKyAqLwor
dm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywg
dWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAoIXBy
aXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBwcml2LT5s
b2FkaW5nUmVzb3VyY2VzTWFwLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEV3a19XZWJf
UmVzb3VyY2VfTG9hZF9FcnJvciByZXNvdXJjZUxvYWRFcnJvciA9IHtyZXNvdXJjZSwgZXJyb3J9
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNl
LHJlcXVlc3QsZmFpbGVkIiwgJnJlc291cmNlTG9hZEVycm9yKTsKK30KKworLyoqCisgKiBAaW50
ZXJuYWwKKyAqIEZpbmlzaGVkIGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisg
KiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIg
dG8gdGhlIHJlc291cmNlLgorICovCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAo
IXByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBwcml2
LT5sb2FkaW5nUmVzb3VyY2VzTWFwLnRha2UocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZp
bmlzaGVkIiwgcmVzb3VyY2UpOworCisgICAgZXdrX3dlYl9yZXNvdXJjZV91bnJlZihyZXNvdXJj
ZSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXF1ZXN0IHdhcyBzZW50IGZvciBhIHJl
c291cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVl
c3Qsc2VudCIgd2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlcXVlc3QgYW5kIHBvc3NpYmxlIHJl
ZGlyZWN0IHJlc3BvbnNlLgorICovCit2b2lkIGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2Vu
dChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tf
VXJsX1JlcXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2Up
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAg
aWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291cmNlSWRlbnRpZmll
cikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlID0g
cHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBF
d2tfV2ViX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlfTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3Qsc2VudCIsICZyZXNvdXJjZVJlcXVlc3Qp
OworfQorCiBjb25zdCBjaGFyKiBld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIDApOwpAQCAtNzczLDYgKzg2MSwxNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlz
aW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgKi8KIHZvaWQgZXdrX3ZpZXdf
bG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogeworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIC8vIFRoZSBtYWlu
IGZyYW1lIHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZCwgd2Ugc2hvdWxkIGNsZWFyCisgICAgLy8g
dGhlIGxvYWRpbmdSZXNvdXJjZXMgSGFzaE1hcCB0byBzdGFydCBjbGVhbi4KKyAgICBMb2FkaW5n
UmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuYmVn
aW4oKTsKKyAgICBMb2FkaW5nUmVzb3VyY2VzTWFwOjppdGVyYXRvciBlbmQgPSBwcml2LT5sb2Fk
aW5nUmVzb3VyY2VzTWFwLmVuZCgpOworICAgIGZvciAoIDsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICBld2tfd2ViX3Jlc291cmNlX3VucmVmKGl0LT5zZWNvbmQpOworICAgIHByaXYtPmxvYWRp
bmdSZXNvdXJjZXNNYXAuY2xlYXIoKTsKKwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIDApOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCBmNjA5MmE2Li4x
ZmYwNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
QEAgLTM0LDcgKzM0LDExIEBACiAgKiAtICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0
IEV3a19XZWJfRXJyb3IqOiB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkLgogICogLSAibG9h
ZCxwcm92aXNpb25hbCxyZWRpcmVjdCIsIHZvaWQ6IHZpZXcgcmVjZWl2ZWQgcmVkaXJlY3QgZm9y
IHByb3Zpc2lvbmFsIGxvYWQuCiAgKiAtICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCB2b2lk
OiB2aWV3IHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZC4KKyAqIC0gInJlc291cmNlLHJlcXVlc3Qs
ZmFpbGVkIiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yKjogYSByZXNvdXJjZSBm
YWlsZWQgbG9hZGluZy4KKyAqIC0gInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiLCBjb25zdCBF
d2tfV2ViX1Jlc291cmNlKjogYSByZXNvdXJjZSBmaW5pc2hlZCBsb2FkaW5nLgogICogLSAicmVz
b3VyY2UscmVxdWVzdCxuZXciLCBjb25zdCBFd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJl
c291cmNlIHJlcXVlc3Qgd2FzIGluaXRpYXRlZC4KKyAqIC0gInJlc291cmNlLHJlcXVlc3QscmVz
cG9uc2UiLCBFd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UqOiBhIHJlc3BvbnNlIHRvIGEg
cmVzb3VyY2UgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LHNl
bnQiLCBjb25zdCBFd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291cmNlIHJlcXVlc3Qg
d2FzIHNlbnQuCiAgKiAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9mIHRo
ZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgogICovCiAKQEAgLTQ0LDYgKzQ4LDcgQEAKICNpbmNs
dWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRlICJl
d2tfdXJsX3JlcXVlc3QuaCIKKyNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUgPEV2YXMuaD4KIApAQCAtMTQ1LDEyICsx
NTAsMzUgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2VfUmVxdWVzdCBFd2tfV2Vi
X1Jlc291cmNlX1JlcXVlc3Q7CiAKIC8qKgogICogQGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5n
IGRldGFpbHMgYWJvdXQgYSByZXNvdXJjZSByZXF1ZXN0LgotICoKLSAqIERldGFpbHMgZ2l2ZW4g
YWJvdXQgYSByZXNvdXJjZSBpcyBsb2FkZWQuCiAgKi8KIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJj
ZV9SZXF1ZXN0IHsKICAgICBFd2tfV2ViX1Jlc291cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJj
ZSBiZWluZyByZXF1ZXN0ZWQgKi8KICAgICBFd2tfVXJsX1JlcXVlc3QgKnJlcXVlc3Q7IC8qKjwg
VVJMIHJlcXVlc3QgZm9yIHRoZSByZXNvdXJjZSAqLworICAgIEV3a19VcmxfUmVzcG9uc2UgKnJl
ZGlyZWN0X3Jlc3BvbnNlOyAvKio8IFBvc3NpYmxlIHJlZGlyZWN0IHJlc3BvbnNlIGZvciB0aGUg
cmVzb3VyY2UgKi8KK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBfRXdrX1dlYl9S
ZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2Vf
TG9hZF9SZXNwb25zZSBFd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVzcG9uc2U7CisKKy8qKgorICog
QGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNwb25zZSB0byBh
IHJlc291cmNlIHJlcXVlc3QuCisgKi8KK3N0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX1Jl
c3BvbnNlIHsKKyAgICAgRXdrX1dlYl9SZXNvdXJjZSAqcmVzb3VyY2U7IC8qKjwgcmVzb3VyY2Ug
cmVxdWVzdGVkICovCisgICAgIEV3a19VcmxfUmVzcG9uc2UgKnJlc3BvbnNlOyAvKio8IHJlc291
cmNlIGxvYWQgcmVzcG9uc2UgKi8KK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBf
RXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yLgordHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVz
b3VyY2VfTG9hZF9FcnJvciBFd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3I7CisKKy8qKgorICog
QGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSByZXNvdXJjZSBsb2Fk
IGVycm9yLgorICoKKyAqIERldGFpbHMgZ2l2ZW4gYWJvdXQgYSByZXNvdXJjZSBsb2FkIGZhaWx1
cmUuCisgKi8KK3N0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yIHsKKyAgICBFd2tf
V2ViX1Jlc291cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJjZSB0aGF0IGZhaWxlZCBsb2FkaW5n
ICovCisgICAgRXdrX1dlYl9FcnJvciAqZXJyb3I7IC8qKjwgbG9hZCBlcnJvciAqLwogfTsKIAog
LyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmgKaW5kZXggZjlmMjExMy4uOTEzMjgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApAQCAtMzEsNiArMzEsNyBA
QCBjbGFzcyBJbnRTaXplOwogfQogCiB0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IEV3
a19VcmxfUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3a19Vcmxf
UmVzcG9uc2U7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKICNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCkBAIC00OSw3ICs1MCwxMSBAQCB2b2lkIGV3a192aWV3X2xvYWRf
cHJvdmlzaW9uYWxfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfV2ViX0Vy
cm9yKgogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNf
T2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfdGl0bGVfY2hhbmdlZChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUpOwordm9pZCBld2tfdmlld19yZXNvdXJjZV9s
b2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRf
ZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
cik7CiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19XZWJfUmVzb3VyY2UqIHJl
c291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QpOwordm9pZCBld2tfdmlld19yZXNvdXJj
ZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKTsKK3ZvaWQgZXdrX3ZpZXdfcmVz
b3VyY2VfcmVxdWVzdF9zZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCwgRXdrX1VybF9SZXNwb25zZSog
cmVkaXJlY3RSZXNwb25zZSk7CiAKIEV2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFz
KiBjYW52YXMsIFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNv
dXJjZV9sb2FkX2NsaWVudC5jcHAKaW5kZXggNmJlMzlhMi4uMmI1YjFjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9j
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcApAQCAtMzEsMTAgKzMxLDE1IEBACiAjaW5jbHVkZSAi
V0tSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJXS1VSTC5oIgogI2luY2x1ZGUgIldLVVJMUmVxdWVz
dC5oIgorI2luY2x1ZGUgIldLVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJld2tfdXJsX3JlcXVl
c3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3
a191cmxfcmVzcG9uc2UuaCIKKyNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcmVzb3Vy
Y2VfbG9hZF9jbGllbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKKyNp
bmNsdWRlICJld2tfd2ViX2Vycm9yX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291
cmNlLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZV9wcml2YXRlLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNTQsNiArNTksNDMgQEAgc3RhdGljIHZvaWQgZGlkSW5p
dGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIHdrRnJhbWUsIHVpbnQ2
NF90IHIKICAgICBld2tfdXJsX3JlcXVlc3RfdW5yZWYocmVxdWVzdCk7CiB9CiAKK3N0YXRpYyB2
b2lkIGRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiB3a1JlcXVlc3QsIFdLVVJM
UmVzcG9uc2VSZWYgd2tSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisKKyAgICBFd2tfVXJsX1JlcXVlc3QqIHJl
cXVlc3QgPSBld2tfdXJsX3JlcXVlc3RfbmV3KHdrUmVxdWVzdCk7CisgICAgRXdrX1VybF9SZXNw
b25zZSogcmVkaXJlY3RSZXNwb25zZSA9IGV3a191cmxfcmVzcG9uc2VfbmV3KHRvSW1wbCh3a1Jl
ZGlyZWN0UmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIGV3a192aWV3X3Jlc291
cmNlX3JlcXVlc3Rfc2VudChld2tWaWV3LCByZXNvdXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOworICAgIGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKKyAg
ICBld2tfdXJsX3Jlc3BvbnNlX3VucmVmKHJlZGlyZWN0UmVzcG9uc2UpOworfQorCitzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYs
IHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXNwb25zZVJlZiB3a1Jlc3BvbnNl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0g
c3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
CisKKyAgICBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSA9IGV3a191cmxfcmVzcG9uc2VfbmV3
KHRvSW1wbCh3a1Jlc3BvbnNlKS0+cmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBld2tfdmlld19y
ZXNvdXJjZV9sb2FkX3Jlc3BvbnNlKGV3a1ZpZXcsIHJlc291cmNlSWRlbnRpZmllciwgcmVzcG9u
c2UpOworICAgIGV3a191cmxfcmVzcG9uc2VfdW5yZWYocmVzcG9uc2UpOworfQorCitzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
RXZhc19PYmplY3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKKworICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmlu
aXNoZWQoZXdrVmlldywgcmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworc3RhdGljIHZvaWQgZGlk
RmFpbExvYWRGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgV0tFcnJvclJlZiB3a0Vycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3Qq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisKKyAgICBFd2tfV2ViX0Vycm9yKiBl
d2tFcnJvciA9IGV3a193ZWJfZXJyb3JfbmV3KHdrRXJyb3IpOworICAgIGV3a192aWV3X3Jlc291
cmNlX2xvYWRfZmFpbGVkKGV3a1ZpZXcsIHJlc291cmNlSWRlbnRpZmllciwgZXdrRXJyb3IpOwor
ICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQoZXdrVmlldywgcmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBld2tfd2ViX2Vycm9yX2ZyZWUoZXdrRXJyb3IpOworfQorCiB2b2lkIGV3
a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50IHdrUmVz
b3VyY2VMb2FkQ2xpZW50OwpAQCAtNjEsNiArMTAzLDEwIEBAIHZvaWQgZXdrX3ZpZXdfcmVzb3Vy
Y2VfbG9hZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdr
VmllCiAgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VSZXNvdXJjZUxv
YWRDbGllbnRDdXJyZW50VmVyc2lvbjsKICAgICB3a1Jlc291cmNlTG9hZENsaWVudC5jbGllbnRJ
bmZvID0gZXdrVmlldzsKICAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRJbml0aWF0ZUxvYWRG
b3JSZXNvdXJjZSA9IGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlOworICAgIHdrUmVzb3VyY2VM
b2FkQ2xpZW50LmRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UgPSBkaWRTZW5kUmVxdWVzdEZvclJl
c291cmNlOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZUZvclJl
c291cmNlID0gZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2U7CisgICAgd2tSZXNvdXJjZUxv
YWRDbGllbnQuZGlkRmluaXNoTG9hZEZvclJlc291cmNlID0gZGlkRmluaXNoTG9hZEZvclJlc291
cmNlOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEZhaWxMb2FkRm9yUmVzb3VyY2UgPSBk
aWRGYWlsTG9hZEZvclJlc291cmNlOwogCiAgICAgV0tQYWdlU2V0UGFnZVJlc291cmNlTG9hZENs
aWVudChwYWdlUmVmLCAmd2tSZXNvdXJjZUxvYWRDbGllbnQpOwogfQo=
</data>
<flag name="commit-queue"
          id="160109"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151611</attachid>
            <date>2012-07-10 23:33:48 -0700</date>
            <delta_ts>2012-07-11 11:15:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90601_resource_load_notifications.patch</filename>
            <type>text/plain</type>
            <size>25947</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmODcxMmUyLi5iNGMxYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTItMDctMDUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXSBFd2tfVmlldyBzaG91bGQgcHJvdmlkZSBtb3JlIHJlc291
cmNlIGxvYWRpbmcgbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgbmV3ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiLCAicmVzb3Vy
Y2UscmVxdWVzdCxyZXNwb25zZSIsCisgICAgICAgICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIg
YW5kICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB0bworICAgICAgICBFd2tfVmlldyBpbiBv
cmRlciB0byBub3RpZnkgdGhlIGNsaWVudHMgb2YgdGhlIG1haW4gcmVzb3VyY2UKKyAgICAgICAg
bG9hZCBzdGF0ZSBjaGFuZ2VzLgorCisgICAgICAgIEludHJvZHVjZSBuZXcgRXdrX1VybF9SZXNw
b25zZSB0eXBlIHRoYXQgaXMgdXNlZCB0byBwcm92aWRlCisgICAgICAgIGluZm9ybWF0aW9uIHRv
IHRoZSBjbGllbnRzIHJlZ2FyZGluZyB0aGUgcmVzb3VyY2UgbG9hZAorICAgICAgICByZXNwb25z
ZXMgdGhhdCBhcmUgcmVjZWl2ZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfVXJs
X1Jlc3BvbnNlKToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2VfcmVmKToKKyAgICAgICAgKGV3
a191cmxfcmVzcG9uc2VfdW5yZWYpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV91cmxfZ2V0
KToKKyAgICAgICAgKGV3a191cmxfcmVzcG9uc2Vfc3RhdHVzX2NvZGVfZ2V0KToKKyAgICAgICAg
KGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldCk6CisgICAgICAgIChld2tfdXJsX3Jlc3Bv
bnNlX25ldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlX3By
aXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
OgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2luaXRpYXRlZCk6CisgICAgICAgIChld2tfdmlld19yZXNvdXJjZV9sb2Fk
X3Jlc3BvbnNlKToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmFpbGVkKToKKyAg
ICAgICAgKGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQpOgorICAgICAgICAoZXdrX3Zp
ZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfcHJvdmlz
aW9uYWxfc3RhcnRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwOgor
ICAgICAgICAoZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRSZWNlaXZl
UmVzcG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2Up
OgorICAgICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChld2tfdmlld19y
ZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorCiAyMDEyLTA3LTEwICBObydhbSBSb3NlbnRo
YWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBFbmFibGUgYW50
aWFsaWFzaW5nIGZvciBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDdkMDYxODQuLmRiYjAzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNyw2ICsz
Nyw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19pbnRlbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNl
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGll
bnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGll
bnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2Vi
S2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRl
eCA3OTlkMjU4Li45YWZhNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VXZWJLaXQyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJld2tfaW50ZW50LmgiCiAj
aW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0
LmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a192aWV3Lmgi
CiAjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2Uu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
cmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9y
ZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhM2MzMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfcmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3VybF9yZXNwb25zZS5oIgorCisjaW5j
bHVkZSAiZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfVXJsX1Jlc3BvbnNlCisgKiBAYnJpZWYg
ICBDb250YWlucyB0aGUgVVJMIHJlc3BvbnNlIGRhdGEuCisgKi8KK3N0cnVjdCBfRXdrX1VybF9S
ZXNwb25zZSB7CisgICAgdW5zaWduZWQgaW50IF9fcmVmOyAvKio8IHRoZSByZWZlcmVuY2UgY291
bnQgb2YgdGhlIG9iamVjdCAqLworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgY29yZVJl
c3BvbnNlOworCisgICAgY29uc3QgY2hhciogdXJsOworICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBl
OworfTsKKwordm9pZCBld2tfdXJsX3Jlc3BvbnNlX3JlZihFd2tfVXJsX1Jlc3BvbnNlKiByZXNw
b25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXNwb25zZSk7CisgICAg
KytyZXNwb25zZS0+X19yZWY7Cit9CisKK3ZvaWQgZXdrX3VybF9yZXNwb25zZV91bnJlZihFd2tf
VXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihyZXNwb25zZSk7CisKKyAgICBpZiAoLS1yZXNwb25zZS0+X19yZWYpCisgICAgICAgIHJldHVy
bjsKKworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHJlc3BvbnNlLT51cmwpOworICAgIGVpbmFf
c3RyaW5nc2hhcmVfZGVsKHJlc3BvbnNlLT5taW1lVHlwZSk7CisgICAgZnJlZShyZXNwb25zZSk7
Cit9CisKK2NvbnN0IGNoYXIqIGV3a191cmxfcmVzcG9uc2VfdXJsX2dldChjb25zdCBFd2tfVXJs
X1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocmVzcG9uc2UsIDApOworCisgICAgRXdrX1VybF9SZXNwb25zZSogZXdrUmVzcG9uc2UgPSBj
b25zdF9jYXN0PEV3a19VcmxfUmVzcG9uc2UqPihyZXNwb25zZSk7CisgICAgZWluYV9zdHJpbmdz
aGFyZV9yZXBsYWNlKCZld2tSZXNwb25zZS0+dXJsLCByZXNwb25zZS0+Y29yZVJlc3BvbnNlLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIHJlc3BvbnNlLT51cmw7
Cit9CisKK2ludCBld2tfdXJsX3Jlc3BvbnNlX3N0YXR1c19jb2RlX2dldChjb25zdCBFd2tfVXJs
X1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwocmVzcG9uc2UsIDApOworCisgICAgcmV0dXJuIHJlc3BvbnNlLT5jb3JlUmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKTsKK30KKworY29uc3QgY2hhciogZXdrX3VybF9yZXNwb25zZV9taW1lX3R5
cGVfZ2V0KGNvbnN0IEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXNwb25zZSwgMCk7CisKKyAgICBFd2tfVXJsX1Jlc3Bv
bnNlKiBld2tSZXNwb25zZSA9IGNvbnN0X2Nhc3Q8RXdrX1VybF9SZXNwb25zZSo+KHJlc3BvbnNl
KTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmV3a1Jlc3BvbnNlLT5taW1lVHlwZSwg
cmVzcG9uc2UtPmNvcmVSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
cmV0dXJuIHJlc3BvbnNlLT5taW1lVHlwZTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIENv
bnN0cnVjdHMgYSBFd2tfVXJsX1Jlc3BvbnNlIGZyb20gYSBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlLgorICovCitFd2tfVXJsX1Jlc3BvbnNlKiBld2tfdXJsX3Jlc3BvbnNlX25ldyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCit7CisgICAgRXdrX1VybF9S
ZXNwb25zZSogZXdrVXJsUmVzcG9uc2UgPSBzdGF0aWNfY2FzdDxFd2tfVXJsX1Jlc3BvbnNlKj4o
Y2FsbG9jKDEsIHNpemVvZihFd2tfVXJsX1Jlc3BvbnNlKSkpOworICAgIGV3a1VybFJlc3BvbnNl
LT5fX3JlZiA9IDE7CisgICAgZXdrVXJsUmVzcG9uc2UtPmNvcmVSZXNwb25zZSA9IGNvcmVSZXNw
b25zZTsKKworICAgIHJldHVybiBld2tVcmxSZXNwb25zZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjVlOWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5oCkBAIC0wLDAgKzEs
MTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a191cmxfcmVz
cG9uc2UuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgVVJMIHJlc3BvbnNlIEFQSS4K
KyAqLworCisjaWZuZGVmIGV3a191cmxfcmVzcG9uc2VfaAorI2RlZmluZSBld2tfdXJsX3Jlc3Bv
bnNlX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19VcmxfUmVz
cG9uc2UgKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3a19VcmxfUmVzcG9u
c2U7CisKKy8qKgorICogSW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVu
IG9iamVjdC4KKyAqCisgKiBAcGFyYW0gcmVzcG9uc2UgdGhlIFVSTCByZXNwb25zZSBvYmplY3Qg
dG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJIHZvaWQgZXdrX3VybF9y
ZXNwb25zZV9yZWYoRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2UpOworCisvKioKKyAqIERlY3Jl
YXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QsIHBvc3NpYmx5IGZy
ZWVpbmcgaXQuCisgKgorICogV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IGl0J3MgcmVhY2hlZCAw
LCB0aGUgVVJMIHJlcXVlc3QgaXMgZnJlZWQuCisgKgorICogQHBhcmFtIHJlc3BvbnNlIHRoZSBV
UkwgcmVzcG9uc2Ugb2JqZWN0IHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLwor
RUFQSSB2b2lkIGV3a191cmxfcmVzcG9uc2VfdW5yZWYoRXdrX1VybF9SZXNwb25zZSAqcmVzcG9u
c2UpOworCisvKioKKyAqIFF1ZXJ5IFVSTCBmb3IgdGhpcyByZXNwb25zZS4KKyAqCisgKiBAcGFy
YW0gcmVzcG9uc2UgcmVzcG9uc2Ugb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhl
IFVSTCBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAg
ICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3Nz
aWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisg
KiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3No
YXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgorICovCitFQVBJIGNvbnN0IGNoYXIg
KmV3a191cmxfcmVzcG9uc2VfdXJsX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25z
ZSk7CisKKy8qKgorICogUXVlcnkgSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhpcyByZXNwb25zZS4K
KyAqCisgKiBIVFRQIHN0YXR1cyBjb2RlIGFyZSBkZWZpbmVkIGJ5OgorICogaHR0cDovL3d3dy53
My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sCisgKgorICogQHBhcmFt
IHJlc3BvbnNlIHJlc3BvbnNlIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBI
VFRQIHN0YXR1cyBjb2RlLgorICovCitFQVBJIGludCBld2tfdXJsX3Jlc3BvbnNlX3N0YXR1c19j
b2RlX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25zZSk7CisKKy8qKgorICogUXVl
cnkgTUlNRSB0eXBlIGZvciB0aGlzIHJlc3BvbnNlLgorICoKKyAqIEBwYXJhbSByZXNwb25zZSBy
ZXNwb25zZSBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgTUlNRSB0eXBlIHBv
aW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBn
dWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisg
KiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRk
KCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkuCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX3Vy
bF9yZXNwb25zZV9taW1lX3R5cGVfZ2V0KGNvbnN0IEV3a19VcmxfUmVzcG9uc2UgKnJlc3BvbnNl
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a191cmxf
cmVzcG9uc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zMmQ1NjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGVf
aAorI2RlZmluZSBld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNl
IEV3a19VcmxfUmVzcG9uc2U7CisKK0V3a19VcmxfUmVzcG9uc2UqIGV3a191cmxfcmVzcG9uc2Vf
bmV3KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpOwor
CisjZW5kaWYgLy8gZXdrX3VybF9yZXNwb25zZV9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBlYjZiMTViLi4yNTVkNWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiZXdrX3ZpZXdfbG9hZGVyX2NsaWVudF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291
cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwpAQCAtNDEsMTAgKzQyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMg
Y29uc3QgY2hhciBFV0tfVklFV19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CiAKK3R5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgRXdrX1dlYl9SZXNvdXJjZSo+IExvYWRpbmdSZXNvdXJjZXNNYXA7
CisKIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVu
dEltcGw+IHBhZ2VDbGllbnQ7CiAgICAgY29uc3QgY2hhciogdXJpOwogICAgIGNvbnN0IGNoYXIq
IHRpdGxlOworICAgIExvYWRpbmdSZXNvdXJjZXNNYXAgbG9hZGluZ1Jlc291cmNlc01hcDsKIH07
CiAKICNkZWZpbmUgRVdLX1ZJRVdfVFlQRV9DSEVDSyhld2tWaWV3LCByZXN1bHQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC01NjcsMTIgKzU3MSw5NiBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfc3RvcChFdmFzX09iamVjdCogZXdrVmlldykKICAqLwogdm9pZCBld2tfdmll
d19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9S
ZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIEV3a19XZWJfUmVzb3VyY2VfUmVxdWVzdCByZXNvdXJj
ZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3R9OwotICAgIC8vIEZJWE1FOiBXZSB3aWxsIG5l
ZWQgdG8gc3RvcmUgdGhlIHJlc291cmNlIGFuZCBpdHMgaWRlbnRpZmllciBhdCBzb21lIHBvaW50
Ci0gICAgLy8gdG8gZ2V0IHRoZSByZXNvdXJjZSBiYWNrIGZyb20gdGhlIGlkZW50aWZpZXIgb24g
cmVzb3VyY2UgbG9hZCBmaW5pc2guCisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOworCisgICAgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHJlc291cmNlUmVxdWVz
dCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgMH07CisKKyAgICAvLyBLZWVwIHRoZSByZXNvdXJjZSBp
bnRlcm5hbGx5IHRvIHJldXNlIGl0IGxhdGVyLgorICAgIGV3a193ZWJfcmVzb3VyY2VfcmVmKHJl
c291cmNlKTsKKyAgICBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmFkZChyZXNvdXJjZUlkZW50
aWZpZXIsIHJlc291cmNlKTsKKwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgInJlc291cmNlLHJlcXVlc3QsbmV3IiwgJnJlc291cmNlUmVxdWVzdCk7CiB9CiAK
Ky8qKgorICogQGludGVybmFsCisgKiBSZWNlaXZlZCBhIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2Ug
bG9hZCByZXF1ZXN0IGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNl
LHJlcXVlc3QscmVzcG9uc2UiIHdpdGggcG9pbnRlciB0byByZXNvdXJjZSByZXNwb25zZS4KKyAq
Lwordm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX3Jlc3BvbnNlKEV2YXNfT2JqZWN0KiBld2tW
aWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3Bv
bnNlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKwor
ICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5jb250YWlucyhyZXNvdXJjZUlkZW50
aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJj
ZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX1Jlc3BvbnNlIHJlc291cmNlTG9hZFJlc3BvbnNlID0g
e3Jlc291cmNlLCByZXNwb25zZX07CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2Fs
bChld2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIsICZyZXNvdXJjZUxvYWRSZXNw
b25zZSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBGYWlsZWQgbG9hZGluZyBhIHJlc291
cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVlc3Qs
ZmluaXNoZWQiIHdpdGggcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgbG9hZCBlcnJvci4KKyAqLwor
dm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywg
dWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX0Vycm9yKiBlcnJvcikKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAoIXBy
aXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBwcml2LT5s
b2FkaW5nUmVzb3VyY2VzTWFwLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEV3a19XZWJf
UmVzb3VyY2VfTG9hZF9FcnJvciByZXNvdXJjZUxvYWRFcnJvciA9IHtyZXNvdXJjZSwgZXJyb3J9
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNl
LHJlcXVlc3QsZmFpbGVkIiwgJnJlc291cmNlTG9hZEVycm9yKTsKK30KKworLyoqCisgKiBAaW50
ZXJuYWwKKyAqIEZpbmlzaGVkIGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisg
KiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIg
dG8gdGhlIHJlc291cmNlLgorICovCit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNo
ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAo
IXByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBwcml2
LT5sb2FkaW5nUmVzb3VyY2VzTWFwLnRha2UocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZp
bmlzaGVkIiwgcmVzb3VyY2UpOworCisgICAgZXdrX3dlYl9yZXNvdXJjZV91bnJlZihyZXNvdXJj
ZSk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXF1ZXN0IHdhcyBzZW50IGZvciBhIHJl
c291cmNlIGluIHRoZSB2aWV3LgorICoKKyAqIEVtaXRzIHNpZ25hbDogInJlc291cmNlLHJlcXVl
c3Qsc2VudCIgd2l0aCBwb2ludGVyIHRvIHJlc291cmNlIHJlcXVlc3QgYW5kIHBvc3NpYmxlIHJl
ZGlyZWN0IHJlc3BvbnNlLgorICovCit2b2lkIGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2Vu
dChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tf
VXJsX1JlcXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2Up
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAg
aWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRhaW5zKHJlc291cmNlSWRlbnRpZmll
cikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlID0g
cHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBF
d2tfV2ViX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlfTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3Qsc2VudCIsICZyZXNvdXJjZVJlcXVlc3Qp
OworfQorCiBjb25zdCBjaGFyKiBld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIDApOwpAQCAtNzczLDYgKzg2MSwxNyBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlz
aW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgKi8KIHZvaWQgZXdrX3ZpZXdf
bG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogeworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIC8vIFRoZSBtYWlu
IGZyYW1lIHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZCwgd2Ugc2hvdWxkIGNsZWFyCisgICAgLy8g
dGhlIGxvYWRpbmdSZXNvdXJjZXMgSGFzaE1hcCB0byBzdGFydCBjbGVhbi4KKyAgICBMb2FkaW5n
UmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuYmVn
aW4oKTsKKyAgICBMb2FkaW5nUmVzb3VyY2VzTWFwOjppdGVyYXRvciBlbmQgPSBwcml2LT5sb2Fk
aW5nUmVzb3VyY2VzTWFwLmVuZCgpOworICAgIGZvciAoIDsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICBld2tfd2ViX3Jlc291cmNlX3VucmVmKGl0LT5zZWNvbmQpOworICAgIHByaXYtPmxvYWRp
bmdSZXNvdXJjZXNNYXAuY2xlYXIoKTsKKwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsc3RhcnRlZCIsIDApOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCBmNjA5MmE2Li5i
YjIwZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
QEAgLTM0LDcgKzM0LDExIEBACiAgKiAtICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0
IEV3a19XZWJfRXJyb3IqOiB2aWV3IHByb3Zpc2lvbmFsIGxvYWQgZmFpbGVkLgogICogLSAibG9h
ZCxwcm92aXNpb25hbCxyZWRpcmVjdCIsIHZvaWQ6IHZpZXcgcmVjZWl2ZWQgcmVkaXJlY3QgZm9y
IHByb3Zpc2lvbmFsIGxvYWQuCiAgKiAtICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCB2b2lk
OiB2aWV3IHN0YXJ0ZWQgcHJvdmlzaW9uYWwgbG9hZC4KKyAqIC0gInJlc291cmNlLHJlcXVlc3Qs
ZmFpbGVkIiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZV9Mb2FkX0Vycm9yKjogYSByZXNvdXJjZSBm
YWlsZWQgbG9hZGluZy4KKyAqIC0gInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiLCBjb25zdCBF
d2tfV2ViX1Jlc291cmNlKjogYSByZXNvdXJjZSBmaW5pc2hlZCBsb2FkaW5nLgogICogLSAicmVz
b3VyY2UscmVxdWVzdCxuZXciLCBjb25zdCBFd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJl
c291cmNlIHJlcXVlc3Qgd2FzIGluaXRpYXRlZC4KKyAqIC0gInJlc291cmNlLHJlcXVlc3QscmVz
cG9uc2UiLCBFd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UqOiBhIHJlc3BvbnNlIHRvIGEg
cmVzb3VyY2UgcmVxdWVzdCB3YXMgcmVjZWl2ZWQuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LHNl
bnQiLCBjb25zdCBFd2tfV2ViX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291cmNlIHJlcXVlc3Qg
d2FzIHNlbnQuCiAgKiAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRpdGxlIG9mIHRo
ZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgogICovCiAKQEAgLTQ0LDYgKzQ4LDggQEAKICNpbmNs
dWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRlICJl
d2tfdXJsX3JlcXVlc3QuaCIKKyNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCisjaW5jbHVk
ZSAiZXdrX3dlYl9lcnJvci5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3VyY2UuaCIKICNpbmNs
dWRlIDxFdmFzLmg+CiAKQEAgLTE0NSwxMiArMTUxLDM1IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tf
V2ViX1Jlc291cmNlX1JlcXVlc3QgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0OwogCiAvKioKICAq
IEBicmllZiBTdHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgcmVzb3VyY2UgcmVx
dWVzdC4KLSAqCi0gKiBEZXRhaWxzIGdpdmVuIGFib3V0IGEgcmVzb3VyY2UgaXMgbG9hZGVkLgog
ICovCiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2VfUmVxdWVzdCB7CiAgICAgRXdrX1dlYl9SZXNv
dXJjZSAqcmVzb3VyY2U7IC8qKjwgcmVzb3VyY2UgYmVpbmcgcmVxdWVzdGVkICovCiAgICAgRXdr
X1VybF9SZXF1ZXN0ICpyZXF1ZXN0OyAvKio8IFVSTCByZXF1ZXN0IGZvciB0aGUgcmVzb3VyY2Ug
Ki8KKyAgICBFd2tfVXJsX1Jlc3BvbnNlICpyZWRpcmVjdF9yZXNwb25zZTsgLyoqPCBQb3NzaWJs
ZSByZWRpcmVjdCByZXNwb25zZSBmb3IgdGhlIHJlc291cmNlICovCit9OworCisvLy8gQ3JlYXRl
cyBhIHR5cGUgbmFtZSBmb3IgX0V3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNwb25zZS4KK3R5cGVk
ZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UgRXdrX1dlYl9SZXNvdXJj
ZV9Mb2FkX1Jlc3BvbnNlOworCisvKioKKyAqIEBicmllZiBTdHJ1Y3R1cmUgY29udGFpbmluZyBk
ZXRhaWxzIGFib3V0IGEgcmVzcG9uc2UgdG8gYSByZXNvdXJjZSByZXF1ZXN0LgorICovCitzdHJ1
Y3QgX0V3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSB7CisgICAgIEV3a19XZWJfUmVzb3Vy
Y2UgKnJlc291cmNlOyAvKio8IHJlc291cmNlIHJlcXVlc3RlZCAqLworICAgICBFd2tfVXJsX1Jl
c3BvbnNlICpyZXNwb25zZTsgLyoqPCByZXNvdXJjZSBsb2FkIHJlc3BvbnNlICovCit9OworCisv
Ly8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgX0V3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvci4K
K3R5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgRXdrX1dlYl9SZXNv
dXJjZV9Mb2FkX0Vycm9yOworCisvKioKKyAqIEBicmllZiBTdHJ1Y3R1cmUgY29udGFpbmluZyBk
ZXRhaWxzIGFib3V0IGEgcmVzb3VyY2UgbG9hZCBlcnJvci4KKyAqCisgKiBEZXRhaWxzIGdpdmVu
IGFib3V0IGEgcmVzb3VyY2UgbG9hZCBmYWlsdXJlLgorICovCitzdHJ1Y3QgX0V3a19XZWJfUmVz
b3VyY2VfTG9hZF9FcnJvciB7CisgICAgRXdrX1dlYl9SZXNvdXJjZSAqcmVzb3VyY2U7IC8qKjwg
cmVzb3VyY2UgdGhhdCBmYWlsZWQgbG9hZGluZyAqLworICAgIEV3a19XZWJfRXJyb3IgKmVycm9y
OyAvKio8IGxvYWQgZXJyb3IgKi8KIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IGY5ZjIxMTMuLjkxMzI4
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
d19wcml2YXRlLmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgSW50U2l6ZTsKIH0KIAogdHlwZWRl
ZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJsX1JlcXVlc3Q7Cit0eXBlZGVmIHN0cnVj
dCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOwogdHlwZWRlZiBzdHJ1Y3QgX0V3
a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291
cmNlIEV3a19XZWJfUmVzb3VyY2U7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQpAQCAtNDksNyAr
NTAsMTEgQEAgdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgRXdrX1dlYl9FcnJvcioKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92
aXNpb25hbF9yZWRpcmVjdChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2xv
YWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192
aWV3X3RpdGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxl
KTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpOwor
dm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCBld2tfdmlld19yZXNvdXJjZV9s
b2FkX2luaXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBFd2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSwgRXdrX1VybF9SZXF1ZXN0KiByZXF1
ZXN0KTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVjdCog
ZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiBy
ZXNwb25zZSk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2VudChFdmFzX09iamVj
dCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1JlcXVlc3Qq
IHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpOwogCiBFdmFzX09i
amVjdCogZXdrX3ZpZXdfYmFzZV9hZGQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCmluZGV4IDZi
ZTM5YTIuLjJiNWIxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKQEAg
LTMxLDEwICszMSwxNSBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tV
UkwuaCIKICNpbmNsdWRlICJXS1VSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS1VSTFJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1
ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlLmgiCisjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCIKKyNp
bmNsdWRlICJld2tfd2ViX2Vycm9yLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvcl9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVz
b3VyY2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU0LDYg
KzU5LDQzIEBAIHN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiB3a0ZyYW1lLCB1aW50NjRfdCByCiAgICAgZXdrX3VybF9yZXF1ZXN0X3Vu
cmVmKHJlcXVlc3QpOwogfQogCitzdGF0aWMgdm9pZCBkaWRTZW5kUmVxdWVzdEZvclJlc291cmNl
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS1VS
TFJlcXVlc3RSZWYgd2tSZXF1ZXN0LCBXS1VSTFJlc3BvbnNlUmVmIHdrUmVkaXJlY3RSZXNwb25z
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFdmFzX09iamVjdCogZXdrVmlldyA9
IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OworCisgICAgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0ID0gZXdrX3VybF9yZXF1ZXN0X25ldyh3
a1JlcXVlc3QpOworICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UgPSBld2tf
dXJsX3Jlc3BvbnNlX25ldyh0b0ltcGwod2tSZWRpcmVjdFJlc3BvbnNlKS0+cmVzb3VyY2VSZXNw
b25zZSgpKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQoZXdrVmlldywgcmVz
b3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBld2tfdXJs
X3JlcXVlc3RfdW5yZWYocmVxdWVzdCk7CisgICAgZXdrX3VybF9yZXNwb25zZV91bnJlZihyZWRp
cmVjdFJlc3BvbnNlKTsKK30KKworc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVz
b3VyY2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIs
IFdLVVJMUmVzcG9uc2VSZWYgd2tSZXNwb25zZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCisgICAgRXdrX1VybF9SZXNwb25zZSogcmVz
cG9uc2UgPSBld2tfdXJsX3Jlc3BvbnNlX25ldyh0b0ltcGwod2tSZXNwb25zZSktPnJlc291cmNl
UmVzcG9uc2UoKSk7CisgICAgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShld2tWaWV3
LCByZXNvdXJjZUlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICBld2tfdXJsX3Jlc3BvbnNlX3Vu
cmVmKHJlc3BvbnNlKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNl
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gc3RhdGlj
X2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisKKyAg
ICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKGV3a1ZpZXcsIHJlc291cmNlSWRlbnRp
Zmllcik7Cit9CisKK3N0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLRXJyb3JSZWYgd2tF
cnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFdmFzX09iamVjdCogZXdrVmll
dyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpOworCisgICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9yX25ldyh3
a0Vycm9yKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChld2tWaWV3LCByZXNv
dXJjZUlkZW50aWZpZXIsIGV3a0Vycm9yKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2Zp
bmlzaGVkKGV3a1ZpZXcsIHJlc291cmNlSWRlbnRpZmllcik7CisgICAgZXdrX3dlYl9lcnJvcl9m
cmVlKGV3a0Vycm9yKTsKK30KKwogdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9h
dHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIFdL
UGFnZVJlc291cmNlTG9hZENsaWVudCB3a1Jlc291cmNlTG9hZENsaWVudDsKQEAgLTYxLDYgKzEw
MywxMCBAQCB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaChXS1BhZ2VS
ZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1ZpZQogICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50
LnZlcnNpb24gPSBrV0tQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Q3VycmVudFZlcnNpb247CiAgICAg
d2tSZXNvdXJjZUxvYWRDbGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgd2tSZXNvdXJj
ZUxvYWRDbGllbnQuZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UgPSBkaWRJbml0aWF0ZUxvYWRG
b3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRTZW5kUmVxdWVzdEZvclJl
c291cmNlID0gZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENs
aWVudC5kaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSA9IGRpZFJlY2VpdmVSZXNwb25zZUZv
clJlc291cmNlOworICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNv
dXJjZSA9IGRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVu
dC5kaWRGYWlsTG9hZEZvclJlc291cmNlID0gZGlkRmFpbExvYWRGb3JSZXNvdXJjZTsKIAogICAg
IFdLUGFnZVNldFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQocGFnZVJlZiwgJndrUmVzb3VyY2VMb2Fk
Q2xpZW50KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151736</attachid>
            <date>2012-07-11 11:15:05 -0700</date>
            <delta_ts>2012-07-11 11:56:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90601_load_notifications.patch</filename>
            <type>text/plain</type>
            <size>26715</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMjQyNTI1Li44NzhhOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDctMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIEV3a19WaWV3IHNob3VsZCBwcm92aWRlIG1vcmUg
cmVzb3VyY2UgbG9hZGluZyBub3RpZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgInJlc291cmNlLHJlcXVlc3Qsc2VudCIsICJy
ZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwKKyAgICAgICAgInJlc291cmNlLHJlcXVlc3QsZmFp
bGVkIiBhbmQgInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHRvCisgICAgICAgIEV3a19WaWV3
IGluIG9yZGVyIHRvIG5vdGlmeSB0aGUgY2xpZW50cyBvZiB0aGUgbWFpbiByZXNvdXJjZQorICAg
ICAgICBsb2FkIHN0YXRlIGNoYW5nZXMuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBFd2tfVXJs
X1Jlc3BvbnNlIHR5cGUgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUKKyAgICAgICAgaW5mb3JtYXRp
b24gdG8gdGhlIGNsaWVudHMgcmVnYXJkaW5nIHRoZSByZXNvdXJjZSBsb2FkCisgICAgICAgIHJl
c3BvbnNlcyB0aGF0IGFyZSByZWNlaXZlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3
a19VcmxfUmVzcG9uc2UpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV9yZWYpOgorICAgICAg
ICAoZXdrX3VybF9yZXNwb25zZV91bnJlZik6CisgICAgICAgIChld2tfdXJsX3Jlc3BvbnNlX3Vy
bF9nZXQpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV9zdGF0dXNfY29kZV9nZXQpOgorICAg
ICAgICAoZXdrX3VybF9yZXNwb25zZV9taW1lX3R5cGVfZ2V0KToKKyAgICAgICAgKGV3a191cmxf
cmVzcG9uc2VfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3Bv
bnNlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9u
c2VfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192
aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNl
X2xvYWRfcmVzcG9uc2UpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQp
OgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZCk6CisgICAgICAgIChl
d2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9w
cm92aXNpb25hbF9zdGFydGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5j
cHA6CisgICAgICAgICh0b0V3a1ZpZXcpOgorICAgICAgICAoZGlkSW5pdGlhdGVMb2FkRm9yUmVz
b3VyY2UpOgorICAgICAgICAoZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6CisgICAgICAgIChk
aWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRGaW5pc2hMb2FkRm9y
UmVzb3VyY2UpOgorICAgICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorCiAyMDEyLTA3LTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBR
UmF3V2ViVmlldyBzaG91bGQgbm90aWZ5IHdoZW4gcmVuZGVyaW5nIGlzIGRvbmUsIHNvIHRoYXQg
cGl4ZWwgcmVzdWx0cyBjYW4gYmUgZ3JhYmJlZCBhdCB0aGUgYXBwcm9wcmlhdGUgbW9tZW50Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiZDA3YzNiLi5mOWI0NzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzgsNiArMzgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3JlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25z
ZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggNzk5ZDI1OC4uOWFmYTRmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5o
IgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9u
c2UuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIK
ICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE3YTNjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcApAQCAtMCwwICsxLDEw
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
ImV3a191cmxfcmVzcG9uc2UuaCIKKworI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworLyoqCisgKiBcc3RydWN0ICBf
RXdrX1VybF9SZXNwb25zZQorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIFVSTCByZXNwb25zZSBk
YXRhLgorICovCitzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgeworICAgIHVuc2lnbmVkIGludCBf
X3JlZjsgLyoqPCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgKi8KKyAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIGNvcmVSZXNwb25zZTsKKworICAgIGNvbnN0IGNoYXIqIHVy
bDsKKyAgICBjb25zdCBjaGFyKiBtaW1lVHlwZTsKK307CisKK3ZvaWQgZXdrX3VybF9yZXNwb25z
ZV9yZWYoRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4ocmVzcG9uc2UpOworICAgICsrcmVzcG9uc2UtPl9fcmVmOworfQorCit2b2lk
IGV3a191cmxfcmVzcG9uc2VfdW5yZWYoRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocmVzcG9uc2UpOworCisgICAgaWYgKC0tcmVz
cG9uc2UtPl9fcmVmKQorICAgICAgICByZXR1cm47CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChyZXNwb25zZS0+dXJsKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXNwb25zZS0+bWlt
ZVR5cGUpOworICAgIGZyZWUocmVzcG9uc2UpOworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3Jl
c3BvbnNlX3VybF9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3BvbnNlLCAwKTsKKworICAgIEV3a19V
cmxfUmVzcG9uc2UqIGV3a1Jlc3BvbnNlID0gY29uc3RfY2FzdDxFd2tfVXJsX1Jlc3BvbnNlKj4o
cmVzcG9uc2UpOworICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrUmVzcG9uc2UtPnVy
bCwgcmVzcG9uc2UtPmNvcmVSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIHJldHVybiByZXNwb25zZS0+dXJsOworfQorCitpbnQgZXdrX3VybF9yZXNwb25zZV9z
dGF0dXNfY29kZV9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3BvbnNlLCAwKTsKKworICAgIHJldHVy
biByZXNwb25zZS0+Y29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7Cit9CisKK2NvbnN0IGNo
YXIqIGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNl
KiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzcG9u
c2UsIDApOworCisgICAgRXdrX1VybF9SZXNwb25zZSogZXdrUmVzcG9uc2UgPSBjb25zdF9jYXN0
PEV3a19VcmxfUmVzcG9uc2UqPihyZXNwb25zZSk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZld2tSZXNwb25zZS0+bWltZVR5cGUsIHJlc3BvbnNlLT5jb3JlUmVzcG9uc2UubWltZVR5
cGUoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXNwb25zZS0+bWltZVR5cGU7Cit9
CisKKy8qKgorICogQGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1VybF9SZXNwb25zZSBm
cm9tIGEgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZS4KKyAqLworRXdrX1VybF9SZXNwb25zZSog
ZXdrX3VybF9yZXNwb25zZV9uZXcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgY29y
ZVJlc3BvbnNlKQoreworICAgIEV3a19VcmxfUmVzcG9uc2UqIGV3a1VybFJlc3BvbnNlID0gc3Rh
dGljX2Nhc3Q8RXdrX1VybF9SZXNwb25zZSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1VybF9SZXNw
b25zZSkpKTsKKyAgICBld2tVcmxSZXNwb25zZS0+X19yZWYgPSAxOworICAgIGV3a1VybFJlc3Bv
bnNlLT5jb3JlUmVzcG9uc2UgPSBjb3JlUmVzcG9uc2U7CisKKyAgICByZXR1cm4gZXdrVXJsUmVz
cG9uc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3Jlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dXJsX3Jlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1ZTlh
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfcmVzcG9uc2UuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAZmlsZSAgICBld2tfdXJsX3Jlc3BvbnNlLmgKKyAqIEBicmllZiAgIERlc2NyaWJl
cyB0aGUgRXdrIFVSTCByZXNwb25zZSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3Jlc3Bv
bnNlX2gKKyNkZWZpbmUgZXdrX3VybF9yZXNwb25zZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIF9Fd2tfVXJsX1Jlc3BvbnNlICovCit0eXBlZGVmIHN0cnVjdCBfRXdr
X1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOworCisvKioKKyAqIEluY3JlYXNlcyB0aGUg
cmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIHJlc3Bv
bnNlIHRoZSBVUkwgcmVzcG9uc2Ugb2JqZWN0IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291
bnQKKyAqLworRUFQSSB2b2lkIGV3a191cmxfcmVzcG9uc2VfcmVmKEV3a19VcmxfUmVzcG9uc2Ug
KnJlc3BvbnNlKTsKKworLyoqCisgKiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0
aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJl
ZmVyZW5jZSBjb3VudCBpdCdzIHJlYWNoZWQgMCwgdGhlIFVSTCByZXF1ZXN0IGlzIGZyZWVkLgor
ICoKKyAqIEBwYXJhbSByZXNwb25zZSB0aGUgVVJMIHJlc3BvbnNlIG9iamVjdCB0byBkZWNyZWFz
ZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3Jlc3BvbnNlX3Vu
cmVmKEV3a19VcmxfUmVzcG9uc2UgKnJlc3BvbnNlKTsKKworLyoqCisgKiBRdWVyeSBVUkwgZm9y
IHRoaXMgcmVzcG9uc2UuCisgKgorICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlIG9iamVjdCB0
byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJk
dXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3Jlc3BvbnNlX3VybF9nZXQoY29u
c3QgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2UpOworCisvKioKKyAqIFF1ZXJ5IEhUVFAgc3Rh
dHVzIGNvZGUgZm9yIHRoaXMgcmVzcG9uc2UuCisgKgorICogSFRUUCBzdGF0dXMgY29kZSBhcmUg
ZGVmaW5lZCBieToKKyAqIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2
MTYtc2VjMTAuaHRtbAorICoKKyAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZSBvYmplY3QgdG8g
cXVlcnkuCisgKgorICogQHJldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZS4KKyAqLworRUFQSSBp
bnQgZXdrX3VybF9yZXNwb25zZV9zdGF0dXNfY29kZV9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25z
ZSAqcmVzcG9uc2UpOworCisvKioKKyAqIFF1ZXJ5IE1JTUUgdHlwZSBmb3IgdGhpcyByZXNwb25z
ZS4KKyAqCisgKiBAcGFyYW0gcmVzcG9uc2UgcmVzcG9uc2Ugb2JqZWN0IHRvIHF1ZXJ5LgorICoK
KyAqIEByZXR1cm4gdGhlIE1JTUUgdHlwZSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBU
aGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3No
YXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUg
Y3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5z
dGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgor
ICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldChjb25z
dCBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25zZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvLyBld2tfdXJsX3Jlc3BvbnNlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZV9wcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJkNTYzZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9u
c2VfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgZXdrX3VybF9yZXNwb25zZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3VybF9yZXNwb25zZV9w
cml2YXRlX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCit0eXBl
ZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOworCitFd2tfVXJs
X1Jlc3BvbnNlKiBld2tfdXJsX3Jlc3BvbnNlX25ldyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKTsKKworI2VuZGlmIC8vIGV3a191cmxfcmVzcG9uc2Vf
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKaW5kZXggZWI2YjE1Yi4uMjU1ZDVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImV3a192
aWV3X2xvYWRlcl9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCisj
aW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQxLDEwICs0MiwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJb
XSA9ICJFV0syX1ZpZXciOwogCit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEV3a19XZWJfUmVz
b3VyY2UqPiBMb2FkaW5nUmVzb3VyY2VzTWFwOworCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVf
RGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogICAgIGNvbnN0
IGNoYXIqIHVyaTsKICAgICBjb25zdCBjaGFyKiB0aXRsZTsKKyAgICBMb2FkaW5nUmVzb3VyY2Vz
TWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiB9OwogCiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hF
Q0soZXdrVmlldywgcmVzdWx0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApA
QCAtNTY3LDEyICs1NzEsOTYgQEAgRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiAgKi8KIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9S
ZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBFd2tf
V2ViX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0
fTsKLSAgICAvLyBGSVhNRTogV2Ugd2lsbCBuZWVkIHRvIHN0b3JlIHRoZSByZXNvdXJjZSBhbmQg
aXRzIGlkZW50aWZpZXIgYXQgc29tZSBwb2ludAotICAgIC8vIHRvIGdldCB0aGUgcmVzb3VyY2Ug
YmFjayBmcm9tIHRoZSBpZGVudGlmaWVyIG9uIHJlc291cmNlIGxvYWQgZmluaXNoLgorICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIEV3a19XZWJfUmVz
b3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIDB9Owor
CisgICAgLy8gS2VlcCB0aGUgcmVzb3VyY2UgaW50ZXJuYWxseSB0byByZXVzZSBpdCBsYXRlci4K
KyAgICBld2tfd2ViX3Jlc291cmNlX3JlZihyZXNvdXJjZSk7CisgICAgcHJpdi0+bG9hZGluZ1Jl
c291cmNlc01hcC5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSk7CisKICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIsICZyZXNvdXJjZVJlcXVlc3QpOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVjZWl2
ZWQgYSByZXNwb25zZSB0byBhIHJlc291cmNlIGxvYWQgcmVxdWVzdCBpbiB0aGUgdmlldy4KKyAq
CisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiB3aXRoIHBvaW50
ZXIgdG8gcmVzb3VyY2UgcmVzcG9uc2UuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAoIXByaXYtPmxvYWRpbmdSZXNvdXJj
ZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFw
LmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNw
b25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9OworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3Qs
cmVzcG9uc2UiLCAmcmVzb3VyY2VMb2FkUmVzcG9uc2UpOworfQorCisvKioKKyAqIEBpbnRlcm5h
bAorICogRmFpbGVkIGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0
cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhl
IHJlc291cmNlIGxvYWQgZXJyb3IuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9m
YWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwg
RXdrX1dlYl9FcnJvciogZXJyb3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYpOworCisgICAgaWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRh
aW5zKHJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJf
UmVzb3VyY2UqIHJlc291cmNlID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICBFd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VM
b2FkRXJyb3IgPSB7cmVzb3VyY2UsIGVycm9yfTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsICZyZXNvdXJjZUxv
YWRFcnJvcik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBGaW5pc2hlZCBsb2FkaW5nIGEg
cmVzb3VyY2UgaW4gdGhlIHZpZXcuCisgKgorICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVx
dWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJjZS4KKyAqLwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYpOworCisgICAgaWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNv
bnRhaW5zKHJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19X
ZWJfUmVzb3VyY2UqIHJlc291cmNlID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC50YWtlKHJl
c291cmNlSWRlbnRpZmllcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIsIHJlc291cmNlKTsKKworICAgIGV3
a193ZWJfcmVzb3VyY2VfdW5yZWYocmVzb3VyY2UpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAor
ICogUmVxdWVzdCB3YXMgc2VudCBmb3IgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBF
bWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiIHdpdGggcG9pbnRlciB0byByZXNv
dXJjZSByZXF1ZXN0IGFuZCBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KKyAqLwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJs
X1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01h
cC5jb250YWlucyhyZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBF
d2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0
KHJlc291cmNlSWRlbnRpZmllcik7CisgICAgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHJlc291
cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZX07CisKKyAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1
ZXN0LHNlbnQiLCAmcmVzb3VyY2VSZXF1ZXN0KTsKK30KKwogY29uc3QgY2hhciogZXdrX3ZpZXdf
dGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKQEAgLTc3Myw2ICs4NjEsMTcg
QEAgdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogICovCiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFz
X09iamVjdCogZXdrVmlldykKIHsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdik7CisKKyAgICAvLyBUaGUgbWFpbiBmcmFtZSBzdGFydGVkIHByb3Zpc2lvbmFsIGxv
YWQsIHdlIHNob3VsZCBjbGVhcgorICAgIC8vIHRoZSBsb2FkaW5nUmVzb3VyY2VzIEhhc2hNYXAg
dG8gc3RhcnQgY2xlYW4uCisgICAgTG9hZGluZ1Jlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBw
cml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmJlZ2luKCk7CisgICAgTG9hZGluZ1Jlc291cmNlc01h
cDo6aXRlcmF0b3IgZW5kID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5lbmQoKTsKKyAgICBm
b3IgKCA7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgZXdrX3dlYl9yZXNvdXJjZV91bnJlZihp
dC0+c2Vjb25kKTsKKyAgICBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNsZWFyKCk7CisKICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lv
bmFsLHN0YXJ0ZWQiLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKaW5kZXggZjYwOTJhNi4uYmIyMGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0zNCw3ICszNCwxMSBAQAogICogLSAibG9h
ZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdCBFd2tfV2ViX0Vycm9yKjogdmlldyBwcm92aXNp
b25hbCBsb2FkIGZhaWxlZC4KICAqIC0gImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lk
OiB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9h
ZCxwcm92aXNpb25hbCxzdGFydGVkIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxv
YWQuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsIGNvbnN0IEV3a19XZWJfUmVzb3Vy
Y2VfTG9hZF9FcnJvcio6IGEgcmVzb3VyY2UgZmFpbGVkIGxvYWRpbmcuCisgKiAtICJyZXNvdXJj
ZSxyZXF1ZXN0LGZpbmlzaGVkIiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZSo6IGEgcmVzb3VyY2Ug
ZmluaXNoZWQgbG9hZGluZy4KICAqIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgY29uc3QgRXdr
X1dlYl9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBpbml0aWF0ZWQu
CisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgRXdrX1dlYl9SZXNvdXJjZV9Mb2Fk
X1Jlc3BvbnNlKjogYSByZXNwb25zZSB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVk
LgorICogLSAicmVzb3VyY2UscmVxdWVzdCxzZW50IiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZV9S
ZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBzZW50LgogICogLSAidGl0bGUsY2hhbmdl
ZCIsIGNvbnN0IGNoYXIqOiB0aXRsZSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KICAq
LwogCkBAIC00NCw2ICs0OCw4IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRl
ICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCisjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogCkBAIC0xNDUsMTIgKzE1
MSwzNSBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IEV3a19XZWJf
UmVzb3VyY2VfUmVxdWVzdDsKIAogLyoqCiAgKiBAYnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcg
ZGV0YWlscyBhYm91dCBhIHJlc291cmNlIHJlcXVlc3QuCi0gKgotICogRGV0YWlscyBnaXZlbiBh
Ym91dCBhIHJlc291cmNlIGlzIGxvYWRlZC4KICAqLwogc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNl
X1JlcXVlc3QgewogICAgIEV3a19XZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNl
IGJlaW5nIHJlcXVlc3RlZCAqLwogICAgIEV3a19VcmxfUmVxdWVzdCAqcmVxdWVzdDsgLyoqPCBV
UkwgcmVxdWVzdCBmb3IgdGhlIHJlc291cmNlICovCisgICAgRXdrX1VybF9SZXNwb25zZSAqcmVk
aXJlY3RfcmVzcG9uc2U7IC8qKjwgUG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UgZm9yIHRoZSBy
ZXNvdXJjZSAqLworfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2ViX1Jl
c291cmNlX0xvYWRfUmVzcG9uc2UuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9M
b2FkX1Jlc3BvbnNlIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNwb25zZTsKKworLyoqCisgKiBA
YnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc3BvbnNlIHRvIGEg
cmVzb3VyY2UgcmVxdWVzdC4KKyAqLworc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVz
cG9uc2UgeworICAgICBFd2tfV2ViX1Jlc291cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJjZSBy
ZXF1ZXN0ZWQgKi8KKyAgICAgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2U7IC8qKjwgcmVzb3Vy
Y2UgbG9hZCByZXNwb25zZSAqLworfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9F
d2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNv
dXJjZV9Mb2FkX0Vycm9yIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvcjsKKworLyoqCisgKiBA
YnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc291cmNlIGxvYWQg
ZXJyb3IuCisgKgorICogRGV0YWlscyBnaXZlbiBhYm91dCBhIHJlc291cmNlIGxvYWQgZmFpbHVy
ZS4KKyAqLworc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgeworICAgIEV3a19X
ZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNlIHRoYXQgZmFpbGVkIGxvYWRpbmcg
Ki8KKyAgICBFd2tfV2ViX0Vycm9yICplcnJvcjsgLyoqPCBsb2FkIGVycm9yICovCiB9OwogCiAv
KioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaAppbmRleCBmOWYyMTEzLi45MTMyODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0zMSw2ICszMSw3IEBA
IGNsYXNzIEludFNpemU7CiB9CiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdr
X1VybF9SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgRXdrX1VybF9S
ZXNwb25zZTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7CiB0
eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZSBFd2tfV2ViX1Jlc291cmNlOwogI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKQEAgLTQ5LDcgKzUwLDExIEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9w
cm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJy
b3IqCiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3N0YXJ0ZWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld190aXRsZV9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0aXRsZSk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9m
aW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVy
KTsKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVz
b3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNl
X2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwordm9pZCBld2tfdmlld19yZXNv
dXJjZV9yZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNl
SWRlbnRpZmllciwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiBy
ZWRpcmVjdFJlc3BvbnNlKTsKIAogRXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRkKEV2YXMq
IGNhbnZhcywgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291
cmNlX2xvYWRfY2xpZW50LmNwcAppbmRleCA2YmUzOWEyLi41ZjIzOWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2Ns
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCkBAIC0zMSwyOSArMzEsNjcgQEAKICNpbmNsdWRlICJX
S1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV0tVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVz
dC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3VybF9yZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19yZXNvdXJj
ZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgorI2lu
Y2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0YXRpYyBp
bmxpbmUgRXZhc19PYmplY3QqIHRvRXdrVmlldyh2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKTsKK30KKwogc3RhdGljIHZvaWQgZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIHdrRnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tV
UkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgYm9vbCBwYWdlSXNQcm92aXNpb25hbGx5TG9hZGluZywg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0
YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwog
ICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSAoV0tGcmFtZUlzTWFpbkZyYW1lKHdrRnJhbWUpICYm
IHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5nKTsKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4g
d2tVcmwoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q29weVVSTCh3a1JlcXVlc3QpKTsKIAogICAgIEV3
a19XZWJfUmVzb3VyY2UqIHJlc291cmNlID0gZXdrX3dlYl9yZXNvdXJjZV9uZXcodG9JbXBsKHdr
VXJsLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaXNNYWluUmVzb3VyY2UpOwogICAg
IEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCA9IGV3a191cmxfcmVxdWVzdF9uZXcod2tSZXF1ZXN0
KTsKLSAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChld2tWaWV3LCByZXNvdXJj
ZUlkZW50aWZpZXIsIHJlc291cmNlLCByZXF1ZXN0KTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9s
b2FkX2luaXRpYXRlZCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwg
cmVzb3VyY2UsIHJlcXVlc3QpOwogICAgIGV3a193ZWJfcmVzb3VyY2VfdW5yZWYocmVzb3VyY2Up
OwogICAgIGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKIH0KIAorc3RhdGljIHZvaWQg
ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgV0tVUkxSZXNw
b25zZVJlZiB3a1JlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0ID0gZXdrX3VybF9yZXF1ZXN0X25ldyh3a1JlcXVl
c3QpOworICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UgPSBld2tfdXJsX3Jl
c3BvbnNlX25ldyh0b0ltcGwod2tSZWRpcmVjdFJlc3BvbnNlKS0+cmVzb3VyY2VSZXNwb25zZSgp
KTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQodG9Fd2tWaWV3KGNsaWVudElu
Zm8pLCByZXNvdXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAg
IGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKKyAgICBld2tfdXJsX3Jlc3BvbnNlX3Vu
cmVmKHJlZGlyZWN0UmVzcG9uc2UpOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2VGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgV0tVUkxSZXNwb25zZVJlZiB3a1Jlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlID0gZXdrX3VybF9yZXNwb25z
ZV9uZXcodG9JbXBsKHdrUmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworICAgIGV3a192
aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UodG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJj
ZUlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICBld2tfdXJsX3Jlc3BvbnNlX3VucmVmKHJlc3Bv
bnNlKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLUGFnZVJl
ZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQodG9Fd2tW
aWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitzdGF0aWMgdm9pZCBk
aWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9yX25ldyh3
a0Vycm9yKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZCh0b0V3a1ZpZXcoY2xp
ZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgZXdrRXJyb3IpOworICAgIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfZmluaXNoZWQodG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7Cit9CisKIHZvaWQgZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFz
X09iamVjdCogZXdrVmlldykKIHsKICAgICBXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnQgd2tSZXNv
dXJjZUxvYWRDbGllbnQ7CkBAIC02MSw2ICs5OSwxMCBAQCB2b2lkIGV3a192aWV3X3Jlc291cmNl
X2xvYWRfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3QqIGV3a1Zp
ZQogICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlUmVzb3VyY2VMb2Fk
Q2xpZW50Q3VycmVudFZlcnNpb247CiAgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuY2xpZW50SW5m
byA9IGV3a1ZpZXc7CiAgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkSW5pdGlhdGVMb2FkRm9y
UmVzb3VyY2UgPSBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9h
ZENsaWVudC5kaWRTZW5kUmVxdWVzdEZvclJlc291cmNlID0gZGlkU2VuZFJlcXVlc3RGb3JSZXNv
dXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNv
dXJjZSA9IGRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlOworICAgIHdrUmVzb3VyY2VMb2Fk
Q2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSA9IGRpZEZpbmlzaExvYWRGb3JSZXNvdXJj
ZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRGYWlsTG9hZEZvclJlc291cmNlID0gZGlk
RmFpbExvYWRGb3JSZXNvdXJjZTsKIAogICAgIFdLUGFnZVNldFBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQocGFnZVJlZiwgJndrUmVzb3VyY2VMb2FkQ2xpZW50KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151744</attachid>
            <date>2012-07-11 11:56:46 -0700</date>
            <delta_ts>2012-07-11 20:22:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90601_load_notifications.patch</filename>
            <type>text/plain</type>
            <size>26721</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMjQyNTI1Li44NzhhOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDctMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIEV3a19WaWV3IHNob3VsZCBwcm92aWRlIG1vcmUg
cmVzb3VyY2UgbG9hZGluZyBub3RpZmljYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgInJlc291cmNlLHJlcXVlc3Qsc2VudCIsICJy
ZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwKKyAgICAgICAgInJlc291cmNlLHJlcXVlc3QsZmFp
bGVkIiBhbmQgInJlc291cmNlLHJlcXVlc3QsZmluaXNoZWQiIHRvCisgICAgICAgIEV3a19WaWV3
IGluIG9yZGVyIHRvIG5vdGlmeSB0aGUgY2xpZW50cyBvZiB0aGUgbWFpbiByZXNvdXJjZQorICAg
ICAgICBsb2FkIHN0YXRlIGNoYW5nZXMuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBFd2tfVXJs
X1Jlc3BvbnNlIHR5cGUgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUKKyAgICAgICAgaW5mb3JtYXRp
b24gdG8gdGhlIGNsaWVudHMgcmVnYXJkaW5nIHRoZSByZXNvdXJjZSBsb2FkCisgICAgICAgIHJl
c3BvbnNlcyB0aGF0IGFyZSByZWNlaXZlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3
a19VcmxfUmVzcG9uc2UpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV9yZWYpOgorICAgICAg
ICAoZXdrX3VybF9yZXNwb25zZV91bnJlZik6CisgICAgICAgIChld2tfdXJsX3Jlc3BvbnNlX3Vy
bF9nZXQpOgorICAgICAgICAoZXdrX3VybF9yZXNwb25zZV9zdGF0dXNfY29kZV9nZXQpOgorICAg
ICAgICAoZXdrX3VybF9yZXNwb25zZV9taW1lX3R5cGVfZ2V0KToKKyAgICAgICAgKGV3a191cmxf
cmVzcG9uc2VfbmV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3Bv
bnNlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9u
c2VfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGV3a192
aWV3X3Jlc291cmNlX2xvYWRfaW5pdGlhdGVkKToKKyAgICAgICAgKGV3a192aWV3X3Jlc291cmNl
X2xvYWRfcmVzcG9uc2UpOgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQp
OgorICAgICAgICAoZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9maW5pc2hlZCk6CisgICAgICAgIChl
d2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQpOgorICAgICAgICAoZXdrX3ZpZXdfbG9hZF9w
cm92aXNpb25hbF9zdGFydGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5j
cHA6CisgICAgICAgICh0b0V3a1ZpZXcpOgorICAgICAgICAoZGlkSW5pdGlhdGVMb2FkRm9yUmVz
b3VyY2UpOgorICAgICAgICAoZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSk6CisgICAgICAgIChk
aWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRGaW5pc2hMb2FkRm9y
UmVzb3VyY2UpOgorICAgICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgIChl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRhY2gpOgorCiAyMDEyLTA3LTExICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBR
UmF3V2ViVmlldyBzaG91bGQgbm90aWZ5IHdoZW4gcmVuZGVyaW5nIGlzIGRvbmUsIHNvIHRoYXQg
cGl4ZWwgcmVzdWx0cyBjYW4gYmUgZ3JhYmJlZCBhdCB0aGUgYXBwcm9wcmlhdGUgbW9tZW50Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiZDA3YzNiLi5mOWI0NzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzgsNiArMzgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3JlcXVlc3QuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25z
ZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggNzk5ZDI1OC4uOWFmYTRmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnRfc2VydmljZS5o
IgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdC5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9u
c2UuaCIKICNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIK
ICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE3YTNjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcApAQCAtMCwwICsxLDEw
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
ImV3a191cmxfcmVzcG9uc2UuaCIKKworI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworLyoqCisgKiBcc3RydWN0ICBf
RXdrX1VybF9SZXNwb25zZQorICogQGJyaWVmICAgQ29udGFpbnMgdGhlIFVSTCByZXNwb25zZSBk
YXRhLgorICovCitzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgeworICAgIHVuc2lnbmVkIGludCBf
X3JlZjsgLyoqPCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBvYmplY3QgKi8KKyAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIGNvcmVSZXNwb25zZTsKKworICAgIGNvbnN0IGNoYXIqIHVy
bDsKKyAgICBjb25zdCBjaGFyKiBtaW1lVHlwZTsKK307CisKK3ZvaWQgZXdrX3VybF9yZXNwb25z
ZV9yZWYoRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4ocmVzcG9uc2UpOworICAgICsrcmVzcG9uc2UtPl9fcmVmOworfQorCit2b2lk
IGV3a191cmxfcmVzcG9uc2VfdW5yZWYoRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocmVzcG9uc2UpOworCisgICAgaWYgKC0tcmVz
cG9uc2UtPl9fcmVmKQorICAgICAgICByZXR1cm47CisKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChyZXNwb25zZS0+dXJsKTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChyZXNwb25zZS0+bWlt
ZVR5cGUpOworICAgIGZyZWUocmVzcG9uc2UpOworfQorCitjb25zdCBjaGFyKiBld2tfdXJsX3Jl
c3BvbnNlX3VybF9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3BvbnNlLCAwKTsKKworICAgIEV3a19V
cmxfUmVzcG9uc2UqIGV3a1Jlc3BvbnNlID0gY29uc3RfY2FzdDxFd2tfVXJsX1Jlc3BvbnNlKj4o
cmVzcG9uc2UpOworICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrUmVzcG9uc2UtPnVy
bCwgcmVzcG9uc2UtPmNvcmVSZXNwb25zZS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIHJldHVybiByZXNwb25zZS0+dXJsOworfQorCitpbnQgZXdrX3VybF9yZXNwb25zZV9z
dGF0dXNfY29kZV9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlc3BvbnNlLCAwKTsKKworICAgIHJldHVy
biByZXNwb25zZS0+Y29yZVJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7Cit9CisKK2NvbnN0IGNo
YXIqIGV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldChjb25zdCBFd2tfVXJsX1Jlc3BvbnNl
KiByZXNwb25zZSkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVzcG9u
c2UsIDApOworCisgICAgRXdrX1VybF9SZXNwb25zZSogZXdrUmVzcG9uc2UgPSBjb25zdF9jYXN0
PEV3a19VcmxfUmVzcG9uc2UqPihyZXNwb25zZSk7CisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZld2tSZXNwb25zZS0+bWltZVR5cGUsIHJlc3BvbnNlLT5jb3JlUmVzcG9uc2UubWltZVR5
cGUoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXNwb25zZS0+bWltZVR5cGU7Cit9
CisKKy8qKgorICogQGludGVybmFsCisgKiBDb25zdHJ1Y3RzIGEgRXdrX1VybF9SZXNwb25zZSBm
cm9tIGEgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZS4KKyAqLworRXdrX1VybF9SZXNwb25zZSog
ZXdrX3VybF9yZXNwb25zZV9uZXcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgY29y
ZVJlc3BvbnNlKQoreworICAgIEV3a19VcmxfUmVzcG9uc2UqIGV3a1VybFJlc3BvbnNlID0gc3Rh
dGljX2Nhc3Q8RXdrX1VybF9SZXNwb25zZSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1VybF9SZXNw
b25zZSkpKTsKKyAgICBld2tVcmxSZXNwb25zZS0+X19yZWYgPSAxOworICAgIGV3a1VybFJlc3Bv
bnNlLT5jb3JlUmVzcG9uc2UgPSBjb3JlUmVzcG9uc2U7CisKKyAgICByZXR1cm4gZXdrVXJsUmVz
cG9uc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdXJsX3Jlc3BvbnNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dXJsX3Jlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1ZTlh
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a191cmxfcmVzcG9uc2UuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAZmlsZSAgICBld2tfdXJsX3Jlc3BvbnNlLmgKKyAqIEBicmllZiAgIERlc2NyaWJl
cyB0aGUgRXdrIFVSTCByZXNwb25zZSBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfdXJsX3Jlc3Bv
bnNlX2gKKyNkZWZpbmUgZXdrX3VybF9yZXNwb25zZV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIENyZWF0ZXMg
YSB0eXBlIG5hbWUgZm9yIF9Fd2tfVXJsX1Jlc3BvbnNlICovCit0eXBlZGVmIHN0cnVjdCBfRXdr
X1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOworCisvKioKKyAqIEluY3JlYXNlcyB0aGUg
cmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIHJlc3Bv
bnNlIHRoZSBVUkwgcmVzcG9uc2Ugb2JqZWN0IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291
bnQKKyAqLworRUFQSSB2b2lkIGV3a191cmxfcmVzcG9uc2VfcmVmKEV3a19VcmxfUmVzcG9uc2Ug
KnJlc3BvbnNlKTsKKworLyoqCisgKiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0
aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJl
ZmVyZW5jZSBjb3VudCBpdCdzIHJlYWNoZWQgMCwgdGhlIFVSTCByZXF1ZXN0IGlzIGZyZWVkLgor
ICoKKyAqIEBwYXJhbSByZXNwb25zZSB0aGUgVVJMIHJlc3BvbnNlIG9iamVjdCB0byBkZWNyZWFz
ZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfdXJsX3Jlc3BvbnNlX3Vu
cmVmKEV3a19VcmxfUmVzcG9uc2UgKnJlc3BvbnNlKTsKKworLyoqCisgKiBRdWVyeSBVUkwgZm9y
IHRoaXMgcmVzcG9uc2UuCisgKgorICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlIG9iamVjdCB0
byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIHRoZSBVUkwgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJk
dXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfdXJsX3Jlc3BvbnNlX3VybF9nZXQoY29u
c3QgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2UpOworCisvKioKKyAqIFF1ZXJ5IEhUVFAgc3Rh
dHVzIGNvZGUgZm9yIHRoaXMgcmVzcG9uc2UuCisgKgorICogSFRUUCBzdGF0dXMgY29kZSBhcmUg
ZGVmaW5lZCBieToKKyAqIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2
MTYtc2VjMTAuaHRtbAorICoKKyAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZSBvYmplY3QgdG8g
cXVlcnkuCisgKgorICogQHJldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZS4KKyAqLworRUFQSSBp
bnQgZXdrX3VybF9yZXNwb25zZV9zdGF0dXNfY29kZV9nZXQoY29uc3QgRXdrX1VybF9SZXNwb25z
ZSAqcmVzcG9uc2UpOworCisvKioKKyAqIFF1ZXJ5IE1JTUUgdHlwZSBmb3IgdGhpcyByZXNwb25z
ZS4KKyAqCisgKiBAcGFyYW0gcmVzcG9uc2UgcmVzcG9uc2Ugb2JqZWN0IHRvIHF1ZXJ5LgorICoK
KyAqIEByZXR1cm4gdGhlIE1JTUUgdHlwZSBwb2ludGVyLCB0aGF0IG1heSBiZSBAYyBOVUxMLiBU
aGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3No
YXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJzZWxmIHNvbWUg
Y3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5z
dGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0cmR1cCgpLgor
ICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a191cmxfcmVzcG9uc2VfbWltZV90eXBlX2dldChjb25z
dCBFd2tfVXJsX1Jlc3BvbnNlICpyZXNwb25zZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvLyBld2tfdXJsX3Jlc3BvbnNlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZV9wcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJkNTYzZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVzcG9u
c2VfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgZXdrX3VybF9yZXNwb25zZV9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3VybF9yZXNwb25zZV9w
cml2YXRlX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorCit0eXBl
ZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3BvbnNlOworCitFd2tfVXJs
X1Jlc3BvbnNlKiBld2tfdXJsX3Jlc3BvbnNlX25ldyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKTsKKworI2VuZGlmIC8vIGV3a191cmxfcmVzcG9uc2Vf
cHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKaW5kZXggZWI2YjE1Yi4uMjU1ZDVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImV3a192
aWV3X2xvYWRlcl9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCisj
aW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQxLDEwICs0MiwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGNvbnN0IGNoYXIgRVdLX1ZJRVdfVFlQRV9TVFJb
XSA9ICJFV0syX1ZpZXciOwogCit0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIEV3a19XZWJfUmVz
b3VyY2UqPiBMb2FkaW5nUmVzb3VyY2VzTWFwOworCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVf
RGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogICAgIGNvbnN0
IGNoYXIqIHVyaTsKICAgICBjb25zdCBjaGFyKiB0aXRsZTsKKyAgICBMb2FkaW5nUmVzb3VyY2Vz
TWFwIGxvYWRpbmdSZXNvdXJjZXNNYXA7CiB9OwogCiAjZGVmaW5lIEVXS19WSUVXX1RZUEVfQ0hF
Q0soZXdrVmlldywgcmVzdWx0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApA
QCAtNTY3LDEyICs1NzEsOTYgQEAgRWluYV9Cb29sIGV3a192aWV3X3N0b3AoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiAgKi8KIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9S
ZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBFd2tf
V2ViX1Jlc291cmNlX1JlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0ge3Jlc291cmNlLCByZXF1ZXN0
fTsKLSAgICAvLyBGSVhNRTogV2Ugd2lsbCBuZWVkIHRvIHN0b3JlIHRoZSByZXNvdXJjZSBhbmQg
aXRzIGlkZW50aWZpZXIgYXQgc29tZSBwb2ludAotICAgIC8vIHRvIGdldCB0aGUgcmVzb3VyY2Ug
YmFjayBmcm9tIHRoZSBpZGVudGlmaWVyIG9uIHJlc291cmNlIGxvYWQgZmluaXNoLgorICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklF
V19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIEV3a19XZWJfUmVz
b3VyY2VfUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgPSB7cmVzb3VyY2UsIHJlcXVlc3QsIDB9Owor
CisgICAgLy8gS2VlcCB0aGUgcmVzb3VyY2UgaW50ZXJuYWxseSB0byByZXVzZSBpdCBsYXRlci4K
KyAgICBld2tfd2ViX3Jlc291cmNlX3JlZihyZXNvdXJjZSk7CisgICAgcHJpdi0+bG9hZGluZ1Jl
c291cmNlc01hcC5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCByZXNvdXJjZSk7CisKICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LG5l
dyIsICZyZXNvdXJjZVJlcXVlc3QpOwogfQogCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVjZWl2
ZWQgYSByZXNwb25zZSB0byBhIHJlc291cmNlIGxvYWQgcmVxdWVzdCBpbiB0aGUgdmlldy4KKyAq
CisgKiBFbWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiB3aXRoIHBvaW50
ZXIgdG8gcmVzb3VyY2UgcmVzcG9uc2UuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9h
ZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAoIXByaXYtPmxvYWRpbmdSZXNvdXJj
ZXNNYXAuY29udGFpbnMocmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRXdrX1dlYl9SZXNvdXJjZSogcmVzb3VyY2UgPSBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFw
LmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNw
b25zZSByZXNvdXJjZUxvYWRSZXNwb25zZSA9IHtyZXNvdXJjZSwgcmVzcG9uc2V9OworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInJlc291cmNlLHJlcXVlc3Qs
cmVzcG9uc2UiLCAmcmVzb3VyY2VMb2FkUmVzcG9uc2UpOworfQorCisvKioKKyAqIEBpbnRlcm5h
bAorICogRmFpbGVkIGxvYWRpbmcgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBFbWl0
cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LGZpbmlzaGVkIiB3aXRoIHBvaW50ZXIgdG8gdGhl
IHJlc291cmNlIGxvYWQgZXJyb3IuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9m
YWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwg
RXdrX1dlYl9FcnJvciogZXJyb3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHByaXYpOworCisgICAgaWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNvbnRh
aW5zKHJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19XZWJf
UmVzb3VyY2UqIHJlc291cmNlID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5nZXQocmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICBFd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgcmVzb3VyY2VM
b2FkRXJyb3IgPSB7cmVzb3VyY2UsIGVycm9yfTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsICZyZXNvdXJjZUxv
YWRFcnJvcik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBGaW5pc2hlZCBsb2FkaW5nIGEg
cmVzb3VyY2UgaW4gdGhlIHZpZXcuCisgKgorICogRW1pdHMgc2lnbmFsOiAicmVzb3VyY2UscmVx
dWVzdCxmaW5pc2hlZCIgd2l0aCBwb2ludGVyIHRvIHRoZSByZXNvdXJjZS4KKyAqLwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIHByaXYpOworCisgICAgaWYgKCFwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNv
bnRhaW5zKHJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIEV3a19X
ZWJfUmVzb3VyY2UqIHJlc291cmNlID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC50YWtlKHJl
c291cmNlSWRlbnRpZmllcik7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChl
d2tWaWV3LCAicmVzb3VyY2UscmVxdWVzdCxmaW5pc2hlZCIsIHJlc291cmNlKTsKKworICAgIGV3
a193ZWJfcmVzb3VyY2VfdW5yZWYocmVzb3VyY2UpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAor
ICogUmVxdWVzdCB3YXMgc2VudCBmb3IgYSByZXNvdXJjZSBpbiB0aGUgdmlldy4KKyAqCisgKiBF
bWl0cyBzaWduYWw6ICJyZXNvdXJjZSxyZXF1ZXN0LHNlbnQiIHdpdGggcG9pbnRlciB0byByZXNv
dXJjZSByZXF1ZXN0IGFuZCBwb3NzaWJsZSByZWRpcmVjdCByZXNwb25zZS4KKyAqLwordm9pZCBl
d2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJs
X1Jlc3BvbnNlKiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIGlmICghcHJpdi0+bG9hZGluZ1Jlc291cmNlc01h
cC5jb250YWlucyhyZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBF
d2tfV2ViX1Jlc291cmNlKiByZXNvdXJjZSA9IHByaXYtPmxvYWRpbmdSZXNvdXJjZXNNYXAuZ2V0
KHJlc291cmNlSWRlbnRpZmllcik7CisgICAgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IHJlc291
cmNlUmVxdWVzdCA9IHtyZXNvdXJjZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZX07CisKKyAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJyZXNvdXJjZSxyZXF1
ZXN0LHNlbnQiLCAmcmVzb3VyY2VSZXF1ZXN0KTsKK30KKwogY29uc3QgY2hhciogZXdrX3ZpZXdf
dGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKQEAgLTc3Myw2ICs4NjEsMTcg
QEAgdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogICovCiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFz
X09iamVjdCogZXdrVmlldykKIHsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdik7CisKKyAgICAvLyBUaGUgbWFpbiBmcmFtZSBzdGFydGVkIHByb3Zpc2lvbmFsIGxv
YWQsIHdlIHNob3VsZCBjbGVhcgorICAgIC8vIHRoZSBsb2FkaW5nUmVzb3VyY2VzIEhhc2hNYXAg
dG8gc3RhcnQgY2xlYW4uCisgICAgTG9hZGluZ1Jlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBw
cml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmJlZ2luKCk7CisgICAgTG9hZGluZ1Jlc291cmNlc01h
cDo6aXRlcmF0b3IgZW5kID0gcHJpdi0+bG9hZGluZ1Jlc291cmNlc01hcC5lbmQoKTsKKyAgICBm
b3IgKCA7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgZXdrX3dlYl9yZXNvdXJjZV91bnJlZihp
dC0+c2Vjb25kKTsKKyAgICBwcml2LT5sb2FkaW5nUmVzb3VyY2VzTWFwLmNsZWFyKCk7CisKICAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lv
bmFsLHN0YXJ0ZWQiLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmgKaW5kZXggZjYwOTJhNi4uYmIyMGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0zNCw3ICszNCwxMSBAQAogICogLSAibG9h
ZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdCBFd2tfV2ViX0Vycm9yKjogdmlldyBwcm92aXNp
b25hbCBsb2FkIGZhaWxlZC4KICAqIC0gImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lk
OiB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9h
ZCxwcm92aXNpb25hbCxzdGFydGVkIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxv
YWQuCisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsIGNvbnN0IEV3a19XZWJfUmVzb3Vy
Y2VfTG9hZF9FcnJvcio6IGEgcmVzb3VyY2UgZmFpbGVkIGxvYWRpbmcuCisgKiAtICJyZXNvdXJj
ZSxyZXF1ZXN0LGZpbmlzaGVkIiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZSo6IGEgcmVzb3VyY2Ug
ZmluaXNoZWQgbG9hZGluZy4KICAqIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgY29uc3QgRXdr
X1dlYl9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBpbml0aWF0ZWQu
CisgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgRXdrX1dlYl9SZXNvdXJjZV9Mb2Fk
X1Jlc3BvbnNlKjogYSByZXNwb25zZSB0byBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIHJlY2VpdmVk
LgorICogLSAicmVzb3VyY2UscmVxdWVzdCxzZW50IiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZV9S
ZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBzZW50LgogICogLSAidGl0bGUsY2hhbmdl
ZCIsIGNvbnN0IGNoYXIqOiB0aXRsZSBvZiB0aGUgbWFpbiBmcmFtZSB3YXMgY2hhbmdlZC4KICAq
LwogCkBAIC00NCw2ICs0OCw4IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRl
ICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCisjaW5jbHVkZSAi
ZXdrX3VybF9yZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a193ZWJfZXJyb3IuaCIKICNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogCkBAIC0xNDUsMTIgKzE1
MSwzNSBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0IEV3a19XZWJf
UmVzb3VyY2VfUmVxdWVzdDsKIAogLyoqCiAgKiBAYnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcg
ZGV0YWlscyBhYm91dCBhIHJlc291cmNlIHJlcXVlc3QuCi0gKgotICogRGV0YWlscyBnaXZlbiBh
Ym91dCBhIHJlc291cmNlIGlzIGxvYWRlZC4KICAqLwogc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNl
X1JlcXVlc3QgewogICAgIEV3a19XZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNl
IGJlaW5nIHJlcXVlc3RlZCAqLwogICAgIEV3a19VcmxfUmVxdWVzdCAqcmVxdWVzdDsgLyoqPCBV
UkwgcmVxdWVzdCBmb3IgdGhlIHJlc291cmNlICovCisgICAgRXdrX1VybF9SZXNwb25zZSAqcmVk
aXJlY3RfcmVzcG9uc2U7IC8qKjwgUG9zc2libGUgcmVkaXJlY3QgcmVzcG9uc2UgZm9yIHRoZSBy
ZXNvdXJjZSAqLworfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfV2ViX1Jl
c291cmNlX0xvYWRfUmVzcG9uc2UuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZV9M
b2FkX1Jlc3BvbnNlIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9SZXNwb25zZTsKKworLyoqCisgKiBA
YnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc3BvbnNlIHRvIGEg
cmVzb3VyY2UgcmVxdWVzdC4KKyAqLworc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfUmVz
cG9uc2UgeworICAgICBFd2tfV2ViX1Jlc291cmNlICpyZXNvdXJjZTsgLyoqPCByZXNvdXJjZSBy
ZXF1ZXN0ZWQgKi8KKyAgICAgRXdrX1VybF9SZXNwb25zZSAqcmVzcG9uc2U7IC8qKjwgcmVzb3Vy
Y2UgbG9hZCByZXNwb25zZSAqLworfTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9F
d2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IuCit0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNv
dXJjZV9Mb2FkX0Vycm9yIEV3a19XZWJfUmVzb3VyY2VfTG9hZF9FcnJvcjsKKworLyoqCisgKiBA
YnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBhIHJlc291cmNlIGxvYWQg
ZXJyb3IuCisgKgorICogRGV0YWlscyBnaXZlbiBhYm91dCBhIHJlc291cmNlIGxvYWQgZmFpbHVy
ZS4KKyAqLworc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlX0xvYWRfRXJyb3IgeworICAgIEV3a19X
ZWJfUmVzb3VyY2UgKnJlc291cmNlOyAvKio8IHJlc291cmNlIHRoYXQgZmFpbGVkIGxvYWRpbmcg
Ki8KKyAgICBFd2tfV2ViX0Vycm9yICplcnJvcjsgLyoqPCBsb2FkIGVycm9yICovCiB9OwogCiAv
KioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaAppbmRleCBmOWYyMTEzLi45MTMyODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0zMSw2ICszMSw3IEBA
IGNsYXNzIEludFNpemU7CiB9CiAKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdr
X1VybF9SZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVzcG9uc2UgRXdrX1VybF9S
ZXNwb25zZTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX0Vycm9yIEV3a19XZWJfRXJyb3I7CiB0
eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9SZXNvdXJjZSBFd2tfV2ViX1Jlc291cmNlOwogI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKQEAgLTQ5LDcgKzUwLDExIEBAIHZvaWQgZXdrX3ZpZXdfbG9hZF9w
cm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a19XZWJfRXJy
b3IqCiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3N0YXJ0ZWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld190aXRsZV9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiB0aXRsZSk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNlX2xv
YWRfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIEV3a19XZWJfRXJyb3IqIGVycm9yKTsKK3ZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9m
aW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVy
KTsKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVz
b3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7Cit2b2lkIGV3a192aWV3X3Jlc291cmNl
X2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwordm9pZCBld2tfdmlld19yZXNv
dXJjZV9yZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNl
SWRlbnRpZmllciwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiBy
ZWRpcmVjdFJlc3BvbnNlKTsKIAogRXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRkKEV2YXMq
IGNhbnZhcywgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291cmNlX2xvYWRfY2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Jlc291
cmNlX2xvYWRfY2xpZW50LmNwcAppbmRleCA2YmUzOWEyLi41MDViYmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2Ns
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCkBAIC0zMSwyOSArMzEsNjcgQEAKICNpbmNsdWRlICJX
S1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV0tVUkxSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV0tVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVz
dC5oIgogI2luY2x1ZGUgImV3a191cmxfcmVxdWVzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdr
X3VybF9yZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19yZXNvdXJj
ZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3dlYl9lcnJvci5oIgorI2lu
Y2x1ZGUgImV3a193ZWJfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a193ZWJfcmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlX3ByaXZhdGUuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0YXRpYyBp
bmxpbmUgRXZhc19PYmplY3QqIHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKTsKK30KKwogc3RhdGljIHZvaWQgZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2Uo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIHdrRnJhbWUsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
ciwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgYm9vbCBwYWdlSXNQcm92aXNpb25hbGx5TG9h
ZGluZywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBFdmFzX09iamVjdCogZXdrVmll
dyA9IHN0YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpOwogICAgIGJvb2wgaXNNYWluUmVzb3VyY2UgPSAoV0tGcmFtZUlzTWFpbkZyYW1lKHdrRnJh
bWUpICYmIHBhZ2VJc1Byb3Zpc2lvbmFsbHlMb2FkaW5nKTsKICAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gd2tVcmwoQWRvcHRXSywgV0tVUkxSZXF1ZXN0Q29weVVSTCh3a1JlcXVlc3QpKTsKIAog
ICAgIEV3a19XZWJfUmVzb3VyY2UqIHJlc291cmNlID0gZXdrX3dlYl9yZXNvdXJjZV9uZXcodG9J
bXBsKHdrVXJsLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaXNNYWluUmVzb3VyY2Up
OwogICAgIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCA9IGV3a191cmxfcmVxdWVzdF9uZXcod2tS
ZXF1ZXN0KTsKLSAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChld2tWaWV3LCBy
ZXNvdXJjZUlkZW50aWZpZXIsIHJlc291cmNlLCByZXF1ZXN0KTsKKyAgICBld2tfdmlld19yZXNv
dXJjZV9sb2FkX2luaXRpYXRlZCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIHJlc291cmNlSWRlbnRp
ZmllciwgcmVzb3VyY2UsIHJlcXVlc3QpOwogICAgIGV3a193ZWJfcmVzb3VyY2VfdW5yZWYocmVz
b3VyY2UpOwogICAgIGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKIH0KIAorc3RhdGlj
IHZvaWQgZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgV0tV
UkxSZXNwb25zZVJlZiB3a1JlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0ID0gZXdrX3VybF9yZXF1ZXN0X25ldyh3
a1JlcXVlc3QpOworICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UgPSBld2tf
dXJsX3Jlc3BvbnNlX25ldyh0b0ltcGwod2tSZWRpcmVjdFJlc3BvbnNlKS0+cmVzb3VyY2VSZXNw
b25zZSgpKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9yZXF1ZXN0X3NlbnQodG9Fd2tWaWV3KGNs
aWVudEluZm8pLCByZXNvdXJjZUlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OworICAgIGV3a191cmxfcmVxdWVzdF91bnJlZihyZXF1ZXN0KTsKKyAgICBld2tfdXJsX3Jlc3Bv
bnNlX3VucmVmKHJlZGlyZWN0UmVzcG9uc2UpOworfQorCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2VGb3JSZXNvdXJjZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllciwgV0tVUkxSZXNwb25zZVJlZiB3a1Jlc3BvbnNlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlID0gZXdrX3VybF9y
ZXNwb25zZV9uZXcodG9JbXBsKHdrUmVzcG9uc2UpLT5yZXNvdXJjZVJlc3BvbnNlKCkpOworICAg
IGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UodG9Fd2tWaWV3KGNsaWVudEluZm8pLCBy
ZXNvdXJjZUlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICBld2tfdXJsX3Jlc3BvbnNlX3VucmVm
KHJlc3BvbnNlKTsKK30KKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQo
dG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitzdGF0aWMg
dm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIHdrRXJyb3IsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgRXdrX1dlYl9FcnJvciogZXdrRXJyb3IgPSBld2tfd2ViX2Vycm9y
X25ldyh3a0Vycm9yKTsKKyAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZCh0b0V3a1Zp
ZXcoY2xpZW50SW5mbyksIHJlc291cmNlSWRlbnRpZmllciwgZXdrRXJyb3IpOworICAgIGV3a192
aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQodG9Fd2tWaWV3KGNsaWVudEluZm8pLCByZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIGV3a193ZWJfZXJyb3JfZnJlZShld2tFcnJvcik7Cit9CisKIHZv
aWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVm
LCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAgICBXS1BhZ2VSZXNvdXJjZUxvYWRDbGllbnQg
d2tSZXNvdXJjZUxvYWRDbGllbnQ7CkBAIC02MSw2ICs5OSwxMCBAQCB2b2lkIGV3a192aWV3X3Jl
c291cmNlX2xvYWRfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3Qq
IGV3a1ZpZQogICAgIHdrUmVzb3VyY2VMb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50Q3VycmVudFZlcnNpb247CiAgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuY2xp
ZW50SW5mbyA9IGV3a1ZpZXc7CiAgICAgd2tSZXNvdXJjZUxvYWRDbGllbnQuZGlkSW5pdGlhdGVM
b2FkRm9yUmVzb3VyY2UgPSBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZTsKKyAgICB3a1Jlc291
cmNlTG9hZENsaWVudC5kaWRTZW5kUmVxdWVzdEZvclJlc291cmNlID0gZGlkU2VuZFJlcXVlc3RG
b3JSZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2VG
b3JSZXNvdXJjZSA9IGRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlOworICAgIHdrUmVzb3Vy
Y2VMb2FkQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSA9IGRpZEZpbmlzaExvYWRGb3JS
ZXNvdXJjZTsKKyAgICB3a1Jlc291cmNlTG9hZENsaWVudC5kaWRGYWlsTG9hZEZvclJlc291cmNl
ID0gZGlkRmFpbExvYWRGb3JSZXNvdXJjZTsKIAogICAgIFdLUGFnZVNldFBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQocGFnZVJlZiwgJndrUmVzb3VyY2VMb2FkQ2xpZW50KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>