<?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>35761</bug_id>
          
          <creation_ts>2010-03-04 12:02:03 -0800</creation_ts>
          <short_desc>New port: EFL; adding files to WebCore/plugins/efl (patch 1/2)</short_desc>
          <delta_ts>2010-04-15 05:48:01 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Pereira">leandro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barbieri</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>196175</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-04 12:02:03 -0800</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #35087 +++

Subject says it all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196176</commentid>
    <comment_count>1</comment_count>
      <attachid>50044</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-04 12:02:54 -0800</bug_when>
    <thetext>Created attachment 50044
Add files to WebCore/plugins/efl (patch 1/2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196179</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-04 12:07:01 -0800</bug_when>
    <thetext>Attachment 50044 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/plugins/efl/PluginViewEfl.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/plugins/efl/PluginViewEfl.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/plugins/efl/PluginViewEfl.cpp:53:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/plugins/efl/PluginViewEfl.cpp:62:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/plugins/efl/PluginPackageEfl.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/plugins/efl/PluginPackageEfl.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 6 in 4 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>196198</commentid>
    <comment_count>3</comment_count>
      <attachid>50047</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-04 13:26:10 -0800</bug_when>
    <thetext>Created attachment 50047
Add files to WebCore/plugins/efl (patch 1/2)

Add revised patch, so it passes style-queue requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197864</commentid>
    <comment_count>4</comment_count>
      <attachid>50047</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-03-09 20:14:19 -0800</bug_when>
    <thetext>Comment on attachment 50047
Add files to WebCore/plugins/efl (patch 1/2)

Upstream PLuginView code has changed, you should implement getPlatformValue and only for the attributes not handled in the common PluginView::getValue impl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198173</commentid>
    <comment_count>5</comment_count>
      <attachid>50409</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-10 09:26:48 -0800</bug_when>
    <thetext>Created attachment 50409
Add files to WebCore/plugins/efl (patch 1/2)

Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211786</commentid>
    <comment_count>6</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2010-04-12 17:23:36 -0700</bug_when>
    <thetext>Please close this bug as we&apos;ll go with Plugin*None as requested by Zecke as soon as #37478 is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211920</commentid>
    <comment_count>7</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-04-13 06:42:15 -0700</bug_when>
    <thetext>Closing this bug as we&apos;ll use the Plugin*None implementation until we have a better Plugin implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212819</commentid>
    <comment_count>8</comment_count>
      <attachid>50409</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-15 05:48:01 -0700</bug_when>
    <thetext>Comment on attachment 50409
Add files to WebCore/plugins/efl (patch 1/2)

Clearing flags.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50044</attachid>
            <date>2010-03-04 12:02:54 -0800</date>
            <delta_ts>2010-03-04 13:26:10 -0800</delta_ts>
            <desc>Add files to WebCore/plugins/efl (patch 1/2)</desc>
            <filename>webkit-efl-webcore_plugins_efl-1.diff</filename>
            <type>text/plain</type>
            <size>21827</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9lZmwvUGx1Z2luRGF0YUVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gL2Rldi9udWxsCisrKyBXZWJDb3JlL3BsdWdpbnMvZWZsL1BsdWdpbkRhdGFFZmwuY3BwCkBA
IC0wLDAgKzEsNzYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IFRyb2xsdGVj
aCBBU0EKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBk
ZSBUZWNub2xvZ2lhCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVk
ZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKKwor
I2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQor
eworICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVn
aW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1Z2lucyA9IGRiLT5w
bHVnaW5zKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgUGx1Z2luSW5mbyogaW5mbyA9IG5ldyBQbHVnaW5JbmZvOwor
ICAgICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0gcGx1Z2luc1tpXTsKKworICAgICAgICBp
bmZvLT5uYW1lID0gcGFja2FnZS0+bmFtZSgpOworICAgICAgICBpbmZvLT5maWxlID0gcGFja2Fn
ZS0+ZmlsZU5hbWUoKTsKKyAgICAgICAgaW5mby0+ZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9u
KCk7CisKKyAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlw
dGlvbnMgPSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKKyAgICAgICAgTUlNRVRvRGVz
Y3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5k
KCk7CisgICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgICAgIE1pbWVDbGFzc0luZm8qIG1pbWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKKyAgICAgICAg
ICAgIGluZm8tPm1pbWVzLmFwcGVuZChtaW1lKTsKKworICAgICAgICAgICAgbWltZS0+dHlwZSA9
IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUtPmRlc2MgPSBpdC0+c2Vjb25kOworICAgICAg
ICAgICAgbWltZS0+cGx1Z2luID0gaW5mbzsKKworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS0+dHlwZSk7
CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUo
KTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgICAgICAg
ICBtaW1lLT5zdWZmaXhlcyArPSAiLCI7CisKKyAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhl
cyArPSBleHRlbnNpb25zW2ldOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
bV9wbHVnaW5zLmFwcGVuZChpbmZvKTsKKyAgICB9Cit9CisKK3ZvaWQgUGx1Z2luRGF0YTo6cmVm
cmVzaCgpCit7CisgICAgUGx1Z2luRGF0YWJhc2UqIGRiID0gUGx1Z2luRGF0YWJhc2U6Omluc3Rh
bGxlZFBsdWdpbnMoKTsKKyAgICBkYi0+cmVmcmVzaCgpOworfQorCit9OwpJbmRleDogV2ViQ29y
ZS9wbHVnaW5zL2VmbC9QbHVnaW5QYWNrYWdlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251
bGwKKysrIFdlYkNvcmUvcGx1Z2lucy9lZmwvUGx1Z2luUGFja2FnZUVmbC5jcHAKQEAgLTAsMCAr
MSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lh
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCisKKyNpbmNsdWRl
ICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKKyNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlBsdWdpbkRlYnVnLmgiCisKKyNpbmNsdWRlIDxk
bGZjbi5oPgorI2luY2x1ZGUgPEVpbmEuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBl
ZGVmIGNoYXIqICgqTlBQX0dldE1JTUVEZXNjcmlwdGlvblByb2NQdHIpKCk7CisKK2Jvb2wgUGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKK3sKKyAgICBjb25zdCBjaGFyICplcnJtc2c7CisKKyAg
ICBpZiAoIWxvYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlBQX0dldFZhbHVl
UHJvY1B0ciBnZXRWYWx1ZSA9IDA7CisgICAgTlBQX0dldE1JTUVEZXNjcmlwdGlvblByb2NQdHIg
Z2V0TUlNRURlc2NyaXB0aW9uID0gMDsKKworICAgIGdldFZhbHVlID0gKE5QUF9HZXRWYWx1ZVBy
b2NQdHIpZGxzeW0obV9tb2R1bGUsICJOUF9HZXRWYWx1ZSIpOworICAgIGlmICgoZXJybXNnID0g
ZGxlcnJvcigpKSkgeworICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBnZXQgc3ltYm9s
IE5QX0dldFZhbHVlOiAlcyIsIGVycm1zZyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBnZXRNSU1FRGVzY3JpcHRpb24gPSAoTlBQX0dldE1JTUVEZXNjcmlwdGlvblByb2NQ
dHIpZGxzeW0obV9tb2R1bGUsICJOUF9HZXRNSU1FRGVzY3JpcHRpb24iKTsKKyAgICBpZiAoKGVy
cm1zZyA9IGRsZXJyb3IoKSkpIHsKKyAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgZ2V0
IHN5bWJvbCBOUF9HZXRNSU1FRGVzY3JpcHRpb246ICVzIiwgZXJybXNnKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNoYXIqIGJ1ZmZlciA9IDA7CisgICAgTlBFcnJvciBl
cnIgPSBnZXRWYWx1ZSgwLCBOUFBWcGx1Z2luTmFtZVN0cmluZywgKHZvaWQqKSAmYnVmZmVyKTsK
KyAgICBpZiAoZXJyICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgbV9uYW1lID0gYnVmZmVyOworCisgICAgYnVmZmVyID0gMDsKKyAgICBlcnIgPSBnZXRWYWx1
ZSgwLCBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsICh2b2lkKikgJmJ1ZmZlcik7CisgICAg
aWYgKGVyciAhPSBOUEVSUl9OT19FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1f
ZGVzY3JpcHRpb24gPSBidWZmZXI7CisgICAgZGV0ZXJtaW5lTW9kdWxlVmVyc2lvbkZyb21EZXNj
cmlwdGlvbigpOworCisgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gZ2V0TUlNRURlc2NyaXB0aW9u
KCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKKyAgICBkZXNjcmlwdGlvbi5zcGxpdChV
Q2hhcignOycpLCBmYWxzZSwgdHlwZXMpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0eXBl
cy5zaXplKCk7ICsraSkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiBtaW1lOworICAgICAgICB0
eXBlc1tpXS5zcGxpdChVQ2hhcignOicpLCB0cnVlLCBtaW1lKTsKKworICAgICAgICBpZiAobWlt
ZS5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRzOworCisgICAg
ICAgICAgICBpZiAobWltZS5zaXplKCkgPiAxKQorICAgICAgICAgICAgICAgIG1pbWVbMV0uc3Bs
aXQoVUNoYXIoJywnKSwgZmFsc2UsIGV4dHMpOworCisgICAgICAgICAgICBkZXRlcm1pbmVRdWly
a3MobWltZVswXSk7CisgICAgICAgICAgICBtX21pbWVUb0V4dGVuc2lvbnMuYWRkKG1pbWVbMF0s
IGV4dHMpOworCisgICAgICAgICAgICBpZiAobWltZS5zaXplKCkgPiAyKQorICAgICAgICAgICAg
ICAgIG1fbWltZVRvRGVzY3JpcHRpb25zLmFkZChtaW1lWzBdLCBtaW1lWzJdKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBsdWdpblBhY2thZ2U6Omxv
YWQoKQoreworICAgIGNoYXIqIGVycm1zZzsKKworICAgIGlmIChtX2lzTG9hZGVkKSB7CisgICAg
ICAgIG1fbG9hZENvdW50Kys7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG1f
bW9kdWxlID0gZGxvcGVuKG1fcGF0aC51dGY4KCkuZGF0YSgpLCBSVExEX0xBWlkgfCBSVExEX0xP
Q0FMKTsKKyAgICBpZiAoKGVycm1zZyA9IGRsZXJyb3IoKSkpIHsKKyAgICAgICAgRUlOQV9MT0df
V0FSTigiJXMgbm90IGxvYWRlZDogJXMiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSwgZXJybXNnKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1faXNMb2FkZWQgPSB0cnVlOwor
CisgICAgTlBfSW5pdGlhbGl6ZUZ1bmNQdHIgaW5pdGlhbGl6ZTsKKyAgICBOUEVycm9yIGVycjsK
KworICAgIGluaXRpYWxpemUgPSAoTlBfSW5pdGlhbGl6ZUZ1bmNQdHIpZGxzeW0obV9tb2R1bGUs
ICJOUF9Jbml0aWFsaXplIik7CisgICAgaWYgKChlcnJtc2cgPSBkbGVycm9yKCkpKSB7CisgICAg
ICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IGdldCBzeW1ib2wgTlBfSW5pdGlhbGl6ZTogJXMi
LCBlcnJtc2cpOworICAgICAgICBnb3RvIGFib3J0OworICAgIH0KKworICAgIG1fTlBQX1NodXRk
b3duID0gKE5QUF9TaHV0ZG93blByb2NQdHIpZGxzeW0obV9tb2R1bGUsICJOUF9TaHV0ZG93biIp
OworICAgIGlmICgoZXJybXNnID0gZGxlcnJvcigpKSkgeworICAgICAgICBFSU5BX0xPR19FUlIo
IkNvdWxkIG5vdCBnZXQgc3ltYm9sIE5QX1NodXRkb3duOiAlcyIsIGVycm1zZyk7CisgICAgICAg
IGdvdG8gYWJvcnQ7CisgICAgfQorCisgICAgbWVtc2V0KCZtX3BsdWdpbkZ1bmNzLCAwLCBzaXpl
b2YobV9wbHVnaW5GdW5jcykpOworICAgIG1fcGx1Z2luRnVuY3Muc2l6ZSA9IHNpemVvZihtX3Bs
dWdpbkZ1bmNzKTsKKworICAgIGluaXRpYWxpemVCcm93c2VyRnVuY3MoKTsKKworI2lmIGRlZmlu
ZWQoWFBfVU5JWCkKKyAgICBlcnIgPSBpbml0aWFsaXplKCZtX2Jyb3dzZXJGdW5jcywgJm1fcGx1
Z2luRnVuY3MpOworI2Vsc2UKKyAgICBlcnIgPSBpbml0aWFsaXplKCZtX2Jyb3dzZXJGdW5jcyk7
CisjZW5kaWYKKyAgICBpZiAoZXJyICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICBnb3RvIGFi
b3J0OworCisgICAgbV9sb2FkQ291bnQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKKworYWJvcnQ6Cisg
ICAgRUlOQV9MT0dfREJHKCJmYWlsZWQgdG8gbG9hZCBwbHVnaW4sIHVubG9hZCBpdCB3aXRob3V0
IHNodXR0aW5nIGl0IGRvd24uIik7CisgICAgdW5sb2FkV2l0aG91dFNodXRkb3duKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZWZsL1BsdWdpblZp
ZXdFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbHVnaW5zL2Vm
bC9QbHVnaW5WaWV3RWZsLmNwcApAQCAtMCwwICsxLDQ4NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKworI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZFJlcXVlc3QuaCIKKyNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIb3N0
V2luZG93LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBsdWdJbkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
bnBydW50aW1lX2ltcGwuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAi
UGx1Z2luRGVidWcuaCIKKyNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJydW50aW1lL0pTTG9jay5oIgorI2luY2x1ZGUgInJ1bnRp
bWUvSlNWYWx1ZS5oIgorI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlgxMUVtYmVk
Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiWDExV2luZG93LmgiCisKKyNpbmNsdWRlIDxFY29yZV9F
dmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBK
U0M6OkV4ZWNTdGF0ZTsKK3VzaW5nIEpTQzo6SW50ZXJwcmV0ZXI7Cit1c2luZyBKU0M6OkpTTG9j
azsKK3VzaW5nIEpTQzo6SlNPYmplY3Q7Cit1c2luZyBKU0M6OlVTdHJpbmc7CisKK3VzaW5nIG5h
bWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KworYm9vbCBQbHVnaW5WaWV3OjpkaXNwYXRjaE5QRXZlbnQoTlBFdmVudCYgZXZlbnQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGx1Z2lu
Vmlldzo6aGFsdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5W
aWV3OjpoYW5kbGVGb2N1c0luRXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUGx1Z2luVmlldzo6aGFuZGxlRm9jdXNPdXRFdmVudCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5WaWV3OjpyZXN0YXJ0KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5
Ym9hcmRFdmVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5W
aWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6ZGlzcGF0Y2hXaGVlbEV2ZW50KE5QRXZlbnQqIGV2
ZW50KQoreworICAgIFhFdmVudCogeGV2ZW50ID0gKFhFdmVudCopIGV2ZW50OworICAgIEV2YXNf
RXZlbnRfTW91c2VfV2hlZWwgZXY7CisKKyAgICBldi50aW1lc3RhbXAgPSB4ZXZlbnQtPnhidXR0
b24udGltZTsKKyAgICBldi5tb2RpZmllcnMgPSAwOworCisgICAgc3dpdGNoICh4ZXZlbnQtPnhi
dXR0b24uYnV0dG9uKSB7CisgICAgY2FzZSA0OiBldi5kaXJlY3Rpb24gPSAwOyBldi56ID0gLTE7
IGJyZWFrOworICAgIGNhc2UgNTogZXYuZGlyZWN0aW9uID0gMDsgZXYueiA9IDE7IGJyZWFrOwor
ICAgIGNhc2UgNjogZXYuZGlyZWN0aW9uID0gMTsgZXYueiA9IC0xOyBicmVhazsKKyAgICBjYXNl
IDc6IGV2LmRpcmVjdGlvbiA9IDE7IGV2LnogPSAxOyBicmVhazsKKyAgICB9CisKKyAgICBldi5j
YW52YXMueCA9IGV2Lm91dHB1dC54ID0geGV2ZW50LT54YnV0dG9uLng7CisgICAgZXYuY2FudmFz
LnkgPSBldi5vdXRwdXQueSA9IHhldmVudC0+eGJ1dHRvbi55OworCisgICAgUGxhdGZvcm1XaGVl
bEV2ZW50IHdoZWVsKCZldik7CisKKyAgICByZXR1cm4gbV9wYXJlbnRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhhbmRsZVdoZWVsRXZlbnQod2hlZWwpOworfQorCit2b2lkIFBsdWdpblZpZXc6OnVw
ZGF0ZVBsdWdpbldpZGdldCgpCit7CisgICAgaWYgKCFwYXJlbnQoKSB8fCAhbV9pc1dpbmRvd2Vk
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkp
OworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFy
ZW50KCkpOworCisgICAgSW50UmVjdCBvbGRXaW5kb3dSZWN0ID0gbV93aW5kb3dSZWN0OworICAg
IEludFJlY3Qgb2xkQ2xpcFJlY3QgPSBtX2NsaXBSZWN0OworCisgICAgbV93aW5kb3dSZWN0ID0g
SW50UmVjdChmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0KCkubG9jYXRpb24o
KSksIGZyYW1lUmVjdCgpLnNpemUoKSk7CisgICAgbV9jbGlwUmVjdCA9IHdpbmRvd0NsaXBSZWN0
KCk7CisgICAgbV9jbGlwUmVjdC5tb3ZlKC1tX3dpbmRvd1JlY3QueCgpLCAtbV93aW5kb3dSZWN0
LnkoKSk7CisKKyAgICBpZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkgeworICAgICAgICBFdmFz
X0Nvb3JkIHgsIHk7CisgICAgICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChyb290KCktPmV2
YXNPYmplY3QoKSwgJngsICZ5LCAwLCAwKTsKKyAgICAgICAgSW50UmVjdCBjaGlsZFJlY3QgPSBt
X3dpbmRvd1JlY3Q7CisgICAgICAgIGNoaWxkUmVjdC5tb3ZlKHgsIHkpOworICAgICAgICBwbGF0
Zm9ybVBsdWdpbldpZGdldCgpLT5zZXRGcmFtZVJlY3QoY2hpbGRSZWN0KTsKKyAgICAgICAgcGxh
dGZvcm1QbHVnaW5XaWRnZXQoKS0+dXBkYXRlKG1fY2xpcFJlY3QpOworICAgIH0KK30KKwordm9p
ZCBQbHVnaW5WaWV3OjpzZXRGb2N1cygpCit7CisgICAgaWYgKHBsYXRmb3JtUGx1Z2luV2lkZ2V0
KCkpCisgICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldEZvY3VzKCk7CisKKyAgICBt
X2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEZvY3VzZWROb2RlKG1fZWxlbWVudCk7CisKKyAgICBX
aWRnZXQ6OnNldEZvY3VzKCk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6c2hvdygpCit7CisgICAg
c2V0U2VsZlZpc2libGUodHJ1ZSk7CisKKyAgICBpZiAoaXNQYXJlbnRWaXNpYmxlKCkgJiYgcGxh
dGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+c2V0
VmlzaWJsZSh0cnVlKTsKKworICAgIFdpZGdldDo6c2hvdygpOworfQorCit2b2lkIFBsdWdpblZp
ZXc6OmhpZGUoKQoreworICAgIHNldFNlbGZWaXNpYmxlKGZhbHNlKTsKKworICAgIGlmIChpc1Bh
cmVudFZpc2libGUoKSAmJiBwbGF0Zm9ybVBsdWdpbldpZGdldCgpKQorICAgICAgICBwbGF0Zm9y
bVBsdWdpbldpZGdldCgpLT5zZXRWaXNpYmxlKGZhbHNlKTsKKworICAgIFdpZGdldDo6aGlkZSgp
OworfQorCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1faXNTdGFydGVkKSB7CisgICAgICAg
IHBhaW50TWlzc2luZ1BsdWdpbkljb24oY29udGV4dCwgcmVjdCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZXROUFdpbmRvd0lmTmVlZGVkKCk7CisKKyAgICBpZiAobV9pc1dpbmRv
d2VkIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworfQor
Cit2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudChTY3JvbGxWaWV3KiBwYXJlbnQpCit7CisgICAg
V2lkZ2V0OjpzZXRQYXJlbnQocGFyZW50KTsKKworICAgIGlmIChwYXJlbnQpCisgICAgICAgIGlu
aXQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFwbGF0Zm9ybVBsdWdpbldpZGdldCgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBQbHVnaW5WaWV3OjpzZXROUFdp
bmRvd1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1faXNTdGFydGVkIHx8
ICFwYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UG9pbnQgcCA9IHN0YXRpY19j
YXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9u
KCkpOworICAgIG1fbnBXaW5kb3cueCA9IHAueCgpOworICAgIG1fbnBXaW5kb3cueSA9IHAueSgp
OworCisgICAgbV9ucFdpbmRvdy53aWR0aCA9IHJlY3Qud2lkdGgoKTsKKyAgICBtX25wV2luZG93
LmhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CisKKyAgICBtX25wV2luZG93LmNsaXBSZWN0LmxlZnQg
PSAwOworICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QudG9wID0gMDsKKyAgICBtX25wV2luZG93LmNs
aXBSZWN0LnJpZ2h0ID0gcmVjdC53aWR0aCgpOworICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QuYm90
dG9tID0gcmVjdC5oZWlnaHQoKTsKKworICAgIGlmIChtX25wV2luZG93LnggPCAwIHx8IG1fbnBX
aW5kb3cueSA8IDAKKyAgICAgICAgfHwgbV9ucFdpbmRvdy53aWR0aCA8PSAwIHx8IG1fbnBXaW5k
b3cuaGVpZ2h0IDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3BsdWdpbi0+cGx1
Z2luRnVuY3MoKS0+c2V0d2luZG93KSB7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQ
bHVnaW5WaWV3KHRoaXMpOworICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhmYWxzZSk7CisgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CisgICAgICAg
IG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT5zZXR3aW5kb3cobV9pbnN0YW5jZSwgJm1fbnBXaW5k
b3cpOworICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmll
dzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7CisKKyAgICAgICAgaWYgKCFtX2lzV2luZG93ZWQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKHBsYXRmb3JtUGx1Z2luV2lk
Z2V0KCkpOworICAgIH0KK30KKwordm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVk
KCkKK3sKK30KK3ZvaWQgUGx1Z2luVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUp
Cit7CisgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpID09IHZpc2libGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIFdpZGdldDo6c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsKKworICAgIGlmIChp
c1NlbGZWaXNpYmxlKCkgJiYgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZv
cm1QbHVnaW5XaWRnZXQoKS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKK30KKwordm9pZCBQbHVnaW5W
aWV3OjpzdG9wKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitOUEVycm9yIFBsdWdp
blZpZXc6OmhhbmRsZVBvc3RSZWFkRmlsZShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgdWludDMyIGxl
biwgY29uc3QgY2hhciogYnVmKQoreworICAgIFN0cmluZyBmaWxlbmFtZShidWYsIGxlbik7CisK
KyAgICBpZiAoZmlsZW5hbWUuc3RhcnRzV2l0aCgiZmlsZTovLy8iKSkKKyAgICAgICAgZmlsZW5h
bWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoOCk7CisKKyAgICBpZiAoIWZpbGVFeGlzdHMoZmlsZW5h
bWUpKQorICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CisKKyAgICBGSUxFKiBm
aWxlSGFuZGxlID0gZm9wZW4oZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgInIiKTsKKworICAgIGlm
ICghZmlsZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOworCisg
ICAgaW50IGJ5dGVzUmVhZCA9IGZyZWFkKGJ1ZmZlci5kYXRhKCksIDEsIDAsIGZpbGVIYW5kbGUp
OworCisgICAgZmNsb3NlKGZpbGVIYW5kbGUpOworCisgICAgaWYgKGJ5dGVzUmVhZCA8PSAwKQor
ICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CisKKyAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7Cit9CisKK05QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFy
aWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQoreworICAgIHN3aXRjaCAodmFyaWFibGUpIHsK
KyAgICBjYXNlIE5QTlZUb29sa2l0OgorICAgICAgICAqc3RhdGljX2Nhc3Q8dWludDMyKj4odmFs
dWUpID0gMDsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworCisgICAgY2FzZSBOUE5W
U3VwcG9ydHNYRW1iZWRCb29sOgorICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUp
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworCisgICAgY2FzZSBOUE5W
amF2YXNjcmlwdEVuYWJsZWRCb29sOgorICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFs
dWUpID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgfQorfQorCitOUEVy
cm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1
ZSkKK3sKKyAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgY2FzZSBOUE5WeERpc3BsYXk6Cisg
ICAgICAgIGlmIChwbGF0Zm9ybVBsdWdpbldpZGdldCgpKQorICAgICAgICAgICAgKih2b2lkICoq
KXZhbHVlID0gcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+eDExSW5mbygpLT5kaXNwbGF5KCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICoodm9pZCAqKil2YWx1ZSA9IChEaXNwbGF5KikgZWNv
cmVfeF9kaXNwbGF5X2dldCgpOworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisKKyAg
ICBjYXNlIE5QTlZ4dEFwcENvbnRleHQ6CisgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOworCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgY2FzZSBOUE5WV2lu
ZG93TlBPYmplY3Q6IHsKKyAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKQorICAgICAg
ICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisKKyAgICAgICAgTlBPYmplY3QqIHdp
bmRvd1NjcmlwdE9iamVjdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTY3JpcHRO
UE9iamVjdCgpOworCisgICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBy
ZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2pl
Y3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KKyAgICAgICAgaWYgKHdpbmRvd1NjcmlwdE9iamVj
dCkKKyAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7CisK
KyAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOworICAgICAgICAqdiA9IHdpbmRvd1Nj
cmlwdE9iamVjdDsKKworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisg
ICAgY2FzZSBOUE5WUGx1Z2luRWxlbWVudE5QT2JqZWN0OiB7CisgICAgICAgIGlmIChtX2lzSmF2
YVNjcmlwdFBhdXNlZCkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwor
CisgICAgICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QgPSAwOworCisgICAgICAgIGlm
IChtX2VsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05h
bWUoZW1iZWRUYWcpIHx8IG1fZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQorICAgICAg
ICAgICAgcGx1Z2luU2NyaXB0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQq
PihtX2VsZW1lbnQpLT5nZXROUE9iamVjdCgpOworCisgICAgICAgIC8vIFJldHVybiB2YWx1ZSBp
cyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVzY3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3
Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1bnRpbWUuaHRtbD4KKyAgICAgICAgaWYg
KHBsdWdpblNjcmlwdE9iamVjdCkKKyAgICAgICAgICAgIF9OUE5fUmV0YWluT2JqZWN0KHBsdWdp
blNjcmlwdE9iamVjdCk7CisKKyAgICAgICAgdm9pZCoqIHYgPSAodm9pZCoqKXZhbHVlOworICAg
ICAgICAqdiA9IHBsdWdpblNjcmlwdE9iamVjdDsKKworICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CisgICAgfQorI2VuZGlmCisKKyAgICBjYXNlIE5QTlZuZXRzY2FwZVdpbmRvdzogewor
ICAgICAgICB2b2lkKiB3ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odmFsdWUpOworICAgICAg
ICBFdmFzX09iamVjdCogd2lkZ2V0ID0gbV9wYXJlbnRGcmFtZS0+dmlldygpLT5ob3N0V2luZG93
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgICAgICBFdmFzKiBldmFzID0gZXZhc19vYmpl
Y3RfZXZhc19nZXQod2lkZ2V0KTsKKyAgICAgICAgRWNvcmVfRXZhcyogZWUgPSBlY29yZV9ldmFz
X2Vjb3JlX2V2YXNfZ2V0KGV2YXMpOworICAgICAgICAqKChYSUQgKil3KSA9IChXaW5kb3cpIGVj
b3JlX2V2YXNfd2luZG93X2dldChlZSk7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
KyAgICB9CisKKyAgICBjYXNlIE5QTlZUb29sa2l0OgorICAgICAgICBpZiAobV9wbHVnaW4tPnF1
aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0KSkgeworICAgICAg
ICAgICAgKigodWludDMyICopdmFsdWUpID0gMjsKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9O
T19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICAvLyBmYWxsIHRocm91Z2gKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZ2V0VmFsdWVTdGF0aWModmFyaWFibGUsIHZhbHVlKTsKKyAgICB9
Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICBpZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkgeworICAgICAgICBwbGF0Zm9y
bVBsdWdpbldpZGdldCgpLT51cGRhdGUocmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpbnZhbGlkYXRlV2luZG93bGVzc1BsdWdpblJlY3QocmVjdCk7Cit9CisKK3ZvaWQgUGx1
Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoTlBSZWN0KiByZWN0KQoreworICAgIGlmICghcmVjdCkg
eworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJ
bnRSZWN0IHIocmVjdC0+bGVmdCwgcmVjdC0+dG9wLCByZWN0LT5yaWdodCAtIHJlY3QtPmxlZnQs
IHJlY3QtPmJvdHRvbSAtIHJlY3QtPnRvcCk7CisKKyAgICBpbnZhbGlkYXRlUmVjdChyKTsKK30K
Kwordm9pZCBQbHVnaW5WaWV3OjppbnZhbGlkYXRlUmVnaW9uKE5QUmVnaW9uIHJlZ2lvbikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpblZpZXc6OmZvcmNlUmVkcmF3
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitQbHVnaW5WaWV3Ojp+UGx1Z2luVmll
dygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBQbHVnaW5WaWV3OjpwbGF0
Zm9ybVN0YXJ0KCkKK3sKKyAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOworICAgIEFTU0VSVChtX3N0
YXR1cyA9PSBQbHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkpOworCisgICAgaWYgKG1fcGx1
Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZSkgeworICAgICAgICBQbHVnaW5WaWV3OjpzZXRD
dXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nr
cyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOwor
ICAgICAgICBtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUobV9pbnN0YW5jZSwgTlBQ
VnBsdWdpbk5lZWRzWEVtYmVkLCAmbV9uZWVkc1hFbWJlZCk7CisgICAgICAgIHNldENhbGxpbmdQ
bHVnaW4oZmFsc2UpOworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldygw
KTsKKyAgICB9CisKKyAgICBpZiAobV9uZWVkc1hFbWJlZCkgeworICAgICAgICBFdmFzX09iamVj
dCogbyA9IG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VD
bGllbnQoKTsKKyAgICAgICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG8pOwor
ICAgICAgICBzZXRQbGF0Zm9ybVBsdWdpbldpZGdldChuZXcgWDExRW1iZWRDb250YWluZXIoZXZh
cywgdGhpcykpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgIG1fc3RhdHVzID0gUGx1Z2luU3RhdHVzQ2FuTm90TG9hZFBsdWdpbjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHNob3coKTsKKyAgICBOUFNldFdpbmRvd0NhbGxiYWNr
U3RydWN0KiB3c2kgPSBuZXcgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCgpOworCisgICAgd3Np
LT50eXBlID0gMDsKKworICAgIFgxMUluZm8qIGluZm8gPSBwbGF0Zm9ybVBsdWdpbldpZGdldCgp
LT54MTFJbmZvKCk7CisKKyAgICB3c2ktPmRpc3BsYXkgPSBpbmZvLT5kaXNwbGF5KCk7CisgICAg
d3NpLT52aXN1YWwgPSBpbmZvLT52aXN1YWwoKTsKKyAgICB3c2ktPmRlcHRoID0gaW5mby0+ZGVw
dGgoKTsKKyAgICB3c2ktPmNvbG9ybWFwID0gaW5mby0+Y29sb3JtYXAoKTsKKyAgICBtX25wV2lu
ZG93LndzX2luZm8gPSB3c2k7CisKKyAgICBtX25wV2luZG93LnR5cGUgPSBOUFdpbmRvd1R5cGVX
aW5kb3c7CisgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAodm9pZCopIHBsYXRmb3JtUGx1Z2luV2lk
Z2V0KCktPndpbklkKCk7CisKKyAgICBpZiAoIShtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMo
UGx1Z2luUXVpcmtEZWZlckZpcnN0U2V0V2luZG93Q2FsbCkpKQorICAgICAgICBzZXROUFdpbmRv
d1JlY3QoZnJhbWVSZWN0KCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUGx1Z2lu
Vmlldzo6cGxhdGZvcm1EZXN0cm95KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDMtMDQgIExlYW5k
cm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEVGTCBwb3J0IGZpbGVzIHRvIHBsdWdp
bnMvZWZsLgorICAgICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzM1NzYxCisKKyAgICAgICAgKiBw
bHVnaW5zL2VmbC9QbHVnaW5EYXRhRWZsLmNwcDogQWRkZWQuCisgICAgICAgICogcGx1Z2lucy9l
ZmwvUGx1Z2luUGFja2FnZUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvZWZsL1Bs
dWdpblZpZXdFZmwuY3BwOiBBZGRlZC4KKwogMjAxMC0wMy0wNCAgQW50b25pbyBHb21lcyAgPHRv
bmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50047</attachid>
            <date>2010-03-04 13:26:10 -0800</date>
            <delta_ts>2010-03-10 09:27:00 -0800</delta_ts>
            <desc>Add files to WebCore/plugins/efl (patch 1/2)</desc>
            <filename>webkit-efl-webcore_plugins_efl-1.diff</filename>
            <type>text/plain</type>
            <size>21825</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9lZmwvUGx1Z2luRGF0YUVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gL2Rldi9udWxsCisrKyBXZWJDb3JlL3BsdWdpbnMvZWZsL1BsdWdpbkRhdGFFZmwuY3BwCkBA
IC0wLDAgKzEsNzYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IFRyb2xsdGVj
aCBBU0EKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBk
ZSBUZWNub2xvZ2lhCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVk
ZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKKwor
I2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoKQor
eworICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVn
aW5zKCk7CisgICAgY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiAmcGx1Z2lucyA9IGRiLT5w
bHVnaW5zKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgUGx1Z2luSW5mbyogaW5mbyA9IG5ldyBQbHVnaW5JbmZvOwor
ICAgICAgICBQbHVnaW5QYWNrYWdlKiBwYWNrYWdlID0gcGx1Z2luc1tpXTsKKworICAgICAgICBp
bmZvLT5uYW1lID0gcGFja2FnZS0+bmFtZSgpOworICAgICAgICBpbmZvLT5maWxlID0gcGFja2Fn
ZS0+ZmlsZU5hbWUoKTsKKyAgICAgICAgaW5mby0+ZGVzYyA9IHBhY2thZ2UtPmRlc2NyaXB0aW9u
KCk7CisKKyAgICAgICAgY29uc3QgTUlNRVRvRGVzY3JpcHRpb25zTWFwJiBtaW1lVG9EZXNjcmlw
dGlvbnMgPSBwYWNrYWdlLT5taW1lVG9EZXNjcmlwdGlvbnMoKTsKKyAgICAgICAgTUlNRVRvRGVz
Y3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuZW5k
KCk7CisgICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgICAgIE1pbWVDbGFzc0luZm8qIG1pbWUgPSBuZXcgTWltZUNsYXNzSW5mbzsKKyAgICAgICAg
ICAgIGluZm8tPm1pbWVzLmFwcGVuZChtaW1lKTsKKworICAgICAgICAgICAgbWltZS0+dHlwZSA9
IGl0LT5maXJzdDsKKyAgICAgICAgICAgIG1pbWUtPmRlc2MgPSBpdC0+c2Vjb25kOworICAgICAg
ICAgICAgbWltZS0+cGx1Z2luID0gaW5mbzsKKworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXh0ZW5zaW9ucyA9IHBhY2thZ2UtPm1pbWVUb0V4dGVuc2lvbnMoKS5nZXQobWltZS0+dHlwZSk7
CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUo
KTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgICAgICAg
ICBtaW1lLT5zdWZmaXhlcyArPSAiLCI7CisKKyAgICAgICAgICAgICAgICBtaW1lLT5zdWZmaXhl
cyArPSBleHRlbnNpb25zW2ldOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
bV9wbHVnaW5zLmFwcGVuZChpbmZvKTsKKyAgICB9Cit9CisKK3ZvaWQgUGx1Z2luRGF0YTo6cmVm
cmVzaCgpCit7CisgICAgUGx1Z2luRGF0YWJhc2UqIGRiID0gUGx1Z2luRGF0YWJhc2U6Omluc3Rh
bGxlZFBsdWdpbnMoKTsKKyAgICBkYi0+cmVmcmVzaCgpOworfQorCit9OwpJbmRleDogV2ViQ29y
ZS9wbHVnaW5zL2VmbC9QbHVnaW5QYWNrYWdlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251
bGwKKysrIFdlYkNvcmUvcGx1Z2lucy9lZmwvUGx1Z2luUGFja2FnZUVmbC5jcHAKQEAgLTAsMCAr
MSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lh
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCisKKyNpbmNsdWRl
ICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJQ
bHVnaW5EZWJ1Zy5oIgorI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCisKKyNpbmNsdWRlIDxF
aW5hLmg+CisjaW5jbHVkZSA8ZGxmY24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBl
ZGVmIGNoYXIqICgqTlBQX0dldE1JTUVEZXNjcmlwdGlvblByb2NQdHIpKCk7CisKK2Jvb2wgUGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKK3sKKyAgICBjb25zdCBjaGFyICplcnJtc2c7CisKKyAg
ICBpZiAoIWxvYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlBQX0dldFZhbHVl
UHJvY1B0ciBnZXRWYWx1ZSA9IDA7CisgICAgTlBQX0dldE1JTUVEZXNjcmlwdGlvblByb2NQdHIg
Z2V0TUlNRURlc2NyaXB0aW9uID0gMDsKKworICAgIGdldFZhbHVlID0gKE5QUF9HZXRWYWx1ZVBy
b2NQdHIpZGxzeW0obV9tb2R1bGUsICJOUF9HZXRWYWx1ZSIpOworICAgIGlmICgoZXJybXNnID0g
ZGxlcnJvcigpKSkgeworICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBnZXQgc3ltYm9s
IE5QX0dldFZhbHVlOiAlcyIsIGVycm1zZyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBnZXRNSU1FRGVzY3JpcHRpb24gPSAoTlBQX0dldE1JTUVEZXNjcmlwdGlvblByb2NQ
dHIpZGxzeW0obV9tb2R1bGUsICJOUF9HZXRNSU1FRGVzY3JpcHRpb24iKTsKKyAgICBpZiAoKGVy
cm1zZyA9IGRsZXJyb3IoKSkpIHsKKyAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgZ2V0
IHN5bWJvbCBOUF9HZXRNSU1FRGVzY3JpcHRpb246ICVzIiwgZXJybXNnKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNoYXIqIGJ1ZmZlciA9IDA7CisgICAgTlBFcnJvciBl
cnIgPSBnZXRWYWx1ZSgwLCBOUFBWcGx1Z2luTmFtZVN0cmluZywgKHZvaWQqKSAmYnVmZmVyKTsK
KyAgICBpZiAoZXJyICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgbV9uYW1lID0gYnVmZmVyOworCisgICAgYnVmZmVyID0gMDsKKyAgICBlcnIgPSBnZXRWYWx1
ZSgwLCBOUFBWcGx1Z2luRGVzY3JpcHRpb25TdHJpbmcsICh2b2lkKikgJmJ1ZmZlcik7CisgICAg
aWYgKGVyciAhPSBOUEVSUl9OT19FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1f
ZGVzY3JpcHRpb24gPSBidWZmZXI7CisgICAgZGV0ZXJtaW5lTW9kdWxlVmVyc2lvbkZyb21EZXNj
cmlwdGlvbigpOworCisgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gZ2V0TUlNRURlc2NyaXB0aW9u
KCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKKyAgICBkZXNjcmlwdGlvbi5zcGxpdChV
Q2hhcignOycpLCBmYWxzZSwgdHlwZXMpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0eXBl
cy5zaXplKCk7ICsraSkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiBtaW1lOworICAgICAgICB0
eXBlc1tpXS5zcGxpdChVQ2hhcignOicpLCB0cnVlLCBtaW1lKTsKKworICAgICAgICBpZiAobWlt
ZS5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRzOworCisgICAg
ICAgICAgICBpZiAobWltZS5zaXplKCkgPiAxKQorICAgICAgICAgICAgICAgIG1pbWVbMV0uc3Bs
aXQoVUNoYXIoJywnKSwgZmFsc2UsIGV4dHMpOworCisgICAgICAgICAgICBkZXRlcm1pbmVRdWly
a3MobWltZVswXSk7CisgICAgICAgICAgICBtX21pbWVUb0V4dGVuc2lvbnMuYWRkKG1pbWVbMF0s
IGV4dHMpOworCisgICAgICAgICAgICBpZiAobWltZS5zaXplKCkgPiAyKQorICAgICAgICAgICAg
ICAgIG1fbWltZVRvRGVzY3JpcHRpb25zLmFkZChtaW1lWzBdLCBtaW1lWzJdKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBsdWdpblBhY2thZ2U6Omxv
YWQoKQoreworICAgIGNoYXIqIGVycm1zZzsKKworICAgIGlmIChtX2lzTG9hZGVkKSB7CisgICAg
ICAgIG1fbG9hZENvdW50Kys7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIG1f
bW9kdWxlID0gZGxvcGVuKG1fcGF0aC51dGY4KCkuZGF0YSgpLCBSVExEX0xBWlkgfCBSVExEX0xP
Q0FMKTsKKyAgICBpZiAoKGVycm1zZyA9IGRsZXJyb3IoKSkpIHsKKyAgICAgICAgRUlOQV9MT0df
V0FSTigiJXMgbm90IGxvYWRlZDogJXMiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSwgZXJybXNnKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1faXNMb2FkZWQgPSB0cnVlOwor
CisgICAgTlBfSW5pdGlhbGl6ZUZ1bmNQdHIgaW5pdGlhbGl6ZTsKKyAgICBOUEVycm9yIGVycjsK
KworICAgIGluaXRpYWxpemUgPSAoTlBfSW5pdGlhbGl6ZUZ1bmNQdHIpZGxzeW0obV9tb2R1bGUs
ICJOUF9Jbml0aWFsaXplIik7CisgICAgaWYgKChlcnJtc2cgPSBkbGVycm9yKCkpKSB7CisgICAg
ICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IGdldCBzeW1ib2wgTlBfSW5pdGlhbGl6ZTogJXMi
LCBlcnJtc2cpOworICAgICAgICBnb3RvIGFib3J0OworICAgIH0KKworICAgIG1fTlBQX1NodXRk
b3duID0gKE5QUF9TaHV0ZG93blByb2NQdHIpZGxzeW0obV9tb2R1bGUsICJOUF9TaHV0ZG93biIp
OworICAgIGlmICgoZXJybXNnID0gZGxlcnJvcigpKSkgeworICAgICAgICBFSU5BX0xPR19FUlIo
IkNvdWxkIG5vdCBnZXQgc3ltYm9sIE5QX1NodXRkb3duOiAlcyIsIGVycm1zZyk7CisgICAgICAg
IGdvdG8gYWJvcnQ7CisgICAgfQorCisgICAgbWVtc2V0KCZtX3BsdWdpbkZ1bmNzLCAwLCBzaXpl
b2YobV9wbHVnaW5GdW5jcykpOworICAgIG1fcGx1Z2luRnVuY3Muc2l6ZSA9IHNpemVvZihtX3Bs
dWdpbkZ1bmNzKTsKKworICAgIGluaXRpYWxpemVCcm93c2VyRnVuY3MoKTsKKworI2lmIGRlZmlu
ZWQoWFBfVU5JWCkKKyAgICBlcnIgPSBpbml0aWFsaXplKCZtX2Jyb3dzZXJGdW5jcywgJm1fcGx1
Z2luRnVuY3MpOworI2Vsc2UKKyAgICBlcnIgPSBpbml0aWFsaXplKCZtX2Jyb3dzZXJGdW5jcyk7
CisjZW5kaWYKKyAgICBpZiAoZXJyICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICBnb3RvIGFi
b3J0OworCisgICAgbV9sb2FkQ291bnQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKKworYWJvcnQ6Cisg
ICAgRUlOQV9MT0dfREJHKCJmYWlsZWQgdG8gbG9hZCBwbHVnaW4sIHVubG9hZCBpdCB3aXRob3V0
IHNodXR0aW5nIGl0IGRvd24uIik7CisgICAgdW5sb2FkV2l0aG91dFNodXRkb3duKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZWZsL1BsdWdpblZp
ZXdFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbHVnaW5zL2Vm
bC9QbHVnaW5WaWV3RWZsLmNwcApAQCAtMCwwICsxLDQ4NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIb3N0V2lu
ZG93LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgorI2luY2x1ZGUgIlBsdWdp
blBhY2thZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlgxMUVtYmVkQ29u
dGFpbmVyLmgiCisjaW5jbHVkZSAiWDExV2luZG93LmgiCisjaW5jbHVkZSAibnBydW50aW1lX2lt
cGwuaCIKKyNpbmNsdWRlICJydW50aW1lL0pTTG9jay5oIgorI2luY2x1ZGUgInJ1bnRpbWUvSlNW
YWx1ZS5oIgorI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorCisjaW5jbHVkZSA8RWNvcmVfRXZh
cy5oPgorI2luY2x1ZGUgPEVjb3JlX1guaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgSlND
OjpFeGVjU3RhdGU7Cit1c2luZyBKU0M6OkludGVycHJldGVyOwordXNpbmcgSlNDOjpKU0xvY2s7
Cit1c2luZyBKU0M6OkpTT2JqZWN0OwordXNpbmcgSlNDOjpVU3RyaW5nOworCit1c2luZyBuYW1l
c3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIFdURjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K2Jvb2wgUGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KE5QRXZlbnQmIGV2ZW50KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBsdWdpblZp
ZXc6OmhhbHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGx1Z2luVmll
dzo6aGFuZGxlRm9jdXNJbkV2ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFBsdWdpblZpZXc6OmhhbmRsZUZvY3VzT3V0RXZlbnQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6cmVzdGFydCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGx1Z2luVmll
dzo6aGFuZGxlTW91c2VFdmVudChNb3VzZUV2ZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCitib29sIFBsdWdpblZpZXc6OmRpc3BhdGNoV2hlZWxFdmVudChOUEV2ZW50KiBldmVu
dCkKK3sKKyAgICBYRXZlbnQqIHhldmVudCA9IChYRXZlbnQqKSBldmVudDsKKyAgICBFdmFzX0V2
ZW50X01vdXNlX1doZWVsIGV2OworCisgICAgZXYudGltZXN0YW1wID0geGV2ZW50LT54YnV0dG9u
LnRpbWU7CisgICAgZXYubW9kaWZpZXJzID0gMDsKKworICAgIHN3aXRjaCAoeGV2ZW50LT54YnV0
dG9uLmJ1dHRvbikgeworICAgIGNhc2UgNDogZXYuZGlyZWN0aW9uID0gMDsgZXYueiA9IC0xOyBi
cmVhazsKKyAgICBjYXNlIDU6IGV2LmRpcmVjdGlvbiA9IDA7IGV2LnogPSAxOyBicmVhazsKKyAg
ICBjYXNlIDY6IGV2LmRpcmVjdGlvbiA9IDE7IGV2LnogPSAtMTsgYnJlYWs7CisgICAgY2FzZSA3
OiBldi5kaXJlY3Rpb24gPSAxOyBldi56ID0gMTsgYnJlYWs7CisgICAgfQorCisgICAgZXYuY2Fu
dmFzLnggPSBldi5vdXRwdXQueCA9IHhldmVudC0+eGJ1dHRvbi54OworICAgIGV2LmNhbnZhcy55
ID0gZXYub3V0cHV0LnkgPSB4ZXZlbnQtPnhidXR0b24ueTsKKworICAgIFBsYXRmb3JtV2hlZWxF
dmVudCB3aGVlbCgmZXYpOworCisgICAgcmV0dXJuIG1fcGFyZW50RnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsKTsKK30KKwordm9pZCBQbHVnaW5WaWV3Ojp1cGRh
dGVQbHVnaW5XaWRnZXQoKQoreworICAgIGlmICghcGFyZW50KCkgfHwgIW1faXNXaW5kb3dlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsK
KyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVu
dCgpKTsKKworICAgIEludFJlY3Qgb2xkV2luZG93UmVjdCA9IG1fd2luZG93UmVjdDsKKyAgICBJ
bnRSZWN0IG9sZENsaXBSZWN0ID0gbV9jbGlwUmVjdDsKKworICAgIG1fd2luZG93UmVjdCA9IElu
dFJlY3QoZnJhbWVWaWV3LT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkp
LCBmcmFtZVJlY3QoKS5zaXplKCkpOworICAgIG1fY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVjdCgp
OworICAgIG1fY2xpcFJlY3QubW92ZSgtbV93aW5kb3dSZWN0LngoKSwgLW1fd2luZG93UmVjdC55
KCkpOworCisgICAgaWYgKHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpIHsKKyAgICAgICAgRXZhc19D
b29yZCB4LCB5OworICAgICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQocm9vdCgpLT5ldmFz
T2JqZWN0KCksICZ4LCAmeSwgMCwgMCk7CisgICAgICAgIEludFJlY3QgY2hpbGRSZWN0ID0gbV93
aW5kb3dSZWN0OworICAgICAgICBjaGlsZFJlY3QubW92ZSh4LCB5KTsKKyAgICAgICAgcGxhdGZv
cm1QbHVnaW5XaWRnZXQoKS0+c2V0RnJhbWVSZWN0KGNoaWxkUmVjdCk7CisgICAgICAgIHBsYXRm
b3JtUGx1Z2luV2lkZ2V0KCktPnVwZGF0ZShtX2NsaXBSZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQg
UGx1Z2luVmlldzo6c2V0Rm9jdXMoKQoreworICAgIGlmIChwbGF0Zm9ybVBsdWdpbldpZGdldCgp
KQorICAgICAgICBwbGF0Zm9ybVBsdWdpbldpZGdldCgpLT5zZXRGb2N1cygpOworCisgICAgbV9l
bGVtZW50LT5kb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZShtX2VsZW1lbnQpOworCisgICAgV2lk
Z2V0OjpzZXRGb2N1cygpOworfQorCit2b2lkIFBsdWdpblZpZXc6OnNob3coKQoreworICAgIHNl
dFNlbGZWaXNpYmxlKHRydWUpOworCisgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpICYmIHBsYXRm
b3JtUGx1Z2luV2lkZ2V0KCkpCisgICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldFZp
c2libGUodHJ1ZSk7CisKKyAgICBXaWRnZXQ6OnNob3coKTsKK30KKwordm9pZCBQbHVnaW5WaWV3
OjpoaWRlKCkKK3sKKyAgICBzZXRTZWxmVmlzaWJsZShmYWxzZSk7CisKKyAgICBpZiAoaXNQYXJl
bnRWaXNpYmxlKCkgJiYgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1Q
bHVnaW5XaWRnZXQoKS0+c2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICBXaWRnZXQ6OmhpZGUoKTsK
K30KKwordm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX2lzU3RhcnRlZCkgeworICAgICAgICBw
YWludE1pc3NpbmdQbHVnaW5JY29uKGNvbnRleHQsIHJlY3QpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2V0TlBXaW5kb3dJZk5lZWRlZCgpOworCisgICAgaWYgKG1faXNXaW5kb3dl
ZCB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKK30KKwor
dm9pZCBQbHVnaW5WaWV3OjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50KQoreworICAgIFdp
ZGdldDo6c2V0UGFyZW50KHBhcmVudCk7CisKKyAgICBpZiAocGFyZW50KQorICAgICAgICBpbml0
KCk7CisgICAgZWxzZSB7CisgICAgICAgIGlmICghcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5k
b3dSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX2lzU3RhcnRlZCB8fCAh
cGFyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEludFBvaW50IHAgPSBzdGF0aWNfY2Fz
dDxGcmFtZVZpZXcqPihwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigp
KTsKKyAgICBtX25wV2luZG93LnggPSBwLngoKTsKKyAgICBtX25wV2luZG93LnkgPSBwLnkoKTsK
KworICAgIG1fbnBXaW5kb3cud2lkdGggPSByZWN0LndpZHRoKCk7CisgICAgbV9ucFdpbmRvdy5o
ZWlnaHQgPSByZWN0LmhlaWdodCgpOworCisgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5sZWZ0ID0g
MDsKKyAgICBtX25wV2luZG93LmNsaXBSZWN0LnRvcCA9IDA7CisgICAgbV9ucFdpbmRvdy5jbGlw
UmVjdC5yaWdodCA9IHJlY3Qud2lkdGgoKTsKKyAgICBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRv
bSA9IHJlY3QuaGVpZ2h0KCk7CisKKyAgICBpZiAobV9ucFdpbmRvdy54IDwgMCB8fCBtX25wV2lu
ZG93LnkgPCAwCisgICAgICAgIHx8IG1fbnBXaW5kb3cud2lkdGggPD0gMCB8fCBtX25wV2luZG93
LmhlaWdodCA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9wbHVnaW4tPnBsdWdp
bkZ1bmNzKCktPnNldHdpbmRvdykgeworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1
Z2luVmlldyh0aGlzKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoZmFsc2UpOworICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOworICAgICAgICBt
X3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93KG1faW5zdGFuY2UsICZtX25wV2luZG93
KTsKKyAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6
OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOworCisgICAgICAgIGlmICghbV9pc1dpbmRvd2VkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVChwbGF0Zm9ybVBsdWdpbldpZGdl
dCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgp
Cit7Cit9Cit2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudFZpc2libGUoYm9vbCB2aXNpYmxlKQor
eworICAgIGlmIChpc1BhcmVudFZpc2libGUoKSA9PSB2aXNpYmxlKQorICAgICAgICByZXR1cm47
CisKKyAgICBXaWRnZXQ6OnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CisKKyAgICBpZiAoaXNT
ZWxmVmlzaWJsZSgpICYmIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpCisgICAgICAgIHBsYXRmb3Jt
UGx1Z2luV2lkZ2V0KCktPnNldFZpc2libGUodmlzaWJsZSk7Cit9CisKK3ZvaWQgUGx1Z2luVmll
dzo6c3RvcCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworTlBFcnJvciBQbHVnaW5W
aWV3OjpoYW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMiBsZW4s
IGNvbnN0IGNoYXIqIGJ1ZikKK3sKKyAgICBTdHJpbmcgZmlsZW5hbWUoYnVmLCBsZW4pOworCisg
ICAgaWYgKGZpbGVuYW1lLnN0YXJ0c1dpdGgoImZpbGU6Ly8vIikpCisgICAgICAgIGZpbGVuYW1l
ID0gZmlsZW5hbWUuc3Vic3RyaW5nKDgpOworCisgICAgaWYgKCFmaWxlRXhpc3RzKGZpbGVuYW1l
KSkKKyAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOworCisgICAgRklMRSogZmls
ZUhhbmRsZSA9IGZvcGVuKGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksICJyIik7CisKKyAgICBpZiAo
IWZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKKworICAg
IGludCBieXRlc1JlYWQgPSBmcmVhZChidWZmZXIuZGF0YSgpLCAxLCAwLCBmaWxlSGFuZGxlKTsK
KworICAgIGZjbG9zZShmaWxlSGFuZGxlKTsKKworICAgIGlmIChieXRlc1JlYWQgPD0gMCkKKyAg
ICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOworCisgICAgcmV0dXJuIE5QRVJSX05P
X0VSUk9SOworfQorCitOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlh
YmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7Cisg
ICAgY2FzZSBOUE5WVG9vbGtpdDoKKyAgICAgICAgKnN0YXRpY19jYXN0PHVpbnQzMio+KHZhbHVl
KSA9IDA7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKworICAgIGNhc2UgTlBOVlN1
cHBvcnRzWEVtYmVkQm9vbDoKKyAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9
IHRydWU7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKworICAgIGNhc2UgTlBOVmph
dmFzY3JpcHRFbmFibGVkQm9vbDoKKyAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVl
KSA9IHRydWU7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgIH0KK30KKworTlBFcnJv
ciBQbHVnaW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUp
Cit7CisgICAgc3dpdGNoICh2YXJpYWJsZSkgeworICAgIGNhc2UgTlBOVnhEaXNwbGF5OgorICAg
ICAgICBpZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgICAgICoodm9pZCAqKil2
YWx1ZSA9IHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPngxMUluZm8oKS0+ZGlzcGxheSgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICAqKHZvaWQgKiopdmFsdWUgPSAoRGlzcGxheSopIGVjb3Jl
X3hfZGlzcGxheV9nZXQoKTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworCisgICAg
Y2FzZSBOUE5WeHRBcHBDb250ZXh0OgorICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJP
UjsKKworI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgIGNhc2UgTlBOVldpbmRv
d05QT2JqZWN0OiB7CisgICAgICAgIGlmIChtX2lzSmF2YVNjcmlwdFBhdXNlZCkKKyAgICAgICAg
ICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworCisgICAgICAgIE5QT2JqZWN0KiB3aW5k
b3dTY3JpcHRPYmplY3QgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2NyaXB0TlBP
YmplY3QoKTsKKworICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgcmV0
YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0
cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+CisgICAgICAgIGlmICh3aW5kb3dTY3JpcHRPYmplY3Qp
CisgICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdCh3aW5kb3dTY3JpcHRPYmplY3QpOworCisg
ICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKKyAgICAgICAgKnYgPSB3aW5kb3dTY3Jp
cHRPYmplY3Q7CisKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KKworICAg
IGNhc2UgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdDogeworICAgICAgICBpZiAobV9pc0phdmFT
Y3JpcHRQYXVzZWQpCisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKwor
ICAgICAgICBOUE9iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0ID0gMDsKKworICAgICAgICBpZiAo
bV9lbGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1l
KGVtYmVkVGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKKyAgICAgICAg
ICAgIHBsdWdpblNjcmlwdE9iamVjdCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4o
bV9lbGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKKworICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMg
ZXhwZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5t
b3ppbGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+CisgICAgICAgIGlmIChw
bHVnaW5TY3JpcHRPYmplY3QpCisgICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVnaW5T
Y3JpcHRPYmplY3QpOworCisgICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKKyAgICAg
ICAgKnYgPSBwbHVnaW5TY3JpcHRPYmplY3Q7CisKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VS
Uk9SOworICAgIH0KKyNlbmRpZgorCisgICAgY2FzZSBOUE5WbmV0c2NhcGVXaW5kb3c6IHsKKyAg
ICAgICAgdm9pZCogdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZhbHVlKTsKKyAgICAgICAg
RXZhc19PYmplY3QqIHdpZGdldCA9IG1fcGFyZW50RnJhbWUtPnZpZXcoKS0+aG9zdFdpbmRvdygp
LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0
X2V2YXNfZ2V0KHdpZGdldCk7CisgICAgICAgIEVjb3JlX0V2YXMqIGVlID0gZWNvcmVfZXZhc19l
Y29yZV9ldmFzX2dldChldmFzKTsKKyAgICAgICAgKigoWElEICopdykgPSAoV2luZG93KSBlY29y
ZV9ldmFzX3dpbmRvd19nZXQoZWUpOworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Cisg
ICAgfQorCisgICAgY2FzZSBOUE5WVG9vbGtpdDoKKyAgICAgICAgaWYgKG1fcGx1Z2luLT5xdWly
a3MoKS5jb250YWlucyhQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCkpIHsKKyAgICAgICAg
ICAgICooKHVpbnQzMiAqKXZhbHVlKSA9IDI7CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9f
RVJST1I7CisgICAgICAgIH0KKyAgICAgICAgLy8gZmFsbCB0aHJvdWdoCisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGdldFZhbHVlU3RhdGljKHZhcmlhYmxlLCB2YWx1ZSk7CisgICAgfQor
fQorCit2b2lkIFBsdWdpblZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit7CisgICAgaWYgKHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpIHsKKyAgICAgICAgcGxhdGZvcm1Q
bHVnaW5XaWRnZXQoKS0+dXBkYXRlKHJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaW52YWxpZGF0ZVdpbmRvd2xlc3NQbHVnaW5SZWN0KHJlY3QpOworfQorCit2b2lkIFBsdWdp
blZpZXc6OmludmFsaWRhdGVSZWN0KE5QUmVjdCogcmVjdCkKK3sKKyAgICBpZiAoIXJlY3QpIHsK
KyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSW50
UmVjdCByKHJlY3QtPmxlZnQsIHJlY3QtPnRvcCwgcmVjdC0+cmlnaHQgLSByZWN0LT5sZWZ0LCBy
ZWN0LT5ib3R0b20gLSByZWN0LT50b3ApOworCisgICAgaW52YWxpZGF0ZVJlY3Qocik7Cit9CisK
K3ZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlZ2lvbihOUFJlZ2lvbiByZWdpb24pCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQbHVnaW5WaWV3Ojpmb3JjZVJlZHJhdygp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUGx1Z2luVmlldzo6flBsdWdpblZpZXco
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZv
cm1TdGFydCgpCit7CisgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKKyAgICBBU1NFUlQobV9zdGF0
dXMgPT0gUGx1Z2luU3RhdHVzTG9hZGVkU3VjY2Vzc2Z1bGx5KTsKKworICAgIGlmIChtX3BsdWdp
bi0+cGx1Z2luRnVuY3MoKS0+Z2V0dmFsdWUpIHsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3Vy
cmVudFBsdWdpblZpZXcodGhpcyk7CisgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKGZhbHNlKTsKKyAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbih0cnVlKTsKKyAg
ICAgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVlKG1faW5zdGFuY2UsIE5QUFZw
bHVnaW5OZWVkc1hFbWJlZCwgJm1fbmVlZHNYRW1iZWQpOworICAgICAgICBzZXRDYWxsaW5nUGx1
Z2luKGZhbHNlKTsKKyAgICAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7
CisgICAgfQorCisgICAgaWYgKG1fbmVlZHNYRW1iZWQpIHsKKyAgICAgICAgRXZhc19PYmplY3Qq
IG8gPSBtX3BhcmVudEZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xp
ZW50KCk7CisgICAgICAgIEV2YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldChvKTsKKyAg
ICAgICAgc2V0UGxhdGZvcm1QbHVnaW5XaWRnZXQobmV3IFgxMUVtYmVkQ29udGFpbmVyKGV2YXMs
IHRoaXMpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAg
ICBtX3N0YXR1cyA9IFBsdWdpblN0YXR1c0Nhbk5vdExvYWRQbHVnaW47CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBzaG93KCk7CisgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0
cnVjdCogd3NpID0gbmV3IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QoKTsKKworICAgIHdzaS0+
dHlwZSA9IDA7CisKKyAgICBYMTFJbmZvKiBpbmZvID0gcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+
eDExSW5mbygpOworCisgICAgd3NpLT5kaXNwbGF5ID0gaW5mby0+ZGlzcGxheSgpOworICAgIHdz
aS0+dmlzdWFsID0gaW5mby0+dmlzdWFsKCk7CisgICAgd3NpLT5kZXB0aCA9IGluZm8tPmRlcHRo
KCk7CisgICAgd3NpLT5jb2xvcm1hcCA9IGluZm8tPmNvbG9ybWFwKCk7CisgICAgbV9ucFdpbmRv
dy53c19pbmZvID0gd3NpOworCisgICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5kb3dUeXBlV2lu
ZG93OworICAgIG1fbnBXaW5kb3cud2luZG93ID0gKHZvaWQqKSBwbGF0Zm9ybVBsdWdpbldpZGdl
dCgpLT53aW5JZCgpOworCisgICAgaWYgKCEobV9wbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBs
dWdpblF1aXJrRGVmZXJGaXJzdFNldFdpbmRvd0NhbGwpKSkKKyAgICAgICAgc2V0TlBXaW5kb3dS
ZWN0KGZyYW1lUmVjdCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFBsdWdpblZp
ZXc6OnBsYXRmb3JtRGVzdHJveSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCisr
KyBXZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAzLTA0ICBMZWFuZHJv
IFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFRkwgcG9ydCBmaWxlcyB0byBwbHVnaW5z
L2VmbC4KKyAgICAgICAgaHR0cDovL3dlYmtpdC5vcmcvYi8zNTc2MQorCisgICAgICAgICogcGx1
Z2lucy9lZmwvUGx1Z2luRGF0YUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvZWZs
L1BsdWdpblBhY2thZ2VFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL2VmbC9QbHVn
aW5WaWV3RWZsLmNwcDogQWRkZWQuCisKIDIwMTAtMDMtMDQgIEFudG9uaW8gR29tZXMgIDx0b25p
a2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4K
</data>
<flag name="review"
          id="33086"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50409</attachid>
            <date>2010-03-10 09:26:48 -0800</date>
            <delta_ts>2010-04-15 05:48:00 -0700</delta_ts>
            <desc>Add files to WebCore/plugins/efl (patch 1/2)</desc>
            <filename>webcore_plugins_efl-1.diff</filename>
            <type>text/plain</type>
            <size>22184</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CisrKyBXZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTAzLTEwICBMZWFu
ZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFRkwgcG9ydCBmaWxlcyB0byBwbHVn
aW5zL2VmbC4KKyAgICAgICAgaHR0cDovL3dlYmtpdC5vcmcvYi8zNTc2MQorCisgICAgICAgICog
cGx1Z2lucy9lZmwvUGx1Z2luVmlld0VmbC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMv
ZWZsL1BsdWdpbkRhdGFFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL2VmbC9QbHVn
aW5QYWNrYWdlRWZsLmNwcDogQWRkZWQuCisKIDIwMTAtMDMtMTAgIEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvZWZsL1BsdWdpblZpZXdFZmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbHVnaW5zL2VmbC9QbHVnaW5W
aWV3RWZsLmNwcApAQCAtMCwwICsxLDQ5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIk1vdXNlRXZl
bnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKKyNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2thZ2Uu
aCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlgxMUVtYmVkQ29udGFpbmVyLmgi
CisjaW5jbHVkZSAiWDExV2luZG93LmgiCisjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKKyNp
bmNsdWRlICJydW50aW1lL0pTTG9jay5oIgorI2luY2x1ZGUgInJ1bnRpbWUvSlNWYWx1ZS5oIgor
I2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgorCisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2lu
Y2x1ZGUgPEVjb3JlX1guaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgSlNDOjpFeGVjU3Rh
dGU7Cit1c2luZyBKU0M6OkludGVycHJldGVyOwordXNpbmcgSlNDOjpKU0xvY2s7Cit1c2luZyBK
U0M6OkpTT2JqZWN0OwordXNpbmcgSlNDOjpVU3RyaW5nOworCit1c2luZyBuYW1lc3BhY2Ugc3Rk
OwordXNpbmcgbmFtZXNwYWNlIFdURjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK2Jvb2wgUGx1
Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KE5QRXZlbnQmIGV2ZW50KQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBsdWdpblZpZXc6OmhhbHQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6aGFuZGxl
Rm9jdXNJbkV2ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdp
blZpZXc6OmhhbmRsZUZvY3VzT3V0RXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUGx1Z2luVmlldzo6cmVzdGFydCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6aGFuZGxl
TW91c2VFdmVudChNb3VzZUV2ZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIFBsdWdpblZpZXc6OmRpc3BhdGNoV2hlZWxFdmVudChOUEV2ZW50KiBldmVudCkKK3sKKyAg
ICBYRXZlbnQqIHhldmVudCA9IChYRXZlbnQqKSBldmVudDsKKyAgICBFdmFzX0V2ZW50X01vdXNl
X1doZWVsIGV2OworCisgICAgZXYudGltZXN0YW1wID0geGV2ZW50LT54YnV0dG9uLnRpbWU7Cisg
ICAgZXYubW9kaWZpZXJzID0gMDsKKworICAgIHN3aXRjaCAoeGV2ZW50LT54YnV0dG9uLmJ1dHRv
bikgeworICAgIGNhc2UgNDogZXYuZGlyZWN0aW9uID0gMDsgZXYueiA9IC0xOyBicmVhazsKKyAg
ICBjYXNlIDU6IGV2LmRpcmVjdGlvbiA9IDA7IGV2LnogPSAxOyBicmVhazsKKyAgICBjYXNlIDY6
IGV2LmRpcmVjdGlvbiA9IDE7IGV2LnogPSAtMTsgYnJlYWs7CisgICAgY2FzZSA3OiBldi5kaXJl
Y3Rpb24gPSAxOyBldi56ID0gMTsgYnJlYWs7CisgICAgfQorCisgICAgZXYuY2FudmFzLnggPSBl
di5vdXRwdXQueCA9IHhldmVudC0+eGJ1dHRvbi54OworICAgIGV2LmNhbnZhcy55ID0gZXYub3V0
cHV0LnkgPSB4ZXZlbnQtPnhidXR0b24ueTsKKworICAgIFBsYXRmb3JtV2hlZWxFdmVudCB3aGVl
bCgmZXYpOworCisgICAgcmV0dXJuIG1fcGFyZW50RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5k
bGVXaGVlbEV2ZW50KHdoZWVsKTsKK30KKwordm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQbHVnaW5X
aWRnZXQoKQoreworICAgIGlmICghcGFyZW50KCkgfHwgIW1faXNXaW5kb3dlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQVNTRVJUKHBhcmVudCgpLT5pc0ZyYW1lVmlldygpKTsKKyAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKTsKKwor
ICAgIEludFJlY3Qgb2xkV2luZG93UmVjdCA9IG1fd2luZG93UmVjdDsKKyAgICBJbnRSZWN0IG9s
ZENsaXBSZWN0ID0gbV9jbGlwUmVjdDsKKworICAgIG1fd2luZG93UmVjdCA9IEludFJlY3QoZnJh
bWVWaWV3LT5jb250ZW50c1RvV2luZG93KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpLCBmcmFtZVJl
Y3QoKS5zaXplKCkpOworICAgIG1fY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVjdCgpOworICAgIG1f
Y2xpcFJlY3QubW92ZSgtbV93aW5kb3dSZWN0LngoKSwgLW1fd2luZG93UmVjdC55KCkpOworCisg
ICAgaWYgKHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpIHsKKyAgICAgICAgRXZhc19Db29yZCB4LCB5
OworICAgICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQocm9vdCgpLT5ldmFzT2JqZWN0KCks
ICZ4LCAmeSwgMCwgMCk7CisgICAgICAgIEludFJlY3QgY2hpbGRSZWN0ID0gbV93aW5kb3dSZWN0
OworICAgICAgICBjaGlsZFJlY3QubW92ZSh4LCB5KTsKKyAgICAgICAgcGxhdGZvcm1QbHVnaW5X
aWRnZXQoKS0+c2V0RnJhbWVSZWN0KGNoaWxkUmVjdCk7CisgICAgICAgIHBsYXRmb3JtUGx1Z2lu
V2lkZ2V0KCktPnVwZGF0ZShtX2NsaXBSZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQgUGx1Z2luVmll
dzo6c2V0Rm9jdXMoKQoreworICAgIGlmIChwbGF0Zm9ybVBsdWdpbldpZGdldCgpKQorICAgICAg
ICBwbGF0Zm9ybVBsdWdpbldpZGdldCgpLT5zZXRGb2N1cygpOworCisgICAgbV9lbGVtZW50LT5k
b2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZShtX2VsZW1lbnQpOworCisgICAgV2lkZ2V0OjpzZXRG
b2N1cygpOworfQorCit2b2lkIFBsdWdpblZpZXc6OnNob3coKQoreworICAgIHNldFNlbGZWaXNp
YmxlKHRydWUpOworCisgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpICYmIHBsYXRmb3JtUGx1Z2lu
V2lkZ2V0KCkpCisgICAgICAgIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPnNldFZpc2libGUodHJ1
ZSk7CisKKyAgICBXaWRnZXQ6OnNob3coKTsKK30KKwordm9pZCBQbHVnaW5WaWV3OjpoaWRlKCkK
K3sKKyAgICBzZXRTZWxmVmlzaWJsZShmYWxzZSk7CisKKyAgICBpZiAoaXNQYXJlbnRWaXNpYmxl
KCkgJiYgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1QbHVnaW5XaWRn
ZXQoKS0+c2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICBXaWRnZXQ6OmhpZGUoKTsKK30KKwordm9p
ZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgaWYgKCFtX2lzU3RhcnRlZCkgeworICAgICAgICBwYWludE1pc3Np
bmdQbHVnaW5JY29uKGNvbnRleHQsIHJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc2V0TlBXaW5kb3dJZk5lZWRlZCgpOworCisgICAgaWYgKG1faXNXaW5kb3dlZCB8fCBjb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKK30KKwordm9pZCBQbHVn
aW5WaWV3OjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50KQoreworICAgIFdpZGdldDo6c2V0
UGFyZW50KHBhcmVudCk7CisKKyAgICBpZiAocGFyZW50KQorICAgICAgICBpbml0KCk7CisgICAg
ZWxzZSB7CisgICAgICAgIGlmICghcGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX2lzU3RhcnRlZCB8fCAhcGFyZW50KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEludFBvaW50IHAgPSBzdGF0aWNfY2FzdDxGcmFtZVZp
ZXcqPihwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigpKTsKKyAgICBt
X25wV2luZG93LnggPSBwLngoKTsKKyAgICBtX25wV2luZG93LnkgPSBwLnkoKTsKKworICAgIG1f
bnBXaW5kb3cud2lkdGggPSByZWN0LndpZHRoKCk7CisgICAgbV9ucFdpbmRvdy5oZWlnaHQgPSBy
ZWN0LmhlaWdodCgpOworCisgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5sZWZ0ID0gMDsKKyAgICBt
X25wV2luZG93LmNsaXBSZWN0LnRvcCA9IDA7CisgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5yaWdo
dCA9IHJlY3Qud2lkdGgoKTsKKyAgICBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRvbSA9IHJlY3Qu
aGVpZ2h0KCk7CisKKyAgICBpZiAobV9ucFdpbmRvdy54IDwgMCB8fCBtX25wV2luZG93LnkgPCAw
CisgICAgICAgIHx8IG1fbnBXaW5kb3cud2lkdGggPD0gMCB8fCBtX25wV2luZG93LmhlaWdodCA8
PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCkt
PnNldHdpbmRvdykgeworICAgICAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0
aGlzKTsKKyAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFs
c2UpOworICAgICAgICBzZXRDYWxsaW5nUGx1Z2luKHRydWUpOworICAgICAgICBtX3BsdWdpbi0+
cGx1Z2luRnVuY3MoKS0+c2V0d2luZG93KG1faW5zdGFuY2UsICZtX25wV2luZG93KTsKKyAgICAg
ICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJl
bnRQbHVnaW5WaWV3KDApOworCisgICAgICAgIGlmICghbV9pc1dpbmRvd2VkKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVChwbGF0Zm9ybVBsdWdpbldpZGdldCgpKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCit7Cit9Cit2
b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudFZpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIGlm
IChpc1BhcmVudFZpc2libGUoKSA9PSB2aXNpYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBX
aWRnZXQ6OnNldFBhcmVudFZpc2libGUodmlzaWJsZSk7CisKKyAgICBpZiAoaXNTZWxmVmlzaWJs
ZSgpICYmIHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkpCisgICAgICAgIHBsYXRmb3JtUGx1Z2luV2lk
Z2V0KCktPnNldFZpc2libGUodmlzaWJsZSk7Cit9CisKK05QRXJyb3IgUGx1Z2luVmlldzo6aGFu
ZGxlUG9zdFJlYWRGaWxlKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCB1aW50MzIgbGVuLCBjb25zdCBj
aGFyKiBidWYpCit7CisgICAgU3RyaW5nIGZpbGVuYW1lKGJ1ZiwgbGVuKTsKKworICAgIGlmIChm
aWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOi8vLyIpKQorICAgICAgICBmaWxlbmFtZSA9IGZpbGVu
YW1lLnN1YnN0cmluZyg4KTsKKworICAgIGlmICghZmlsZUV4aXN0cyhmaWxlbmFtZSkpCisgICAg
ICAgIHJldHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKKworICAgIEZJTEUqIGZpbGVIYW5kbGUg
PSBmb3BlbihmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCAiciIpOworCisgICAgaWYgKCFmaWxlSGFu
ZGxlKQorICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CisKKyAgICBpbnQgYnl0
ZXNSZWFkID0gZnJlYWQoYnVmZmVyLmRhdGEoKSwgMSwgMCwgZmlsZUhhbmRsZSk7CisKKyAgICBm
Y2xvc2UoZmlsZUhhbmRsZSk7CisKKyAgICBpZiAoYnl0ZXNSZWFkIDw9IDApCisgICAgICAgIHJl
dHVybiBOUEVSUl9GSUxFX05PVF9GT1VORDsKKworICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
K30KKworYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybUdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxl
IHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSwgTlBFcnJvciogcmVzdWx0KQoreworICAgIHN3aXRjaCAo
dmFyaWFibGUpIHsKKyAgICBjYXNlIE5QTlZUb29sa2l0OgorICAgICAgICAqc3RhdGljX2Nhc3Q8
dWludDMyKj4odmFsdWUpID0gMDsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgTlBOVlN1cHBvcnRzWEVtYmVkQm9vbDoK
KyAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CisgICAgICAgICpy
ZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNl
IE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6CisgICAgICAgICpzdGF0aWNfY2FzdDxOUEJvb2wq
Pih2YWx1ZSkgPSB0cnVlOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgorICAg
ICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gZmFsc2U7CisgICAgICAgICpyZXN1
bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFBsdWdpblZpZXc6OnBs
YXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBOUEVycm9y
KiByZXN1bHQpCit7CisgICAgc3dpdGNoICh2YXJpYWJsZSkgeworICAgIGNhc2UgTlBOVnhEaXNw
bGF5OgorICAgICAgICBpZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgICAgICoo
dm9pZCAqKil2YWx1ZSA9IHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPngxMUluZm8oKS0+ZGlzcGxh
eSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqKHZvaWQgKiopdmFsdWUgPSAoRGlzcGxh
eSopIGVjb3JlX3hfZGlzcGxheV9nZXQoKTsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VS
Uk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgTlBOVnh0QXBwQ29udGV4dDoK
KyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgICAgIHJldHVybiB0
cnVlOworCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgY2FzZSBOUE5WV2lu
ZG93TlBPYmplY3Q6IHsKKyAgICAgICAgaWYgKG1faXNKYXZhU2NyaXB0UGF1c2VkKSB7CisgICAg
ICAgICAgICAqcmVzdWx0ID0gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE9iamVj
dCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTY3JpcHROUE9iamVjdCgpOworCisg
ICAgICAgIC8vIFJldHVybiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSByZXRhaW5lZCwgYXMgZGVz
Y3JpYmVkIGhlcmU6IDxodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3BsdWdpbi9ucHJ1
bnRpbWUuaHRtbD4KKyAgICAgICAgaWYgKHdpbmRvd1NjcmlwdE9iamVjdCkKKyAgICAgICAgICAg
IF9OUE5fUmV0YWluT2JqZWN0KHdpbmRvd1NjcmlwdE9iamVjdCk7CisKKyAgICAgICAgdm9pZCoq
IHYgPSAodm9pZCoqKXZhbHVlOworICAgICAgICAqdiA9IHdpbmRvd1NjcmlwdE9iamVjdDsKKwor
ICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGNhc2UgTlBOVlBsdWdpbkVsZW1lbnROUE9iamVjdDogeworICAgICAgICBp
ZiAobV9pc0phdmFTY3JpcHRQYXVzZWQpIHsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9H
RU5FUklDX0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBOUE9iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0ID0gMDsKKworICAgICAgICBpZiAobV9l
bGVtZW50LT5oYXNUYWdOYW1lKGFwcGxldFRhZykgfHwgbV9lbGVtZW50LT5oYXNUYWdOYW1lKGVt
YmVkVGFnKSB8fCBtX2VsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKKyAgICAgICAgICAg
IHBsdWdpblNjcmlwdE9iamVjdCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4obV9l
bGVtZW50KS0+Z2V0TlBPYmplY3QoKTsKKworICAgICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgZXhw
ZWN0ZWQgdG8gYmUgcmV0YWluZWQsIGFzIGRlc2NyaWJlZCBoZXJlOiA8aHR0cDovL3d3dy5tb3pp
bGxhLm9yZy9wcm9qZWN0cy9wbHVnaW4vbnBydW50aW1lLmh0bWw+CisgICAgICAgIGlmIChwbHVn
aW5TY3JpcHRPYmplY3QpCisgICAgICAgICAgICBfTlBOX1JldGFpbk9iamVjdChwbHVnaW5TY3Jp
cHRPYmplY3QpOworCisgICAgICAgIHZvaWQqKiB2ID0gKHZvaWQqKil2YWx1ZTsKKyAgICAgICAg
KnYgPSBwbHVnaW5TY3JpcHRPYmplY3Q7CisKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VS
Uk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKworICAgIGNhc2UgTlBO
Vm5ldHNjYXBlV2luZG93OiB7CisgICAgICAgIHZvaWQqIHcgPSByZWludGVycHJldF9jYXN0PHZv
aWQqPih2YWx1ZSk7CisgICAgICAgIEV2YXNfT2JqZWN0KiB3aWRnZXQgPSBtX3BhcmVudEZyYW1l
LT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIEV2
YXMqIGV2YXMgPSBldmFzX29iamVjdF9ldmFzX2dldCh3aWRnZXQpOworICAgICAgICBFY29yZV9F
dmFzKiBlZSA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoZXZhcyk7CisgICAgICAgICooKFhJ
RCAqKXcpID0gKFdpbmRvdykgZWNvcmVfZXZhc193aW5kb3dfZ2V0KGVlKTsKKyAgICAgICAgKnJl
c3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBjYXNlIE5QTlZUb29sa2l0OgorICAgICAgICBpZiAobV9wbHVnaW4tPnF1aXJrcygpLmNvbnRh
aW5zKFBsdWdpblF1aXJrUmVxdWlyZXNHdGtUb29sS2l0KSkgeworICAgICAgICAgICAgKigodWlu
dDMyICopdmFsdWUpID0gMjsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIC8vIGZhbGwgdGhy
b3VnaAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3Zv
aWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAg
ICBpZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkgeworICAgICAgICBwbGF0Zm9ybVBsdWdpbldp
ZGdldCgpLT51cGRhdGUocmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnZh
bGlkYXRlV2luZG93bGVzc1BsdWdpblJlY3QocmVjdCk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6
aW52YWxpZGF0ZVJlY3QoTlBSZWN0KiByZWN0KQoreworICAgIGlmICghcmVjdCkgeworICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJbnRSZWN0IHIo
cmVjdC0+bGVmdCwgcmVjdC0+dG9wLCByZWN0LT5yaWdodCAtIHJlY3QtPmxlZnQsIHJlY3QtPmJv
dHRvbSAtIHJlY3QtPnRvcCk7CisKKyAgICBpbnZhbGlkYXRlUmVjdChyKTsKK30KKwordm9pZCBQ
bHVnaW5WaWV3OjppbnZhbGlkYXRlUmVnaW9uKE5QUmVnaW9uIHJlZ2lvbikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBsdWdpblZpZXc6OmZvcmNlUmVkcmF3KCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQo
KQoreworICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CisgICAgQVNTRVJUKG1fc3RhdHVzID09IFBs
dWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSk7CisKKyAgICBpZiAobV9wbHVnaW4tPnBsdWdp
bkZ1bmNzKCktPmdldHZhbHVlKSB7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVn
aW5WaWV3KHRoaXMpOworICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhmYWxzZSk7CisgICAgICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CisgICAgICAgIG1f
cGx1Z2luLT5wbHVnaW5GdW5jcygpLT5nZXR2YWx1ZShtX2luc3RhbmNlLCBOUFBWcGx1Z2luTmVl
ZHNYRW1iZWQsICZtX25lZWRzWEVtYmVkKTsKKyAgICAgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxz
ZSk7CisgICAgICAgIFBsdWdpblZpZXc6OnNldEN1cnJlbnRQbHVnaW5WaWV3KDApOworICAgIH0K
KworICAgIGlmIChtX25lZWRzWEVtYmVkKSB7CisgICAgICAgIEV2YXNfT2JqZWN0KiBvID0gbV9w
YXJlbnRGcmFtZS0+dmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOwor
ICAgICAgICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQobyk7CisgICAgICAgIHNl
dFBsYXRmb3JtUGx1Z2luV2lkZ2V0KG5ldyBYMTFFbWJlZENvbnRhaW5lcihldmFzLCB0aGlzKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgbV9zdGF0
dXMgPSBQbHVnaW5TdGF0dXNDYW5Ob3RMb2FkUGx1Z2luOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgc2hvdygpOworICAgIE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqIHdz
aSA9IG5ldyBOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0KCk7CisKKyAgICB3c2ktPnR5cGUgPSAw
OworCisgICAgWDExSW5mbyogaW5mbyA9IHBsYXRmb3JtUGx1Z2luV2lkZ2V0KCktPngxMUluZm8o
KTsKKworICAgIHdzaS0+ZGlzcGxheSA9IGluZm8tPmRpc3BsYXkoKTsKKyAgICB3c2ktPnZpc3Vh
bCA9IGluZm8tPnZpc3VhbCgpOworICAgIHdzaS0+ZGVwdGggPSBpbmZvLT5kZXB0aCgpOworICAg
IHdzaS0+Y29sb3JtYXAgPSBpbmZvLT5jb2xvcm1hcCgpOworICAgIG1fbnBXaW5kb3cud3NfaW5m
byA9IHdzaTsKKworICAgIG1fbnBXaW5kb3cudHlwZSA9IE5QV2luZG93VHlwZVdpbmRvdzsKKyAg
ICBtX25wV2luZG93LndpbmRvdyA9ICh2b2lkKikgcGxhdGZvcm1QbHVnaW5XaWRnZXQoKS0+d2lu
SWQoKTsKKworICAgIGlmICghKG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWly
a0RlZmVyRmlyc3RTZXRXaW5kb3dDYWxsKSkpCisgICAgICAgIHNldE5QV2luZG93UmVjdChmcmFt
ZVJlY3QoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQbHVnaW5WaWV3OjpwbGF0
Zm9ybURlc3Ryb3koKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3BsdWdpbnMvZWZsL1BsdWdpbkRhdGFFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVs
bAorKysgV2ViQ29yZS9wbHVnaW5zL2VmbC9QbHVnaW5EYXRhRWZsLmNwcApAQCAtMCwwICsxLDc2
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAwOCBUcm9sbHRlY2ggQVNBCisgICAg
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dp
YQorICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
CisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCisKKyNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKCkKK3sKKyAgICBQbHVn
aW5EYXRhYmFzZSogZGIgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpOworICAg
IGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYi0+cGx1Z2lucygpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIFBsdWdpbkluZm8qIGluZm8gPSBuZXcgUGx1Z2luSW5mbzsKKyAgICAgICAgUGx1
Z2luUGFja2FnZSogcGFja2FnZSA9IHBsdWdpbnNbaV07CisKKyAgICAgICAgaW5mby0+bmFtZSA9
IHBhY2thZ2UtPm5hbWUoKTsKKyAgICAgICAgaW5mby0+ZmlsZSA9IHBhY2thZ2UtPmZpbGVOYW1l
KCk7CisgICAgICAgIGluZm8tPmRlc2MgPSBwYWNrYWdlLT5kZXNjcmlwdGlvbigpOworCisgICAg
ICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01hcCYgbWltZVRvRGVzY3JpcHRpb25zID0gcGFj
a2FnZS0+bWltZVRvRGVzY3JpcHRpb25zKCk7CisgICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVzY3JpcHRpb25zLmVuZCgpOworICAgICAg
ICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9E
ZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBNaW1l
Q2xhc3NJbmZvKiBtaW1lID0gbmV3IE1pbWVDbGFzc0luZm87CisgICAgICAgICAgICBpbmZvLT5t
aW1lcy5hcHBlbmQobWltZSk7CisKKyAgICAgICAgICAgIG1pbWUtPnR5cGUgPSBpdC0+Zmlyc3Q7
CisgICAgICAgICAgICBtaW1lLT5kZXNjID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIG1pbWUt
PnBsdWdpbiA9IGluZm87CisKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMg
PSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25zKCkuZ2V0KG1pbWUtPnR5cGUpOworCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7IGkrKykgewor
ICAgICAgICAgICAgICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgbWltZS0+c3Vm
Zml4ZXMgKz0gIiwiOworCisgICAgICAgICAgICAgICAgbWltZS0+c3VmZml4ZXMgKz0gZXh0ZW5z
aW9uc1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1fcGx1Z2lucy5h
cHBlbmQoaW5mbyk7CisgICAgfQorfQorCit2b2lkIFBsdWdpbkRhdGE6OnJlZnJlc2goKQorewor
ICAgIFBsdWdpbkRhdGFiYXNlKiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5z
KCk7CisgICAgZGItPnJlZnJlc2goKTsKK30KKworfTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9l
ZmwvUGx1Z2luUGFja2FnZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gL2Rldi9udWxsCisrKyBXZWJD
b3JlL3BsdWdpbnMvZWZsL1BsdWdpblBhY2thZ2VFZmwuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdo
dCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5o
IgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luRGVidWcu
aCIKKyNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgorCisjaW5jbHVkZSA8RWluYS5oPgorI2lu
Y2x1ZGUgPGRsZmNuLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBjaGFyKiAo
Kk5QUF9HZXRNSU1FRGVzY3JpcHRpb25Qcm9jUHRyKSgpOworCitib29sIFBsdWdpblBhY2thZ2U6
OmZldGNoSW5mbygpCit7CisgICAgY29uc3QgY2hhciAqZXJybXNnOworCisgICAgaWYgKCFsb2Fk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5QUF9HZXRWYWx1ZVByb2NQdHIgZ2V0
VmFsdWUgPSAwOworICAgIE5QUF9HZXRNSU1FRGVzY3JpcHRpb25Qcm9jUHRyIGdldE1JTUVEZXNj
cmlwdGlvbiA9IDA7CisKKyAgICBnZXRWYWx1ZSA9IChOUFBfR2V0VmFsdWVQcm9jUHRyKWRsc3lt
KG1fbW9kdWxlLCAiTlBfR2V0VmFsdWUiKTsKKyAgICBpZiAoKGVycm1zZyA9IGRsZXJyb3IoKSkp
IHsKKyAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgZ2V0IHN5bWJvbCBOUF9HZXRWYWx1
ZTogJXMiLCBlcnJtc2cpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZ2V0
TUlNRURlc2NyaXB0aW9uID0gKE5QUF9HZXRNSU1FRGVzY3JpcHRpb25Qcm9jUHRyKWRsc3ltKG1f
bW9kdWxlLCAiTlBfR2V0TUlNRURlc2NyaXB0aW9uIik7CisgICAgaWYgKChlcnJtc2cgPSBkbGVy
cm9yKCkpKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IGdldCBzeW1ib2wgTlBf
R2V0TUlNRURlc2NyaXB0aW9uOiAlcyIsIGVycm1zZyk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBjaGFyKiBidWZmZXIgPSAwOworICAgIE5QRXJyb3IgZXJyID0gZ2V0VmFs
dWUoMCwgTlBQVnBsdWdpbk5hbWVTdHJpbmcsICh2b2lkKikgJmJ1ZmZlcik7CisgICAgaWYgKGVy
ciAhPSBOUEVSUl9OT19FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fbmFtZSA9
IGJ1ZmZlcjsKKworICAgIGJ1ZmZlciA9IDA7CisgICAgZXJyID0gZ2V0VmFsdWUoMCwgTlBQVnBs
dWdpbkRlc2NyaXB0aW9uU3RyaW5nLCAodm9pZCopICZidWZmZXIpOworICAgIGlmIChlcnIgIT0g
TlBFUlJfTk9fRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2Rlc2NyaXB0aW9u
ID0gYnVmZmVyOworICAgIGRldGVybWluZU1vZHVsZVZlcnNpb25Gcm9tRGVzY3JpcHRpb24oKTsK
KworICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGdldE1JTUVEZXNjcmlwdGlvbigpOworCisgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXM7CisgICAgZGVzY3JpcHRpb24uc3BsaXQoVUNoYXIoJzsnKSwg
ZmFsc2UsIHR5cGVzKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbWltZTsKKyAgICAgICAgdHlwZXNbaV0uc3Bs
aXQoVUNoYXIoJzonKSwgdHJ1ZSwgbWltZSk7CisKKyAgICAgICAgaWYgKG1pbWUuc2l6ZSgpID4g
MCkgeworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0czsKKworICAgICAgICAgICAgaWYg
KG1pbWUuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgICAgICBtaW1lWzFdLnNwbGl0KFVDaGFyKCcs
JyksIGZhbHNlLCBleHRzKTsKKworICAgICAgICAgICAgZGV0ZXJtaW5lUXVpcmtzKG1pbWVbMF0p
OworICAgICAgICAgICAgbV9taW1lVG9FeHRlbnNpb25zLmFkZChtaW1lWzBdLCBleHRzKTsKKwor
ICAgICAgICAgICAgaWYgKG1pbWUuc2l6ZSgpID4gMikKKyAgICAgICAgICAgICAgICBtX21pbWVU
b0Rlc2NyaXB0aW9ucy5hZGQobWltZVswXSwgbWltZVsyXSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKK3sKKyAg
ICBjaGFyKiBlcnJtc2c7CisKKyAgICBpZiAobV9pc0xvYWRlZCkgeworICAgICAgICBtX2xvYWRD
b3VudCsrOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBtX21vZHVsZSA9IGRs
b3BlbihtX3BhdGgudXRmOCgpLmRhdGEoKSwgUlRMRF9MQVpZIHwgUlRMRF9MT0NBTCk7CisgICAg
aWYgKChlcnJtc2cgPSBkbGVycm9yKCkpKSB7CisgICAgICAgIEVJTkFfTE9HX1dBUk4oIiVzIG5v
dCBsb2FkZWQ6ICVzIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCksIGVycm1zZyk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2lzTG9hZGVkID0gdHJ1ZTsKKworICAgIE5QX0lu
aXRpYWxpemVGdW5jUHRyIGluaXRpYWxpemU7CisgICAgTlBFcnJvciBlcnI7CisKKyAgICBpbml0
aWFsaXplID0gKE5QX0luaXRpYWxpemVGdW5jUHRyKWRsc3ltKG1fbW9kdWxlLCAiTlBfSW5pdGlh
bGl6ZSIpOworICAgIGlmICgoZXJybXNnID0gZGxlcnJvcigpKSkgeworICAgICAgICBFSU5BX0xP
R19FUlIoIkNvdWxkIG5vdCBnZXQgc3ltYm9sIE5QX0luaXRpYWxpemU6ICVzIiwgZXJybXNnKTsK
KyAgICAgICAgZ290byBhYm9ydDsKKyAgICB9CisKKyAgICBtX05QUF9TaHV0ZG93biA9IChOUFBf
U2h1dGRvd25Qcm9jUHRyKWRsc3ltKG1fbW9kdWxlLCAiTlBfU2h1dGRvd24iKTsKKyAgICBpZiAo
KGVycm1zZyA9IGRsZXJyb3IoKSkpIHsKKyAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3Qg
Z2V0IHN5bWJvbCBOUF9TaHV0ZG93bjogJXMiLCBlcnJtc2cpOworICAgICAgICBnb3RvIGFib3J0
OworICAgIH0KKworICAgIG1lbXNldCgmbV9wbHVnaW5GdW5jcywgMCwgc2l6ZW9mKG1fcGx1Z2lu
RnVuY3MpKTsKKyAgICBtX3BsdWdpbkZ1bmNzLnNpemUgPSBzaXplb2YobV9wbHVnaW5GdW5jcyk7
CisKKyAgICBpbml0aWFsaXplQnJvd3NlckZ1bmNzKCk7CisKKyNpZiBkZWZpbmVkKFhQX1VOSVgp
CisgICAgZXJyID0gaW5pdGlhbGl6ZSgmbV9icm93c2VyRnVuY3MsICZtX3BsdWdpbkZ1bmNzKTsK
KyNlbHNlCisgICAgZXJyID0gaW5pdGlhbGl6ZSgmbV9icm93c2VyRnVuY3MpOworI2VuZGlmCisg
ICAgaWYgKGVyciAhPSBOUEVSUl9OT19FUlJPUikKKyAgICAgICAgZ290byBhYm9ydDsKKworICAg
IG1fbG9hZENvdW50Kys7CisgICAgcmV0dXJuIHRydWU7CisKK2Fib3J0OgorICAgIEVJTkFfTE9H
X0RCRygiZmFpbGVkIHRvIGxvYWQgcGx1Z2luLCB1bmxvYWQgaXQgd2l0aG91dCBzaHV0dGluZyBp
dCBkb3duLiIpOworICAgIHVubG9hZFdpdGhvdXRTaHV0ZG93bigpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>