<?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>108279</bug_id>
          
          <creation_ts>2013-01-29 18:33:19 -0800</creation_ts>
          <short_desc>webdatabase: Introducing WTF::TypeSafeEnum and DatabaseError</short_desc>
          <delta_ts>2013-01-29 21:24:28 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107475</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ggaren</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>819650</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 18:33:19 -0800</bug_when>
    <thetext>This is a sub-task of https://bugs.webkit.org/show_bug.cgi?id=107475.  Breaking out as a step for easier review.  This patch introduces the WTF TypeSafeEnum template and the DatabaseError enum list which instantiates an instance of TypeSafeEnum.  The enums in DatabaseError is currently unused, but will be put to use later in bug 107475.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819739</commentid>
    <comment_count>1</comment_count>
      <attachid>185386</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 20:46:22 -0800</bug_when>
    <thetext>Created attachment 185386
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819741</commentid>
    <comment_count>2</comment_count>
      <attachid>185386</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-01-29 20:50:29 -0800</bug_when>
    <thetext>Comment on attachment 185386
the patch.

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

r=me

&gt; Source/WTF/wtf/TypeSafeEnum.h:51
&gt; +//     MyEnum value1; // value1 is assigned MyEnum::VALUE_DEFAULT by default.

Typo: MyEnumDef.

&gt; Source/WebCore/Modules/webdatabase/DatabaseError.h:35
&gt; +struct DatabaseErrorDef {

We don&apos;t usually use abbreviations like &quot;Def&quot;. How about calling this &quot;DatabaseErrorStruct&quot; or &quot;DatabaseErrorDefinition&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819744</commentid>
    <comment_count>3</comment_count>
      <attachid>185386</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 20:54:32 -0800</bug_when>
    <thetext>Comment on attachment 185386
the patch.

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

&gt;&gt; Source/WTF/wtf/TypeSafeEnum.h:51
&gt;&gt; +//     MyEnum value1; // value1 is assigned MyEnum::VALUE_DEFAULT by default.
&gt; 
&gt; Typo: MyEnumDef.

This is not a typo.  With the TypeSafeEnum template, you can say MyEnum::VALUE_DEFAULT and it gets redirected to MyEnumDef::VALUE_DEFAULT.

... which reminds me, I should change that to MyEnum::ValueDefault which is what the style checker says is preferred.  I will update before committing.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseError.h:35
&gt;&gt; +struct DatabaseErrorDef {
&gt; 
&gt; We don&apos;t usually use abbreviations like &quot;Def&quot;. How about calling this &quot;DatabaseErrorStruct&quot; or &quot;DatabaseErrorDefinition&quot;?

Will change to DatabaseErrorDefinition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819751</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 21:04:29 -0800</bug_when>
    <thetext>C++ 11 has strongly typed enum.

Can&apos;t we use that and people without C++ 11 would have weak typed enums? That would make the code simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819753</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 21:11:01 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; C++ 11 has strongly typed enum.
&gt; 
&gt; Can&apos;t we use that and people without C++ 11 would have weak typed enums? That would make the code simpler.

The code is not all that complicated, and the type safety actually has an added benefit of scoping e.g. DatabaseError::None.  Otherwise, I will have to add a prefix.

I&apos;m landing this for now, and will look into how we can abstract this to use C++11 enums if available later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819759</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 21:15:44 -0800</bug_when>
    <thetext>&gt; The code is not all that complicated, and the type safety actually has an added benefit of scoping e.g. DatabaseError::None.  Otherwise, I will have to add a prefix.

enum class are scoped.

&gt; I&apos;m landing this for now, and will look into how we can abstract this to use C++11 enums if available later.

I looked into supporting both but that makes things worse. :(
Ignore me, go ahead with the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819760</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-29 21:19:25 -0800</bug_when>
    <thetext>Landed in r141219: &lt;http://trac.webkit.org/changeset/141219&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819761</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 21:22:05 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819762</commentid>
    <comment_count>9</comment_count>
      <attachid>185390</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 21:22:06 -0800</bug_when>
    <thetext>Created attachment 185390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819763</commentid>
    <comment_count>10</comment_count>
      <attachid>185390</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 21:22:40 -0800</bug_when>
    <thetext>Comment on attachment 185390
Patch

sorry, wrong copy paste :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185386</attachid>
            <date>2013-01-29 20:46:22 -0800</date>
            <delta_ts>2013-01-29 21:23:51 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-108279.patch</filename>
            <type>text/plain</type>
            <size>17393</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDEyMTYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAxLTI5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyBXVEY6OlR5cGVTYWZlRW51bSBhbmQg
RGF0YWJhc2VFcnJvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwODI3OS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9U
eXBlU2FmZUVudW0uaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoVHlwZVNhZmVF
bnVtKToKKyAgICAgICAgKFdURjo6VHlwZVNhZmVFbnVtOjpUeXBlU2FmZUVudW0pOgorICAgICAg
ICAoV1RGOjpUeXBlU2FmZUVudW06OnZhbHVlKToKKyAgICAgICAgKFdURjo6VHlwZVNhZmVFbnVt
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6VHlwZVNhZmVFbnVtOjpvcGVyYXRvciE9KToK
KyAgICAgICAgKFdURjo6VHlwZVNhZmVFbnVtOjpvcGVyYXRvcjwpOgorICAgICAgICAoV1RGOjpU
eXBlU2FmZUVudW06Om9wZXJhdG9yPD0pOgorICAgICAgICAoV1RGOjpUeXBlU2FmZUVudW06Om9w
ZXJhdG9yPik6CisgICAgICAgIChXVEY6OlR5cGVTYWZlRW51bTo6b3BlcmF0b3I+PSk6CisKIDIw
MTMtMDEtMjkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDA5ODMuCkluZGV4OiBTb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0MTIxNikKKysrIFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMx
MCw2ICszMTAsNyBAQAogCQlGM0ZCQzcyMDE2MUFGN0NEMDBCQjRCRDQgLyogTWVtb3J5SW5zdHJ1
bWVudGF0aW9uU2VxdWVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzRkJDNzFGMTYxQUY3Q0QwMEJCNEJENCAvKiBNZW1vcnlJbnN0cnVtZW50YXRp
b25TZXF1ZW5jZS5oICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tT
dGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAJCUZFREFD
RDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5oICovOyB9OworCQlGRTQzMzAyNzE2QTdBREMzMDBEMTU4NUQgLyogVHlwZVNhZmVF
bnVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQz
MzAyNjE2QTdBREMzMDBEMTU4NUQgLyogVHlwZVNhZmVFbnVtLmggKi87IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNl
Y3Rpb24gKi8KQEAgLTYyMSw2ICs2MjIsNyBAQAogCQlGM0ZCQzcxRjE2MUFGN0NEMDBCQjRCRDQg
LyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU2VxdWVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uU2VxdWVuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3Rh
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU0MzMwMjYxNkE3QURDMzAwRDE1
ODVEIC8qIFR5cGVTYWZlRW51bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBUeXBlU2FmZUVudW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtODY2LDYgKzg2OCw3IEBACiAJCQkJ
QThBNDczM0UxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNhZmVSZWZDb3VudGVkLmggKi8sCiAJ
CQkJQThBNDczM0YxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZFNwZWNpZmljLmggKi8sCiAJCQkJ
QThBNDczNDExNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlCYXNlLmggKi8sCisJCQkJRkU0
MzMwMjYxNkE3QURDMzAwRDE1ODVEIC8qIFR5cGVTYWZlRW51bS5oICovLAogCQkJCUE4QTQ3MzQy
MTUxQTgyNUIwMDQxMjNGRiAvKiBUeXBlVHJhaXRzLmNwcCAqLywKIAkJCQlBOEE0NzM0MzE1MUE4
MjVCMDA0MTIzRkYgLyogVHlwZVRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzQ2MTUxQTgyNUIwMDQx
MjNGRiAvKiBVaW50MTZBcnJheS5oICovLApAQCAtMTIyNCw2ICsxMjI3LDcgQEAKIAkJCQlBOEE0
NzQ1NDE1MUE4MjVCMDA0MTIzRkYgLyogVGhyZWFkU2FmZVJlZkNvdW50ZWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3NDU1MTUxQTgyNUIwMDQxMjNGRiAvKiBUaHJlYWRTcGVjaWZpYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NTcxNTFBODI1QjAwNDEyM0ZGIC8qIFR5cGVkQXJyYXlC
YXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTQzMzAyNzE2QTdBREMzMDBEMTU4NUQgLyogVHlw
ZVNhZmVFbnVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1OTE1MUE4MjVCMDA0MTIzRkYg
LyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NUMxNTFBODI1QjAwNDEy
M0ZGIC8qIFVpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ1RDE1MUE4MjVC
MDA0MTIzRkYgLyogVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dU
Ri93dGYvVHlwZVNhZmVFbnVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVHlwZVNh
ZmVFbnVtLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9UeXBlU2FmZUVudW0uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdURl9UeXBlU2FmZUVudW1faAorI2RlZmluZSBX
VEZfVHlwZVNhZmVFbnVtX2gKKworbmFtZXNwYWNlIFdURiB7CisKKy8vIEhvdyB0byBkZWZpbmUg
YSB0eXBlIHNhZmUgZW51bSBsaXN0IHVzaW5nIFR5cGVTYWZlRW51bT8KKy8vID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRGVmIHNob3Vs
ZCBiZSBhIHN0cnVjdCB0aGF0IGVuY2Fwc3VsYXRlcyBhbiBlbnVtIGxpc3QuCisvLyBUaGUgZW51
bSBsaXN0IHNob3VsZCBiZSBuYW1lcyBFbnVtcy4KKy8vCisvLyBIZXJlJ3MgYW4gZXhhbXBsZSBv
ZiBob3cgdG8gZGVmaW5lIGEgdHlwZSBzYWZlIGVudW0gbmFtZWQgTXlFbnVtIHVzaW5nCisvLyB0
aGUgVHlwZVNhZmVFbnVtIHRlbXBsYXRlOgorLy8KKy8vICAgICBzdHJ1Y3QgTXlFbnVtRGVmIHsK
Ky8vICAgICAgICAgZW51bSBFbnVtcyB7CisvLyAgICAgICAgICAgICBWQUxVRV9ERUZBVUxULAor
Ly8gICAgICAgICAgICAgVkFMVUVfMSwKKy8vICAgICAgICAgICAgIC4uLgorLy8gICAgICAgICAg
ICAgVkFMVUVfTgorLy8gICAgICAgICB9OworLy8gICAgIH07CisvLyAgICAgdHlwZWRlZiBUeXBl
U2FmZUVudW08TXlFbnVtRGVmLCBNeUVudW1EZWY6OlZBTFVFX0RFRkFVTFQ+IE15RW51bTsKKy8v
CisvLyBXaXRoIHRoYXQsIHlvdSBjYW4gbm93IHVzZSBNeUVudW0gZW51bSB2YWx1ZXMgYXMgZm9s
bG93OgorLy8KKy8vICAgICBNeUVudW0gdmFsdWUxOyAvLyB2YWx1ZTEgaXMgYXNzaWduZWQgTXlF
bnVtOjpWQUxVRV9ERUZBVUxUIGJ5IGRlZmF1bHQuCisvLyAgICAgTXlFbnVtIHZhbHVlMiA9IE15
RW51bTo6VkFMVUVfMTsgLy8gdmFsdWUyIGlzIGFzc2lnbmVkIE15RW51bTo6VkFMVUVfMTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIERlZiwgdHlwZW5hbWUgRGVmOjpFbnVtcyBkZWZhdWx0VmFsdWU+
CitjbGFzcyBUeXBlU2FmZUVudW0gOiBwdWJsaWMgRGVmIHsKKyAgICB0eXBlZGVmIGVudW0gRGVm
OjpFbnVtcyBWYWx1ZTsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIFR5cGVTYWZlRW51bSgp
IDogbV92YWx1ZShkZWZhdWx0VmFsdWUpIHsgfQorICAgIEFMV0FZU19JTkxJTkUgVHlwZVNhZmVF
bnVtKFZhbHVlIHZhbHVlKSA6IG1fdmFsdWUodmFsdWUpIHsgfQorCisgICAgQUxXQVlTX0lOTElO
RSBWYWx1ZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGVTYWZlRW51bSBvdGhlcikgeyByZXR1cm4g
bV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJh
dG9yIT0oY29uc3QgVHlwZVNhZmVFbnVtIG90aGVyKSB7IHJldHVybiBtX3ZhbHVlICE9IG90aGVy
Lm1fdmFsdWU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFR5cGVT
YWZlRW51bSBvdGhlcikgeyByZXR1cm4gbV92YWx1ZSA8IG90aGVyLm1fdmFsdWU7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUeXBlU2FmZUVudW0gb3RoZXIpIHsg
cmV0dXJuIG1fdmFsdWUgPD0gb3RoZXIubV92YWx1ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBvcGVyYXRvcj4oY29uc3QgVHlwZVNhZmVFbnVtIG90aGVyKSB7IHJldHVybiBtX3ZhbHVlID4g
b3RoZXIubV92YWx1ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFR5cGVTYWZlRW51bSBvdGhlcikgeyByZXR1cm4gbV92YWx1ZSA+PSBvdGhlci5tX3ZhbHVlOyB9
CisKK3ByaXZhdGU6CisgICAgVmFsdWUgbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCit1c2luZyBXVEY6OlR5cGVTYWZlRW51bTsKKworI2VuZGlmIC8vIFdURl9UeXBlU2FmZUVu
dW1faApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxMjE2KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTMtMDEtMjkgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIFdURjo6
VHlwZVNhZmVFbnVtIGFuZCBEYXRhYmFzZUVycm9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mjc5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERhdGFiYXNlRXJyb3Igd2lsbCBiZSB1c2VkIGxhdGVy
IGluIHRoZSB3ZWJkYXRhYmFzZSByZWZhY3RvcmluZyBlZmZvcnQuCisgICAgICAgIEl0IGlzIGN1
cnJlbnRseSB1bnVzZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
RXJyb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxMy0wMS0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIERCQmFja2VuZDo6U2VydmVyIHRvIERhdGFiYXNlU2VydmVy
LgpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNDEyMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTA4LDYgKzIxMDgsNyBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRXJyb3IuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTQxMjE2KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTQ0MSw2ICsxNDQxLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQmFja2VuZC5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
Q2FsbGJhY2suaCBcCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUVycm9yLmggXAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmggXAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVN5bmMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlRXJyb3IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VFcnJvci5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgRGF0YWJhc2VFcnJvcl9oCisjZGVmaW5lIERhdGFiYXNlRXJyb3JfaAorCisjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9UeXBlU2FmZUVudW0uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRGF0YWJhc2VFcnJvckRlZiB7CisgICAgZW51
bSBFbnVtcyB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBDYW5ub3RPcGVuRGF0YWJhc2Us
CisgICAgICAgIERhdGFiYXNlSXNCZWluZ0RlbGV0ZWQsCisgICAgICAgIERhdGFiYXNlU2l6ZUV4
Y2VlZGVkUXVvdGEsCisgICAgICAgIERhdGFiYXNlU2l6ZU92ZXJmbG93ZWQKKyAgICB9OworfTsK
KwordHlwZWRlZiBUeXBlU2FmZUVudW08RGF0YWJhc2VFcnJvckRlZiwgRGF0YWJhc2VFcnJvckRl
Zjo6Tm9uZT4gRGF0YWJhc2VFcnJvcjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlRXJyb3JfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDE0MTIxNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQxNyw2ICsyNTQxNywxMCBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJk
YXRhYmFzZVxEYXRhYmFzZUVycm9yLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlTWFuYWdl
ci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE0MTIxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTY0MDYsNiArNjQwNiw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVz
XHdlYmRhdGFiYXNlXERhdGFiYXNlQmFja2VuZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZUNhbGxiYWNrLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlQ29udGV4dC5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRh
YmFzZUVycm9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHdlYmRh
dGFiYXNlXERhdGFiYXNlTWFuYWdlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
TW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZVNlcnZlci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZVN5bmMuaCIgLz4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0MTIxNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtODQ1Myw2
ICs4NDUzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJh
c2VcRGF0YWJhc2VDb250ZXh0LmgiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNl
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlRXJyb3IuaCI+CisgICAgICA8RmlsdGVyPk1vZHVs
ZXNcd2ViZGF0YWJhc2U8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmgiPgogICAg
ICAgPEZpbHRlcj5Nb2R1bGVzXHdlYmRhdGFiYXNlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNDEyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3MDEsNiArMzcwMSw3IEBA
CiAJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTUxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07CiAJCTk3QkM2QTI4MTUwNUYw
ODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFNzE1MDVGMDgx
MDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUwOURCNDkxNjlFMkQ2RTAwNjIyNTU3IC8qIERhdGFi
YXNlRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMDlEQjQ2MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVCMjZEMjgxNjdBOEYyQTAw
RkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjI2RDI3MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNl
cnZlci5jcHAgKi87IH07CiAJCUZFQUY2NjU0MTY3OTcwMzIwMDYyRDBDNSAvKiBEYXRhYmFzZVNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVB
RjY2NTMxNjc5NzAwNzAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMkExNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNw
cCAqLzsgfTsKQEAgLTExMTA0LDYgKzExMTA1LDcgQEAKIAkJOTdCQzY5RTUxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBEYXRhYmFzZUNvbnRleHQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlF
NjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQ29udGV4dC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdC
QzY5RTcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZURldGFpbHMuaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFMDlEQjQ2MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlRXJyb3IuaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVCMjZEMjcxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2VydmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlU2VydmVyLmNwcDsgcGF0aCA9IE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlU3luYy5jcHA7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODUwOSw2ICsxODUxMSw3IEBACiAJCQkJOTdCQzY5RTUxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi8sCiAJCQkJOTdCQzY5RTYxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovLAogCQkJCTk3QkM2OUU3MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLywKKwkJCQlGRTA5REI0NjE2OUUyRDZFMDA2
MjI1NTcgLyogRGF0YWJhc2VFcnJvci5oICovLAogCQkJCUZFNDU2RjE2MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovLAogCQkJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLywKIAkJCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMg
LyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8sCkBAIC0yMzI5Miw2ICsyMzI5NSw3IEBACiAJ
CQkJOTdCQzZBMjUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZURldGFpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMDlEQjQ5MTY5RTJENkUwMDYyMjU1NyAv
KiBEYXRhYmFzZUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTQ1NkYxOTE2NzdENzRFMDA1
RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMzE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRUFGNjY1NDE2Nzk3MDMyMDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185390</attachid>
            <date>2013-01-29 21:22:06 -0800</date>
            <delta_ts>2013-01-29 21:22:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108279-20130129211852.patch</filename>
            <type>text/plain</type>
            <size>7761</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdlNmMwNTQ5ZjcxZTAw
NWU5OTQ4ZjkyZmYzY2UxYmVkMWZmNGZlZi4uYWQ2NmM3YWFiZjE1OWM2MWM5NmQ4ZWNhZjVlYjI2
ZjFiM2EwN2VlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAxLTI5ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIERvIG5vdCBjb252
ZXJ0IHRvIFN0cmluZy0+QXRvbWljU3RyaW5nIGZvciBOYW1lZE5vZGVNYXAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODI4OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5hbWVkTm9kZU1hcCdzIEFQSSB3
YXMgdGFraW5nIGEgV1RGOjpTdHJpbmcuIEludGVybmFsbHksIGF0dHJpYnV0ZQorICAgICAgICBu
YW1lcyBhcmUgQXRvbWljU3RyaW5nLgorCisgICAgICAgIFRoZSBjb252ZXJzaW9ucyBTdHJpbmct
PkF0b21pY1N0cmluZyB3YXMgY2F1c2luZyBhbiBhZGRpdGlvbmFsIHJlZi1kZXJlZgorICAgICAg
ICBmb3IgdGhlIEpTL1Y4IGJpbmRpbmdzLiBBbmQgY291bGQgY2F1c2UgYW4gYWRkaXRpb25hbCBt
ZW1vcnkgYWxsb2NhdGlvbiBmb3IgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIGJpbmRpbmdzLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgQVBJIHRvIHVzZSBBdG9taWNTdHJpbmcs
IGFuZCB1cGRhdGUgdGhlIGN1c3RvbSBiaW5kaW5ncyBhY2NvcmRpbmdseS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5hbWVkTm9k
ZU1hcDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogZG9tL05hbWVkTm9kZU1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OmdldE5hbWVkSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OmdldE5hbWVkSXRlbU5TKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtTlMpOgorICAgICAgICAqIGRvbS9OYW1lZE5v
ZGVNYXAuaDoKKyAgICAgICAgKE5hbWVkTm9kZU1hcCk6CisKIDIwMTMtMDEtMjkgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBBYnN0cmFjdERhdGFiYXNl
IHRvIERhdGFiYXNlQmFja2VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAppbmRleCAzOTQwN2QxNjU3MGQ2NGI1MWY4NTQxMTk5
MDk3NjhjMTc2OTRkZGQxLi5jY2IzODk1MmY0OGU3MjlmZTEyY2M4ZTdmM2I4NDY1NGRkOTY4NjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBD
dXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMyArMzcsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBib29sIEpTTmFtZWROb2RlTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUo
RXhlY1N0YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewotICAgIHJldHVybiBpbXBsLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmco
cHJvcGVydHlOYW1lKSk7CisgICAgcmV0dXJuIGltcGwtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5h
bWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKIH0KIAogSlNWYWx1ZSBKU05hbWVkTm9k
ZU1hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNOYW1lZE5vZGVNYXAqIHRoaXNPYmogPSBq
c0Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCktPmdldE5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJu
IHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS0+Z2V0
TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKTsKIH0K
IAogdm9pZCBKU05hbWVkTm9kZU1hcDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggMWY5NmU5ZjM4YzkxNjk3
ZWEwNGU3OTdmZjMwNjNkYTNjOTdiM2YyOS4uMjI4MTlkNWM4ZmVmZDZhMGJmYTE2MTEzOWRlNTg2
NTEzNzY4OGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOE5hbWVkTm9kZU1hcDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4KICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBO
YW1lZE5vZGVNYXAqIGltcCA9IFY4TmFtZWROb2RlTWFwOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKLSAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gaW1wLT5nZXROYW1lZEl0ZW0odG9XZWJDb3Jl
U3RyaW5nKG5hbWUpKTsKKyAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gaW1wLT5nZXROYW1lZEl0
ZW0odG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAK
aW5kZXggZDg3NmUyYmNlMjlkMzBjOGQ1NmM4YjQxNzhiN2Q2MDBlMjcwNTRhOS4uNDljNDY5Nzgx
MmNmMTZkOWZiYWQzNTQxZGIxMDdjNTg1OTdiZmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkTm9kZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9k
ZU1hcC5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIChl
cmljQHdlYmtpdC5vcmcpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNTAsMTcgKzUwLDE3IEBAIHZvaWQgTmFt
ZWROb2RlTWFwOjpkZXJlZigpCiAgICAgbV9lbGVtZW50LT5kZXJlZigpOwogfQogCi1QYXNzUmVm
UHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6Z2V0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3QKK1Bhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpnZXROYW1lZEl0ZW0oY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmdldEF0
dHJpYnV0ZU5vZGUobmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpn
ZXROYW1lZEl0ZW1OUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBs
b2NhbE5hbWUpIGNvbnN0CitQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6Z2V0TmFtZWRJ
dGVtTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxOYW1lKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmdldEF0dHJpYnV0
ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4g
TmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBz
aXplX3QgaW5kZXggPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lLCBzaG91
bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKG1fZWxlbWVudCkpOwogICAgIGlmIChpbmRleCA9PSBub3RG
b3VuZCkgewpAQCAtNzAsNyArNzAsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6
cmVtb3ZlTmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZQogICAgIHJl
dHVybiBtX2VsZW1lbnQtPmRldGFjaEF0dHJpYnV0ZShpbmRleCk7CiB9CiAKLVBhc3NSZWZQdHI8
Tm9kZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW1OUyhjb25zdCBTdHJpbmcmIG5hbWVz
cGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbU5TKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgc2l6ZV90IGluZGV4ID0gbV9lbGVtZW50LT5nZXRBdHRy
aWJ1dGVJdGVtSW5kZXgoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3Bh
Y2VVUkkpKTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5v
ZGVNYXAuaAppbmRleCBkOWZkZTJkZDIwMWJmZjc5OTMwNWJmZWMwMjBkNzNjOTQ4MGJkY2M1Li4x
NGMxOGY1YTAxODUxODRlZDQ3OWUxOGZiNzdhZGViOWFjYmViNTQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05h
bWVkTm9kZU1hcC5oCkBAIC0zLDcgKzMsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDEwLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsNyArMjgs
NyBAQAogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogCiAgICAgLy8gUHVi
bGljIERPTSBpbnRlcmZhY2UuCiAKLSAgICBQYXNzUmVmUHRyPE5vZGU+IGdldE5hbWVkSXRlbShj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Tm9kZT4gcmVtb3ZlTmFt
ZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8Tm9kZT4gZ2V0TmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8Tm9kZT4gcmVtb3ZlTmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxOb2RlPiBnZXROYW1lZEl0ZW1OUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0
OwotICAgIFBhc3NSZWZQdHI8Tm9kZT4gcmVtb3ZlTmFtZWRJdGVtTlMoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxOb2RlPiBnZXROYW1lZEl0ZW1OUyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8Tm9kZT4gcmVtb3ZlTmFtZWRJdGVtTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICBQYXNzUmVmUHRyPE5vZGU+IHNldE5hbWVkSXRlbShOb2RlKiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFBhc3NSZWZQdHI8Tm9kZT4gc2V0TmFtZWRJdGVtTlMoTm9kZSosIEV4Y2VwdGlv
bkNvZGUmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>