<?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>73662</bug_id>
          
          <creation_ts>2011-12-02 08:36:45 -0800</creation_ts>
          <short_desc>[GTK] Add downloads support to MiniBrowser</short_desc>
          <delta_ts>2012-04-26 04:00:38 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>72952</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513792</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-02 08:36:45 -0800</bug_when>
    <thetext>Just for testing downloads API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513799</commentid>
    <comment_count>1</comment_count>
      <attachid>117633</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-02 08:43:23 -0800</bug_when>
    <thetext>Created attachment 117633
Patch

The ui can be improved and it doesn&apos;t scale, but it&apos;s just for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513801</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 08:44:58 -0800</bug_when>
    <thetext>Attachment 117633 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/...&quot; exit_code: 1

Tools/MiniBrowser/gtk/BrowserDownloadsBar.h:47:  The parameter name &quot;downloadsBar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/MiniBrowser/gtk/BrowserDownloadsBar.h:48:  The parameter name &quot;download&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/MiniBrowser/gtk/BrowserDownloadsBar.h:48:  Extra space between WebKitDownload and *download  [whitespace/declaration] [3]
Tools/MiniBrowser/gtk/BrowserDownloadsBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514281</commentid>
    <comment_count>3</comment_count>
      <attachid>117633</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-12-02 16:59:18 -0800</bug_when>
    <thetext>Comment on attachment 117633
Patch

Attachment 117633 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10688453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608642</commentid>
    <comment_count>4</comment_count>
      <attachid>117633</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-24 07:29:46 -0700</bug_when>
    <thetext>Comment on attachment 117633
Patch

Looks good, r- mostly to get you to check EWS before landing :) The patch this one depends on landed it seems so I&apos;d like to have green EWS before landing this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610457</commentid>
    <comment_count>5</comment_count>
      <attachid>138962</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-26 03:16:10 -0700</bug_when>
    <thetext>Created attachment 138962
Updated patch

Rebased to current git master. I also had to do some changes because the downloads API has changed since I wrote this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610460</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-26 03:20:30 -0700</bug_when>
    <thetext>Attachment 138962 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/...&quot; exit_code: 1
Tools/MiniBrowser/gtk/BrowserDownloadsBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610474</commentid>
    <comment_count>7</comment_count>
      <attachid>138962</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-26 03:44:08 -0700</bug_when>
    <thetext>Comment on attachment 138962
Updated patch

Cool stuff. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610486</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-26 04:00:38 -0700</bug_when>
    <thetext>Committed r115301: &lt;http://trac.webkit.org/changeset/115301&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117633</attachid>
            <date>2011-12-02 08:43:23 -0800</date>
            <delta_ts>2012-04-26 03:16:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-mb-downloads.diff</filename>
            <type>text/plain</type>
            <size>18152</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1OTJk
Y2Y1Li5kOTJiMThmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBkb3dubG9hZHMgc3Vw
cG9ydCB0byBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyRG93bmxvYWRzQmFyLmM6IEFkZGVk
LgorICAgICAgICAoYnJvd3NlckRvd25sb2Fkc0JhclJlc3BvbnNlKToKKyAgICAgICAgKGJyb3dz
ZXJfZG93bmxvYWRzX2Jhcl9pbml0KToKKyAgICAgICAgKGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9j
bGFzc19pbml0KToKKyAgICAgICAgKGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9uZXcpOgorICAgICAg
ICAoYWN0aW9uQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChicm93c2VyRG93bmxvYWRGaW5hbGl6
ZSk6CisgICAgICAgIChicm93c2VyX2Rvd25sb2FkX2luaXQpOgorICAgICAgICAoYnJvd3Nlcl9k
b3dubG9hZF9jbGFzc19pbml0KToKKyAgICAgICAgKGRvd25sb2FkUmVjZWl2ZWRSZXNwb25zZSk6
CisgICAgICAgIChyZW1haW5pbmdUaW1lKToKKyAgICAgICAgKGRvd25sb2FkUHJvZ3Jlc3MpOgor
ICAgICAgICAoZG93bmxvYWRSZWNlaXZlZERhdGEpOgorICAgICAgICAoZG93bmxvYWRGaW5pc2hl
ZCk6CisgICAgICAgIChkb3dubG9hZEZhaWxlZCk6CisgICAgICAgIChicm93c2VyRG93bmxvYWRO
ZXcpOgorICAgICAgICAoYnJvd3Nlcl9kb3dubG9hZHNfYmFyX2FkZF9kb3dubG9hZCk6CisgICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuaDogQWRkZWQuCisgICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKGRvd25sb2Fk
U3RhcnRlZCk6CisgICAgICAgIChicm93c2VyV2luZG93Q29uc3RydWN0ZWQpOgorICAgICAgICAq
IE1pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbToKKwogMjAxMS0xMi0wMiAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBydW4tYmluZGluZ3Mt
dGVzdHMgaW1wbGVtZW50YXRpb24gdG8gd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuYyBiL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyRG93bmxvYWRzQmFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNThhMTliNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyRG93bmxvYWRzQmFyLmMKQEAgLTAsMCArMSwyNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkJy
b3dzZXJEb3dubG9hZHNCYXIuaCIKKworI2luY2x1ZGUgPGdsaWIvZ2kxOG4uaD4KKworI2RlZmlu
ZSBCUk9XU0VSX1RZUEVfRE9XTkxPQUQgKGJyb3dzZXJfZG93bmxvYWRfZ2V0X3R5cGUoKSkKKyNk
ZWZpbmUgQlJPV1NFUl9ET1dOTE9BRChvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgQlJPV1NFUl9UWVBFX0RPV05MT0FELCBCcm93c2VyRG93bmxvYWQpKQorCit0eXBlZGVm
IHN0cnVjdCBfQnJvd3NlckRvd25sb2FkIEJyb3dzZXJEb3dubG9hZDsKK3R5cGVkZWYgc3RydWN0
IF9Ccm93c2VyRG93bmxvYWRDbGFzcyBCcm93c2VyRG93bmxvYWRDbGFzczsKKworc3RhdGljIEdU
eXBlIGJyb3dzZXJfZG93bmxvYWRfZ2V0X3R5cGUoKTsKKworc3RydWN0IF9Ccm93c2VyRG93bmxv
YWRzQmFyIHsKKyAgICBHdGtJbmZvQmFyIHBhcmVudDsKK307CisKK3N0cnVjdCBfQnJvd3NlckRv
d25sb2Fkc0JhckNsYXNzIHsKKyAgICBHdGtJbmZvQmFyQ2xhc3MgcGFyZW50Q2xhc3M7CisKK307
CisKK0dfREVGSU5FX1RZUEUoQnJvd3NlckRvd25sb2Fkc0JhciwgYnJvd3Nlcl9kb3dubG9hZHNf
YmFyLCBHVEtfVFlQRV9JTkZPX0JBUikKKworc3RhdGljIHZvaWQgYnJvd3NlckRvd25sb2Fkc0Jh
clJlc3BvbnNlKEd0a0luZm9CYXIgKmluZm9CYXIsIGdpbnQgcmVzcG9uc2VJZCkKK3sKKyAgICBn
dGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChpbmZvQmFyKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9pbml0KEJyb3dzZXJEb3dubG9hZHNCYXIgKmRvd25sb2Fk
c0JhcikKK3sKKyAgICBHdGtXaWRnZXQgKmNvbnRlbnRCb3ggPSBndGtfaW5mb19iYXJfZ2V0X2Nv
bnRlbnRfYXJlYShHVEtfSU5GT19CQVIoZG93bmxvYWRzQmFyKSk7CisgICAgZ3RrX29yaWVudGFi
bGVfc2V0X29yaWVudGF0aW9uKEdUS19PUklFTlRBQkxFKGNvbnRlbnRCb3gpLCBHVEtfT1JJRU5U
QVRJT05fVkVSVElDQUwpOworCisgICAgR3RrV2lkZ2V0ICp0aXRsZSA9IGd0a19sYWJlbF9uZXco
TlVMTCk7CisgICAgZ3RrX2xhYmVsX3NldF9tYXJrdXAoR1RLX0xBQkVMKHRpdGxlKSwgIjxzcGFu
IHNpemU9J3h4LWxhcmdlJyB3ZWlnaHQ9J2JvbGQnPkRvd25sb2Fkczwvc3Bhbj4iKTsKKyAgICBn
dGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKHRpdGxlKSwgMC4sIDAuNSk7CisgICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0KEdUS19CT1goY29udGVudEJveCksIHRpdGxlLCBGQUxTRSwgRkFMU0Us
IDEyKTsKKyAgICBndGtfd2lkZ2V0X3Nob3codGl0bGUpOworfQorCitzdGF0aWMgdm9pZCBicm93
c2VyX2Rvd25sb2Fkc19iYXJfY2xhc3NfaW5pdChCcm93c2VyRG93bmxvYWRzQmFyQ2xhc3MgKmts
YXNzKQoreworICAgIEd0a0luZm9CYXJDbGFzcyAqaW5mb0JhckNsYXNzID0gR1RLX0lORk9fQkFS
X0NMQVNTKGtsYXNzKTsKKworICAgIGluZm9CYXJDbGFzcy0+cmVzcG9uc2UgPSBicm93c2VyRG93
bmxvYWRzQmFyUmVzcG9uc2U7Cit9CisKK0d0a1dpZGdldCAqYnJvd3Nlcl9kb3dubG9hZHNfYmFy
X25ldygpCit7CisgICAgR3RrSW5mb0JhciAqZG93bmxvYWRzQmFyID0gR1RLX0lORk9fQkFSKGdf
b2JqZWN0X25ldyhCUk9XU0VSX1RZUEVfRE9XTkxPQURTX0JBUiwgTlVMTCkpOworICAgIGd0a19p
bmZvX2Jhcl9hZGRfYnV0dG9ucyhkb3dubG9hZHNCYXIsIEdUS19TVE9DS19DTE9TRSwgR1RLX1JF
U1BPTlNFX0NMT1NFLCBOVUxMKTsKKyAgICBndGtfaW5mb19iYXJfc2V0X2RlZmF1bHRfcmVzcG9u
c2UoZG93bmxvYWRzQmFyLCBHVEtfUkVTUE9OU0VfQ0xPU0UpOworICAgIHJldHVybiBHVEtfV0lE
R0VUKGRvd25sb2Fkc0Jhcik7Cit9CisKK3N0cnVjdCBfQnJvd3NlckRvd25sb2FkIHsKKyAgICBH
dGtCb3ggcGFyZW50OworCisgICAgV2ViS2l0RG93bmxvYWQgKmRvd25sb2FkOworICAgIGd1aW50
NjQgY29udGVudExlbmd0aDsKKyAgICBndWludDY0IGRvd25sb2FkZWRTaXplOworICAgIGdib29s
ZWFuIGZpbmlzaGVkOworCisgICAgR3RrV2lkZ2V0ICpzdGF0dXNMYWJlbDsKKyAgICBHdGtXaWRn
ZXQgKnJlbWFpbmluZ0xhYmVsOworICAgIEd0a1dpZGdldCAqcHJvZ3Jlc3NCYXI7CisgICAgR3Rr
V2lkZ2V0ICphY3Rpb25CdXR0b247Cit9OworCitzdHJ1Y3QgX0Jyb3dzZXJEb3dubG9hZENsYXNz
IHsKKyAgICBHdGtCb3hDbGFzcyBwYXJlbnRDbGFzczsKK307CisKK0dfREVGSU5FX1RZUEUoQnJv
d3NlckRvd25sb2FkLCBicm93c2VyX2Rvd25sb2FkLCBHVEtfVFlQRV9CT1gpCisKK3N0YXRpYyB2
b2lkIGFjdGlvbkJ1dHRvbkNsaWNrZWQoR3RrQnV0dG9uICpidXR0b24sIEJyb3dzZXJEb3dubG9h
ZCAqYnJvd3NlckRvd25sb2FkKQoreworICAgIGlmICghYnJvd3NlckRvd25sb2FkLT5maW5pc2hl
ZCkKKyAgICAgICAgd2Via2l0X2Rvd25sb2FkX2NhbmNlbChicm93c2VyRG93bmxvYWQtPmRvd25s
b2FkKTsKKyAgICBlbHNlCisgICAgICAgIGd0a19zaG93X3VyaShndGtfd2lkZ2V0X2dldF9zY3Jl
ZW4oR1RLX1dJREdFVChicm93c2VyRG93bmxvYWQpKSwKKyAgICAgICAgICAgICAgICAgICAgIHdl
YmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oYnJvd3NlckRvd25sb2FkLT5kb3dubG9hZCks
CisgICAgICAgICAgICAgICAgICAgICBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpLCBOVUxM
KTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGJyb3dzZXJEb3dubG9hZCkp
OworfQorCitzdGF0aWMgdm9pZCBicm93c2VyRG93bmxvYWRGaW5hbGl6ZShHT2JqZWN0ICpvYmpl
Y3QpCit7CisgICAgQnJvd3NlckRvd25sb2FkICpicm93c2VyRG93bmxvYWQgPSBCUk9XU0VSX0RP
V05MT0FEKG9iamVjdCk7CisKKyAgICBpZiAoYnJvd3NlckRvd25sb2FkLT5kb3dubG9hZCkgewor
ICAgICAgICBnX29iamVjdF91bnJlZihicm93c2VyRG93bmxvYWQtPmRvd25sb2FkKTsKKyAgICAg
ICAgYnJvd3NlckRvd25sb2FkLT5kb3dubG9hZCA9IE5VTEw7CisgICAgfQorCisgICAgR19PQkpF
Q1RfQ0xBU1MoYnJvd3Nlcl9kb3dubG9hZF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OworfQorCitzdGF0aWMgdm9pZCBicm93c2VyX2Rvd25sb2FkX2luaXQoQnJvd3NlckRvd25sb2Fk
ICpkb3dubG9hZCkKK3sKKyAgICBHdGtXaWRnZXQgKm1haW5Cb3ggPSBndGtfYm94X25ldyhHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgNik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19C
T1goZG93bmxvYWQpLCBtYWluQm94LCBGQUxTRSwgRkFMU0UsIDApOworICAgIGd0a193aWRnZXRf
c2hvdyhtYWluQm94KTsKKworICAgIEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCwgMCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1go
bWFpbkJveCksIHZib3gsIFRSVUUsIFRSVUUsIDApOworICAgIGd0a193aWRnZXRfc2hvdyh2Ym94
KTsKKworICAgIEd0a1dpZGdldCAqc3RhdHVzQm94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFU
SU9OX0hPUklaT05UQUwsIDApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gp
LCBzdGF0dXNCb3gsIFRSVUUsIFRSVUUsIDApOworICAgIGd0a193aWRnZXRfc2hvdyhzdGF0dXNC
b3gpOworCisgICAgZG93bmxvYWQtPnN0YXR1c0xhYmVsID0gZ3RrX2xhYmVsX25ldygiU3RhcnRp
bmcgRG93bmxvYWQiKTsKKyAgICBndGtfbGFiZWxfc2V0X2VsbGlwc2l6ZShHVEtfTEFCRUwoZG93
bmxvYWQtPnN0YXR1c0xhYmVsKSwgUEFOR09fRUxMSVBTSVpFX0VORCk7CisgICAgZ3RrX21pc2Nf
c2V0X2FsaWdubWVudChHVEtfTUlTQyhkb3dubG9hZC0+c3RhdHVzTGFiZWwpLCAwLiwgMC41KTsK
KyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChzdGF0dXNCb3gpLCBkb3dubG9hZC0+c3Rh
dHVzTGFiZWwsIFRSVUUsIFRSVUUsIDApOworICAgIGd0a193aWRnZXRfc2hvdyhkb3dubG9hZC0+
c3RhdHVzTGFiZWwpOworCisgICAgZG93bmxvYWQtPnJlbWFpbmluZ0xhYmVsID0gZ3RrX2xhYmVs
X25ldyhOVUxMKTsKKyAgICBndGtfbWlzY19zZXRfYWxpZ25tZW50KEdUS19NSVNDKGRvd25sb2Fk
LT5yZW1haW5pbmdMYWJlbCksIDEuLCAwLjUpOworICAgIGd0a19ib3hfcGFja19lbmQoR1RLX0JP
WChzdGF0dXNCb3gpLCBkb3dubG9hZC0+cmVtYWluaW5nTGFiZWwsIFRSVUUsIFRSVUUsIDApOwor
ICAgIGd0a193aWRnZXRfc2hvdyhkb3dubG9hZC0+cmVtYWluaW5nTGFiZWwpOworCisgICAgZG93
bmxvYWQtPnByb2dyZXNzQmFyID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTsKKyAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgZG93bmxvYWQtPnByb2dyZXNzQmFyLCBGQUxTRSwg
RkFMU0UsIDApOworICAgIGd0a193aWRnZXRfc2hvdyhkb3dubG9hZC0+cHJvZ3Jlc3NCYXIpOwor
CisgICAgZG93bmxvYWQtPmFjdGlvbkJ1dHRvbiA9IGd0a19idXR0b25fbmV3X2Zyb21fc3RvY2so
R1RLX1NUT0NLX0NBTkNFTCk7CisgICAgZ19zaWduYWxfY29ubmVjdChkb3dubG9hZC0+YWN0aW9u
QnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soYWN0aW9uQnV0dG9uQ2xpY2tlZCksIGRvd25s
b2FkKTsKKyAgICBndGtfYm94X3BhY2tfZW5kKEdUS19CT1gobWFpbkJveCksIGRvd25sb2FkLT5h
Y3Rpb25CdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRvd25s
b2FkLT5hY3Rpb25CdXR0b24pOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyX2Rvd25sb2FkX2Ns
YXNzX2luaXQoQnJvd3NlckRvd25sb2FkQ2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFz
cyAqb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisKKyAgICBvYmplY3RDbGFz
cy0+ZmluYWxpemUgPSBicm93c2VyRG93bmxvYWRGaW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQg
ZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKFdlYktpdERvd25sb2FkICpkb3dubG9hZCwgR1BhcmFt
U3BlYyAqcGFyYW1TcGVjLCBCcm93c2VyRG93bmxvYWQgKmJyb3dzZXJEb3dubG9hZCkKK3sKKyAg
ICBXZWJLaXRVUklSZXNwb25zZSAqcmVzcG9uc2UgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3Jlc3Bv
bnNlKGRvd25sb2FkKTsKKyAgICBicm93c2VyRG93bmxvYWQtPmNvbnRlbnRMZW5ndGggPSB3ZWJr
aXRfdXJpX3Jlc3BvbnNlX2dldF9jb250ZW50X2xlbmd0aChyZXNwb25zZSk7CisgICAgY2hhciAq
dGV4dCA9IGdfc3RyZHVwX3ByaW50ZigiRG93bmxvYWRpbmcgJXMiLCB3ZWJraXRfdXJpX3Jlc3Bv
bnNlX2dldF91cmkocmVzcG9uc2UpKTsKKyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVM
KGJyb3dzZXJEb3dubG9hZC0+c3RhdHVzTGFiZWwpLCB0ZXh0KTsKKyAgICBnX2ZyZWUodGV4dCk7
Cit9CisKK3N0YXRpYyBnY2hhciAqcmVtYWluaW5nVGltZShCcm93c2VyRG93bmxvYWQgKmJyb3dz
ZXJEb3dubG9hZCkKK3sKKyAgICBndWludDY0IHRvdGFsID0gYnJvd3NlckRvd25sb2FkLT5jb250
ZW50TGVuZ3RoOworICAgIGd1aW50NjQgY3VycmVudCA9IGJyb3dzZXJEb3dubG9hZC0+ZG93bmxv
YWRlZFNpemU7CisgICAgZ2RvdWJsZSBlbGFwc2VkVGltZSA9IHdlYmtpdF9kb3dubG9hZF9nZXRf
ZWxhcHNlZF90aW1lKGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWQpOworCisgICAgaWYgKGN1cnJl
bnQgPD0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBnZG91YmxlIHBlckJ5dGVUaW1l
ID0gZWxhcHNlZFRpbWUgLyBjdXJyZW50OworICAgIGdkb3VibGUgaW50ZXJ2YWwgPSBwZXJCeXRl
VGltZSAqICh0b3RhbCAtIGN1cnJlbnQpOworCisgICAgaW50IGhvdXJzID0gKGludCkgKGludGVy
dmFsIC8gMzYwMCk7CisgICAgaW50ZXJ2YWwgLT0gaG91cnMgKiAzNjAwOworICAgIGludCBtaW5z
ID0gKGludCkgKGludGVydmFsIC8gNjApOworICAgIGludGVydmFsIC09IG1pbnMgKiA2MDsKKyAg
ICBpbnQgc2VjcyA9IChpbnQpIGludGVydmFsOworCisgICAgaWYgKGhvdXJzID4gMCkgeworICAg
ICAgICBpZiAobWlucyA+IDApCisgICAgICAgICAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmIChu
Z2V0dGV4dCAoIiV1OiUwMnUgaG91ciBsZWZ0IiwgIiV1OiUwMnUgaG91cnMgbGVmdCIsIGhvdXJz
KSwgaG91cnMsIG1pbnMpOworICAgICAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmIChuZ2V0dGV4
dCAoIiV1IGhvdXIgbGVmdCIsICIldSBob3VycyBsZWZ0IiwgaG91cnMpLCBob3Vycyk7CisgICAg
fQorCisgICAgaWYgKG1pbnMgPiAwKQorICAgICAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmIChu
Z2V0dGV4dCAoIiV1OiUwMnUgbWludXRlIGxlZnQiLCAiJXU6JTAydSBtaW51dGVzIGxlZnQiLCBt
aW5zKSwgbWlucywgc2Vjcyk7CisgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAobmdldHRleHQg
KCIldSBzZWNvbmQgbGVmdCIsICIldSBzZWNvbmRzIGxlZnQiLCBzZWNzKSwgc2Vjcyk7Cit9CisK
K3N0YXRpYyB2b2lkIGRvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0RG93bmxvYWQgKmRvd25sb2FkLCBH
UGFyYW1TcGVjICpwYXJhbVNwZWMsIEJyb3dzZXJEb3dubG9hZCAqYnJvd3NlckRvd25sb2FkKQor
eworICAgIGd0a19wcm9ncmVzc19iYXJfc2V0X2ZyYWN0aW9uKEdUS19QUk9HUkVTU19CQVIoYnJv
d3NlckRvd25sb2FkLT5wcm9ncmVzc0JhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2Via2l0X2Rvd25sb2FkX2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3MoZG93bmxvYWQpKTsK
KyAgICBjaGFyICpyZW1haW5pbmcgPSByZW1haW5pbmdUaW1lKGJyb3dzZXJEb3dubG9hZCk7Cisg
ICAgZ3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChicm93c2VyRG93bmxvYWQtPnJlbWFpbmlu
Z0xhYmVsKSwgcmVtYWluaW5nKTsKKyAgICBnX2ZyZWUocmVtYWluaW5nKTsKK30KKworc3RhdGlj
IHZvaWQgZG93bmxvYWRSZWNlaXZlZERhdGEoV2ViS2l0RG93bmxvYWQgKmRvd25sb2FkLCBndWlu
dDY0IGRhdGFMZW5ndGgsIEJyb3dzZXJEb3dubG9hZCAqYnJvd3NlckRvd25sb2FkKQoreworICAg
IGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWRlZFNpemUgKz0gZGF0YUxlbmd0aDsKK30KKworc3Rh
dGljIHZvaWQgZG93bmxvYWRGaW5pc2hlZChXZWJLaXREb3dubG9hZCAqZG93bmxvYWQsIEJyb3dz
ZXJEb3dubG9hZCAqYnJvd3NlckRvd25sb2FkKQoreworICAgIGdjaGFyICp0ZXh0ID0gZ19zdHJk
dXBfcHJpbnRmKCJEb3dubG9hZCBjb21wbGV0ZWQ6ICVzIiwgd2Via2l0X2Rvd25sb2FkX2dldF9k
ZXN0aW5hdGlvbihkb3dubG9hZCkpOworICAgIGd0a19sYWJlbF9zZXRfdGV4dChHVEtfTEFCRUwo
YnJvd3NlckRvd25sb2FkLT5zdGF0dXNMYWJlbCksIHRleHQpOworICAgIGdfZnJlZSh0ZXh0KTsK
KyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKGJyb3dzZXJEb3dubG9hZC0+cmVtYWlu
aW5nTGFiZWwpLCBOVUxMKTsKKyAgICBndGtfYnV0dG9uX3NldF9pbWFnZShHVEtfQlVUVE9OKGJy
b3dzZXJEb3dubG9hZC0+YWN0aW9uQnV0dG9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBn
dGtfaW1hZ2VfbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX09QRU4sIEdUS19JQ09OX1NJWkVfQlVU
VE9OKSk7CisgICAgZ3RrX2J1dHRvbl9zZXRfbGFiZWwoR1RLX0JVVFRPTihicm93c2VyRG93bmxv
YWQtPmFjdGlvbkJ1dHRvbiksICJPcGVuIC4uLiIpOworICAgIGJyb3dzZXJEb3dubG9hZC0+Zmlu
aXNoZWQgPSBUUlVFOworfQorCitzdGF0aWMgdm9pZCBkb3dubG9hZEZhaWxlZChXZWJLaXREb3du
bG9hZCAqZG93bmxvYWQsIEdFcnJvciAqZXJyb3IsIEJyb3dzZXJEb3dubG9hZCAqYnJvd3NlckRv
d25sb2FkKQoreworICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9ET1dOTE9B
RF9FUlJPUiwgV0VCS0lUX0RPV05MT0FEX0VSUk9SX0NBTkNFTExFRF9CWV9VU0VSKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2hhciAqZXJyb3JNZXNzYWdlID0gZ19zdHJkdXBfcHJpbnRmKCJE
b3dubG9hZCBmYWlsZWQ6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGd0a19sYWJlbF9zZXRf
dGV4dChHVEtfTEFCRUwoYnJvd3NlckRvd25sb2FkLT5zdGF0dXNMYWJlbCksIGVycm9yTWVzc2Fn
ZSk7CisgICAgZ19mcmVlKGVycm9yTWVzc2FnZSk7CisgICAgZ3RrX2xhYmVsX3NldF90ZXh0KEdU
S19MQUJFTChicm93c2VyRG93bmxvYWQtPnJlbWFpbmluZ0xhYmVsKSwgTlVMTCk7CisgICAgZ3Rr
X3dpZGdldF9zZXRfc2Vuc2l0aXZlKGJyb3dzZXJEb3dubG9hZC0+YWN0aW9uQnV0dG9uLCBGQUxT
RSk7Cit9CisKK0d0a1dpZGdldCAqYnJvd3NlckRvd25sb2FkTmV3KFdlYktpdERvd25sb2FkICpk
b3dubG9hZCkKK3sKKyAgICBCcm93c2VyRG93bmxvYWQgKmJyb3dzZXJEb3dubG9hZCA9IEJST1dT
RVJfRE9XTkxPQUQoZ19vYmplY3RfbmV3KEJST1dTRVJfVFlQRV9ET1dOTE9BRCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJvcmllbnRhdGlvbiIsIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwpKTsKKworICAgIGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWQgPSBnX29iamVjdF9yZWYo
ZG93bmxvYWQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnJvd3NlckRvd25sb2FkLT5kb3dubG9h
ZCwgIm5vdGlmeTo6cmVzcG9uc2UiLCBHX0NBTExCQUNLKGRvd25sb2FkUmVjZWl2ZWRSZXNwb25z
ZSksIGJyb3dzZXJEb3dubG9hZCk7CisgICAgZ19zaWduYWxfY29ubmVjdChicm93c2VyRG93bmxv
YWQtPmRvd25sb2FkLCAibm90aWZ5Ojplc3RpbWF0ZWQtcHJvZ3Jlc3MiLCBHX0NBTExCQUNLKGRv
d25sb2FkUHJvZ3Jlc3MpLCBicm93c2VyRG93bmxvYWQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
YnJvd3NlckRvd25sb2FkLT5kb3dubG9hZCwgInJlY2VpdmVkLWRhdGEiLCBHX0NBTExCQUNLKGRv
d25sb2FkUmVjZWl2ZWREYXRhKSwgYnJvd3NlckRvd25sb2FkKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWQsICJmaW5pc2hlZCIsIEdfQ0FMTEJBQ0soZG93
bmxvYWRGaW5pc2hlZCksIGJyb3dzZXJEb3dubG9hZCk7CisgICAgZ19zaWduYWxfY29ubmVjdChi
cm93c2VyRG93bmxvYWQtPmRvd25sb2FkLCAiZmFpbGVkIiwgR19DQUxMQkFDSyhkb3dubG9hZEZh
aWxlZCksIGJyb3dzZXJEb3dubG9hZCk7CisKKyAgICByZXR1cm4gR1RLX1dJREdFVChicm93c2Vy
RG93bmxvYWQpOworfQorCit2b2lkIGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9hZGRfZG93bmxvYWQo
QnJvd3NlckRvd25sb2Fkc0JhciAqZG93bmxvYWRzQmFyLCBXZWJLaXREb3dubG9hZCAqZG93bmxv
YWQpCit7CisgICAgR3RrV2lkZ2V0ICpicm93c2VyRG93bmxvYWQgPSBicm93c2VyRG93bmxvYWRO
ZXcoZG93bmxvYWQpOworICAgIEd0a1dpZGdldCAqY29udGVudEJveCA9IGd0a19pbmZvX2Jhcl9n
ZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihkb3dubG9hZHNCYXIpKTsKKyAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWChjb250ZW50Qm94KSwgYnJvd3NlckRvd25sb2FkLCBGQUxTRSwg
VFJVRSwgMCk7CisgICAgZ3RrX3dpZGdldF9zaG93KGJyb3dzZXJEb3dubG9hZCk7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckRvd25sb2Fkc0Jhci5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mMjUyYzU4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuaApAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnJv
d3NlckRvd25sb2Fkc0Jhcl9oCisjZGVmaW5lIEJyb3dzZXJEb3dubG9hZHNCYXJfaAorCisjaW5j
bHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgQlJPV1NFUl9UWVBFX0RPV05MT0FEU19CQVIgICAgICAgICAgICAo
YnJvd3Nlcl9kb3dubG9hZHNfYmFyX2dldF90eXBlKCkpCisjZGVmaW5lIEJST1dTRVJfRE9XTkxP
QURTX0JBUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBCUk9XU0VSX1RZUEVfRE9XTkxPQURTX0JBUiwgQnJvd3NlckRvd25sb2Fkc0JhcikpCisjZGVm
aW5lIEJST1dTRVJfSVNfRE9XTkxPQURTX0JBUihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9UWVBFKChvYmopLCBCUk9XU0VSX1RZUEVfRE9XTkxPQURTX0JBUikpCisjZGVmaW5l
IEJST1dTRVJfRE9XTkxPQURTX0JBUl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFT
U19DQVNUKChrbGFzcyksICBCUk9XU0VSX1RZUEVfRE9XTkxPQURTX0JBUiwgQnJvd3NlckRvd25s
b2Fkc0JhckNsYXNzKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19ET1dOTE9BRFNfQkFSX0NMQVNTKGts
YXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIEJST1dTRVJfVFlQRV9ET1dO
TE9BRFNfQkFSKSkKKyNkZWZpbmUgQlJPV1NFUl9ET1dOTE9BRFNfQkFSX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIEJST1dTRVJfVFlQRV9ET1dOTE9B
RFNfQkFSLCBCcm93c2VyRG93bmxvYWRzQmFyQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfQnJv
d3NlckRvd25sb2Fkc0JhciAgICAgICAgQnJvd3NlckRvd25sb2Fkc0JhcjsKK3R5cGVkZWYgc3Ry
dWN0IF9Ccm93c2VyRG93bmxvYWRzQmFyQ2xhc3MgICBCcm93c2VyRG93bmxvYWRzQmFyQ2xhc3M7
CisKK0dUeXBlIGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9nZXRfdHlwZSh2b2lkKTsKKworR3RrV2lk
Z2V0ICpicm93c2VyX2Rvd25sb2Fkc19iYXJfbmV3KHZvaWQpOwordm9pZCBicm93c2VyX2Rvd25s
b2Fkc19iYXJfYWRkX2Rvd25sb2FkKEJyb3dzZXJEb3dubG9hZHNCYXIgKmRvd25sb2Fkc0JhciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXREb3dubG9hZCAg
ICAgICpkb3dubG9hZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMKaW5kZXggNzcwNWZhMi4uYzliNTE3MCAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC0yNiw2ICsyNiw3IEBACiAgKi8KIAogI2luY2x1ZGUg
IkJyb3dzZXJXaW5kb3cuaCIKKyNpbmNsdWRlICJCcm93c2VyRG93bmxvYWRzQmFyLmgiCiAKIGVu
dW0gewogICAgIFBST1BfMCwKQEAgLTQyLDcgKzQzLDcgQEAgc3RydWN0IF9Ccm93c2VyV2luZG93
IHsKICAgICBHdGtXaWRnZXQgKmZvcndhcmRJdGVtOwogICAgIEd0a1dpZGdldCAqc3RhdHVzTGFi
ZWw7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldzsKLQorICAgIEd0a1dpZGdldCAqZG93bmxv
YWRzQmFyOwogfTsKIAogc3RydWN0IF9Ccm93c2VyV2luZG93Q2xhc3MgewpAQCAtMTA3LDYgKzEw
OCwxOCBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3TG9hZFByb2dyZXNzQ2hhbmdlZChXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwc3BlYwogICAgICAgICBnX3RpbWVvdXRfYWRkKDUw
MCwgKEdTb3VyY2VGdW5jKXJlc2V0RW50cnlQcm9ncmVzcywgd2luZG93LT51cmlFbnRyeSk7CiB9
CiAKK3N0YXRpYyB2b2lkIGRvd25sb2FkU3RhcnRlZChXZWJLaXRXZWJDb250ZXh0ICp3ZWJDb250
ZXh0LCBXZWJLaXREb3dubG9hZCAqZG93bmxvYWQsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sK
KyAgICBpZiAoIXdpbmRvdy0+ZG93bmxvYWRzQmFyKSB7CisgICAgICAgIHdpbmRvdy0+ZG93bmxv
YWRzQmFyID0gYnJvd3Nlcl9kb3dubG9hZHNfYmFyX25ldygpOworICAgICAgICBndGtfYm94X3Bh
Y2tfc3RhcnQoR1RLX0JPWCh3aW5kb3ctPm1haW5Cb3gpLCB3aW5kb3ctPmRvd25sb2Fkc0Jhciwg
RkFMU0UsIEZBTFNFLCAwKTsKKyAgICAgICAgZ3RrX2JveF9yZW9yZGVyX2NoaWxkKEdUS19CT1go
d2luZG93LT5tYWluQm94KSwgd2luZG93LT5kb3dubG9hZHNCYXIsIDApOworICAgICAgICBnX29i
amVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKHdpbmRvdy0+ZG93bmxvYWRzQmFyKSwgKGdw
b2ludGVyICopJih3aW5kb3ctPmRvd25sb2Fkc0JhcikpOworICAgICAgICBndGtfd2lkZ2V0X3No
b3cod2luZG93LT5kb3dubG9hZHNCYXIpOworICAgIH0KKyAgICBicm93c2VyX2Rvd25sb2Fkc19i
YXJfYWRkX2Rvd25sb2FkKEJST1dTRVJfRE9XTkxPQURTX0JBUih3aW5kb3ctPmRvd25sb2Fkc0Jh
ciksIGRvd25sb2FkKTsKK30KKwogc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0hpc3RvcnlJdGVt
U2VsZWN0ZWQoQnJvd3NlcldpbmRvdyAqd2luZG93LCBHdGtNZW51SXRlbSAqaXRlbSkKIHsKICAg
ICBHdGtBY3Rpb24gKmFjdGlvbiA9IGd0a19hY3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9hY3Rpb24o
R1RLX0FDVElWQVRBQkxFKGl0ZW0pKTsKQEAgLTI2Niw2ICsyNzksOCBAQCBzdGF0aWMgdm9pZCBi
cm93c2VyV2luZG93Q29uc3RydWN0ZWQoR09iamVjdCAqZ09iamVjdCkKICAgICBnX3NpZ25hbF9j
b25uZWN0KHdpbmRvdy0+d2ViVmlldywgIm5vdGlmeTo6ZXN0aW1hdGVkLWxvYWQtcHJvZ3Jlc3Mi
LCBHX0NBTExCQUNLKHdlYlZpZXdMb2FkUHJvZ3Jlc3NDaGFuZ2VkKSwgd2luZG93KTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgIm5vdGlmeTo6dGl0bGUiLCBHX0NBTExC
QUNLKHdlYlZpZXdUaXRsZUNoYW5nZWQpLCB3aW5kb3cpOwogCisgICAgZ19zaWduYWxfY29ubmVj
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2luZG93LT53ZWJWaWV3KSwgImRvd25sb2Fk
LXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkU3RhcnRlZCksIHdpbmRvdyk7CisKICAgICBX
ZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0ID0gd2Via2l0X3dlYl92aWV3X2dl
dF9iYWNrX2ZvcndhcmRfbGlzdCh3aW5kb3ctPndlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoYmFja0ZvcndhZGxpc3QsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhiYWNrRm9yd2FkbGlzdENo
YW5nZWQpLCB3aW5kb3cpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05V
bWFrZWZpbGUuYW0gYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXgg
ZTMyYTE2ZC4uMzJiOWU4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAt
MTEsNiArMTEsOCBAQCBQcm9ncmFtc19NaW5pQnJvd3Nlcl9DUFBGTEFHUyA9IFwKIAkkKEdUS19D
RkxBR1MpCiAKIFByb2dyYW1zX01pbmlCcm93c2VyX1NPVVJDRVMgPSBcCisJVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuaCBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJEb3dubG9hZHNCYXIuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuaCBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBcCiAJVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwo=
</data>
<flag name="review"
          id="117125"
          type_id="1"
          status="-"
          setter="pnormand"
    />
    <flag name="commit-queue"
          id="117247"
          type_id="3"
          status="-"
          setter="gustavo.noronha"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138962</attachid>
            <date>2012-04-26 03:16:10 -0700</date>
            <delta_ts>2012-04-26 03:44:08 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-mb-downloads.diff</filename>
            <type>text/plain</type>
            <size>19712</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3Y2Jm
M2QwLi4wMjYyYzY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDQtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBkb3dubG9hZHMgc3Vw
cG9ydCB0byBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyRG93bmxvYWRzQmFyLmM6IEFkZGVk
LgorICAgICAgICAoYnJvd3NlckRvd25sb2Fkc0JhckNoaWxkUmVtb3ZlZCk6IENsb3NlIHRoZSBk
b3dubG9hZHMgYmFyIGlmCisgICAgICAgIHRoZXJlIGFyZW4ndCBhY3RpdmUgZG93bmxvYWRzLgor
ICAgICAgICAoYnJvd3NlckRvd25sb2Fkc0JhclJlc3BvbnNlKTogRGVzdHJveSB0aGUgZG93bmxv
YWRzIGJhciB3aGVuCisgICAgICAgIGNsb3NlZC4KKyAgICAgICAgKGJyb3dzZXJfZG93bmxvYWRz
X2Jhcl9pbml0KToKKyAgICAgICAgKGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9jbGFzc19pbml0KToK
KyAgICAgICAgKGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9uZXcpOiBDcmVhdGUgYSBuZXcgZG93bmxv
YWRzIGJhci4KKyAgICAgICAgKGFjdGlvbkJ1dHRvbkNsaWNrZWQpOiBDYW5jZWwgdGhlIGRvd25s
b2FkIGlmIGNhbmNlbCBidXR0b24gd2FzCisgICAgICAgIGNsaWNrZWQsIG9yIG9wZW4gdGhlIGRv
d25sb2FkZWQgZmlsZSBpZiB0aGUgZG93bmxvYWQgZmluaXNoZWQuCisgICAgICAgIChicm93c2Vy
RG93bmxvYWRGaW5hbGl6ZSk6CisgICAgICAgIChicm93c2VyX2Rvd25sb2FkX2luaXQpOgorICAg
ICAgICAoYnJvd3Nlcl9kb3dubG9hZF9jbGFzc19pbml0KToKKyAgICAgICAgKGRvd25sb2FkUmVj
ZWl2ZWRSZXNwb25zZSk6IFVwZGF0ZSBkb3dubG9hZCBtZXNzYWdlIHVzaW5nIHRoZQorICAgICAg
ICByZXNwb25zZSBVUkkuCisgICAgICAgIChyZW1haW5pbmdUaW1lKTogSGVscGVyIGZ1bmN0aW9u
IHRvIGdldCBodW1hbiByZWFkYWJsZSByZW1haW5pbmcKKyAgICAgICAgdGltZS4KKyAgICAgICAg
KGRvd25sb2FkUHJvZ3Jlc3MpOiBVcGRhdGUgZG93bmxvYWRzIHByb2dyZXNzLgorICAgICAgICAo
ZG93bmxvYWRSZWNlaXZlZERhdGEpOgorICAgICAgICAoZG93bmxvYWRGaW5pc2hlZCk6IFVwZGF0
ZSBkb3dubG9hZCBtZXNzYWdlIGFuZCB0dXJuIGRvd25sb2FkCisgICAgICAgIGJ1dHRvbiBpbnRv
IG9wZW4uCisgICAgICAgIChkb3dubG9hZEZhaWxlZCk6IFNob3cgZXJyb3IgbWVzc2FnZSBvciBk
ZXN0cm95IHRoZSBkb3dubG9hZCBVSSBpZgorICAgICAgICBpdCB3YXMgY2FuY2VsbGVkLgorICAg
ICAgICAoYnJvd3NlckRvd25sb2FkTmV3KTogQ3JlYXRlIGEgbmV3IGRvd25sb2FkIHdpZGdldCBm
b3IgdGhlIGdpdmVuCisgICAgICAgIFdlYktpdERvd25sb2FkLgorICAgICAgICAoYnJvd3Nlcl9k
b3dubG9hZHNfYmFyX2FkZF9kb3dubG9hZCk6IEFkZCBkb3dubG9hZCB3aWRnZXQgdG8gdGhlCisg
ICAgICAgIGRvd25sb2FkcyBiYXIuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJE
b3dubG9hZHNCYXIuaDogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYzoKKyAgICAgICAgKGRvd25sb2FkU3RhcnRlZCk6IENyZWF0ZSBhIGRvd25sb2FkIHdp
ZGdldCBhbmQgYWRkIGl0IHRvIHRoZQorICAgICAgICBkb3dubG9hZHMgYmFyIHdoZW4gYSBuZXcg
ZG93bmxvYWQgaXMgc3RhcnRlZC4KKyAgICAgICAgKGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZCk6
IENvbm5lY3QgdG8KKyAgICAgICAgV2ViS2l0V2ViQ29udGV4dDo6ZG93bmxvYWQtc3RhcnRlZCBz
aWduYWwuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtOiBBZGQgbmV3
IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorCiAyMDEyLTA0LTI1ICBNYWNpZWogU3RhY2hvd2lhayAg
PG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggTGF5b3V0VGVzdEhlbHBlciB0byBjb3Jy
ZWN0bHkgcmVzdG9yZSB0aGUgY29sb3IgcHJvZmlsZSB3aGVuIGl0J3MgYSBmYWN0b3J5IHByb2Zp
bGUKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyRG93bmxvYWRzQmFy
LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckRvd25sb2Fkc0Jhci5jCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMGU2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckRvd25sb2Fkc0Jhci5jCkBAIC0wLDAgKzEsMjc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJCcm93c2VyRG93bmxvYWRzQmFyLmgiCisKKyNpbmNsdWRlIDxnbGliL2dpMThuLmg+
CisKKyNkZWZpbmUgQlJPV1NFUl9UWVBFX0RPV05MT0FEIChicm93c2VyX2Rvd25sb2FkX2dldF90
eXBlKCkpCisjZGVmaW5lIEJST1dTRVJfRE9XTkxPQUQob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX0NBU1QoKG9iaiksIEJST1dTRVJfVFlQRV9ET1dOTE9BRCwgQnJvd3NlckRvd25sb2FkKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJEb3dubG9hZCBCcm93c2VyRG93bmxvYWQ7Cit0eXBl
ZGVmIHN0cnVjdCBfQnJvd3NlckRvd25sb2FkQ2xhc3MgQnJvd3NlckRvd25sb2FkQ2xhc3M7CisK
K3N0YXRpYyBHVHlwZSBicm93c2VyX2Rvd25sb2FkX2dldF90eXBlKCk7CisKK3N0cnVjdCBfQnJv
d3NlckRvd25sb2Fkc0JhciB7CisgICAgR3RrSW5mb0JhciBwYXJlbnQ7Cit9OworCitzdHJ1Y3Qg
X0Jyb3dzZXJEb3dubG9hZHNCYXJDbGFzcyB7CisgICAgR3RrSW5mb0JhckNsYXNzIHBhcmVudENs
YXNzOworfTsKKworR19ERUZJTkVfVFlQRShCcm93c2VyRG93bmxvYWRzQmFyLCBicm93c2VyX2Rv
d25sb2Fkc19iYXIsIEdUS19UWVBFX0lORk9fQkFSKQorCitzdGF0aWMgdm9pZAorYnJvd3NlckRv
d25sb2Fkc0JhckNoaWxkUmVtb3ZlZChHdGtDb250YWluZXIgKmluZm9CYXIsICBHdGtXaWRnZXQg
KndpZGdldCwgQnJvd3NlckRvd25sb2Fkc0JhciAqZG93bmxvYWRzQmFyKQoreworICAgIEdMaXN0
ICpjaGlsZHJlbiA9IGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKGluZm9CYXIpOworICAgIGlm
IChnX2xpc3RfbGVuZ3RoKGNoaWxkcmVuKSA9PSAxKQorICAgICAgICBndGtfaW5mb19iYXJfcmVz
cG9uc2UoR1RLX0lORk9fQkFSKGRvd25sb2Fkc0JhciksIEdUS19SRVNQT05TRV9DTE9TRSk7Cisg
ICAgZ19saXN0X2ZyZWUoY2hpbGRyZW4pOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyRG93bmxv
YWRzQmFyUmVzcG9uc2UoR3RrSW5mb0JhciAqaW5mb0JhciwgZ2ludCByZXNwb25zZUlkKQorewor
ICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGluZm9CYXIpKTsKK30KKworc3RhdGlj
IHZvaWQgYnJvd3Nlcl9kb3dubG9hZHNfYmFyX2luaXQoQnJvd3NlckRvd25sb2Fkc0JhciAqZG93
bmxvYWRzQmFyKQoreworICAgIEd0a1dpZGdldCAqY29udGVudEJveCA9IGd0a19pbmZvX2Jhcl9n
ZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihkb3dubG9hZHNCYXIpKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0X2FmdGVyKGNvbnRlbnRCb3gsICJyZW1vdmUiLCBHX0NBTExCQUNLKGJyb3dzZXJE
b3dubG9hZHNCYXJDaGlsZFJlbW92ZWQpLCBkb3dubG9hZHNCYXIpOworICAgIGd0a19vcmllbnRh
YmxlX3NldF9vcmllbnRhdGlvbihHVEtfT1JJRU5UQUJMRShjb250ZW50Qm94KSwgR1RLX09SSUVO
VEFUSU9OX1ZFUlRJQ0FMKTsKKworICAgIEd0a1dpZGdldCAqdGl0bGUgPSBndGtfbGFiZWxfbmV3
KE5VTEwpOworICAgIGd0a19sYWJlbF9zZXRfbWFya3VwKEdUS19MQUJFTCh0aXRsZSksICI8c3Bh
biBzaXplPSd4eC1sYXJnZScgd2VpZ2h0PSdib2xkJz5Eb3dubG9hZHM8L3NwYW4+Iik7CisgICAg
Z3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyh0aXRsZSksIDAuLCAwLjUpOworICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRCb3gpLCB0aXRsZSwgRkFMU0UsIEZBTFNF
LCAxMik7CisgICAgZ3RrX3dpZGdldF9zaG93KHRpdGxlKTsKK30KKworc3RhdGljIHZvaWQgYnJv
d3Nlcl9kb3dubG9hZHNfYmFyX2NsYXNzX2luaXQoQnJvd3NlckRvd25sb2Fkc0JhckNsYXNzICpr
bGFzcykKK3sKKyAgICBHdGtJbmZvQmFyQ2xhc3MgKmluZm9CYXJDbGFzcyA9IEdUS19JTkZPX0JB
Ul9DTEFTUyhrbGFzcyk7CisgICAgaW5mb0JhckNsYXNzLT5yZXNwb25zZSA9IGJyb3dzZXJEb3du
bG9hZHNCYXJSZXNwb25zZTsKK30KKworR3RrV2lkZ2V0ICpicm93c2VyX2Rvd25sb2Fkc19iYXJf
bmV3KCkKK3sKKyAgICBHdGtJbmZvQmFyICpkb3dubG9hZHNCYXIgPSBHVEtfSU5GT19CQVIoZ19v
YmplY3RfbmV3KEJST1dTRVJfVFlQRV9ET1dOTE9BRFNfQkFSLCBOVUxMKSk7CisgICAgZ3RrX2lu
Zm9fYmFyX2FkZF9idXR0b25zKGRvd25sb2Fkc0JhciwgR1RLX1NUT0NLX0NMT1NFLCBHVEtfUkVT
UE9OU0VfQ0xPU0UsIE5VTEwpOworICAgIHJldHVybiBHVEtfV0lER0VUKGRvd25sb2Fkc0Jhcik7
Cit9CisKK3N0cnVjdCBfQnJvd3NlckRvd25sb2FkIHsKKyAgICBHdGtCb3ggcGFyZW50OworCisg
ICAgV2ViS2l0RG93bmxvYWQgKmRvd25sb2FkOworICAgIGd1aW50NjQgY29udGVudExlbmd0aDsK
KyAgICBndWludDY0IGRvd25sb2FkZWRTaXplOworICAgIGdib29sZWFuIGZpbmlzaGVkOworCisg
ICAgR3RrV2lkZ2V0ICpzdGF0dXNMYWJlbDsKKyAgICBHdGtXaWRnZXQgKnJlbWFpbmluZ0xhYmVs
OworICAgIEd0a1dpZGdldCAqcHJvZ3Jlc3NCYXI7CisgICAgR3RrV2lkZ2V0ICphY3Rpb25CdXR0
b247Cit9OworCitzdHJ1Y3QgX0Jyb3dzZXJEb3dubG9hZENsYXNzIHsKKyAgICBHdGtCb3hDbGFz
cyBwYXJlbnRDbGFzczsKK307CisKK0dfREVGSU5FX1RZUEUoQnJvd3NlckRvd25sb2FkLCBicm93
c2VyX2Rvd25sb2FkLCBHVEtfVFlQRV9CT1gpCisKK3N0YXRpYyB2b2lkIGFjdGlvbkJ1dHRvbkNs
aWNrZWQoR3RrQnV0dG9uICpidXR0b24sIEJyb3dzZXJEb3dubG9hZCAqYnJvd3NlckRvd25sb2Fk
KQoreworICAgIGlmICghYnJvd3NlckRvd25sb2FkLT5maW5pc2hlZCkgeworICAgICAgICB3ZWJr
aXRfZG93bmxvYWRfY2FuY2VsKGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZ3RrX3Nob3dfdXJpKGd0a193aWRnZXRfZ2V0X3NjcmVlbihH
VEtfV0lER0VUKGJyb3dzZXJEb3dubG9hZCkpLAorICAgICAgICAgICAgICAgICB3ZWJraXRfZG93
bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWQpLAorICAgICAg
ICAgICAgICAgICBndGtfZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpLCBOVUxMKTsKKyAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChicm93c2VyRG93bmxvYWQpKTsKK30KKworc3RhdGlj
IHZvaWQgYnJvd3NlckRvd25sb2FkRmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAgIEJy
b3dzZXJEb3dubG9hZCAqYnJvd3NlckRvd25sb2FkID0gQlJPV1NFUl9ET1dOTE9BRChvYmplY3Qp
OworCisgICAgaWYgKGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWQpIHsKKyAgICAgICAgZ19vYmpl
Y3RfdW5yZWYoYnJvd3NlckRvd25sb2FkLT5kb3dubG9hZCk7CisgICAgICAgIGJyb3dzZXJEb3du
bG9hZC0+ZG93bmxvYWQgPSBOVUxMOworICAgIH0KKworICAgIEdfT0JKRUNUX0NMQVNTKGJyb3dz
ZXJfZG93bmxvYWRfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGlj
IHZvaWQgYnJvd3Nlcl9kb3dubG9hZF9pbml0KEJyb3dzZXJEb3dubG9hZCAqZG93bmxvYWQpCit7
CisgICAgR3RrV2lkZ2V0ICptYWluQm94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX0hP
UklaT05UQUwsIDYpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGRvd25sb2FkKSwg
bWFpbkJveCwgRkFMU0UsIEZBTFNFLCAwKTsKKyAgICBndGtfd2lkZ2V0X3Nob3cobWFpbkJveCk7
CisKKyAgICBHdGtXaWRnZXQgKnZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVS
VElDQUwsIDApOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKG1haW5Cb3gpLCB2Ym94
LCBUUlVFLCBUUlVFLCAwKTsKKyAgICBndGtfd2lkZ2V0X3Nob3codmJveCk7CisKKyAgICBHdGtX
aWRnZXQgKnN0YXR1c0JveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFM
LCAwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdHVzQm94LCBU
UlVFLCBUUlVFLCAwKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coc3RhdHVzQm94KTsKKworICAgIGRv
d25sb2FkLT5zdGF0dXNMYWJlbCA9IGd0a19sYWJlbF9uZXcoIlN0YXJ0aW5nIERvd25sb2FkIik7
CisgICAgZ3RrX2xhYmVsX3NldF9lbGxpcHNpemUoR1RLX0xBQkVMKGRvd25sb2FkLT5zdGF0dXNM
YWJlbCksIFBBTkdPX0VMTElQU0laRV9FTkQpOworICAgIGd0a19taXNjX3NldF9hbGlnbm1lbnQo
R1RLX01JU0MoZG93bmxvYWQtPnN0YXR1c0xhYmVsKSwgMC4sIDAuNSk7CisgICAgZ3RrX2JveF9w
YWNrX3N0YXJ0KEdUS19CT1goc3RhdHVzQm94KSwgZG93bmxvYWQtPnN0YXR1c0xhYmVsLCBUUlVF
LCBUUlVFLCAwKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZG93bmxvYWQtPnN0YXR1c0xhYmVsKTsK
KworICAgIGRvd25sb2FkLT5yZW1haW5pbmdMYWJlbCA9IGd0a19sYWJlbF9uZXcoTlVMTCk7Cisg
ICAgZ3RrX21pc2Nfc2V0X2FsaWdubWVudChHVEtfTUlTQyhkb3dubG9hZC0+cmVtYWluaW5nTGFi
ZWwpLCAxLiwgMC41KTsKKyAgICBndGtfYm94X3BhY2tfZW5kKEdUS19CT1goc3RhdHVzQm94KSwg
ZG93bmxvYWQtPnJlbWFpbmluZ0xhYmVsLCBUUlVFLCBUUlVFLCAwKTsKKyAgICBndGtfd2lkZ2V0
X3Nob3coZG93bmxvYWQtPnJlbWFpbmluZ0xhYmVsKTsKKworICAgIGRvd25sb2FkLT5wcm9ncmVz
c0JhciA9IGd0a19wcm9ncmVzc19iYXJfbmV3KCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdU
S19CT1godmJveCksIGRvd25sb2FkLT5wcm9ncmVzc0JhciwgRkFMU0UsIEZBTFNFLCAwKTsKKyAg
ICBndGtfd2lkZ2V0X3Nob3coZG93bmxvYWQtPnByb2dyZXNzQmFyKTsKKworICAgIGRvd25sb2Fk
LT5hY3Rpb25CdXR0b24gPSBndGtfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19DQU5D
RUwpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZG93bmxvYWQtPmFjdGlvbkJ1dHRvbiwgImNsaWNr
ZWQiLCBHX0NBTExCQUNLKGFjdGlvbkJ1dHRvbkNsaWNrZWQpLCBkb3dubG9hZCk7CisgICAgZ3Rr
X2JveF9wYWNrX2VuZChHVEtfQk9YKG1haW5Cb3gpLCBkb3dubG9hZC0+YWN0aW9uQnV0dG9uLCBG
QUxTRSwgRkFMU0UsIDApOworICAgIGd0a193aWRnZXRfc2hvdyhkb3dubG9hZC0+YWN0aW9uQnV0
dG9uKTsKK30KKworc3RhdGljIHZvaWQgYnJvd3Nlcl9kb3dubG9hZF9jbGFzc19pbml0KEJyb3dz
ZXJEb3dubG9hZENsYXNzICprbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKm9iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0g
YnJvd3NlckRvd25sb2FkRmluYWxpemU7Cit9CisKK3N0YXRpYyB2b2lkIGRvd25sb2FkUmVjZWl2
ZWRSZXNwb25zZShXZWJLaXREb3dubG9hZCAqZG93bmxvYWQsIEdQYXJhbVNwZWMgKnBhcmFtU3Bl
YywgQnJvd3NlckRvd25sb2FkICpicm93c2VyRG93bmxvYWQpCit7CisgICAgV2ViS2l0VVJJUmVz
cG9uc2UgKnJlc3BvbnNlID0gd2Via2l0X2Rvd25sb2FkX2dldF9yZXNwb25zZShkb3dubG9hZCk7
CisgICAgYnJvd3NlckRvd25sb2FkLT5jb250ZW50TGVuZ3RoID0gd2Via2l0X3VyaV9yZXNwb25z
ZV9nZXRfY29udGVudF9sZW5ndGgocmVzcG9uc2UpOworICAgIGNoYXIgKnRleHQgPSBnX3N0cmR1
cF9wcmludGYoIkRvd25sb2FkaW5nICVzIiwgd2Via2l0X3VyaV9yZXNwb25zZV9nZXRfdXJpKHJl
c3BvbnNlKSk7CisgICAgZ3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChicm93c2VyRG93bmxv
YWQtPnN0YXR1c0xhYmVsKSwgdGV4dCk7CisgICAgZ19mcmVlKHRleHQpOworfQorCitzdGF0aWMg
Z2NoYXIgKnJlbWFpbmluZ1RpbWUoQnJvd3NlckRvd25sb2FkICpicm93c2VyRG93bmxvYWQpCit7
CisgICAgZ3VpbnQ2NCB0b3RhbCA9IGJyb3dzZXJEb3dubG9hZC0+Y29udGVudExlbmd0aDsKKyAg
ICBndWludDY0IGN1cnJlbnQgPSBicm93c2VyRG93bmxvYWQtPmRvd25sb2FkZWRTaXplOworICAg
IGdkb3VibGUgZWxhcHNlZFRpbWUgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X2VsYXBzZWRfdGltZShi
cm93c2VyRG93bmxvYWQtPmRvd25sb2FkKTsKKworICAgIGlmIChjdXJyZW50IDw9IDApCisgICAg
ICAgIHJldHVybiBOVUxMOworCisgICAgZ2RvdWJsZSBwZXJCeXRlVGltZSA9IGVsYXBzZWRUaW1l
IC8gY3VycmVudDsKKyAgICBnZG91YmxlIGludGVydmFsID0gcGVyQnl0ZVRpbWUgKiAodG90YWwg
LSBjdXJyZW50KTsKKworICAgIGludCBob3VycyA9IChpbnQpIChpbnRlcnZhbCAvIDM2MDApOwor
ICAgIGludGVydmFsIC09IGhvdXJzICogMzYwMDsKKyAgICBpbnQgbWlucyA9IChpbnQpIChpbnRl
cnZhbCAvIDYwKTsKKyAgICBpbnRlcnZhbCAtPSBtaW5zICogNjA7CisgICAgaW50IHNlY3MgPSAo
aW50KSBpbnRlcnZhbDsKKworICAgIGlmIChob3VycyA+IDApIHsKKyAgICAgICAgaWYgKG1pbnMg
PiAwKQorICAgICAgICAgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAobmdldHRleHQgKCIldTol
MDJ1IGhvdXIgbGVmdCIsICIldTolMDJ1IGhvdXJzIGxlZnQiLCBob3VycyksIGhvdXJzLCBtaW5z
KTsKKyAgICAgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAobmdldHRleHQgKCIldSBob3VyIGxl
ZnQiLCAiJXUgaG91cnMgbGVmdCIsIGhvdXJzKSwgaG91cnMpOworICAgIH0KKworICAgIGlmICht
aW5zID4gMCkKKyAgICAgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAobmdldHRleHQgKCIldTol
MDJ1IG1pbnV0ZSBsZWZ0IiwgIiV1OiUwMnUgbWludXRlcyBsZWZ0IiwgbWlucyksIG1pbnMsIHNl
Y3MpOworICAgIHJldHVybiBnX3N0cmR1cF9wcmludGYgKG5nZXR0ZXh0ICgiJXUgc2Vjb25kIGxl
ZnQiLCAiJXUgc2Vjb25kcyBsZWZ0Iiwgc2VjcyksIHNlY3MpOworfQorCitzdGF0aWMgdm9pZCBk
b3dubG9hZFByb2dyZXNzKFdlYktpdERvd25sb2FkICpkb3dubG9hZCwgR1BhcmFtU3BlYyAqcGFy
YW1TcGVjLCBCcm93c2VyRG93bmxvYWQgKmJyb3dzZXJEb3dubG9hZCkKK3sKKyAgICBndGtfcHJv
Z3Jlc3NfYmFyX3NldF9mcmFjdGlvbihHVEtfUFJPR1JFU1NfQkFSKGJyb3dzZXJEb3dubG9hZC0+
cHJvZ3Jlc3NCYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9k
b3dubG9hZF9nZXRfZXN0aW1hdGVkX3Byb2dyZXNzKGRvd25sb2FkKSk7CisgICAgY2hhciAqcmVt
YWluaW5nID0gcmVtYWluaW5nVGltZShicm93c2VyRG93bmxvYWQpOworICAgIGd0a19sYWJlbF9z
ZXRfdGV4dChHVEtfTEFCRUwoYnJvd3NlckRvd25sb2FkLT5yZW1haW5pbmdMYWJlbCksIHJlbWFp
bmluZyk7CisgICAgZ19mcmVlKHJlbWFpbmluZyk7Cit9CisKK3N0YXRpYyB2b2lkIGRvd25sb2Fk
UmVjZWl2ZWREYXRhKFdlYktpdERvd25sb2FkICpkb3dubG9hZCwgZ3VpbnQ2NCBkYXRhTGVuZ3Ro
LCBCcm93c2VyRG93bmxvYWQgKmJyb3dzZXJEb3dubG9hZCkKK3sKKyAgICBicm93c2VyRG93bmxv
YWQtPmRvd25sb2FkZWRTaXplICs9IGRhdGFMZW5ndGg7Cit9CisKK3N0YXRpYyB2b2lkIGRvd25s
b2FkRmluaXNoZWQoV2ViS2l0RG93bmxvYWQgKmRvd25sb2FkLCBCcm93c2VyRG93bmxvYWQgKmJy
b3dzZXJEb3dubG9hZCkKK3sKKyAgICBnY2hhciAqdGV4dCA9IGdfc3RyZHVwX3ByaW50ZigiRG93
bmxvYWQgY29tcGxldGVkOiAlcyIsIHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93
bmxvYWQpKTsKKyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKGJyb3dzZXJEb3dubG9h
ZC0+c3RhdHVzTGFiZWwpLCB0ZXh0KTsKKyAgICBnX2ZyZWUodGV4dCk7CisgICAgZ3RrX2xhYmVs
X3NldF90ZXh0KEdUS19MQUJFTChicm93c2VyRG93bmxvYWQtPnJlbWFpbmluZ0xhYmVsKSwgTlVM
TCk7CisgICAgZ3RrX2J1dHRvbl9zZXRfaW1hZ2UoR1RLX0JVVFRPTihicm93c2VyRG93bmxvYWQt
PmFjdGlvbkJ1dHRvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2ltYWdlX25ld19m
cm9tX3N0b2NrKEdUS19TVE9DS19PUEVOLCBHVEtfSUNPTl9TSVpFX0JVVFRPTikpOworICAgIGd0
a19idXR0b25fc2V0X2xhYmVsKEdUS19CVVRUT04oYnJvd3NlckRvd25sb2FkLT5hY3Rpb25CdXR0
b24pLCAiT3BlbiAuLi4iKTsKKyAgICBicm93c2VyRG93bmxvYWQtPmZpbmlzaGVkID0gVFJVRTsK
K30KKworc3RhdGljIHZvaWQgZG93bmxvYWRGYWlsZWQoV2ViS2l0RG93bmxvYWQgKmRvd25sb2Fk
LCBHRXJyb3IgKmVycm9yLCBCcm93c2VyRG93bmxvYWQgKmJyb3dzZXJEb3dubG9hZCkKK3sKKyAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoYnJvd3NlckRvd25sb2FkLT5k
b3dubG9hZCwgZG93bmxvYWRGaW5pc2hlZCwgYnJvd3NlckRvd25sb2FkKTsKKyAgICBpZiAoZ19l
cnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfRE9XTkxPQURfRVJST1IsIFdFQktJVF9ET1dOTE9B
RF9FUlJPUl9DQU5DRUxMRURfQllfVVNFUikpIHsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95
KEdUS19XSURHRVQoYnJvd3NlckRvd25sb2FkKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjaGFyICplcnJvck1lc3NhZ2UgPSBnX3N0cmR1cF9wcmludGYoIkRvd25sb2FkIGZhaWxl
ZDogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJF
TChicm93c2VyRG93bmxvYWQtPnN0YXR1c0xhYmVsKSwgZXJyb3JNZXNzYWdlKTsKKyAgICBnX2Zy
ZWUoZXJyb3JNZXNzYWdlKTsKKyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKGJyb3dz
ZXJEb3dubG9hZC0+cmVtYWluaW5nTGFiZWwpLCBOVUxMKTsKKyAgICBndGtfd2lkZ2V0X3NldF9z
ZW5zaXRpdmUoYnJvd3NlckRvd25sb2FkLT5hY3Rpb25CdXR0b24sIEZBTFNFKTsKK30KKworR3Rr
V2lkZ2V0ICpicm93c2VyRG93bmxvYWROZXcoV2ViS2l0RG93bmxvYWQgKmRvd25sb2FkKQorewor
ICAgIEJyb3dzZXJEb3dubG9hZCAqYnJvd3NlckRvd25sb2FkID0gQlJPV1NFUl9ET1dOTE9BRChn
X29iamVjdF9uZXcoQlJPV1NFUl9UWVBFX0RPV05MT0FELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWVudGF0
aW9uIiwgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOworCisg
ICAgYnJvd3NlckRvd25sb2FkLT5kb3dubG9hZCA9IGdfb2JqZWN0X3JlZihkb3dubG9hZCk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChicm93c2VyRG93bmxvYWQtPmRvd25sb2FkLCAibm90aWZ5Ojpy
ZXNwb25zZSIsIEdfQ0FMTEJBQ0soZG93bmxvYWRSZWNlaXZlZFJlc3BvbnNlKSwgYnJvd3NlckRv
d25sb2FkKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJyb3dzZXJEb3dubG9hZC0+ZG93bmxvYWQs
ICJub3RpZnk6OmVzdGltYXRlZC1wcm9ncmVzcyIsIEdfQ0FMTEJBQ0soZG93bmxvYWRQcm9ncmVz
cyksIGJyb3dzZXJEb3dubG9hZCk7CisgICAgZ19zaWduYWxfY29ubmVjdChicm93c2VyRG93bmxv
YWQtPmRvd25sb2FkLCAicmVjZWl2ZWQtZGF0YSIsIEdfQ0FMTEJBQ0soZG93bmxvYWRSZWNlaXZl
ZERhdGEpLCBicm93c2VyRG93bmxvYWQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnJvd3NlckRv
d25sb2FkLT5kb3dubG9hZCwgImZpbmlzaGVkIiwgR19DQUxMQkFDSyhkb3dubG9hZEZpbmlzaGVk
KSwgYnJvd3NlckRvd25sb2FkKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJyb3dzZXJEb3dubG9h
ZC0+ZG93bmxvYWQsICJmYWlsZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkRmFpbGVkKSwgYnJvd3Nl
ckRvd25sb2FkKTsKKworICAgIHJldHVybiBHVEtfV0lER0VUKGJyb3dzZXJEb3dubG9hZCk7Cit9
CisKK3ZvaWQgYnJvd3Nlcl9kb3dubG9hZHNfYmFyX2FkZF9kb3dubG9hZChCcm93c2VyRG93bmxv
YWRzQmFyICpkb3dubG9hZHNCYXIsIFdlYktpdERvd25sb2FkICpkb3dubG9hZCkKK3sKKyAgICBH
dGtXaWRnZXQgKmJyb3dzZXJEb3dubG9hZCA9IGJyb3dzZXJEb3dubG9hZE5ldyhkb3dubG9hZCk7
CisgICAgR3RrV2lkZ2V0ICpjb250ZW50Qm94ID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2Fy
ZWEoR1RLX0lORk9fQkFSKGRvd25sb2Fkc0JhcikpOworICAgIGd0a19ib3hfcGFja19zdGFydChH
VEtfQk9YKGNvbnRlbnRCb3gpLCBicm93c2VyRG93bmxvYWQsIEZBTFNFLCBUUlVFLCAwKTsKKyAg
ICBndGtfd2lkZ2V0X3Nob3coYnJvd3NlckRvd25sb2FkKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyRG93bmxvYWRzQmFyLmggYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlckRvd25sb2Fkc0Jhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjE3MDRhNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlckRvd25sb2Fkc0Jhci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCcm93c2VyRG93bmxvYWRz
QmFyX2gKKyNkZWZpbmUgQnJvd3NlckRvd25sb2Fkc0Jhcl9oCisKKyNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBCUk9XU0VSX1RZUEVfRE9XTkxPQURTX0JBUiAgICAgICAgICAgIChicm93c2VyX2Rvd25s
b2Fkc19iYXJfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgQlJPV1NFUl9ET1dOTE9BRFNfQkFSKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIEJST1dTRVJfVFlQ
RV9ET1dOTE9BRFNfQkFSLCBCcm93c2VyRG93bmxvYWRzQmFyKSkKKyNkZWZpbmUgQlJPV1NFUl9J
U19ET1dOTE9BRFNfQkFSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUo
KG9iaiksIEJST1dTRVJfVFlQRV9ET1dOTE9BRFNfQkFSKSkKKyNkZWZpbmUgQlJPV1NFUl9ET1dO
TE9BRFNfQkFSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNz
KSwgIEJST1dTRVJfVFlQRV9ET1dOTE9BRFNfQkFSLCBCcm93c2VyRG93bmxvYWRzQmFyQ2xhc3Mp
KQorI2RlZmluZSBCUk9XU0VSX0lTX0RPV05MT0FEU19CQVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgQlJPV1NFUl9UWVBFX0RPV05MT0FEU19CQVIpKQor
I2RlZmluZSBCUk9XU0VSX0RPV05MT0FEU19CQVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgQlJPV1NFUl9UWVBFX0RPV05MT0FEU19CQVIsIEJyb3dz
ZXJEb3dubG9hZHNCYXJDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2VyRG93bmxvYWRz
QmFyICAgICAgICBCcm93c2VyRG93bmxvYWRzQmFyOwordHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJE
b3dubG9hZHNCYXJDbGFzcyAgIEJyb3dzZXJEb3dubG9hZHNCYXJDbGFzczsKKworR1R5cGUgYnJv
d3Nlcl9kb3dubG9hZHNfYmFyX2dldF90eXBlKHZvaWQpOworCitHdGtXaWRnZXQgKmJyb3dzZXJf
ZG93bmxvYWRzX2Jhcl9uZXcodm9pZCk7Cit2b2lkIGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9hZGRf
ZG93bmxvYWQoQnJvd3NlckRvd25sb2Fkc0JhciAqLCBXZWJLaXREb3dubG9hZCAqKTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRl
eCA1ZmU5ODRhLi5kYTIzMzMyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMK
QEAgLTI2LDYgKzI2LDggQEAKICAqLwogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgorCisj
aW5jbHVkZSAiQnJvd3NlckRvd25sb2Fkc0Jhci5oIgogI2luY2x1ZGUgIkJyb3dzZXJTZXR0aW5n
c0RpYWxvZy5oIgogI2luY2x1ZGUgPHN0cmluZy5oPgogCkBAIC00OCw3ICs1MCw3IEBAIHN0cnVj
dCBfQnJvd3NlcldpbmRvdyB7CiAgICAgR3RrV2lkZ2V0ICpzdGF0dXNMYWJlbDsKICAgICBHdGtX
aWRnZXQgKnNldHRpbmdzRGlhbG9nOwogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXc7Ci0KKyAg
ICBHdGtXaWRnZXQgKmRvd25sb2Fkc0JhcjsKIH07CiAKIHN0cnVjdCBfQnJvd3NlcldpbmRvd0Ns
YXNzIHsKQEAgLTEzNCw2ICsxMzYsMTggQEAgc3RhdGljIHZvaWQgd2ViVmlld0xvYWRQcm9ncmVz
c0NoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMKICAgICAg
ICAgZ190aW1lb3V0X2FkZCg1MDAsIChHU291cmNlRnVuYylyZXNldEVudHJ5UHJvZ3Jlc3MsIHdp
bmRvdy0+dXJpRW50cnkpOwogfQogCitzdGF0aWMgdm9pZCBkb3dubG9hZFN0YXJ0ZWQoV2ViS2l0
V2ViQ29udGV4dCAqd2ViQ29udGV4dCwgV2ViS2l0RG93bmxvYWQgKmRvd25sb2FkLCBCcm93c2Vy
V2luZG93ICp3aW5kb3cpCit7CisgICAgaWYgKCF3aW5kb3ctPmRvd25sb2Fkc0JhcikgeworICAg
ICAgICB3aW5kb3ctPmRvd25sb2Fkc0JhciA9IGJyb3dzZXJfZG93bmxvYWRzX2Jhcl9uZXcoKTsK
KyAgICAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1god2luZG93LT5tYWluQm94KSwgd2lu
ZG93LT5kb3dubG9hZHNCYXIsIEZBTFNFLCBGQUxTRSwgMCk7CisgICAgICAgIGd0a19ib3hfcmVv
cmRlcl9jaGlsZChHVEtfQk9YKHdpbmRvdy0+bWFpbkJveCksIHdpbmRvdy0+ZG93bmxvYWRzQmFy
LCAwKTsKKyAgICAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVCh3aW5kb3ct
PmRvd25sb2Fkc0JhciksIChncG9pbnRlciAqKSYod2luZG93LT5kb3dubG9hZHNCYXIpKTsKKyAg
ICAgICAgZ3RrX3dpZGdldF9zaG93KHdpbmRvdy0+ZG93bmxvYWRzQmFyKTsKKyAgICB9CisgICAg
YnJvd3Nlcl9kb3dubG9hZHNfYmFyX2FkZF9kb3dubG9hZChCUk9XU0VSX0RPV05MT0FEU19CQVIo
d2luZG93LT5kb3dubG9hZHNCYXIpLCBkb3dubG9hZCk7Cit9CisKIHN0YXRpYyB2b2lkIGJyb3dz
ZXJXaW5kb3dIaXN0b3J5SXRlbVNlbGVjdGVkKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgR3RrTWVu
dUl0ZW0gKml0ZW0pCiB7CiAgICAgR3RrQWN0aW9uICphY3Rpb24gPSBndGtfYWN0aXZhdGFibGVf
Z2V0X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShpdGVtKSk7CkBAIC00MjMsNiArNDM3
LDggQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmpl
Y3QpCiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJtb3VzZS10YXJnZXQt
Y2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZCksIHdpbmRvdyk7
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJub3RpZnk6Onpvb20tbGV2
ZWwiLCBHX0NBTExCQUNLKHdlYlZpZXdab29tTGV2ZWxDaGFuZ2VkKSwgd2luZG93KTsKIAorICAg
IGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdpbmRvdy0+d2Vi
VmlldyksICJkb3dubG9hZC1zdGFydGVkIiwgR19DQUxMQkFDSyhkb3dubG9hZFN0YXJ0ZWQpLCB3
aW5kb3cpOworCiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FkbGlzdCA9IHdl
YmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2luZG93LT53ZWJWaWV3KTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0KGJhY2tGb3J3YWRsaXN0LCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
YmFja0ZvcndhZGxpc3RDaGFuZ2VkKSwgd2luZG93KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDMzODgyOTAuLjUwOTc0YWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05V
bWFrZWZpbGUuYW0KQEAgLTE3LDYgKzE3LDggQEAgUHJvZ3JhbXNfTWluaUJyb3dzZXJfQ1BQRkxB
R1MgPSBcCiBQcm9ncmFtc19NaW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAogCVRvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oIFwKIAlUb29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuYyBcCisJVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuaCBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJEb3dubG9hZHNCYXIuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5n
c0RpYWxvZy5oIFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9n
LmMgXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggXAo=
</data>
<flag name="review"
          id="144482"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>