<?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>20570</bug_id>
          
          <creation_ts>2008-08-29 14:06:24 -0700</creation_ts>
          <short_desc>Canvas should support the HTML5 canvas text APIs</short_desc>
          <delta_ts>2008-09-03 11:35:07 -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>Layout and Rendering</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="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>krit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>89757</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-08-29 14:06:24 -0700</bug_when>
    <thetext>Canvas needs to support the text APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89758</commentid>
    <comment_count>1</comment_count>
      <attachid>23075</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-08-29 14:08:37 -0700</bug_when>
    <thetext>Created attachment 23075
Patch (work in progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90043</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-03 11:35:07 -0700</bug_when>
    <thetext>First cut landed.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23075</attachid>
            <date>2008-08-29 14:08:37 -0700</date>
            <delta_ts>2008-08-29 14:08:37 -0700</delta_ts>
            <desc>Patch (work in progress)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>24381</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IERlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gMzU5NzkpCisrKyBEZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzcsNiArMzM3LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgU3R5bGVTaGVldExp
c3QgXAogICAgIFRleHQgXAogICAgIFRleHRFdmVudCBcCisgICAgVGV4dE1ldHJpY3MgXAogICAg
IFRpbWVSYW5nZXMgXAogICAgIFRyZWVXYWxrZXIgXAogICAgIFVJRXZlbnQgXApJbmRleDogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzU5ODEpCisrKyBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5NjgsNiArMzk2OCwxMCBA
QAogCQlCQ0VGNDQ0RDBFNjc0NjI4MDAxQzEyODcgLyogU3R5bGVDYWNoZWRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRjQ0NEMwRTY3NDYy
ODAwMUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VGNDQ3QTBFNjc0N0QwMDAxQzEyODcgLyogU3R5
bGVDYWNoZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0VGNDQ3OTBFNjc0N0QwMDAxQzEyODcgLyogU3R5bGVDYWNoZWRJbWFnZS5jcHAg
Ki87IH07CiAJCUJDRUY0NDdEMEU2NzQ4MDYwMDFDMTI4NyAvKiBTdHlsZUdlbmVyYXRlZEltYWdl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUY0
NDdDMEU2NzQ4MDYwMDFDMTI4NyAvKiBTdHlsZUdlbmVyYXRlZEltYWdlLmNwcCAqLzsgfTsKKwkJ
QkNFRjQ1NDAwRTY3NkFDMTAwMUMxMjg3IC8qIFRleHRNZXRyaWNzLmlkbCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRjQ1M0YwRTY3NkFDMTAwMUMx
Mjg3IC8qIFRleHRNZXRyaWNzLmlkbCAqLzsgfTsKKwkJQkNFRjQ1RTkwRTY4Nzc2NzAwMUMxMjg3
IC8qIFRleHRNZXRyaWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0VGNDVFODBFNjg3NzY3MDAxQzEyODcgLyogVGV4dE1ldHJpY3MuaCAqLzsgfTsK
KwkJQkNFRjQ1RjUwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1ldHJpY3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRjQ1RjMwRTY4N0I1QzAw
MUMxMjg3IC8qIEpTVGV4dE1ldHJpY3MuY3BwICovOyB9OworCQlCQ0VGNDVGNjBFNjg3QjVDMDAx
QzEyODcgLyogSlNUZXh0TWV0cmljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNFRjQ1RjQwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1ldHJpY3Mu
aCAqLzsgfTsKIAkJQkNFRkFGNEUwQzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRkFGNEQw
QzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQlCQ0VGRTFFNTBE
Q0E1RjMzMDA3MzkyMTkgLyogSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUZFMUU0MERDQTVGMzMwMDczOTIx
OSAvKiBKU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwICovOyB9OwogCQlCQ0VGRTFFQTBEQ0E1RjY0
MDA3MzkyMTkgLyogSlNYU0xUUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUZFMUU4MERDQTVGNjQwMDczOTIxOSAvKiBKU1hTTFRQ
cm9jZXNzb3IuY3BwICovOyB9OwpAQCAtODM5Myw2ICs4Mzk3LDEwIEBACiAJCUJDRUY0NDRDMEU2
NzQ2MjgwMDFDMTI4NyAvKiBTdHlsZUNhY2hlZEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFN0eWxlQ2FjaGVkSW1hZ2UuaDsgcGF0aCA9IHN0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFRjQ0NzkwRTY3NDdEMDAw
MUMxMjg3IC8qIFN0eWxlQ2FjaGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU3R5bGVDYWNoZWRJbWFnZS5jcHA7IHBhdGggPSBzdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFRjQ0N0MwRTY3NDgw
NjAwMUMxMjg3IC8qIFN0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA7IHBhdGggPSBzdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNF
RjQ1M0YwRTY3NkFDMTAwMUMxMjg3IC8qIFRleHRNZXRyaWNzLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBUZXh0TWV0cmljcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
RUY0NUU4MEU2ODc3NjcwMDFDMTI4NyAvKiBUZXh0TWV0cmljcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0TWV0cmljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQ0VGNDVGMzBFNjg3QjVDMDAxQzEyODcgLyogSlNUZXh0TWV0cmljcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRNZXRyaWNzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFRjQ1RjQwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4
dE1ldHJpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0TWV0cmlj
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgx
RjYgLyogSlNFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RUZFMURDMERDQTVDRkQwMDczOTIxOSAvKiBYU0xUUHJvY2Vzc29yLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBYU0xUUHJvY2Vzc29yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFRkUxRTQwRENBNUYzMzAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hTTFRQcm9jZXNzb3JDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA4OTgsNiArMTA5MDYsOCBA
QAogCQkJCUU0NDYxMzlDMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmlkbCAqLywKIAkJ
CQlFNEQ0QUJFMDBENzU0MkYwMDBGOTY4NjkgLyogUHJlbG9hZFNjYW5uZXIuY3BwICovLAogCQkJ
CUU0RDRBQkUxMEQ3NTQyRjEwMEY5Njg2OSAvKiBQcmVsb2FkU2Nhbm5lci5oICovLAorCQkJCUJD
RUY0NUU4MEU2ODc3NjcwMDFDMTI4NyAvKiBUZXh0TWV0cmljcy5oICovLAorCQkJCUJDRUY0NTNG
MEU2NzZBQzEwMDFDMTI4NyAvKiBUZXh0TWV0cmljcy5pZGwgKi8sCiAJCQkJRTQ0NjEzOUQwQ0Q2
MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwICovLAogCQkJCUU0NDYxMzlFMENENjMzMTAw
MEZBREE3NSAvKiBUaW1lUmFuZ2VzLmggKi8sCiAJCQkJRTQ0NjEzOUYwQ0Q2MzMxMDAwRkFEQTc1
IC8qIFRpbWVSYW5nZXMuaWRsICovLApAQCAtMTA5MjcsNiArMTA5MzcsOCBAQAogCQlBODNCNzkw
ODBDQ0FGRjJCMDAwQjA4MjUgLyogSFRNTCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQkNFRjQ1RjMwRTY4N0I1QzAwMUMxMjg3IC8qIEpTVGV4dE1ldHJp
Y3MuY3BwICovLAorCQkJCUJDRUY0NUY0MEU2ODdCNUMwMDFDMTI4NyAvKiBKU1RleHRNZXRyaWNz
LmggKi8sCiAJCQkJNjVERjMyMzMwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQu
Y3BwICovLAogCQkJCTY1REYzMjM0MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50
LmggKi8sCiAJCQkJNjVERjMyMzUwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5j
cHAgKi8sCkBAIC0xNTQ2OSw2ICsxNTQ4MSw4IEBACiAJCQkJQkNFRjQ0NEEwRTY3NDVFMDAwMUMx
Mjg3IC8qIFN0eWxlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUY0NDRE
MEU2NzQ2MjgwMDFDMTI4NyAvKiBTdHlsZUNhY2hlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODhGRTMzNDBFNUVFRTg3MDA4RDhDMEYgLyogR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQkNFRjQ1RTkwRTY4Nzc2NzAwMUMxMjg3IC8qIFRleHRNZXRyaWNz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0VGNDVGNjBFNjg3QjVDMDAxQzEyODcgLyogSlNUZXh0
TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTU4OCw2ICsxNTYwMiw3IEBACiAJCQkJQkMz
QTQ0REYwRTI2RDIwMjAwQzE0REZBIC8qIE5TUmVzb2x2ZXIuaWRsIGluIFJlc291cmNlcyAqLywK
IAkJCQkzMUMwRkYyMzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRs
IGluIFJlc291cmNlcyAqLywKIAkJCQkzMUMwRkYyNjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQkNFRjQ1NDAwRTY3NkFD
MTAwMUMxMjg3IC8qIFRleHRNZXRyaWNzLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzI2NCw2
ICsxNzI3OSw3IEBACiAJCQkJQkNFRjQzRTAwRTY3NDExMDAwMUMxMjg3IC8qIE5pbmVQaWVjZUlt
YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY0NDdBMEU2NzQ3RDAwMDFDMTI4NyAvKiBT
dHlsZUNhY2hlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY0NDdEMEU2NzQ4MDYw
MDFDMTI4NyAvKiBTdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJD
RUY0NUY1MEU2ODdCNUMwMDFDMTI4NyAvKiBKU1RleHRNZXRyaWNzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMzU5NzkpCisrKyBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw0ICszNTEsNDAgQEAg
SlNWYWx1ZSogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dAogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCitKU1ZhbHVlKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zmls
bFRleHQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreyAKKyAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBpbXBsKCk7CisKKyAgICAvLyBzdHJpbmcg
YXJnID0gdGV4dCB0byBkcmF3CisgICAgLy8gbnVtYmVyIGFyZyA9IHgKKyAgICAvLyBudW1iZXIg
YXJnID0geQorICAgIC8vIG9wdGlvbmFsIG51bWJlciBhcmcgPSBtYXhXaWR0aAorICAgIGlmIChh
cmdzLnNpemUoKSA8IDMgfHwgYXJncy5zaXplKCkgPiA0KQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBTeW50YXhFcnJvcik7CisgICAgCisgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDQp
CisgICAgICAgIGNvbnRleHQtPmZpbGxUZXh0KGFyZ3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4
ZWMpLCBhcmdzLmF0KGV4ZWMsIDEpLT50b0Zsb2F0KGV4ZWMpLCBhcmdzLmF0KGV4ZWMsIDIpLT50
b0Zsb2F0KGV4ZWMpLCBhcmdzLmF0KGV4ZWMsIDMpLT50b0Zsb2F0KGV4ZWMpKTsKKyAgICBlbHNl
CisgICAgICAgIGNvbnRleHQtPmZpbGxUZXh0KGFyZ3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4
ZWMpLCBhcmdzLmF0KGV4ZWMsIDEpLT50b0Zsb2F0KGV4ZWMpLCBhcmdzLmF0KGV4ZWMsIDIpLT50
b0Zsb2F0KGV4ZWMpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSog
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQoreyAKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNv
bnRleHQgPSBpbXBsKCk7CisKKyAgICAvLyBzdHJpbmcgYXJnID0gdGV4dCB0byBkcmF3CisgICAg
Ly8gbnVtYmVyIGFyZyA9IHgKKyAgICAvLyBudW1iZXIgYXJnID0geQorICAgIC8vIG9wdGlvbmFs
IG51bWJlciBhcmcgPSBtYXhXaWR0aAorICAgIGlmIChhcmdzLnNpemUoKSA8IDMgfHwgYXJncy5z
aXplKCkgPiA0KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7
CisgICAgCisgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDQpCisgICAgICAgIGNvbnRleHQtPmZpbGxU
ZXh0KGFyZ3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBhcmdzLmF0KGV4ZWMsIDEpLT50
b0Zsb2F0KGV4ZWMpLCBhcmdzLmF0KGV4ZWMsIDIpLT50b0Zsb2F0KGV4ZWMpLCBhcmdzLmF0KGV4
ZWMsIDMpLT50b0Zsb2F0KGV4ZWMpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPmZpbGxU
ZXh0KGFyZ3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBhcmdzLmF0KGV4ZWMsIDEpLT50
b0Zsb2F0KGV4ZWMpLCBhcmdzLmF0KGV4ZWMsIDIpLT50b0Zsb2F0KGV4ZWMpKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkocmV2aXNpb24gMzU5NzkpCisrKyBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc1MSwxMCArNzUxLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5p
dEZvclN0eWxlUmVzb2wKIHsKICAgICBtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSA9IHBzZXVkb0lE
OwogCi0gICAgbV9wYXJlbnROb2RlID0gZS0+cGFyZW50Tm9kZSgpOworICAgIG1fcGFyZW50Tm9k
ZSA9IGUgPyBlLT5wYXJlbnROb2RlKCkgOiAwOwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBpZiAo
IW1fcGFyZW50Tm9kZSAmJiBlLT5pc1NWR0VsZW1lbnQoKSAmJiBlLT5pc1NoYWRvd05vZGUoKSkK
KyAgICBpZiAoIW1fcGFyZW50Tm9kZSAmJiBlICYmIGUtPmlzU1ZHRWxlbWVudCgpICYmIGUtPmlz
U2hhZG93Tm9kZSgpKQogICAgICAgICBtX3BhcmVudE5vZGUgPSBlLT5zaGFkb3dQYXJlbnROb2Rl
KCk7CiAjZW5kaWYKIApAQCAtMjUzMCw2ICsyNTMwLDE0IEBAIHN0YXRpYyB2b2lkIGFwcGx5Q291
bnRlckxpc3QoUmVuZGVyU3R5bGUKICAgICB9CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlQcm9wZXJ0eVRvU3R5bGUoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUsIFJlbmRlclN0eWxl
KiBzdHlsZSkKK3sKKyAgICBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKDApOworICAgIGluaXRG
b3JTdHlsZVJlc29sdmUoMCwgc3R5bGUpOworICAgIG1fc3R5bGUgPSBzdHlsZTsKKyAgICBhcHBs
eVByb3BlcnR5KGlkLCB2YWx1ZSk7Cit9CisKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKIHsKICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwpJbmRleDogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiAzNTk3OSkKKysrIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHZvaWQgc2V0U3R5bGUoUmVuZGVyU3R5bGUqIHMpIHsgbV9zdHlsZSA9
IHM7IH0gLy8gVXNlZCBieSB0aGUgZG9jdW1lbnQgd2hlbiBzZXR0aW5nIHVwIGl0cyByb290IHN0
eWxlLgogICAgICAgICB2b2lkIHNldEZvbnRTaXplKEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNp
emUpOwogCisgICAgICAgIHZvaWQgYXBwbHlQcm9wZXJ0eVRvU3R5bGUoaW50IGlkLCBDU1NWYWx1
ZSosIFJlbmRlclN0eWxlKik7CisKICAgICBwcml2YXRlOgogICAgICAgICBmbG9hdCBnZXRDb21w
dXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBzcGVj
aWZpZWRTaXplKTsKIApJbmRleDogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24g
MzU5NzkpCisrKyBodG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVk
ZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgogI2luY2x1ZGUgIkNhbnZhc1N0eWxlLmgiCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKQEAgLTUyLDYgKzU0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJI
VE1MQ2FudmFzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgIlRleHRNZXRyaWNzLmgiCiAjaW5jbHVkZSA8a2pzL2ludGVycHJl
dGVyLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpA
QCAtNjksNiArNzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKK2NvbnN0IGNoYXIqIGRlZmF1bHRGb250ID0gIjEwcHggc2Fucy1zZXJpZiI7
CisKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXMpCiAgICAgOiBtX2NhbnZhcyhjYW52YXMpCiAgICAgLCBt
X3N0YXRlU3RhY2soMSkKQEAgLTEwMiw2ICsxMDcsMTAgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpTdGF0ZTo6U3RhdGUoKQogICAgICwgbV9zaGFkb3dDb2xvcigiYmxhY2siKQogICAgICwg
bV9nbG9iYWxBbHBoYSgxKQogICAgICwgbV9nbG9iYWxDb21wb3NpdGUoQ29tcG9zaXRlU291cmNl
T3ZlcikKKyAgICAsIG1fdGV4dEFsaWduKFN0YXJ0VGV4dEFsaWduKQorICAgICwgbV90ZXh0QmFz
ZWxpbmUoQWxwaGFiZXRpY1RleHRCYXNlbGluZSkKKyAgICAsIG1fdW5wYXJzZWRGb250KGRlZmF1
bHRGb250KQorICAgICwgbV9yZWFsaXplZEZvbnQoZmFsc2UpCiB7CiB9CiAKQEAgLTExMzcsNCAr
MTE0NiwxMDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnB1dEltYWdlRAogICAg
IGJ1ZmZlci0+cHV0SW1hZ2VEYXRhKGRhdGEsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCk7CiB9CiAK
K1N0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBzdGF0ZSgpLm1fdW5wYXJzZWRGb250OworfQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCit7CisgICAgLy8gV2UgZG9u
J3Qgc3VwcG9ydCBpbmhlcml0IG9yIGluaXRpYWwsIHNpbmNlIHRoZSBzcGVjIHNheXMgbm90IHRv
LgorICAgIGlmICghbV9jYW52YXMtPmNvbXB1dGVkU3R5bGUoKSB8fCBuZXdGb250ID09ICJpbmhl
cml0IiB8fCBuZXdGb250ID09ICJpbml0aWFsIikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0ZW1wRGVjbCA9IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKCFtX2NhbnZhcy0+
ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOyAvLyBVc2UgdGhlIHBhcnNlIG1vZGUgb2YgdGhl
IGNhbnZhcycgZG9jdW1lbnQgd2hlbiBwYXJzaW5nIENTUy4KKyAgICAgICAgCisgICAgU3RyaW5n
IGRlY2xhcmF0aW9uVGV4dCgiZm9udDogIik7CisgICAgZGVjbGFyYXRpb25UZXh0ICs9IG5ld0Zv
bnQ7CisgICAgcGFyc2VyLnBhcnNlRGVjbGFyYXRpb24odGVtcERlY2wuZ2V0KCksIGRlY2xhcmF0
aW9uVGV4dCk7CisgICAgaWYgKCF0ZW1wRGVjbC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIAorICAgIC8vIFRoZSBwYXJzZSBzdWNjZWVlZGVkLgorICAgIHN0YXRlKCku
bV91bnBhcnNlZEZvbnQgPSBuZXdGb250OworICAgIAorICAgIC8vIE1hcCB0aGUgPGNhbnZhcz4g
Zm9udCBpbnRvIHRoZSB0ZXh0IHN0eWxlLiBJZiB0aGUgZm9udCB1c2VzIGtleXdvcmRzIGxpa2Ug
bGFyZ2VyL3NtYWxsZXIsIHRoZXNlIHdpbGwgd29yaworICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBj
YW52YXMuCisgICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gbV9jYW52YXMtPmRvY3VtZW50KCktPnJl
bmRlckFyZW5hKCk7CisgICAgUmVuZGVyU3R5bGUqIG5ld1N0eWxlID0gbmV3IChhcmVuYSkgUmVu
ZGVyU3R5bGUoKTsKKyAgICBuZXdTdHlsZS0+cmVmKCk7CisgICAgbmV3U3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihtX2NhbnZhcy0+Y29tcHV0ZWRTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSk7
CisgICAgCisgICAgLy8gTm93IG1hcCB0aGUgZm9udCBwcm9wZXJ0eSBpbnRvIHRoZSBzdHlsZS4K
KyAgICBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVjdG9yID0gbV9jYW52YXMtPmRvY3VtZW50
KCktPnN0eWxlU2VsZWN0b3IoKTsKKyAgICBzdHlsZVNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9T
dHlsZShDU1NQcm9wZXJ0eUZvbnQsIHRlbXBEZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5Rm9udCkuZ2V0KCksIG5ld1N0eWxlKTsKKyAgICAKKyAgICBzdGF0ZSgpLm1fZm9udCA9
IG5ld1N0eWxlLT5mb250KCk7CisgICAgc3RhdGUoKS5tX2ZvbnQudXBkYXRlKHN0eWxlU2VsZWN0
b3ItPmZvbnRTZWxlY3RvcigpKTsKKyAgICBzdGF0ZSgpLm1fcmVhbGl6ZWRGb250ID0gdHJ1ZTsK
KworICAgIG5ld1N0eWxlLT5kZXJlZihhcmVuYSk7Cit9CisgICAgICAgIAorU3RyaW5nIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6dGV4dEFsaWduKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGV4
dEFsaWduTmFtZShzdGF0ZSgpLm1fdGV4dEFsaWduKTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFRleHRBbGlnbihjb25zdCBTdHJpbmcmIHMpCit7CisgICAgVGV4dEFs
aWduIGFsaWduOworICAgIGlmICghcGFyc2VUZXh0QWxpZ24ocywgYWxpZ24pKQorICAgICAgICBy
ZXR1cm47CisgICAgc3RhdGUoKS5tX3RleHRBbGlnbiA9IGFsaWduOworfQorICAgICAgICAKK1N0
cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRCYXNlbGluZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRleHRCYXNlbGluZU5hbWUoc3RhdGUoKS5tX3RleHRCYXNlbGluZSk7Cit9CisK
K3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRUZXh0QmFzZWxpbmUoY29uc3QgU3Ry
aW5nJiBzKQoreworICAgIFRleHRCYXNlbGluZSBiYXNlbGluZTsKKyAgICBpZiAoIXBhcnNlVGV4
dEJhc2VsaW5lKHMsIGJhc2VsaW5lKSkKKyAgICAgICAgcmV0dXJuOworICAgIHN0YXRlKCkubV90
ZXh0QmFzZWxpbmUgPSBiYXNlbGluZTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAg
ICBkcmF3VGV4dEludGVybmFsKHRleHQsIHgsIHksIHRydWUpOworfQorCit2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCBtYXhXaWR0aCkKK3sKKyAgICBkcmF3VGV4dEludGVybmFsKHRleHQsIHgs
IHksIHRydWUsIG1heFdpZHRoLCB0cnVlKTsKK30KKwordm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5KQor
eworICAgIGRyYXdUZXh0SW50ZXJuYWwodGV4dCwgeCwgeSwgZmFsc2UpOworfQorCit2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IG1heFdpZHRoKQoreworICAgIGRyYXdUZXh0SW50ZXJuYWwo
dGV4dCwgeCwgeSwgZmFsc2UsIG1heFdpZHRoLCB0cnVlKTsKK30KKworUGFzc1JlZlB0cjxUZXh0
TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChjb25zdCBTdHJp
bmcmIHRleHQpCit7CisgICAgUmVmUHRyPFRleHRNZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJp
Y3M6OmNyZWF0ZSgpOworICAgIG1ldHJpY3MtPnNldFdpZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChU
ZXh0UnVuKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSkpOworICAgIHJldHVybiBt
ZXRyaWNzOworfQorCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRl
cm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgZmxv
YXQgbWF4V2lkdGgsIGJvb2wgdXNlTWF4V2lkdGgpCit7Cit9CisKK2NvbnN0IEZvbnQmIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCgpCit7CisgICAgaWYgKCFzdGF0ZSgpLm1f
cmVhbGl6ZWRGb250KQorICAgICAgICBzZXRGb250KHN0YXRlKCkubV91bnBhcnNlZEZvbnQpOwor
ICAgIHJldHVybiBzdGF0ZSgpLm1fZm9udDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1s
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiAzNTk3OSkKKysrIGh0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgor
I2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC00OCw2ICs0OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogICAgIGNsYXNz
IEltYWdlRGF0YTsKICAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFRleHRNZXRyaWNzOwogCiAg
ICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAtMTc2LDEwICsxNzgsMjUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9pZCByZXNldCgpOwogCisgICAg
ICAgIFN0cmluZyBmb250KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Rm9udChjb25zdCBTdHJp
bmcmKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyB0ZXh0QWxpZ24oKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRUZXh0QWxpZ24oY29uc3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAgICBT
dHJpbmcgdGV4dEJhc2VsaW5lKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VGV4dEJhc2VsaW5l
KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgdm9pZCBmaWxsVGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHkpOworICAgICAgICB2b2lkIGZpbGxUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgbWF4V2lkdGgpOworICAg
ICAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5
KTsKKyAgICAgICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgbWF4V2lkdGgpOworICAgICAgICBQYXNzUmVmUHRyPFRleHRNZXRyaWNz
PiBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpOworCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgICAgIFN0YXRlKCk7Ci0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgUmVmUHRyPENhbnZhc1N0eWxlPiBtX3N0cm9rZVN0eWxlOwogICAgICAgICAg
ICAgUmVmUHRyPENhbnZhc1N0eWxlPiBtX2ZpbGxTdHlsZTsKICAgICAgICAgICAgIGZsb2F0IG1f
bGluZVdpZHRoOwpAQCAtMTkyLDYgKzIwOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICBmbG9hdCBtX2dsb2JhbEFscGhhOwogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IgbV9nbG9iYWxDb21wb3NpdGU7CiAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFu
c2Zvcm07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRleHQgc3RhdGUuCisgICAgICAg
ICAgICBUZXh0QWxpZ24gbV90ZXh0QWxpZ247CisgICAgICAgICAgICBUZXh0QmFzZWxpbmUgbV90
ZXh0QmFzZWxpbmU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBtX3VucGFyc2Vk
Rm9udDsKKyAgICAgICAgICAgIEZvbnQgbV9mb250OworICAgICAgICAgICAgYm9vbCBtX3JlYWxp
emVkRm9udDsKICAgICAgICAgfTsKICAgICAgICAgUGF0aCBtX3BhdGg7CiAKQEAgLTIwNyw2ICsy
MzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0
dGVybigpOwogICAgICAgICB2b2lkIGFwcGx5RmlsbFBhdHRlcm4oKTsKIAorICAgICAgICB2b2lk
IGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBi
b29sIGZpbGwsIGZsb2F0IG1heFdpZHRoID0gMCwgYm9vbCB1c2VNYXhXaWR0aCA9IGZhbHNlKTsK
KworICAgICAgICBjb25zdCBGb250JiBhY2Nlc3NGb250KCk7CisKICNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCiAgICAgICAgIHZvaWQgY2xlYXJQYXRoRm9yRGFzaGJvYXJkQmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSgpOwogI2VuZGlmCkluZGV4OiBodG1sL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aWRsCShyZXZpc2lvbiAzNTk3OSkKKysrIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTQgQEAgbW9kdWxlIGh0bWwgewogICAgICAg
ICB2b2lkIGNsaXAoKTsKICAgICAgICAgYm9vbGVhbiBpc1BvaW50SW5QYXRoKGluIGZsb2F0IHgs
IGluIGZsb2F0IHkpOwogCisgICAgICAgIC8vIHRleHQKKyAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyBmb250OworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRleHRBbGlnbjsKKyAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXh0QmFzZWxpbmU7CisgICAgICAgIFtDdXN0b21dIHZv
aWQgZmlsbFRleHQoLyogNCAqLyk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgc3Ryb2tlVGV4dCgv
KiA0ICovKTsKKyAgICAgICAgVGV4dE1ldHJpY3MgbWVhc3VyZVRleHQoaW4gRE9NU3RyaW5nIHRl
eHQpOworCiAgICAgICAgIC8vIG90aGVyCiAKICAgICAgICAgdm9pZCBzZXRBbHBoYShpbiBmbG9h
dCBhbHBoYSk7CkluZGV4OiBodG1sL1RleHRNZXRyaWNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9U
ZXh0TWV0cmljcy5oCShyZXZpc2lvbiAwKQorKysgaHRtbC9UZXh0TWV0cmljcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRNZXRyaWNzX2gKKyNkZWZpbmUgVGV4
dE1ldHJpY3NfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBUZXh0TWV0cmljcyA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRNZXRy
aWNzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dE1ldHJpY3M+IGNyZWF0
ZSgpIHsgcmV0dXJuIG5ldyBUZXh0TWV0cmljcygpOyB9CisKKyAgICB1bnNpZ25lZCB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKGZsb2F0IHcpIHsg
bV93aWR0aCA9IHc7IH0KKworcHJpdmF0ZToKKyAgICBUZXh0TWV0cmljcygpCisgICAgICAgIDog
bV93aWR0aCgwKQorICAgIHsgfQorCisgICAgZmxvYXQgbV93aWR0aDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRleHRNZXRyaWNzX2gKSW5kZXg6IGh0bWwvVGV4
dE1ldHJpY3MuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvVGV4dE1ldHJpY3MuaWRsCShyZXZpc2lv
biAwKQorKysgaHRtbC9UZXh0TWV0cmljcy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK21vZHVsZSBodG1sIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3IKKyAgICBdIFRleHRNZXRyaWNzIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGZsb2F0IHdpZHRoOworICAgIH07CisKK30KSW5kZXg6IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCShyZXZpc2lvbiAzNTk3OSkKKysrIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNCArMTE2LDc0IEBAIFN0cmluZyBsaW5lSm9p
bk5hbWUoTGluZUpvaW4gam9pbikKICAgICByZXR1cm4gbmFtZXNbam9pbl07CiB9CiAKK1N0cmlu
ZyB0ZXh0QWxpZ25OYW1lKFRleHRBbGlnbiBhbGlnbikKK3sKKyAgICBBU1NFUlQoYWxpZ24gPj0g
MCk7CisgICAgQVNTRVJUKGFsaWduIDwgNSk7CisgICAgY29uc3QgY2hhciogY29uc3QgbmFtZXNb
NV0gPSB7ICJzdGFydCIsICJlbmQiLCAibGVmdCIsICJjZW50ZXIiLCAicmlnaHQiIH07CisgICAg
cmV0dXJuIG5hbWVzW2FsaWduXTsKK30KKworYm9vbCBwYXJzZVRleHRBbGlnbihjb25zdCBTdHJp
bmcmIHMsIFRleHRBbGlnbiYgYWxpZ24pCit7CisgICAgaWYgKHMgPT0gInN0YXJ0IikgeworICAg
ICAgICBhbGlnbiA9IFN0YXJ0VGV4dEFsaWduOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgaWYgKHMgPT0gImVuZCIpIHsKKyAgICAgICAgYWxpZ24gPSBTdGFydFRleHRBbGlnbjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChzID09ICJsZWZ0IikgeworICAg
ICAgICBhbGlnbiA9IExlZnRUZXh0QWxpZ247CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBpZiAocyA9PSAiY2VudGVyIikgeworICAgICAgICBhbGlnbiA9IENlbnRlclRleHRBbGln
bjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChzID09ICJyaWdodCIpIHsK
KyAgICAgICAgYWxpZ24gPSBSaWdodFRleHRBbGlnbjsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIHRleHRCYXNlbGluZU5hbWUoVGV4
dEJhc2VsaW5lIGJhc2VsaW5lKQoreworICAgIEFTU0VSVChiYXNlbGluZSA+PSAwKTsKKyAgICBB
U1NFUlQoYmFzZWxpbmUgPCA2KTsKKyAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lc1s2XSA9IHsg
ImFscGhhYmV0aWMiLCAidG9wIiwgIm1pZGRsZSIsICJib3R0b20iLCAiaWRlb2dyYXBoaWMiLCAi
aGFuZ2luZyIgfTsKKyAgICByZXR1cm4gbmFtZXNbYmFzZWxpbmVdOworfQorCitib29sIHBhcnNl
VGV4dEJhc2VsaW5lKGNvbnN0IFN0cmluZyYgcywgVGV4dEJhc2VsaW5lJiBiYXNlbGluZSkKK3sK
KyAgICBpZiAocyA9PSAiYWxwaGFiZXRpYyIpIHsKKyAgICAgICAgYmFzZWxpbmUgPSBBbHBoYWJl
dGljVGV4dEJhc2VsaW5lOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHMg
PT0gInRvcCIpIHsKKyAgICAgICAgYmFzZWxpbmUgPSBUb3BUZXh0QmFzZWxpbmU7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAocyA9PSAibWlkZGxlIikgeworICAgICAgICBi
YXNlbGluZSA9IE1pZGRsZVRleHRCYXNlbGluZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIGlmIChzID09ICJib3R0b20iKSB7CisgICAgICAgIGJhc2VsaW5lID0gQm90dG9tVGV4
dEJhc2VsaW5lOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHMgPT0gImlk
ZW9ncmFwaGljIikgeworICAgICAgICBiYXNlbGluZSA9IElkZW9ncmFwaGljVGV4dEJhc2VsaW5l
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHMgPT0gImhhbmdpbmciKSB7
CisgICAgICAgIGJhc2VsaW5lID0gSGFuZ2luZ1RleHRCYXNlbGluZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpJbmRleDogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuaAkocmV2aXNpb24gMzU5NzkpCisrKyBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGVudW0gSG9yaXpvbnRhbEFsaWdubWVudCB7IEFsaWduTGVmdCwg
QWxpZ25SaWdodCwgQWxpZ25IQ2VudGVyIH07CiAKKyAgICBlbnVtIFRleHRCYXNlbGluZSB7IEFs
cGhhYmV0aWNUZXh0QmFzZWxpbmUsIFRvcFRleHRCYXNlbGluZSwgTWlkZGxlVGV4dEJhc2VsaW5l
LCBCb3R0b21UZXh0QmFzZWxpbmUsIElkZW9ncmFwaGljVGV4dEJhc2VsaW5lLCBIYW5naW5nVGV4
dEJhc2VsaW5lIH07CisgICAgCisgICAgZW51bSBUZXh0QWxpZ24geyBTdGFydFRleHRBbGlnbiwg
RW5kVGV4dEFsaWduLCBMZWZ0VGV4dEFsaWduLCBDZW50ZXJUZXh0QWxpZ24sIFJpZ2h0VGV4dEFs
aWduIH07CisKICAgICBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJh
dG9yKTsKICAgICBib29sIHBhcnNlQ29tcG9zaXRlT3BlcmF0b3IoY29uc3QgU3RyaW5nJiwgQ29t
cG9zaXRlT3BlcmF0b3ImKTsKIApAQCAtNjUsNiArNjksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIFN0cmluZyBsaW5lSm9pbk5hbWUoTGluZUpvaW4pOwogICAgIGJvb2wgcGFyc2VMaW5l
Sm9pbihjb25zdCBTdHJpbmcmLCBMaW5lSm9pbiYpOwogCisgICAgU3RyaW5nIHRleHRBbGlnbk5h
bWUoVGV4dEFsaWduKTsKKyAgICBib29sIHBhcnNlVGV4dEFsaWduKGNvbnN0IFN0cmluZyYsIFRl
eHRBbGlnbiYpOworICAgIAorICAgIFN0cmluZyB0ZXh0QmFzZWxpbmVOYW1lKFRleHRCYXNlbGlu
ZSk7CisgICAgYm9vbCBwYXJzZVRleHRCYXNlbGluZShjb25zdCBTdHJpbmcmLCBUZXh0QmFzZWxp
bmUmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>