<?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>23215</bug_id>
          
          <creation_ts>2009-01-09 14:30:14 -0800</creation_ts>
          <short_desc>Upstream more files for platform/graphics/skia</short_desc>
          <delta_ts>2009-01-09 15:29:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>105061</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-09 14:30:14 -0800</bug_when>
    <thetext>Upstream more files for platform/graphics/skia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105062</commentid>
    <comment_count>1</comment_count>
      <attachid>26576</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-09 14:31:48 -0800</bug_when>
    <thetext>Created attachment 26576
Add TransformationMatrixSkia to platform/graphics/skia

 WebCore/ChangeLog                                  |   37 ++++
 .../graphics/skia/TransformationMatrixSkia.cpp     |  222 ++++++++++++++++++++
 2 files changed, 259 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105064</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-09 14:34:38 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	A	WebCore/platform/graphics/skia/TransformationMatrixSkia.cpp
Committed r39764
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105071</commentid>
    <comment_count>3</comment_count>
      <attachid>26580</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-09 14:53:57 -0800</bug_when>
    <thetext>Created attachment 26580
Add PlatformContextSkia and PlatformGraphics.h to platform/graphics/skia

 WebCore/ChangeLog                                  |   52 +++
 .../platform/graphics/skia/PlatformContextSkia.cpp |  427 ++++++++++++++++++++
 .../platform/graphics/skia/PlatformContextSkia.h   |  173 ++++++++
 WebCore/platform/graphics/skia/PlatformGraphics.h  |   37 ++
 4 files changed, 689 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105073</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-09 14:55:35 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	A	WebCore/platform/graphics/skia/PlatformContextSkia.cpp
	A	WebCore/platform/graphics/skia/PlatformContextSkia.h
	A	WebCore/platform/graphics/skia/PlatformGraphics.h
Committed r39766</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105075</commentid>
    <comment_count>5</comment_count>
      <attachid>26581</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-09 15:03:28 -0800</bug_when>
    <thetext>Created attachment 26581
Add SkiaFontWin to platform/graphics/chromium

 WebCore/ChangeLog                              |   20 +++
 WebCore/platform/graphics/skia/SkiaFontWin.cpp |  218 ++++++++++++++++++++++++
 WebCore/platform/graphics/skia/SkiaFontWin.h   |   54 ++++++
 3 files changed, 292 insertions(+), 0 deletions(-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26576</attachid>
            <date>2009-01-09 14:31:48 -0800</date>
            <delta_ts>2009-01-09 14:31:48 -0800</delta_ts>
            <desc>Add TransformationMatrixSkia to platform/graphics/skia</desc>
            <filename>Add-TransformationMatrixSkia-to-platform-graphics-skia.patch</filename>
            <type>text/plain</type>
            <size>8587</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YWY5NWYyOGVmMDJkMGViMjcwOGE5Yzc0YWJmZGY1MTcyZjRiZjc4NQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YTFmMDU5Li5hMjExNzBj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQwIEBACisyMDA5LTAxLTA5ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAg
ICAgQWRkIFRyYW5zZm9ybWF0aW9uTWF0cml4U2tpYSB0byBwbGF0Zm9ybS9ncmFwaGljcy9za2lh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNQor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9UcmFuc2Zvcm1hdGlvbk1hdHJpeFNr
aWEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2V0TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
OjptYXApOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSWRlbnRpdHkpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OnNoZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4OjpkZXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVy
c2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yIFNr
TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvcio9
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvciopOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmEpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEEpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg6OmIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXg6OnNldEIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmMp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEMpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmQpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNldEUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmYpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEYpOgorCiAyMDA5LTAxLTA5
ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZpZCBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9UcmFuc2Zvcm1hdGlvbk1hdHJpeFNraWEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1RyYW5zZm9ybWF0aW9uTWF0cml4U2tpYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMWUyYTE5NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9UcmFuc2Zvcm1hdGlvbk1hdHJpeFNraWEuY3BwCkBAIC0wLDAg
KzEsMjIyIEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vIAorLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8gCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKwor
I2luY2x1ZGUgIlNraWFVdGlscy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RyYW5zZm9y
bWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpCit7CisgICAgbV90cmFuc2Zvcm0u
cmVzZXQoKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4
KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91Ymxl
IGYpCit7CisgICAgc2V0TWF0cml4KGEsIGIsIGMsIGQsIGUsIGYpOworfQorCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgU2tNYXRyaXgmIG1hdHJpeCkK
KyAgICA6IG1fdHJhbnNmb3JtKG1hdHJpeCkKK3sKK30KKwordm9pZCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBk
b3VibGUgZSwgZG91YmxlIGYpCit7CisgICAgbV90cmFuc2Zvcm0ucmVzZXQoKTsKKworICAgIG1f
dHJhbnNmb3JtLnNldFNjYWxlWChXZWJDb3JlRG91YmxlVG9Ta1NjYWxhcihhKSk7CisgICAgbV90
cmFuc2Zvcm0uc2V0U2tld1goV2ViQ29yZURvdWJsZVRvU2tTY2FsYXIoYykpOworICAgIG1fdHJh
bnNmb3JtLnNldFRyYW5zbGF0ZVgoV2ViQ29yZURvdWJsZVRvU2tTY2FsYXIoZSkpOworCisgICAg
bV90cmFuc2Zvcm0uc2V0U2NhbGVZKFdlYkNvcmVEb3VibGVUb1NrU2NhbGFyKGQpKTsKKyAgICBt
X3RyYW5zZm9ybS5zZXRTa2V3WShXZWJDb3JlRG91YmxlVG9Ta1NjYWxhcihiKSk7CisgICAgbV90
cmFuc2Zvcm0uc2V0VHJhbnNsYXRlWShXZWJDb3JlRG91YmxlVG9Ta1NjYWxhcihmKSk7Cit9CisK
K3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJs
ZSogeDIsIGRvdWJsZSogeTIpIGNvbnN0Cit7CisgICAgU2tQb2ludCBzcmMsIGRzdDsKKyAgICBz
cmMuc2V0KFdlYkNvcmVEb3VibGVUb1NrU2NhbGFyKHgpLCBXZWJDb3JlRG91YmxlVG9Ta1NjYWxh
cih5KSk7CisgICAgbV90cmFuc2Zvcm0ubWFwUG9pbnRzKCZkc3QsICZzcmMsIDEpOworCisgICAg
KngyID0gU2tTY2FsYXJUb0RvdWJsZShkc3QuZlgpOworICAgICp5MiA9IFNrU2NhbGFyVG9Eb3Vi
bGUoZHN0LmZZKTsKK30KKworSW50UmVjdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdChj
b25zdCBJbnRSZWN0JiBzcmMpIGNvbnN0Cit7CisgICAgU2tSZWN0IGRzdDsKKyAgICBtX3RyYW5z
Zm9ybS5tYXBSZWN0KCZkc3QsIHNyYyk7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoZHN0
KTsKK30KKworRmxvYXRSZWN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgc3JjKSBjb25zdAoreworICAgIFNrUmVjdCBkc3Q7CisgICAgbV90cmFuc2Zvcm0u
bWFwUmVjdCgmZHN0LCBzcmMpOworICAgIHJldHVybiBkc3Q7Cit9CisKK2Jvb2wgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmlzSWRlbnRpdHkoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYW5zZm9y
bS5pc0lkZW50aXR5KCk7Cit9CisKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlc2V0KCkK
K3sKKyAgICBtX3RyYW5zZm9ybS5yZXNldCgpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCAm
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KQoreworICAg
IG1fdHJhbnNmb3JtLnByZVNjYWxlKFdlYkNvcmVEb3VibGVUb1NrU2NhbGFyKHN4KSwgV2ViQ29y
ZURvdWJsZVRvU2tTY2FsYXIoc3kpLCAwLCAwKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1Ry
YW5zZm9ybWF0aW9uTWF0cml4ICZUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlKGRvdWJsZSBk
KQoreworICAgIG1fdHJhbnNmb3JtLnByZVJvdGF0ZShXZWJDb3JlRG91YmxlVG9Ta1NjYWxhcihk
KSwgMCwgMCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCAm
VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJsZSB0eSkKK3sK
KyAgICBtX3RyYW5zZm9ybS5wcmVUcmFuc2xhdGUoV2ViQ29yZURvdWJsZVRvU2tTY2FsYXIodHgp
LCBXZWJDb3JlRG91YmxlVG9Ta1NjYWxhcih0eSkpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
VHJhbnNmb3JtYXRpb25NYXRyaXggJlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzaGVhcihkb3VibGUg
c3gsIGRvdWJsZSBzeSkKK3sKKyAgICBtX3RyYW5zZm9ybS5wcmVTa2V3KFdlYkNvcmVEb3VibGVU
b1NrU2NhbGFyKHN4KSwgV2ViQ29yZURvdWJsZVRvU2tTY2FsYXIoc3kpLCAwLCAwKTsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZGV0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gU2tTY2FsYXJUb0RvdWJsZShtX3RyYW5zZm9ybS5nZXRTY2FsZVgo
KSkgKiBTa1NjYWxhclRvRG91YmxlKG1fdHJhbnNmb3JtLmdldFNjYWxlWSgpKSAtCisgICAgICAg
ICAgIFNrU2NhbGFyVG9Eb3VibGUobV90cmFuc2Zvcm0uZ2V0U2tld1koKSkgKiBTa1NjYWxhclRv
RG91YmxlKG1fdHJhbnNmb3JtLmdldFNrZXdYKCkpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0Cit7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaW52ZXJzZTsKKyAgICBtX3RyYW5zZm9ybS5pbnZlcnQoJmludmVyc2UubV90
cmFuc2Zvcm0pOworICAgIHJldHVybiBpbnZlcnNlOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6b3BlcmF0b3IgU2tNYXRyaXgoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYW5zZm9ybTsK
K30KKworYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3I9PShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbTIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtID09IG0y
Lm1fdHJhbnNmb3JtOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCAmVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om9wZXJhdG9yKj0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0yKQoreworICAg
IG1fdHJhbnNmb3JtLnNldENvbmNhdChtMi5tX3RyYW5zZm9ybSwgbV90cmFuc2Zvcm0pOworICAg
IHJldHVybiAqdGhpczsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om9wZXJhdG9yKihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbTIpCit7CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggY2F0OworICAgIGNhdC5tX3RyYW5zZm9ybS5zZXRDb25jYXQo
bTIubV90cmFuc2Zvcm0sIG1fdHJhbnNmb3JtKTsKKyAgICByZXR1cm4gY2F0OworfQorCitkb3Vi
bGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmEoKSBjb25zdAoreworICAgIHJldHVybiBTa1NjYWxh
clRvRG91YmxlKG1fdHJhbnNmb3JtLmdldFNjYWxlWCgpKTsKK30KKwordm9pZCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6c2V0QShkb3VibGUgYSkKK3sKKyAgICBtX3RyYW5zZm9ybS5zZXRTY2FsZVgo
V2ViQ29yZURvdWJsZVRvU2tTY2FsYXIoYSkpOworfQorCitkb3VibGUgVHJhbnNmb3JtYXRpb25N
YXRyaXg6OmIoKSBjb25zdAoreworICAgIHJldHVybiBTa1NjYWxhclRvRG91YmxlKG1fdHJhbnNm
b3JtLmdldFNrZXdZKCkpOworfQorCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRCKGRv
dWJsZSBiKQoreworICAgIG1fdHJhbnNmb3JtLnNldFNrZXdZKFdlYkNvcmVEb3VibGVUb1NrU2Nh
bGFyKGIpKTsKK30KKworZG91YmxlIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpjKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gU2tTY2FsYXJUb0RvdWJsZShtX3RyYW5zZm9ybS5nZXRTa2V3WCgpKTsKK30K
Kwordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Qyhkb3VibGUgYykKK3sKKyAgICBtX3Ry
YW5zZm9ybS5zZXRTa2V3WChXZWJDb3JlRG91YmxlVG9Ta1NjYWxhcihjKSk7Cit9CisKK2RvdWJs
ZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNrU2NhbGFy
VG9Eb3VibGUobV90cmFuc2Zvcm0uZ2V0U2NhbGVZKCkpOworfQorCit2b2lkIFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXREKGRvdWJsZSBkKQoreworICAgIG1fdHJhbnNmb3JtLnNldFNjYWxlWShX
ZWJDb3JlRG91YmxlVG9Ta1NjYWxhcihkKSk7Cit9CisKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNrU2NhbGFyVG9Eb3VibGUobV90cmFuc2Zv
cm0uZ2V0VHJhbnNsYXRlWCgpKTsKK30KKwordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0
RShkb3VibGUgZSkKK3sKKyAgICBtX3RyYW5zZm9ybS5zZXRUcmFuc2xhdGVYKFdlYkNvcmVEb3Vi
bGVUb1NrU2NhbGFyKGUpKTsKK30KKworZG91YmxlIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpmKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gU2tTY2FsYXJUb0RvdWJsZShtX3RyYW5zZm9ybS5nZXRUcmFu
c2xhdGVZKCkpOworfQorCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRGKGRvdWJsZSBm
KQoreworICAgIG1fdHJhbnNmb3JtLnNldFRyYW5zbGF0ZVkoV2ViQ29yZURvdWJsZVRvU2tTY2Fs
YXIoZikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26580</attachid>
            <date>2009-01-09 14:53:57 -0800</date>
            <delta_ts>2009-01-09 14:53:57 -0800</delta_ts>
            <desc>Add PlatformContextSkia and PlatformGraphics.h to platform/graphics/skia</desc>
            <filename>Add-PlatformContextSkia-and-PlatformGraphics.h-to-platform-graphics-skia.patch</filename>
            <type>text/plain</type>
            <size>24083</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">Y2Y0OTU4N2M0NWUwN2RkN2E1OTE0ZTczNWQxZDhkYmU2YTVhM2VlMgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZGRiMjk0Li5jNDljMzUw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMiw2ICsyLDU4IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAKKyAg
ICAgICAgQWRkIFBsYXRmb3JtQ29udGV4dFNraWEgYW5kIFBsYXRmb3JtR3JhcGhpY3MuaCB0byBw
bGF0Zm9ybS9ncmFwaGljcy9za2lhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzIxNQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmNwcDogQWRkZWQuCisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRT
a2lhOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGU6
On5TdGF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZTo6YXBwbHlBbHBo
YSk6CisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRTa2lhOjpQbGF0Zm9ybUNvbnRleHRTa2lhKToK
KyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6On5QbGF0Zm9ybUNvbnRleHRTa2lhKToKKyAg
ICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OnNldENhbnZhcyk6CisgICAgICAgIChQbGF0Zm9y
bUNvbnRleHRTa2lhOjpzYXZlKToKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OnJlc3Rv
cmUpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd1JlY3QpOgorICAgICAgICAo
UGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0dXBQYWludENvbW1vbik6CisgICAgICAgIChQbGF0Zm9y
bUNvbnRleHRTa2lhOjpzZXR1cFBhaW50Rm9yRmlsbGluZyk6CisgICAgICAgIChQbGF0Zm9ybUNv
bnRleHRTa2lhOjpzZXR1cFBhaW50Rm9yU3Ryb2tpbmcpOgorICAgICAgICAoUGxhdGZvcm1Db250
ZXh0U2tpYTo6c2V0RHJhd0xvb3Blcik6CisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRTa2lhOjpz
ZXRNaXRlckxpbWl0KToKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEFscGhhKToK
KyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OnNldExpbmVDYXApOgorICAgICAgICAoUGxh
dGZvcm1Db250ZXh0U2tpYTo6c2V0TGluZUpvaW4pOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0
U2tpYTo6c2V0UG9ydGVyRHVmZk1vZGUpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6
c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OmdldERyYXdMb29w
ZXIpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0U3Ryb2tlU3R5bGUpOgorICAg
ICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoUGxh
dGZvcm1Db250ZXh0U2tpYTo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoUGxhdGZvcm1Db250
ZXh0U2tpYTo6Z2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNr
aWE6OnNldFN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRTa2lhOjpn
ZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0VGV4
dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OnNldFVzZUFudGlh
bGlhc2luZyk6CisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRTa2lhOjpmaWxsQ29sb3IpOgorICAg
ICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6YmVnaW5QYXRoKToKKyAgICAgICAgKFBsYXRmb3Jt
Q29udGV4dFNraWE6OmFkZFBhdGgpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0
RmlsbFJ1bGUpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0R3JhZGllbnQpOgor
ICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0UGF0dGVybik6CisgICAgICAgIChQbGF0
Zm9ybUNvbnRleHRTa2lhOjpzZXREYXNoUGF0aEVmZmVjdCk6CisgICAgICAgIChQbGF0Zm9ybUNv
bnRleHRTa2lhOjpwYWludFNrUGFpbnQpOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYTo6
Yml0bWFwKToKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OmlzUHJpbnRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oOiBBZGRl
ZC4KKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OmN1cnJlbnRQYXRoKToKKyAgICAgICAg
KFBsYXRmb3JtQ29udGV4dFNraWE6OmNhbnZhcyk6CisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRT
a2lhOjpnZGtfc2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9y
bUdyYXBoaWNzLmg6IEFkZGVkLgorCisyMDA5LTAxLTA5ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xh
emtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisK
ICAgICAgICAgQWRkIFRyYW5zZm9ybWF0aW9uTWF0cml4U2tpYSB0byBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzIxNQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZv
cm1Db250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZv
cm1Db250ZXh0U2tpYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBk
YmJlMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmNwcApAQCAtMCwwICsxLDQyNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJOYXRpdmVJ
bWFnZVNraWEuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisjaW5jbHVkZSAi
U2tpYVV0aWxzLmgiCisKKyNpbmNsdWRlICJza2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zLmgiCisj
aW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCisKKyNpbmNsdWRlICJTa0JpdG1h
cC5oIgorI2luY2x1ZGUgIlNrQ29sb3JQcml2LmgiCisjaW5jbHVkZSAiU2tTaGFkZXIuaCIKKyNp
bmNsdWRlICJTa0Rhc2hQYXRoRWZmZWN0LmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorCisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaW5jbHVkZSAiR2RrU2tpYS5oIgorI2VuZGlm
CisKKy8vIFN0YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEVuY2Fwc3VsYXRlcyB0aGUgYWRkaXRp
b25hbCBwYWludGluZyBzdGF0ZSBpbmZvcm1hdGlvbiB3ZSBzdG9yZSBmb3IgZWFjaAorLy8gcHVz
aGVkIGdyYXBoaWNzIHN0YXRlLgorc3RydWN0IFBsYXRmb3JtQ29udGV4dFNraWE6OlN0YXRlIHsK
KyAgICBTdGF0ZSgpOworICAgIFN0YXRlKGNvbnN0IFN0YXRlJik7CisgICAgflN0YXRlKCk7CisK
KyAgICAvLyBDb21tb24gc2hhZGVyIHN0YXRlLgorICAgIGZsb2F0IG1fYWxwaGE7CisgICAgU2tQ
b3J0ZXJEdWZmOjpNb2RlIG1fcG9ydGVyRHVmZk1vZGU7CisgICAgU2tTaGFkZXIqIG1fZ3JhZGll
bnQ7CisgICAgU2tTaGFkZXIqIG1fcGF0dGVybjsKKyAgICBib29sIG1fdXNlQW50aWFsaWFzaW5n
OworICAgIFNrRHJhd0xvb3BlciogbV9sb29wZXI7CisKKyAgICAvLyBGaWxsLgorICAgIFNrQ29s
b3IgbV9maWxsQ29sb3I7CisKKyAgICAvLyBTdHJva2UuCisgICAgV2ViQ29yZTo6U3Ryb2tlU3R5
bGUgbV9zdHJva2VTdHlsZTsKKyAgICBTa0NvbG9yIG1fc3Ryb2tlQ29sb3I7CisgICAgZmxvYXQg
bV9zdHJva2VUaGlja25lc3M7CisgICAgaW50IG1fZGFzaFJhdGlvOyAgLy8gUmF0aW8gb2YgdGhl
IGxlbmd0aCBvZiBhIGRhc2ggdG8gaXRzIHdpZHRoLgorICAgIGZsb2F0IG1fbWl0ZXJMaW1pdDsK
KyAgICBTa1BhaW50OjpDYXAgbV9saW5lQ2FwOworICAgIFNrUGFpbnQ6OkpvaW4gbV9saW5lSm9p
bjsKKyAgICBTa0Rhc2hQYXRoRWZmZWN0KiBtX2Rhc2g7CisKKyAgICAvLyBUZXh0LiAoU2VlIGNU
ZXh0RmlsbCAmIGZyaWVuZHMgaW4gR3JhcGhpY3NDb250ZXh0LmguKQorICAgIGludCBtX3RleHRE
cmF3aW5nTW9kZTsKKworICAgIC8vIEhlbHBlciBmdW5jdGlvbiBmb3IgYXBwbHlpbmcgdGhlIHN0
YXRlJ3MgYWxwaGEgdmFsdWUgdG8gdGhlIGdpdmVuIGlucHV0CisgICAgLy8gY29sb3IgdG8gcHJv
ZHVjZSBhIG5ldyBvdXRwdXQgY29sb3IuCisgICAgU2tDb2xvciBhcHBseUFscGhhKFNrQ29sb3Ip
IGNvbnN0OworCitwcml2YXRlOgorICAgIC8vIE5vdCBzdXBwb3J0ZWQuCisgICAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgU3RhdGUmKTsKK307CisKKy8vIE5vdGU6IEtlZXAgdGhlc2VzIGRlZmF1bHQg
dmFsdWVzIGluIHN5bmMgd2l0aCBHcmFwaGljc0NvbnRleHRTdGF0ZS4KK1BsYXRmb3JtQ29udGV4
dFNraWE6OlN0YXRlOjpTdGF0ZSgpCisgICAgOiBtX2FscGhhKDEpCisgICAgLCBtX3BvcnRlckR1
ZmZNb2RlKFNrUG9ydGVyRHVmZjo6a1NyY092ZXJfTW9kZSkKKyAgICAsIG1fZ3JhZGllbnQoMCkK
KyAgICAsIG1fcGF0dGVybigwKQorICAgICwgbV91c2VBbnRpYWxpYXNpbmcodHJ1ZSkKKyAgICAs
IG1fbG9vcGVyKDApCisgICAgLCBtX2ZpbGxDb2xvcigweEZGMDAwMDAwKQorICAgICwgbV9zdHJv
a2VTdHlsZShXZWJDb3JlOjpTb2xpZFN0cm9rZSkKKyAgICAsIG1fc3Ryb2tlQ29sb3IoV2ViQ29y
ZTo6Q29sb3I6OmJsYWNrKQorICAgICwgbV9zdHJva2VUaGlja25lc3MoMCkKKyAgICAsIG1fZGFz
aFJhdGlvKDMpCisgICAgLCBtX21pdGVyTGltaXQoNCkKKyAgICAsIG1fbGluZUNhcChTa1BhaW50
OjprRGVmYXVsdF9DYXApCisgICAgLCBtX2xpbmVKb2luKFNrUGFpbnQ6OmtEZWZhdWx0X0pvaW4p
CisgICAgLCBtX2Rhc2goMCkKKyAgICAsIG1fdGV4dERyYXdpbmdNb2RlKFdlYkNvcmU6OmNUZXh0
RmlsbCkKK3sKK30KKworUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGU6OlN0YXRlKGNvbnN0IFN0
YXRlJiBvdGhlcikKK3sKKyAgICBtZW1jcHkodGhpcywgJm90aGVyLCBzaXplb2YoU3RhdGUpKTsK
KworICAgIG1fbG9vcGVyLT5zYWZlUmVmKCk7CisgICAgbV9kYXNoLT5zYWZlUmVmKCk7CisgICAg
bV9ncmFkaWVudC0+c2FmZVJlZigpOworICAgIG1fcGF0dGVybi0+c2FmZVJlZigpOworfQorCitQ
bGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZTo6flN0YXRlKCkKK3sKKyAgICBtX2xvb3Blci0+c2Fm
ZVVucmVmKCk7CisgICAgbV9kYXNoLT5zYWZlVW5yZWYoKTsKKyAgICBtX2dyYWRpZW50LT5zYWZl
VW5yZWYoKTsKKyAgICBtX3BhdHRlcm4tPnNhZmVVbnJlZigpOworfQorCitTa0NvbG9yIFBsYXRm
b3JtQ29udGV4dFNraWE6OlN0YXRlOjphcHBseUFscGhhKFNrQ29sb3IgYykgY29uc3QKK3sKKyAg
ICBpbnQgcyA9IHJvdW5kZihtX2FscGhhICogMjU2KTsKKyAgICBpZiAocyA+PSAyNTYpCisgICAg
ICAgIHJldHVybiBjOworICAgIGlmIChzIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBp
bnQgYSA9IFNrQWxwaGFNdWwoU2tDb2xvckdldEEoYyksIHMpOworICAgIHJldHVybiAoYyAmIDB4
MDBGRkZGRkYpIHwgKGEgPDwgMjQpOworfQorCisvLyBQbGF0Zm9ybUNvbnRleHRTa2lhIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisv
LyBEYW5nZXI6IGNhbnZhcyBjYW4gYmUgTlVMTC4KK1BsYXRmb3JtQ29udGV4dFNraWE6OlBsYXRm
b3JtQ29udGV4dFNraWEoc2tpYTo6UGxhdGZvcm1DYW52YXMqIGNhbnZhcykKKyAgICA6IG1fY2Fu
dmFzKGNhbnZhcykKKyAgICAsIG1fc3RhdGVTdGFjayhzaXplb2YoU3RhdGUpKQoreworICAgIG1f
c3RhdGVTdGFjay5hcHBlbmQoU3RhdGUoKSk7CisgICAgbV9zdGF0ZSA9ICZtX3N0YXRlU3RhY2su
bGFzdCgpOworI2lmIGRlZmluZWQoT1NfTElOVVgpCisgICAgbV9nZGtza2lhID0gbV9jYW52YXMg
PyBnZGtfc2tpYV9uZXcobV9jYW52YXMpIDogMDsKKyNlbmRpZgorfQorCitQbGF0Zm9ybUNvbnRl
eHRTa2lhOjp+UGxhdGZvcm1Db250ZXh0U2tpYSgpCit7CisjaWYgZGVmaW5lZChPU19MSU5VWCkK
KyAgICBpZiAobV9nZGtza2lhKSB7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fZ2Rrc2tpYSk7
CisgICAgICAgIG1fZ2Rrc2tpYSA9IDA7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgUGxhdGZv
cm1Db250ZXh0U2tpYTo6c2V0Q2FudmFzKHNraWE6OlBsYXRmb3JtQ2FudmFzKiBjYW52YXMpCit7
CisgICAgbV9jYW52YXMgPSBjYW52YXM7Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
c2F2ZSgpCit7CisgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCgqbV9zdGF0ZSk7CisgICAgbV9zdGF0
ZSA9ICZtX3N0YXRlU3RhY2subGFzdCgpOworCisgICAgLy8gU2F2ZSBvdXIgbmF0aXZlIGNhbnZh
cy4KKyAgICBjYW52YXMoKS0+c2F2ZSgpOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6
OnJlc3RvcmUoKQoreworICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgbV9zdGF0
ZSA9ICZtX3N0YXRlU3RhY2subGFzdCgpOworCisgICAgLy8gUmVzdG9yZSBvdXIgbmF0aXZlIGNh
bnZhcy4KKyAgICBjYW52YXMoKS0+cmVzdG9yZSgpOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4
dFNraWE6OmRyYXdSZWN0KFNrUmVjdCByZWN0KQoreworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAg
aW50IGZpbGxjb2xvck5vdFRyYW5zcGFyZW50ID0gbV9zdGF0ZS0+bV9maWxsQ29sb3IgJiAweEZG
MDAwMDAwOworICAgIGlmIChmaWxsY29sb3JOb3RUcmFuc3BhcmVudCkgeworICAgICAgICBzZXR1
cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOworICAgICAgICBjYW52YXMoKS0+ZHJhd1JlY3QocmVj
dCwgcGFpbnQpOworICAgIH0KKworICAgIGlmIChtX3N0YXRlLT5tX3N0cm9rZVN0eWxlICE9IFdl
YkNvcmU6Ok5vU3Ryb2tlICYmCisgICAgICAgIChtX3N0YXRlLT5tX3N0cm9rZUNvbG9yICYgMHhG
RjAwMDAwMCkpIHsKKyAgICAgICAgaWYgKGZpbGxjb2xvck5vdFRyYW5zcGFyZW50KSB7CisgICAg
ICAgICAgICAvLyBUaGlzIGNhbGwgaXMgZXhwZW5zaXZlIHNvIGRvbid0IGNhbGwgaXQgdW5uZWNl
c3NhcmlseS4KKyAgICAgICAgICAgIHBhaW50LnJlc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAg
c2V0dXBQYWludEZvclN0cm9raW5nKCZwYWludCwgJnJlY3QsIDApOworICAgICAgICBjYW52YXMo
KS0+ZHJhd1JlY3QocmVjdCwgcGFpbnQpOworICAgIH0KK30KKwordm9pZCBQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpzZXR1cFBhaW50Q29tbW9uKFNrUGFpbnQqIHBhaW50KSBjb25zdAoreworI2lmZGVm
IFNLX0RFQlVHeAorICAgIHsKKyAgICAgICAgU2tQYWludCBkZWZhdWx0UGFpbnQ7CisgICAgICAg
IFNrQVNTRVJUKCpwYWludCA9PSBkZWZhdWx0UGFpbnQpOworICAgIH0KKyNlbmRpZgorCisgICAg
cGFpbnQtPnNldEFudGlBbGlhcyhtX3N0YXRlLT5tX3VzZUFudGlhbGlhc2luZyk7CisgICAgcGFp
bnQtPnNldFBvcnRlckR1ZmZYZmVybW9kZShtX3N0YXRlLT5tX3BvcnRlckR1ZmZNb2RlKTsKKyAg
ICBwYWludC0+c2V0TG9vcGVyKG1fc3RhdGUtPm1fbG9vcGVyKTsKKworICAgIGlmIChtX3N0YXRl
LT5tX2dyYWRpZW50KQorICAgICAgICBwYWludC0+c2V0U2hhZGVyKG1fc3RhdGUtPm1fZ3JhZGll
bnQpOworICAgIGVsc2UgaWYgKG1fc3RhdGUtPm1fcGF0dGVybikKKyAgICAgICAgcGFpbnQtPnNl
dFNoYWRlcihtX3N0YXRlLT5tX3BhdHRlcm4pOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNr
aWE6OnNldHVwUGFpbnRGb3JGaWxsaW5nKFNrUGFpbnQqIHBhaW50KSBjb25zdAoreworICAgIHNl
dHVwUGFpbnRDb21tb24ocGFpbnQpOworICAgIHBhaW50LT5zZXRDb2xvcihtX3N0YXRlLT5hcHBs
eUFscGhhKG1fc3RhdGUtPm1fZmlsbENvbG9yKSk7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ29udGV4
dFNraWE6OnNldHVwUGFpbnRGb3JTdHJva2luZyhTa1BhaW50KiBwYWludCwgU2tSZWN0KiByZWN0
LCBpbnQgbGVuZ3RoKSBjb25zdAoreworICAgIHNldHVwUGFpbnRDb21tb24ocGFpbnQpOworICAg
IGZsb2F0IHdpZHRoID0gbV9zdGF0ZS0+bV9zdHJva2VUaGlja25lc3M7CisKKyAgICAvLyBUaGlz
IGFsbG93cyBkYXNoaW5nIGFuZCBkb3R0aW5nIHRvIHdvcmsgcHJvcGVybHkgZm9yIGhhaXJsaW5l
IHN0cm9rZXMuCisgICAgaWYgKHdpZHRoID09IDApCisgICAgICAgIHdpZHRoID0gMTsKKworICAg
IHBhaW50LT5zZXRDb2xvcihtX3N0YXRlLT5hcHBseUFscGhhKG1fc3RhdGUtPm1fc3Ryb2tlQ29s
b3IpKTsKKyAgICBwYWludC0+c2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAg
cGFpbnQtPnNldFN0cm9rZVdpZHRoKFNrRmxvYXRUb1NjYWxhcih3aWR0aCkpOworICAgIHBhaW50
LT5zZXRTdHJva2VDYXAobV9zdGF0ZS0+bV9saW5lQ2FwKTsKKyAgICBwYWludC0+c2V0U3Ryb2tl
Sm9pbihtX3N0YXRlLT5tX2xpbmVKb2luKTsKKyAgICBwYWludC0+c2V0U3Ryb2tlTWl0ZXIoU2tG
bG9hdFRvU2NhbGFyKG1fc3RhdGUtPm1fbWl0ZXJMaW1pdCkpOworCisgICAgaWYgKHJlY3QgIT0g
MCAmJiAoc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYod2lkdGgpKSAmIDEpKQorICAgICAgICByZWN0
LT5pbnNldCgtU0tfU2NhbGFySGFsZiwgLVNLX1NjYWxhckhhbGYpOworCisgICAgaWYgKG1fc3Rh
dGUtPm1fZGFzaCkKKyAgICAgICAgcGFpbnQtPnNldFBhdGhFZmZlY3QobV9zdGF0ZS0+bV9kYXNo
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChtX3N0YXRlLT5tX3N0cm9rZVN0eWxlKSB7
CisgICAgICAgIGNhc2UgV2ViQ29yZTo6Tm9TdHJva2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
U29saWRTdHJva2U6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpE
YXNoZWRTdHJva2U6CisgICAgICAgICAgICB3aWR0aCA9IG1fc3RhdGUtPm1fZGFzaFJhdGlvICog
d2lkdGg7CisgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2guCisgICAgICAgIGNhc2UgV2ViQ29y
ZTo6RG90dGVkU3Ryb2tlOgorICAgICAgICAgICAgU2tTY2FsYXIgZGFzaExlbmd0aDsKKyAgICAg
ICAgICAgIGlmIChsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgYWJvdXQg
aG93IG1hbnkgZGFzaGVzIG9yIGRvdHMgd2Ugc2hvdWxkIGhhdmUuCisgICAgICAgICAgICAgICAg
aW50IG51bURhc2hlcyA9IGxlbmd0aCAvIHJvdW5kZih3aWR0aCk7CisgICAgICAgICAgICAgICAg
aWYgKCEobnVtRGFzaGVzICYgMSkpCisgICAgICAgICAgICAgICAgICAgIG51bURhc2hlcysrOyAg
ICAvLyBNYWtlIGl0IG9kZCBzbyB3ZSBlbmQgb24gYSBkYXNoL2RvdC4KKyAgICAgICAgICAgICAg
ICAvLyBVc2UgdGhlIG51bWJlciBvZiBkYXNoZXMgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2Yg
YQorICAgICAgICAgICAgICAgIC8vIGRhc2gvZG90LCB3aGljaCB3aWxsIGJlIGFwcHJveGltYXRl
bHkgd2lkdGgKKyAgICAgICAgICAgICAgICBkYXNoTGVuZ3RoID0gU2tTY2FsYXJEaXYoU2tJbnRU
b1NjYWxhcihsZW5ndGgpLCBTa0ludFRvU2NhbGFyKG51bURhc2hlcykpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgZGFzaExlbmd0aCA9IFNrRmxvYXRUb1NjYWxhcih3aWR0
aCk7CisgICAgICAgICAgICBTa1NjYWxhciBpbnRlcnZhbHNbMl0gPSB7IGRhc2hMZW5ndGgsIGRh
c2hMZW5ndGggfTsKKyAgICAgICAgICAgIHBhaW50LT5zZXRQYXRoRWZmZWN0KG5ldyBTa0Rhc2hQ
YXRoRWZmZWN0KGludGVydmFscywgMiwgMCkpLT51bnJlZigpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHdpZHRoOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldERy
YXdMb29wZXIoU2tEcmF3TG9vcGVyKiBkbCkKK3sKKyAgICBTa1JlZkNudF9TYWZlQXNzaWduKG1f
c3RhdGUtPm1fbG9vcGVyLCBkbCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0
TWl0ZXJMaW1pdChmbG9hdCBtbCkKK3sKKyAgICBtX3N0YXRlLT5tX21pdGVyTGltaXQgPSBtbDsK
K30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKK3sK
KyAgICBtX3N0YXRlLT5tX2FscGhhID0gYWxwaGE7Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6c2V0TGluZUNhcChTa1BhaW50OjpDYXAgbGMpCit7CisgICAgbV9zdGF0ZS0+bV9saW5l
Q2FwID0gbGM7Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0TGluZUpvaW4oU2tQ
YWludDo6Sm9pbiBsaikKK3sKKyAgICBtX3N0YXRlLT5tX2xpbmVKb2luID0gbGo7Cit9CisKK3Zv
aWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0UG9ydGVyRHVmZk1vZGUoU2tQb3J0ZXJEdWZmOjpN
b2RlIHBkbSkKK3sKKyAgICBtX3N0YXRlLT5tX3BvcnRlckR1ZmZNb2RlID0gcGRtOworfQorCit2
b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEZpbGxDb2xvcihTa0NvbG9yIGNvbG9yKQorewor
ICAgIG1fc3RhdGUtPm1fZmlsbENvbG9yID0gY29sb3I7Cit9CisKK1NrRHJhd0xvb3BlciogUGxh
dGZvcm1Db250ZXh0U2tpYTo6Z2V0RHJhd0xvb3BlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c3RhdGUtPm1fbG9vcGVyOworfQorCitXZWJDb3JlOjpTdHJva2VTdHlsZSBQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpnZXRTdHJva2VTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGUtPm1f
c3Ryb2tlU3R5bGU7Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0U3Ryb2tlU3R5
bGUoV2ViQ29yZTo6U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCit7CisgICAgbV9zdGF0ZS0+bV9z
dHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6
OnNldFN0cm9rZUNvbG9yKFNrQ29sb3Igc3Ryb2tlQ29sb3IpCit7CisgICAgbV9zdGF0ZS0+bV9z
dHJva2VDb2xvciA9IHN0cm9rZUNvbG9yOworfQorCitmbG9hdCBQbGF0Zm9ybUNvbnRleHRTa2lh
OjpnZXRTdHJva2VUaGlja25lc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlLT5tX3N0
cm9rZVRoaWNrbmVzczsKK30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRTdHJva2VU
aGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKQoreworICAgIG1fc3RhdGUtPm1fc3Ryb2tlVGhpY2tu
ZXNzID0gdGhpY2tuZXNzOworfQorCitpbnQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0VGV4dERy
YXdpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZS0+bV90ZXh0RHJhd2luZ01v
ZGU7Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0VGV4dERyYXdpbmdNb2RlKGlu
dCBtb2RlKQoreworICAvLyBjVGV4dENsaXAgaXMgbmV2ZXIgdXNlZCwgc28gd2UgYXNzZXJ0IHRo
YXQgaXQgaXNuJ3Qgc2V0OgorICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4OTgKKyAgQVNTRVJUKChtb2RlICYgV2ViQ29yZTo6Y1RleHRDbGlwKSA9PSAwKTsK
KyAgbV9zdGF0ZS0+bV90ZXh0RHJhd2luZ01vZGUgPSBtb2RlOworfQorCit2b2lkIFBsYXRmb3Jt
Q29udGV4dFNraWE6OnNldFVzZUFudGlhbGlhc2luZyhib29sIGVuYWJsZSkKK3sKKyAgICBtX3N0
YXRlLT5tX3VzZUFudGlhbGlhc2luZyA9IGVuYWJsZTsKK30KKworU2tDb2xvciBQbGF0Zm9ybUNv
bnRleHRTa2lhOjpmaWxsQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlLT5tX2Zp
bGxDb2xvcjsKK30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpblBhdGgoKQorewor
ICAgIG1fcGF0aC5yZXNldCgpOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmFkZFBh
dGgoY29uc3QgU2tQYXRoJiBwYXRoKQoreworICAgIG1fcGF0aC5hZGRQYXRoKHBhdGgpOworfQor
Cit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEZpbGxSdWxlKFNrUGF0aDo6RmlsbFR5cGUg
ZnIpCit7CisgICAgbV9wYXRoLnNldEZpbGxUeXBlKGZyKTsKK30KKwordm9pZCBQbGF0Zm9ybUNv
bnRleHRTa2lhOjpzZXRHcmFkaWVudChTa1NoYWRlciogZ3JhZGllbnQpCit7CisgICAgaWYgKGdy
YWRpZW50ICE9IG1fc3RhdGUtPm1fZ3JhZGllbnQpIHsKKyAgICAgICAgbV9zdGF0ZS0+bV9ncmFk
aWVudC0+c2FmZVVucmVmKCk7CisgICAgICAgIG1fc3RhdGUtPm1fZ3JhZGllbnQgPSBncmFkaWVu
dDsKKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0UGF0dGVybihTa1No
YWRlciogcGF0dGVybikKK3sKKyAgICBpZiAocGF0dGVybiAhPSBtX3N0YXRlLT5tX3BhdHRlcm4p
IHsKKyAgICAgICAgbV9zdGF0ZS0+bV9wYXR0ZXJuLT5zYWZlVW5yZWYoKTsKKyAgICAgICAgbV9z
dGF0ZS0+bV9wYXR0ZXJuID0gcGF0dGVybjsKKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250
ZXh0U2tpYTo6c2V0RGFzaFBhdGhFZmZlY3QoU2tEYXNoUGF0aEVmZmVjdCogZGFzaCkKK3sKKyAg
ICBpZiAoZGFzaCAhPSBtX3N0YXRlLT5tX2Rhc2gpIHsKKyAgICAgICAgbV9zdGF0ZS0+bV9kYXNo
LT5zYWZlVW5yZWYoKTsKKyAgICAgICAgbV9zdGF0ZS0+bV9kYXNoID0gZGFzaDsKKyAgICB9Cit9
CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6cGFpbnRTa1BhaW50KGNvbnN0IFNrUmVjdCYg
cmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNrUGFp
bnQmIHBhaW50KQoreworICAgIG1fY2FudmFzLT5kcmF3UmVjdChyZWN0LCBwYWludCk7Cit9CisK
K2NvbnN0IFNrQml0bWFwKiBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiaXRtYXAoKSBjb25zdAorewor
ICAgIHJldHVybiAmbV9jYW52YXMtPmdldERldmljZSgpLT5hY2Nlc3NCaXRtYXAoZmFsc2UpOwor
fQorCitib29sIFBsYXRmb3JtQ29udGV4dFNraWE6OmlzUHJpbnRpbmcoKQoreworICAgIHJldHVy
biBtX2NhbnZhcy0+Z2V0VG9wUGxhdGZvcm1EZXZpY2UoKS5Jc1ZlY3RvcmlhbCgpOworfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNr
aWEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlOWExOQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNvbnRleHRTa2lhX2gK
KyNkZWZpbmUgUGxhdGZvcm1Db250ZXh0U2tpYV9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorCisjaW5jbHVkZSAiU2tEYXNoUGF0aEVm
ZmVjdC5oIgorI2luY2x1ZGUgIlNrRHJhd0xvb3Blci5oIgorI2luY2x1ZGUgIlNrRGVxdWUuaCIK
KyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKKyNpbmNsdWRlICJTa1BhaW50
LmgiCisjaW5jbHVkZSAiU2tQYXRoLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3R5
cGVkZWYgc3RydWN0IF9HZGtEcmF3YWJsZSBHZGtTa2lhOworCisvLyBUaGlzIGNsYXNzIGhvbGRz
IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBzdGF0ZSBmb3IgR3JhcGhpY3NDb250ZXh0LiBXZSBwdXQK
Ky8vIG1vc3Qgb2Ygb3VyIFNraWEgd3JhcHBlcnMgb24gdGhpcyBjbGFzcy4gSW4gdGhlb3J5LCBh
IGxvdCBvZiB0aGlzIHN0dWZmIGNvdWxkCisvLyBiZSBtb3ZlZCB0byBHcmFwaGljc0NvbnRleHQg
ZGlyZWN0bHksIGV4Y2VwdCB0aGF0IHNvbWUgY29kZSBleHRlcm5hbCB0byB0aGlzCisvLyB3b3Vs
ZCBsaWtlIHRvIHBva2UgYXQgb3VyIGdyYXBoaWNzIGxheWVyIGFzIHdlbGwgKGxpa2UgdGhlIElt
YWdlIGFuZCBGb250CisvLyBzdHVmZiwgd2hpY2ggbmVlZHMgc29tZSBhbW91bnQgb2Ygb3VyIHdy
YXBwZXJzIGFuZCBzdGF0ZSBhcm91bmQgU2tDYW52YXMpLgorLy8KKy8vIFNvIGluIGdlbmVyYWws
IHRoaXMgY2xhc3MgdXNlcyBqdXN0IFNraWEgdHlwZXMgZXhjZXB0IHdoZW4gdGhlcmUncyBubyBl
YXN5CisvLyBjb252ZXJzaW9uLiBHcmFwaGljc0NvbnRleHQgaXMgcmVzcG9uc2libGUgZm9yIGNv
bnZlcnRpbmcgdGhlIFdlYktpdCB0eXBlcyB0bworLy8gU2tpYSB0eXBlcyBhbmQgc2V0dGluZyB1
cCB0aGUgZXZlbnR1YWwgY2FsbCB0byB0aGUgU2tpYSBmdW5jdGlvbnMuCisvLworLy8gVGhpcyBj
bGFzcyB0aGVuIGtlZXBzIHRyYWNrIG9mIGFsbCB0aGUgY3VycmVudCBTa2lhIHN0YXRlLiBXZWJL
aXQgZXhwZWN0cworLy8gdGhhdCB0aGUgZ3JhcGhpY3Mgc3RhdGUgdGhhdCBpcyBwdXNoZWQgYW5k
IHBvcHBlZCBieSBzYXZlKCkgYW5kIHJlc3RvcmUoKQorLy8gaW5jbHVkZXMgdGhpbmdzIGxpa2Ug
Y29sb3JzIGFuZCBwZW4gc3R5bGVzLiBTa2lhIGRvZXMgdGhpcyBkaWZmZXJlbnRseSwgd2hlcmUK
Ky8vIHB1c2ggYW5kIHBvcCBvbmx5IGluY2x1ZGVzIHRyYW5zZm9ybXMgYW5kIGJpdG1hcHMsIGFu
ZCB0aGUgYXBwbGljYXRpb24gaXMKKy8vIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgcGFp
bnRpbmcgc3RhdGUgd2hpY2ggaXMgc3RvcmUgaW4gc2VwYXJhdGUKKy8vIFNrUGFpbnQgb2JqZWN0
cy4gVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgYWRhcHRvciB0aGF0IGFsbG93cyB0aGUgcGFpbnRp
bmcKKy8vIHN0YXRlIHRvIGJlIHB1c2hlZCBhbmQgcG9wcGVkIGFsb25nIHdpdGggdGhlIGJpdG1h
cC4KK2NsYXNzIFBsYXRmb3JtQ29udGV4dFNraWEgOiBOb25jb3B5YWJsZSB7CitwdWJsaWM6Cisg
ICAgLy8gRm9yIHByaW50aW5nLCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IGNhbnZhcy4gY2FudmFz
IGNhbiBiZSBOVUxMLiBJZiB5b3UKKyAgICAvLyBzdXBwbHkgYSBOVUxMIGNhbnZhcywgeW91IGNh
biBhbHNvIGNhbGwgc2V0Q2FudmFzIGxhdGVyLgorICAgIFBsYXRmb3JtQ29udGV4dFNraWEoc2tp
YTo6UGxhdGZvcm1DYW52YXMqKTsKKyAgICB+UGxhdGZvcm1Db250ZXh0U2tpYSgpOworCisgICAg
Ly8gU2V0cyB0aGUgY2FudmFzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuIFVzZSB3aGVu
IHN1cHBseWluZyBOVUxMCisgICAgLy8gdG8gdGhlIGNvbnN0cnVjdG9yLgorICAgIHZvaWQgc2V0
Q2FudmFzKHNraWE6OlBsYXRmb3JtQ2FudmFzKik7CisKKyAgICB2b2lkIHNhdmUoKTsKKyAgICB2
b2lkIHJlc3RvcmUoKTsKKworICAgIC8vIFNldHMgdXAgdGhlIGNvbW1vbiBmbGFncyBvbiBhIHBh
aW50IGZvciBhbnRpYWxpYXNpbmcsIGVmZmVjdHMsIGV0Yy4KKyAgICAvLyBUaGlzIGlzIGltcGxp
Y2l0bHkgY2FsbGVkIGJ5IHNldHVwUGFpbnRGaWxsIGFuZCBzZXR1cFBhaW50U3Ryb2tlLCBidXQK
KyAgICAvLyB5b3UgbWF5IHdpc2ggdG8gY2FsbCBpdCBkaXJlY3RseSBzb21ldGltZXMgaWYgeW91
IGRvbid0IHdhbnQgdGhhdCBvdGhlcgorICAgIC8vIGJlaGF2aW9yLgorICAgIHZvaWQgc2V0dXBQ
YWludENvbW1vbihTa1BhaW50KikgY29uc3Q7CisKKyAgICAvLyBTZXRzIHVwIHRoZSBwYWludCBm
b3IgdGhlIGN1cnJlbnQgZmlsbCBzdHlsZS4KKyAgICB2b2lkIHNldHVwUGFpbnRGb3JGaWxsaW5n
KFNrUGFpbnQqKSBjb25zdDsKKworICAgIC8vIFNldHMgdXAgdGhlIHBhaW50IGZvciBzdHJva2lu
Zy4gUmV0dXJucyBhbiBpbnQgcmVwcmVzZW50aW5nIHRoZSB3aWR0aCBvZgorICAgIC8vIHRoZSBw
ZW4sIG9yIDEgaWYgdGhlIHBlbidzIHdpZHRoIGlzIDAgaWYgYSBub24temVybyBsZW5ndGggaXMg
cHJvdmlkZWQsCisgICAgLy8gdGhlIG51bWJlciBvZiBkYXNoZXMvZG90cyBvbiBhIGRhc2hlZC9k
b3R0ZWQgbGluZSB3aWxsIGJlIGFkanVzdGVkIHRvCisgICAgLy8gc3RhcnQgYW5kIGVuZCB0aGF0
IGxlbmd0aCB3aXRoIGEgZGFzaC9kb3QuCisgICAgZmxvYXQgc2V0dXBQYWludEZvclN0cm9raW5n
KFNrUGFpbnQqLCBTa1JlY3QqLCBpbnQgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFN0YXRlIHNl
dHRpbmcgZnVuY3Rpb25zLgorICAgIHZvaWQgc2V0RHJhd0xvb3BlcihTa0RyYXdMb29wZXIqKTsg
IC8vIE5vdGU6IHRha2VzIGFuIGFkZGl0aW9uYWwgcmVmLgorICAgIHZvaWQgc2V0TWl0ZXJMaW1p
dChmbG9hdCk7CisgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CisgICAgdm9pZCBzZXRMaW5lQ2Fw
KFNrUGFpbnQ6OkNhcCk7CisgICAgdm9pZCBzZXRMaW5lSm9pbihTa1BhaW50OjpKb2luKTsKKyAg
ICB2b2lkIHNldEZpbGxSdWxlKFNrUGF0aDo6RmlsbFR5cGUpOworICAgIHZvaWQgc2V0UG9ydGVy
RHVmZk1vZGUoU2tQb3J0ZXJEdWZmOjpNb2RlKTsKKyAgICB2b2lkIHNldEZpbGxDb2xvcihTa0Nv
bG9yKTsKKyAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFdlYkNvcmU6OlN0cm9rZVN0eWxlKTsKKyAg
ICB2b2lkIHNldFN0cm9rZUNvbG9yKFNrQ29sb3IpOworICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tu
ZXNzKGZsb2F0IHRoaWNrbmVzcyk7CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoaW50IG1v
ZGUpOworICAgIHZvaWQgc2V0VXNlQW50aWFsaWFzaW5nKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lk
IHNldEdyYWRpZW50KFNrU2hhZGVyKik7CisgICAgdm9pZCBzZXRQYXR0ZXJuKFNrU2hhZGVyKik7
CisgICAgdm9pZCBzZXREYXNoUGF0aEVmZmVjdChTa0Rhc2hQYXRoRWZmZWN0Kik7CisKKyAgICBT
a0RyYXdMb29wZXIqIGdldERyYXdMb29wZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpTdHJva2VT
dHlsZSBnZXRTdHJva2VTdHlsZSgpIGNvbnN0OworICAgIGZsb2F0IGdldFN0cm9rZVRoaWNrbmVz
cygpIGNvbnN0OworICAgIGludCBnZXRUZXh0RHJhd2luZ01vZGUoKSBjb25zdDsKKworICAgIHZv
aWQgYmVnaW5QYXRoKCk7CisgICAgdm9pZCBhZGRQYXRoKGNvbnN0IFNrUGF0aCYpOworICAgIGNv
bnN0IFNrUGF0aCogY3VycmVudFBhdGgoKSBjb25zdCB7IHJldHVybiAmbV9wYXRoOyB9CisKKyAg
ICBTa0NvbG9yIGZpbGxDb2xvcigpIGNvbnN0OworCisgICAgc2tpYTo6UGxhdGZvcm1DYW52YXMq
IGNhbnZhcygpIHsgcmV0dXJuIG1fY2FudmFzOyB9CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgcHVzaGVkIGRvd24gdG8gR3JhcGhpY3NDb250ZXh0LgorICAgIHZvaWQgZHJhd1JlY3Qo
U2tSZWN0IHJlY3QpOworCisgICAgLy8gRklYTUU6IEknbSBzdGlsbCB1bnN1cmUgaG93IEkgd2ls
bCBzZXJpYWxpemUgdGhpcyBjYWxsLgorICAgIHZvaWQgcGFpbnRTa1BhaW50KGNvbnN0IFNrUmVj
dCYsIGNvbnN0IFNrUGFpbnQmKTsKKworICAgIGNvbnN0IFNrQml0bWFwKiBiaXRtYXAoKSBjb25z
dDsKKworICAgIC8vIFJldHVybnMgdGhlIGNhbnZhcyB1c2VkIGZvciBwYWludGluZywgTk9UIGd1
YXJhbnRlZWQgdG8gYmUgbm9uLU5VTEwuCisgICAgLy8KKyAgICAvLyBXYXJuaW5nOiBUaGlzIGZ1
bmN0aW9uIGlzIGRlcHJlY2F0ZWQgc28gdGhlIHVzZXJzIGFyZSByZW1pbmRlZCB0aGF0IHRoZXkK
KyAgICAvLyBzaG91bGQgdXNlIHRoaXMgbGF5ZXIgb2YgaW5kaXJlY3Rpb24gaW5zdGVhZCBvZiB1
c2luZyB0aGUgY2FudmFzCisgICAgLy8gZGlyZWN0bHkuIFRoaXMgaXMgdG8gaGVscCB3aXRoIHRo
ZSBldmVudHVhbCBzZXJpYWxpemF0aW9uLgorICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzKiBjYW52
YXMoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgaWYgdGhlIGNvbnRleHQgaXMgYSBwcmludGlu
ZyBjb250ZXh0IGluc3RlYWQgb2YgYSBkaXNwbGF5CisgICAgLy8gY29udGV4dC4gQml0bWFwIHNo
b3VsZG4ndCBiZSByZXNhbXBsZWQgd2hlbiBwcmludGluZyB0byBrZWVwIHRoZSBiZXN0CisgICAg
Ly8gcG9zc2libGUgcXVhbGl0eS4KKyAgICBib29sIGlzUHJpbnRpbmcoKTsKKworI2lmIGRlZmlu
ZWQoX19saW51eF9fKQorICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgY2FtZWxDYXNlLgorICAgIEdk
a1NraWEqIGdka19za2lhKCkgY29uc3QgeyByZXR1cm4gbV9nZGtza2lhOyB9CisjZW5kaWYKKwor
cHJpdmF0ZToKKyAgICAvLyBEZWZpbmVzIGRyYXdpbmcgc3R5bGUuCisgICAgc3RydWN0IFN0YXRl
OworCisgICAgLy8gTlVMTCBpbmRpY2F0ZXMgcGFpbnRpbmcgaXMgZGlzYWJsZWQuIE5ldmVyIGRl
bGV0ZSB0aGlzIG9iamVjdC4KKyAgICBza2lhOjpQbGF0Zm9ybUNhbnZhcyogbV9jYW52YXM7CisK
KyAgICAvLyBTdGF0ZXMgc3RhY2suIEVuYWJsZXMgbG9jYWwgZHJhd2luZyBzdGF0ZSBjaGFuZ2Ug
d2l0aCBzYXZlKCkvcmVzdG9yZSgpCisgICAgLy8gY2FsbHMuCisgICAgV1RGOjpWZWN0b3I8U3Rh
dGU+IG1fc3RhdGVTdGFjazsKKyAgICAvLyBQb2ludGVyIHRvIHRoZSBjdXJyZW50IGRyYXdpbmcg
c3RhdGUuIFRoaXMgaXMgYSBjYWNoZWQgdmFsdWUgb2YKKyAgICAvLyBtU3RhdGVTdGFjay5iYWNr
KCkuCisgICAgU3RhdGUqIG1fc3RhdGU7CisKKyAgICAvLyBDdXJyZW50IHBhdGguCisgICAgU2tQ
YXRoIG1fcGF0aDsKKworI2lmIGRlZmluZWQoX19saW51eF9fKQorICAgIC8vIEEgcG9pbnRlciB0
byBhIEdESyBEcmF3YWJsZSB3cmFwcGluZyBvZiB0aGlzIFNraWEgY2FudmFzCisgICAgR2RrU2tp
YSogbV9nZGtza2lhOworI2VuZGlmCit9OworCisjZW5kaWYgIC8vIFBsYXRmb3JtQ29udGV4dFNr
aWFfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3Jt
R3JhcGhpY3MuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUdyYXBo
aWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFlODgzNQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUdyYXBo
aWNzLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtR3JhcGhpY3NfaAorI2Rl
ZmluZSBQbGF0Zm9ybUdyYXBoaWNzX2gKKwordHlwZWRlZiBjbGFzcyBTa1NoYWRlciogUGxhdGZv
cm1HcmFkaWVudDsKK3R5cGVkZWYgY2xhc3MgU2tTaGFkZXIqIFBsYXRmb3JtUGF0dGVybjsKKwor
I2VuZGlmIC8vIFBsYXRmb3JtR3JhcGhpY3NfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26581</attachid>
            <date>2009-01-09 15:03:28 -0800</date>
            <delta_ts>2009-01-09 15:03:28 -0800</delta_ts>
            <desc>Add SkiaFontWin to platform/graphics/chromium</desc>
            <filename>Add-SkiaFontWin-to-platform-graphics-chromium.patch</filename>
            <type>text/plain</type>
            <size>11568</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZmQ1OTBhYmVhMmMzODU2NzQzZmI1ZjY4MzQxNDhkOTg4MTNkYWMyZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZGM0ODhmLi5jZWI4NGE3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDA5LTAxLTA5ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAg
ICAgQWRkIFNraWFGb250V2luIHRvIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIxNQorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkT3V0bGluZUtleTo6Q2FjaGVkT3V0bGluZUtleSk6CisgICAgICAg
IChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE91dGxpbmVL
ZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE91dGxpbmVLZXlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpGSVhFRFRvU2tTY2FsYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6ZGVsZXRlT3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRQb2x5Q3VydmVUb1Bh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGF0aEZvckdseXBoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNraWFXaW5PdXRsaW5lQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlUGF0aEZvckdseXBoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNraWFXaW5PdXRsaW5lQ2FjaGU6OnJlbW92ZVBhdGhzRm9yRm9udCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oOiBBZGRlZC4K
KwogMjAwOS0wMS0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9Ta2lhRm9udFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tp
YUZvbnRXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNzlhN2UK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTa2lhRm9udFdpbi5oIgorCisjaW5jbHVkZSAiU2tDYW52YXMuaCIKKyNpbmNsdWRlICJT
a1BhaW50LmgiCisKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENhY2hlZE91dGxpbmVL
ZXkgeworICAgIENhY2hlZE91dGxpbmVLZXkoKSA6IGZvbnQoMCksIGdseXBoKDApLCBwYXRoKDAp
IHt9CisgICAgQ2FjaGVkT3V0bGluZUtleShIRk9OVCBmLCBXT1JEIGcpIDogZm9udChmKSwgZ2x5
cGgoZyksIHBhdGgoMCkge30KKworICAgIEhGT05UIGZvbnQ7CisgICAgV09SRCBnbHlwaDsKKwor
ICAgIC8vIFRoZSBsaWZldGltZSBvZiB0aGlzIHBvaW50ZXIgaXMgbWFuYWdlZCBleHRlcm5hbGx5
IHRvIHRoaXMgY2xhc3MuIEJlIHN1cmUKKyAgICAvLyB0byBjYWxsIERlbGV0ZU91dGxpbmUgdG8g
cmVtb3ZlIGl0ZW1zLgorICAgIFNrUGF0aCogcGF0aDsKK307CisKK2NvbnN0IGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDYWNoZWRPdXRsaW5lS2V5JiBhLCBjb25zdCBDYWNoZWRPdXRsaW5lS2V5JiBi
KQoreworICAgIHJldHVybiBhLmZvbnQgPT0gYi5mb250ICYmIGEuZ2x5cGggPT0gYi5nbHlwaDsK
K30KKworc3RydWN0IENhY2hlZE91dGxpbmVLZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBDYWNoZWRPdXRsaW5lS2V5JiBrZXkpCisgICAgeworICAgICAgICB1bnNpZ25l
ZCBrZXlCeXRlczsKKyAgICAgICAgbWVtY3B5KCZrZXlCeXRlcywgJmtleS5mb250LCBzaXplb2Yo
dW5zaWduZWQpKTsKKyAgICAgICAgcmV0dXJuIGtleUJ5dGVzICsga2V5LmdseXBoOworICAgIH0K
KworICAgIHN0YXRpYyB1bnNpZ25lZCBlcXVhbChjb25zdCBDYWNoZWRPdXRsaW5lS2V5JiBhLCBj
b25zdCBDYWNoZWRPdXRsaW5lS2V5JiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEuZm9udCA9
PSBiLmZvbnQgJiYgYS5nbHlwaCA9PSBiLmdseXBoOworICAgIH0KKworICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3R5cGVk
ZWYgTGlzdEhhc2hTZXQ8Q2FjaGVkT3V0bGluZUtleSwgQ2FjaGVkT3V0bGluZUtleUhhc2g+IE91
dGxpbmVDYWNoZTsKKworLy8gRklYTUU6IENvbnZlcnQgZnJvbSBzdGF0aWMgY29uc3RydWN0b3Ig
dG8gYWNjZXNzb3IgZnVuY3Rpb24uIFdlYkNvcmUgdHJpZXMgdG8KKy8vIGF2b2lkIGdsb2JhbCBj
b25zdHJ1Y3RvcnMgdG8gc2F2ZSBvbiBzdGFydC11cCB0aW1lLgorc3RhdGljIE91dGxpbmVDYWNo
ZSBvdXRsaW5lQ2FjaGU7CisKKy8vIFRoZSBnbG9iYWwgbnVtYmVyIG9mIGdseXBoIG91dGxpbmVz
IHdlJ2xsIGNhY2hlLgorc3RhdGljIGNvbnN0IGludCBvdXRsaW5lQ2FjaGVTaXplID0gMjU2Owor
CitzdGF0aWMgU2tTY2FsYXIgRklYRURUb1NrU2NhbGFyKEZJWEVEIGZpeGVkKQoreworICAgIFNr
Rml4ZWQgc2tGaXhlZDsKKyAgICBtZW1jcHkoJnNrRml4ZWQsICZmaXhlZCwgc2l6ZW9mKFNrRml4
ZWQpKTsKKyAgICByZXR1cm4gU2tGaXhlZFRvU2NhbGFyKHNrRml4ZWQpOworfQorCisvLyBSZW1v
dmVzIHRoZSBnaXZlbiBrZXkgZnJvbSB0aGUgY2FjaGVkIG91dGxpbmVzLCBhbHNvIGRlbGV0aW5n
IHRoZSBwYXRoLgorc3RhdGljIHZvaWQgZGVsZXRlT3V0bGluZShPdXRsaW5lQ2FjaGU6Oml0ZXJh
dG9yIGRlbGV0ZU1lKQoreworICAgIGRlbGV0ZSBkZWxldGVNZS0+cGF0aDsKKyAgICBvdXRsaW5l
Q2FjaGUucmVtb3ZlKGRlbGV0ZU1lKTsKK30KKworc3RhdGljIHZvaWQgYWRkUG9seUN1cnZlVG9Q
YXRoKGNvbnN0IFRUUE9MWUNVUlZFKiBwb2x5Q3VydmUsIFNrUGF0aCogcGF0aCkKK3sKKyAgICBz
d2l0Y2ggKHBvbHlDdXJ2ZS0+d1R5cGUpIHsKKyAgICBjYXNlIFRUX1BSSU1fTElORToKKyAgICAg
ICAgZm9yIChXT1JEIGkgPSAwOyBpIDwgcG9seUN1cnZlLT5jcGZ4OyBpKyspIHsKKyAgICAgICAg
ICBwYXRoLT5saW5lVG8oRklYRURUb1NrU2NhbGFyKHBvbHlDdXJ2ZS0+YXBmeFtpXS54KSwgLUZJ
WEVEVG9Ta1NjYWxhcihwb2x5Q3VydmUtPmFwZnhbaV0ueSkpOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBUVF9QUklNX1FTUExJTkU6CisgICAgICAgIC8vIEZJWE1FOiBk
b2Vzbid0IHRoaXMgZHVwbGljYXRlIHBvaW50cyBpZiB3ZSBkbyB0aGUgbG9vcCA+IG9uY2U/Cisg
ICAgICAgIGZvciAoV09SRCBpID0gMDsgaSA8IHBvbHlDdXJ2ZS0+Y3BmeCAtIDE7IGkrKykgewor
ICAgICAgICAgICAgU2tTY2FsYXIgYnggPSBGSVhFRFRvU2tTY2FsYXIocG9seUN1cnZlLT5hcGZ4
W2ldLngpOworICAgICAgICAgICAgU2tTY2FsYXIgYnkgPSBGSVhFRFRvU2tTY2FsYXIocG9seUN1
cnZlLT5hcGZ4W2ldLnkpOworCisgICAgICAgICAgICBTa1NjYWxhciBjeCA9IEZJWEVEVG9Ta1Nj
YWxhcihwb2x5Q3VydmUtPmFwZnhbaSArIDFdLngpOworICAgICAgICAgICAgU2tTY2FsYXIgY3kg
PSBGSVhFRFRvU2tTY2FsYXIocG9seUN1cnZlLT5hcGZ4W2kgKyAxXS55KTsKKyAgICAgICAgICAg
IGlmIChpIDwgcG9seUN1cnZlLT5jcGZ4IC0gMikgeworICAgICAgICAgICAgICAgIC8vIFdlJ3Jl
IG5vdCB0aGUgbGFzdCBwb2ludCwgY29tcHV0ZSBDLgorICAgICAgICAgICAgICAgIGN4ID0gU2tT
Y2FsYXJBdmUoYngsIGN4KTsKKyAgICAgICAgICAgICAgICBjeSA9IFNrU2NhbGFyQXZlKGJ5LCBj
eSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gZmxpcCB0aGUgeSBj
b29yZGluYXRlcyBzaW5jZSB0aGUgZm9udCdzIGNvb3JkaW5hdGUgc3lzdGVtIGlzCisgICAgICAg
ICAgICAvLyBmbGlwcGVkIGZyb20gb3VycyB2ZXJ0aWNhbGx5LgorICAgICAgICAgICAgcGF0aC0+
cXVhZFRvKGJ4LCAtYnksIGN4LCAtY3kpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBUVF9QUklNX0NTUExJTkU6CisgICAgICAgIC8vIEZJWE1FCisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworLy8gVGhlIHNpemUgb2YgdGhlIGdseXBoIHBhdGggYnVmZmVyLgorc3Rh
dGljIGNvbnN0IGludCBnbHlwaFBhdGhCdWZmZXJTaXplID0gNDA5NjsKKworLy8gRmlsbHMgdGhl
IGdpdmVuIFNrUGF0aCB3aXRoIHRoZSBvdXRsaW5lIGZvciB0aGUgZ2l2ZW4gZ2x5cGggaW5kZXgu
IFRoZSBmb250CisvLyBjdXJyZW50bHkgc2VsZWN0ZWQgaW50byB0aGUgZ2l2ZW4gREMgaXMgdXNl
ZC4gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCitzdGF0aWMgYm9vbCBnZXRQYXRoRm9yR2x5cGgo
SERDIGRjLCBXT1JEIGdseXBoLCBTa1BhdGgqIHBhdGgpCit7CisgICAgY2hhciBidWZmZXJbZ2x5
cGhQYXRoQnVmZmVyU2l6ZV07CisgICAgR0xZUEhNRVRSSUNTIGdtOworICAgIE1BVDIgbWF0ID0g
e3swLCAxfSwgezAsIDB9LCB7MCwgMH0sIHswLCAxfX07ICAvLyBFYWNoIG9uZSBpcyAoZnJhY3Qs
dmFsdWUpLgorCisgICAgRFdPUkQgdG90YWxTaXplID0gR2V0R2x5cGhPdXRsaW5lVyhkYywgZ2x5
cGgsIEdHT19HTFlQSF9JTkRFWCB8IEdHT19OQVRJVkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmZ20sIGdseXBoUGF0aEJ1ZmZlclNpemUsIGJ1ZmZlciwgJm1hdCk7
CisgICAgaWYgKHRvdGFsU2l6ZSA9PSBHRElfRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGNvbnN0IGNoYXIqIGN1ckdseXBoID0gYnVmZmVyOworICAgIGNvbnN0IGNoYXIqIGVu
ZEdseXBoID0gJmJ1ZmZlclt0b3RhbFNpemVdOworICAgIHdoaWxlIChjdXJHbHlwaCA8IGVuZEds
eXBoKSB7CisgICAgICAgIGNvbnN0IFRUUE9MWUdPTkhFQURFUiogcG9seUhlYWRlciA9CisgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFRUUE9MWUdPTkhFQURFUio+KGN1ckdseXBo
KTsKKyAgICAgICAgcGF0aC0+bW92ZVRvKEZJWEVEVG9Ta1NjYWxhcihwb2x5SGVhZGVyLT5wZnhT
dGFydC54KSwKKyAgICAgICAgICAgICAgICAgICAgIC1GSVhFRFRvU2tTY2FsYXIocG9seUhlYWRl
ci0+cGZ4U3RhcnQueSkpOworCisgICAgICAgIGNvbnN0IGNoYXIqIGN1clBvbHkgPSBjdXJHbHlw
aCArIHNpemVvZihUVFBPTFlHT05IRUFERVIpOworICAgICAgICBjb25zdCBjaGFyKiBlbmRQb2x5
ID0gY3VyR2x5cGggKyBwb2x5SGVhZGVyLT5jYjsKKyAgICAgICAgd2hpbGUgKGN1clBvbHkgPCBl
bmRQb2x5KSB7CisgICAgICAgICAgICBjb25zdCBUVFBPTFlDVVJWRSogcG9seUN1cnZlID0KKyAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IFRUUE9MWUNVUlZFKj4oY3VyUG9s
eSk7CisgICAgICAgICAgICBhZGRQb2x5Q3VydmVUb1BhdGgocG9seUN1cnZlLCBwYXRoKTsKKyAg
ICAgICAgICAgIGN1clBvbHkgKz0gc2l6ZW9mKFdPUkQpICogMiArIHNpemVvZihQT0lOVEZYKSAq
IHBvbHlDdXJ2ZS0+Y3BmeDsKKyAgICAgICAgfQorICAgICAgICBjdXJHbHlwaCArPSBwb2x5SGVh
ZGVyLT5jYjsKKyAgICB9CisKKyAgICBwYXRoLT5jbG9zZSgpOworICAgIHJldHVybiB0cnVlOwor
fQorCisvLyBSZXR1cm5zIGEgU2tQYXRoIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmUgZ2x5cGgg
aW4gdGhlIGdpdmVuIGZvbnQuIFRoZSBmb250CisvLyBzaG91bGQgYmUgc2VsZWN0ZWQgaW50byB0
aGUgZ2l2ZW4gREMuIFRoZSByZXR1cm5lZCBwYXRoIGlzIG93bmVkIGJ5IHRoZQorLy8gaGFzaHRh
YmxlLiBSZXR1cm5zIDAgb24gZXJyb3IuCitjb25zdCBTa1BhdGgqIFNraWFXaW5PdXRsaW5lQ2Fj
aGU6Omxvb2t1cE9yQ3JlYXRlUGF0aEZvckdseXBoKEhEQyBoZGMsIEhGT05UIGZvbnQsIFdPUkQg
Z2x5cGgpCit7CisgICAgQ2FjaGVkT3V0bGluZUtleSBrZXkoZm9udCwgZ2x5cGgpOworICAgIE91
dGxpbmVDYWNoZTo6aXRlcmF0b3IgZm91bmQgPSBvdXRsaW5lQ2FjaGUuZmluZChrZXkpOworICAg
IGlmIChmb3VuZCAhPSBvdXRsaW5lQ2FjaGUuZW5kKCkpIHsKKyAgICAgICAgLy8gS2VlcCBpbiBN
UlUgb3JkZXIgYnkgcmVtb3ZpbmcgJiByZWluc2VydGluZyB0aGUgdmFsdWUuCisgICAgICAgIGtl
eSA9ICpmb3VuZDsKKyAgICAgICAgb3V0bGluZUNhY2hlLnJlbW92ZShmb3VuZCk7CisgICAgICAg
IG91dGxpbmVDYWNoZS5hZGQoa2V5KTsKKyAgICAgICAgcmV0dXJuIGtleS5wYXRoOworICAgIH0K
KworICAgIGtleS5wYXRoID0gbmV3IFNrUGF0aDsKKyAgICBpZiAoIWdldFBhdGhGb3JHbHlwaCho
ZGMsIGdseXBoLCBrZXkucGF0aCkpCisgICAgICByZXR1cm4gMDsKKworICAgIGlmIChvdXRsaW5l
Q2FjaGUuc2l6ZSgpID4gb3V0bGluZUNhY2hlU2l6ZSkKKyAgICAgICAgLy8gVGhlIGNhY2hlIGlz
IHRvbyBiaWcsIGZpbmQgdGhlIG9sZGVzdCB2YWx1ZSAoZmlyc3QgaW4gdGhlIGxpc3QpLgorICAg
ICAgICBkZWxldGVPdXRsaW5lKG91dGxpbmVDYWNoZS5iZWdpbigpKTsKKworICAgIG91dGxpbmVD
YWNoZS5hZGQoa2V5KTsKKyAgICByZXR1cm4ga2V5LnBhdGg7Cit9CisKKwordm9pZCBTa2lhV2lu
T3V0bGluZUNhY2hlOjpyZW1vdmVQYXRoc0ZvckZvbnQoSEZPTlQgaGZvbnQpCit7CisgICAgLy8g
TGlzdEhhc2hTZXQgaXNuJ3QgdGhlIGdyZWF0ZXN0IHN0cnVjdHVyZSBmb3IgZGVsZXRpbmcgc3R1
ZmYgb3V0IG9mLCBidXQKKyAgICAvLyByZW1vdmluZyBlbnRyaWVzIHdpbGwgYmUgcmVsYXRpdmVs
eSByYXJlICh3ZSBkb24ndCByZW1vdmUgZm9udHMgbXVjaCwgbm9yCisgICAgLy8gZG8gd2UgZHJh
dyBvdXQgb3duIGdseXBocyB1c2luZyB0aGVzZSByb3V0aW5lcyBtdWNoIGVpdGhlcikuCisgICAg
Ly8KKyAgICAvLyBXZSBrZWVwIGEgbGlzdCBvZiBhbGwgZ2x5cGhzIHdlJ3JlIHJlbW92aW5nIHdo
aWNoIHdlIGRvIGluIGEgc2VwYXJhdGUKKyAgICAvLyBwYXNzLgorICAgIFZlY3RvcjxDYWNoZWRP
dXRsaW5lS2V5PiBvdXRsaW5lc1RvRGVsZXRlOworICAgIGZvciAoT3V0bGluZUNhY2hlOjppdGVy
YXRvciBpID0gb3V0bGluZUNhY2hlLmJlZ2luKCk7CisgICAgICAgICBpICE9IG91dGxpbmVDYWNo
ZS5lbmQoKTsgKytpKQorICAgICAgICBvdXRsaW5lc1RvRGVsZXRlLmFwcGVuZCgqaSk7CisKKyAg
ICBmb3IgKFZlY3RvcjxDYWNoZWRPdXRsaW5lS2V5Pjo6aXRlcmF0b3IgaSA9IG91dGxpbmVzVG9E
ZWxldGUuYmVnaW4oKTsKKyAgICAgICAgIGkgIT0gb3V0bGluZXNUb0RlbGV0ZS5lbmQoKTsgKytp
KQorICAgICAgICBkZWxldGVPdXRsaW5lKG91dGxpbmVDYWNoZS5maW5kKCppKSk7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvU2tpYUZvbnRXaW4uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9T
a2lhRm9udFdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZGFiMzkK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2tpYVdpbk91dGxpbmVDYWNoZV9o
CisjZGVmaW5lIFNraWFXaW5PdXRsaW5lQ2FjaGVfaAorCisjaW5jbHVkZSA8d2luZG93cy5oPgor
CitjbGFzcyBTa1BhdGg7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRklYTUU6IFJlbmFt
ZSBmaWxlIHRvIFNraWFXaW5PdXRsaW5lQ2FjaGUKK2NsYXNzIFNraWFXaW5PdXRsaW5lQ2FjaGUg
eworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBTa1BhdGgqIGxvb2t1cE9yQ3JlYXRlUGF0aEZv
ckdseXBoKEhEQywgSEZPTlQsIFdPUkQpOworICAgIC8vIFJlbW92ZXMgYW55IGNhY2hlZCBnbHlw
aHMgZnJvbSB0aGUgb3V0bGluZSBjYWNoZSBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgIC8vIGdp
dmVuIGZvbnQgaGFuZGxlLgorICAgIHN0YXRpYyB2b2lkIHJlbW92ZVBhdGhzRm9yRm9udChIRk9O
VCk7CisKK3ByaXZhdGU6CisgICAgU2tpYVdpbk91dGxpbmVDYWNoZSgpOworfTsKKworfSAgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTa2lhV2luT3V0bGluZUNhY2hlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>