<?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>127394</bug_id>
          
          <creation_ts>2014-01-21 18:18:57 -0800</creation_ts>
          <short_desc>JSC needs to be able to parse DWARF debug_line info</short_desc>
          <delta_ts>2014-02-04 13:22:34 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970521</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-21 18:18:57 -0800</bug_when>
    <thetext>If we want to encode IR maps in the DWARF debug line info metadata generated by LLVM, we&apos;ll need to know how to decode the .debug_line DWARF section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970531</commentid>
    <comment_count>1</comment_count>
      <attachid>221819</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-21 18:45:23 -0800</bug_when>
    <thetext>Created attachment 221819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970534</commentid>
    <comment_count>2</comment_count>
      <attachid>221819</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-21 18:48:21 -0800</bug_when>
    <thetext>Comment on attachment 221819
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.cpp:281
&gt; +        /* Special opcodes */

Unindent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970567</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-21 21:25:43 -0800</bug_when>
    <thetext>Super-fun!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972961</commentid>
    <comment_count>4</comment_count>
      <attachid>221819</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-28 09:15:01 -0800</bug_when>
    <thetext>Comment on attachment 221819
Patch

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

r=me

&gt; Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.cpp:42
&gt; +    T result = *(T*)program;

This should be &quot;T result = *static_cast&lt;const T*&amp;&gt;(program);&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976409</commentid>
    <comment_count>5</comment_count>
      <attachid>223128</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 10:08:01 -0800</bug_when>
    <thetext>Created attachment 223128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976411</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 10:08:12 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=223128) [details]
&gt; Patch

EWS fodder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976426</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 10:17:49 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=223128) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; EWS fodder.

Also forgot to fix the casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976475</commentid>
    <comment_count>8</comment_count>
      <attachid>223128</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-04 12:37:28 -0800</bug_when>
    <thetext>Comment on attachment 223128
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976487</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-04 13:22:34 -0800</bug_when>
    <thetext>Committed r163397: &lt;http://trac.webkit.org/changeset/163397&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221819</attachid>
            <date>2014-01-21 18:45:23 -0800</date>
            <delta_ts>2014-02-04 10:07:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127394-20140121184523.patch</filename>
            <type>text/plain</type>
            <size>23648</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYyNDkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE0LTAxLTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIG5lZWRzIHRvIGJlIGFibGUgdG8gcGFyc2UgRFdBUkYgZGVidWdfbGluZSBp
bmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcz
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB3
ZSB3YW50IHRvIGVuY29kZSBJUiBtYXBzIGluIHRoZSBEV0FSRiBkZWJ1ZyBsaW5lIGluZm8gbWV0
YWRhdGEgZ2VuZXJhdGVkIGJ5IExMVk0sIAorICAgICAgICB3ZSdsbCBuZWVkIHRvIGtub3cgaG93
IHRvIGRlY29kZSB0aGUgLmRlYnVnX2xpbmUgRFdBUkYgc2VjdGlvbi4gVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIAorICAgICAgICBhbiBpbnRlcnByZXRlciBmb3IgdGhlIC5kZWJ1Z19saW5lIERXQVJG
IHNlY3Rpb24gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB2ZXJzaW9uIDMgc3BlYyAKKyAgICAgICAg
cHVibGlzaGVkIGF0IGh0dHA6Ly93d3cuZHdhcmZzdGQub3JnLgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBmdGwvRlRMRFdB
UkZEZWJ1Z0xpbmVJbmZvLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkZUTDo6RGVidWdMaW5l
SW50ZXJwcmV0ZXI6OkRlYnVnTGluZUludGVycHJldGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpy
ZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cGFyc2VVTEVC
MTI4KToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cGFyc2VTTEVC
MTI4KToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cnVuKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cGFyc2VQcm9sb2d1ZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6RGVidWdMaW5lSW50ZXJwcmV0ZXI6OnBhcnNlSW5jbHVkZURpcmVj
dG9yaWVzKToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cGFyc2VG
aWxlRW50cmllcyk6CisgICAgICAgIChKU0M6OkZUTDo6RGVidWdMaW5lSW50ZXJwcmV0ZXI6OnBh
cnNlRmlsZUVudHJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6
aW50ZXJwcmV0U3RhdGVtZW50UHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkZUTDo6RGVidWdMaW5l
SW50ZXJwcmV0ZXI6OmludGVycHJldE9wY29kZSk6CisgICAgICAgIChKU0M6OkZUTDo6RGVidWdM
aW5lSW50ZXJwcmV0ZXI6OnByaW50TGluZUluZm8pOgorICAgICAgICAoSlNDOjpGVEw6OkRlYnVn
TGluZUludGVycHJldGVyOjpyZXNldEludGVycHJldGVyU3RhdGUpOgorICAgICAgICAqIGZ0bC9G
VExEV0FSRkRlYnVnTGluZUluZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkZUTDo6RGVidWdM
aW5lSW50ZXJwcmV0ZXI6OlByb2xvZ3VlOjpQcm9sb2d1ZSk6CisgICAgICAgICogZnRsL0ZUTFZh
bHVlUmFuZ2UuY3BwOiBSYW5kb20gYnVpbGQgZml4IGZvciAhRU5BQkxFKEZUTF9KSVQpLgorCiAy
MDE0LTAxLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IGEgLS1lbmFibGVFeHBlcmltZW50YWxGVExDb3ZlcmFnZSBvcHRpb24gYW5kIHVzZSBpdCB0byBw
cm90ZWN0IHJlY2VudGx5IGFkZGVkIGZlYXR1cmVzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDE2MjQ5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjU2LDYgKzEyNTYsOCBAQAogCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFw
cGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLzsg
fTsKIAkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QzAxNkUx
NUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovOyB9OwogCQlDMkQ1OEMzNDE1
OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAv
KiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQlDMkRDQ0Y3ODE4OEY0QjlFMDA5Njk1
NTEgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRENDRjc2MTg4RjRCOUUwMDk2OTU1MSAvKiBGVExEV0FS
RkRlYnVnTGluZUluZm8uY3BwICovOyB9OworCQlDMkRDQ0Y3OTE4OEY0QjlFMDA5Njk1NTEgLyog
RlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkRDQ0Y3NzE4OEY0QjlFMDA5Njk1NTEgLyogRlRMRFdBUkZEZWJ1Z0xp
bmVJbmZvLmggKi87IH07CiAJCUMyREY0NDJGMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkRG
NDQyRDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwICovOyB9OwogCQlDMkRGNDQz
MDE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyREY0NDJFMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUMyRTUyNkJEMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFNTI2QkIxNTkwRUYwMDAwNTRF
NDhEIC8qIEhlYXBUaW1lci5jcHAgKi87IH07CkBAIC0yNTk3LDYgKzI1OTksOCBAQAogCQlDMkNG
MzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNB
UElXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQVBJ
V3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkQ1OEMzMzE1
OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyRENDRjc2MTg4RjRCOUUwMDk2OTU1MSAvKiBGVExEV0FSRkRl
YnVnTGluZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRM
RFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcDsgcGF0aCA9IGZ0bC9GVExEV0FSRkRlYnVnTGluZUluZm8u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkRDQ0Y3NzE4OEY0QjlFMDA5Njk1
NTEgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEZUTERXQVJGRGVidWdMaW5lSW5mby5oOyBwYXRoID0gZnRsL0ZUTERXQVJGRGVidWdM
aW5lSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkRGNDQyRDE3MDdBQzAx
MDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3VwZXJSZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MkRGNDQyRTE3MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3VwZXJSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzJFNTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwVGltZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjg3NCw2ICsyODc4LDggQEAKIAkJMEZFQTA5RkMxNzA1MTM3RjAw
QkI3MjJDIC8qIGZ0bCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQzJEQ0NGNzYxODhGNEI5RTAwOTY5NTUxIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5j
cHAgKi8sCisJCQkJQzJEQ0NGNzcxODhGNEI5RTAwOTY5NTUxIC8qIEZUTERXQVJGRGVidWdMaW5l
SW5mby5oICovLAogCQkJCTBGREIyQ0M3MTczREE1MUUwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRl
ZFR5cGVzLmggKi8sCiAJCQkJMEZFQTA5RkQxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlh
dGlvbnMuaCAqLywKIAkJCQkwRkVBMEExNzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RI
ZWFwLmNwcCAqLywKQEAgLTQ1OTUsNiArNDYwMSw3IEBACiAJCQkJMEZFQTBBMEUxNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTEpJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEE5NzgxMTc5NzM4
RDUwMDlERjc0NCAvKiBGVExKSVRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUE2
Mjg0MTg4Qzk4RDQwMDcyQzlERiAvKiBGVExWYWx1ZVJhbmdlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDMkRDQ0Y3OTE4OEY0QjlFMDA5Njk1NTEgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjhGMkI5NjE3MkUwNEEzMDA3REJEQTUgLyogRlRMTGluay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93
ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTg2MSw2ICs1ODY4LDcgQEAKIAkJCQkx
NDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3Mjk5REE1MTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzI5OURBMTE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyRENDRjc4MTg4RjRCOUUwMDk2OTU1MSAvKiBGVExE
V0FSRkRlYnVnTGluZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY3MDQxN0I2QjVB
QjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3OTBERDZEMTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZp
c2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExEV0FSRkRlYnVnTGluZUluZm8uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEV0FSRkRlYnVnTGluZUluZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkZUTERXQVJGRGVidWdMaW5lSW5mby5oIgorCisjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitEZWJ1Z0xpbmVJ
bnRlcnByZXRlcjo6RGVidWdMaW5lSW50ZXJwcmV0ZXIoY29uc3QgY2hhciogcHJvZ3JhbSkKKyAg
ICA6IG1fcHJvZ3JhbShwcm9ncmFtKQorICAgICwgbV9sb2dSZXN1bHRzKGZhbHNlKQoreworICAg
IHJlc2V0SW50ZXJwcmV0ZXJTdGF0ZSgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIFQgcmVhZChjb25zdCBjaGFyKiYgcHJvZ3JhbSkKK3sKKyAgICBUIHJlc3VsdCA9ICooVCop
cHJvZ3JhbTsKKyAgICBwcm9ncmFtICs9IHNpemVvZihUKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit1aW50MzJfdCBEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cGFyc2VVTEVCMTI4KGNvbnN0IGNo
YXIqJiBvZmZzZXQpCit7CisgICAgdWludDMyX3QgcmVzdWx0ID0gMDsKKyAgICB1aW50OF90IGJ5
dGU7CisgICAgdW5zaWduZWQgc2hpZnRBbW91bnQgPSAwOworICAgIGRvIHsKKyAgICAgICAgYnl0
ZSA9IHJlYWQ8dWludDhfdD4ob2Zmc2V0KTsKKyAgICAgICAgcmVzdWx0IHw9IChieXRlICYgfjB4
ODApIDw8IHNoaWZ0QW1vdW50OworICAgICAgICBzaGlmdEFtb3VudCArPSA3OworICAgIH0gd2hp
bGUgKGJ5dGUgJiAweDgwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQzMl90IERlYnVn
TGluZUludGVycHJldGVyOjpwYXJzZVNMRUIxMjgoY29uc3QgY2hhciomIG9mZnNldCkKK3sKKyAg
ICBpbnQzMl90IHJlc3VsdCA9IDA7CisgICAgdWludDhfdCBieXRlOworICAgIHVuc2lnbmVkIHNo
aWZ0QW1vdW50ID0gMDsKKyAgICBkbyB7CisgICAgICAgIGJ5dGUgPSByZWFkPHVpbnQ4X3Q+KG9m
ZnNldCk7CisgICAgICAgIHJlc3VsdCB8PSAoYnl0ZSAmIH4weDgwKSA8PCBzaGlmdEFtb3VudDsK
KyAgICAgICAgc2hpZnRBbW91bnQgKz0gNzsKKyAgICB9IHdoaWxlIChieXRlICYgMHg4MCk7Cisg
ICAgCisgICAgLy8gSWYgdGhlIHNpZ24gYml0IChpbiB0aGlzIGNhc2UsIHRoZSBzZWNvbmQgTVNC
KSBvbiB0aGUgbGFzdCBieXRlIGlzIHNldCB3ZSBuZWVkIHRvIHplcm8gZXh0ZW5kLgorICAgIGlm
IChieXRlICYgMHg0MCkKKyAgICAgICAgcmVzdWx0IHw9IC0oMSA8PCBzaGlmdEFtb3VudCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cnVuKCkK
K3sKKyAgICBwYXJzZVByb2xvZ3VlKCk7CisgICAgaW50ZXJwcmV0U3RhdGVtZW50UHJvZ3JhbSgp
OworICAgIGlmIChtX2xvZ1Jlc3VsdHMpCisgICAgICAgIHByaW50TGluZUluZm8oKTsKK30KKwor
dm9pZCBEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cGFyc2VQcm9sb2d1ZSgpCit7CisgICAgY29uc3Qg
Y2hhciogY3VycmVudFByb2dyYW1PZmZzZXQgPSBtX3Byb2dyYW07CisgICAgbV9wcm9sb2d1ZS50
b3RhbExlbmd0aCA9IHJlYWQ8dWludDMyX3Q+KGN1cnJlbnRQcm9ncmFtT2Zmc2V0KTsKKyAgICBp
ZiAobV9wcm9sb2d1ZS50b3RhbExlbmd0aCA9PSAweGZmZmZmZmZmKSB7CisgICAgICAgIC8vIFRo
aXMgaXMgNjQtYml0IERXQVJGIGZvcm1hdC4KKyAgICAgICAgbV9wcm9sb2d1ZS5mb3JtYXQgPSBT
aXh0eUZvdXJCaXQ7CisgICAgICAgIG1fcHJvbG9ndWUudG90YWxMZW5ndGggPSByZWFkPHVpbnQ2
NF90PihjdXJyZW50UHJvZ3JhbU9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcHJvbG9n
dWUuZm9ybWF0ID0gVGhpcnR5VHdvQml0OworICAgIG1fcHJvbG9ndWUudmVyc2lvbiA9IHJlYWQ8
dWludDE2X3Q+KGN1cnJlbnRQcm9ncmFtT2Zmc2V0KTsKKyAgICAKKyAgICBpZiAobV9wcm9sb2d1
ZS5mb3JtYXQgPT0gVGhpcnR5VHdvQml0KQorICAgICAgICBtX3Byb2xvZ3VlLnByb2xvZ3VlTGVu
Z3RoID0gcmVhZDx1aW50MzJfdD4oY3VycmVudFByb2dyYW1PZmZzZXQpOworICAgIGVsc2UKKyAg
ICAgICAgbV9wcm9sb2d1ZS5wcm9sb2d1ZUxlbmd0aCA9IHJlYWQ8dWludDY0X3Q+KGN1cnJlbnRQ
cm9ncmFtT2Zmc2V0KTsKKyAgICBjb25zdCBjaGFyKiBhZnRlckxlbmd0aE9mZnNldCA9IGN1cnJl
bnRQcm9ncmFtT2Zmc2V0OworICAgIAorICAgIG1fcHJvbG9ndWUubWluaW11bUluc3RydWN0aW9u
TGVuZ3RoID0gcmVhZDx1aW50OF90PihjdXJyZW50UHJvZ3JhbU9mZnNldCk7CisgICAgbV9wcm9s
b2d1ZS5kZWZhdWx0SXNTdGF0ZW1lbnQgPSByZWFkPHVpbnQ4X3Q+KGN1cnJlbnRQcm9ncmFtT2Zm
c2V0KTsKKyAgICBtX3Byb2xvZ3VlLmxpbmVCYXNlID0gcmVhZDxpbnQ4X3Q+KGN1cnJlbnRQcm9n
cmFtT2Zmc2V0KTsKKyAgICBtX3Byb2xvZ3VlLmxpbmVSYW5nZSA9IHJlYWQ8dWludDhfdD4oY3Vy
cmVudFByb2dyYW1PZmZzZXQpOworICAgIG1fcHJvbG9ndWUub3Bjb2RlQmFzZSA9IHJlYWQ8dWlu
dDhfdD4oY3VycmVudFByb2dyYW1PZmZzZXQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkg
PCBtX3Byb2xvZ3VlLm9wY29kZUJhc2U7ICsraSkKKyAgICAgICAgbV9wcm9sb2d1ZS5zdGFuZGFy
ZE9wY29kZUxlbmd0aHMuYXBwZW5kKHJlYWQ8dWludDhfdD4oY3VycmVudFByb2dyYW1PZmZzZXQp
KTsKKyAgICBwYXJzZUluY2x1ZGVEaXJlY3RvcmllcyhjdXJyZW50UHJvZ3JhbU9mZnNldCk7Cisg
ICAgcGFyc2VGaWxlRW50cmllcyhjdXJyZW50UHJvZ3JhbU9mZnNldCk7CisgICAgCisgICAgbV9w
cm9ncmFtID0gYWZ0ZXJMZW5ndGhPZmZzZXQgKyBtX3Byb2xvZ3VlLnByb2xvZ3VlTGVuZ3RoOwor
CisgICAgaWYgKCFtX2xvZ1Jlc3VsdHMpCisgICAgICAgIHJldHVybjsKKworICAgIGRhdGFMb2co
IlxuUHJvbG9ndWU6XG4iKTsKKyAgICBkYXRhTG9nKCJ0b3RhbExlbmd0aCA9ICIsIG1fcHJvbG9n
dWUudG90YWxMZW5ndGgsICJcbiIpOworICAgIGRhdGFMb2coInZlcnNpb24gPSAiLCBtX3Byb2xv
Z3VlLnZlcnNpb24sICJcbiIpOworICAgIGRhdGFMb2coInByb2xvZ3VlTGVuZ3RoID0gIiwgbV9w
cm9sb2d1ZS5wcm9sb2d1ZUxlbmd0aCwgIlxuIik7CisgICAgZGF0YUxvZygibWluaW11bUluc3Ry
dWN0aW9uTGVuZ3RoID0gIiwgbV9wcm9sb2d1ZS5taW5pbXVtSW5zdHJ1Y3Rpb25MZW5ndGgsICJc
biIpOworICAgIGRhdGFMb2coImRlZmF1bHRJc1N0YXRlbWVudCA9ICIsIG1fcHJvbG9ndWUuZGVm
YXVsdElzU3RhdGVtZW50LCAiXG4iKTsKKyAgICBkYXRhTG9nKCJsaW5lQmFzZSA9ICIsIG1fcHJv
bG9ndWUubGluZUJhc2UsICJcbiIpOworICAgIGRhdGFMb2coImxpbmVSYW5nZSA9ICIsIG1fcHJv
bG9ndWUubGluZVJhbmdlLCAiXG4iKTsKKyAgICBkYXRhTG9nKCJvcGNvZGVCYXNlID0gIiwgbV9w
cm9sb2d1ZS5vcGNvZGVCYXNlLCAiXG4iKTsKKyAgICAKKyAgICBkYXRhTG9nKCJcblN0YW5kYXJk
IE9wY29kZSBMZW5ndGhzOlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fcHJv
bG9ndWUub3Bjb2RlQmFzZTsgKytpKQorICAgICAgICBkYXRhTG9nKCJzdGFuZGFyZE9wY29kZUxl
bmd0aHNbIiwgaSAtIDEsICJdID0gIiwgbV9wcm9sb2d1ZS5zdGFuZGFyZE9wY29kZUxlbmd0aHNb
aSAtIDFdLCAiXG4iKTsKKyAgICAKKyAgICBkYXRhTG9nKCJcbkluY2x1ZGUgRGlyZWN0b3JpZXM6
XG4iKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9sb2d1ZS5pbmNsdWRlRGly
ZWN0b3JpZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRhdGFMb2coImluY2x1ZGVEaXJlY3Rvcmll
c1siLCBpLCAiXSA9ICIsIG1fcHJvbG9ndWUuaW5jbHVkZURpcmVjdG9yaWVzW2ldLCAiXG4iKTsK
KyAgICAKKyAgICBkYXRhTG9nKCJcbkZpbGVzOlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fcHJvbG9ndWUuZmlsZUVudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRmls
ZUVudHJ5JiBlbnRyeSA9IG1fcHJvbG9ndWUuZmlsZUVudHJpZXNbaV07CisgICAgICAgIGRhdGFM
b2coImZpbGVFbnRyaWVzWyIsIGksICJdID0ge25hbWU6IFwiIiwgZW50cnkubmFtZSwgIlwiLCBk
aXJfaW5kZXg6ICIsIGVudHJ5LmRpcmVjdG9yeUluZGV4LCAiLCBsYXN0X21vZGlmaWVkOiAiLCBl
bnRyeS5sYXN0TW9kaWZpZWQsICIsIHNpemU6ICIsIGVudHJ5LnNpemUsICJ9XG4iKTsKKyAgICB9
Cit9CisKK3ZvaWQgRGVidWdMaW5lSW50ZXJwcmV0ZXI6OnBhcnNlSW5jbHVkZURpcmVjdG9yaWVz
KGNvbnN0IGNoYXIqJiBvZmZzZXQpCit7CisgICAgc2l6ZV90IGxlbmd0aCA9IDA7CisgICAgd2hp
bGUgKChsZW5ndGggPSBzdHJsZW4ob2Zmc2V0KSkpIHsKKyAgICAgICAgbV9wcm9sb2d1ZS5pbmNs
dWRlRGlyZWN0b3JpZXMuYXBwZW5kKG9mZnNldCk7CisgICAgICAgIG9mZnNldCArPSBsZW5ndGgg
KyAxOworICAgIH0KKyAgICAKKyAgICAvLyBFeHRyYSBpbmNyZW1lbnQgdG8gZ2V0IHBhc3QgdGhl
IGxhc3QgbnVsbCBieXRlLgorICAgIG9mZnNldCArPSAxOworfQorCit2b2lkIERlYnVnTGluZUlu
dGVycHJldGVyOjpwYXJzZUZpbGVFbnRyaWVzKGNvbnN0IGNoYXIqJiBvZmZzZXQpCit7CisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgRGVidWdMaW5lSW50ZXJwcmV0ZXI6OkZpbGVFbnRyeSBu
ZXh0RW50cnk7CisgICAgICAgIGlmICghcGFyc2VGaWxlRW50cnkob2Zmc2V0LCBuZXh0RW50cnkp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1fcHJvbG9ndWUuZmlsZUVudHJpZXMuYXBw
ZW5kKG5leHRFbnRyeSk7CisgICAgfQorfQorCitib29sIERlYnVnTGluZUludGVycHJldGVyOjpw
YXJzZUZpbGVFbnRyeShjb25zdCBjaGFyKiYgb2Zmc2V0LCBGaWxlRW50cnkmIGVudHJ5KQorewor
ICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4ob2Zmc2V0KTsKKyAgICBpZiAoIWxlbmd0aCkgewor
ICAgICAgICBvZmZzZXQgKz0gMTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBl
bnRyeS5uYW1lID0gb2Zmc2V0OworICAgIG9mZnNldCArPSBsZW5ndGggKyAxOworICAgIGVudHJ5
LmRpcmVjdG9yeUluZGV4ID0gcGFyc2VVTEVCMTI4KG9mZnNldCk7CisgICAgZW50cnkubGFzdE1v
ZGlmaWVkID0gcGFyc2VVTEVCMTI4KG9mZnNldCk7CisgICAgZW50cnkuc2l6ZSA9IHBhcnNlVUxF
QjEyOChvZmZzZXQpOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERlYnVnTGlu
ZUludGVycHJldGVyOjppbnRlcnByZXRTdGF0ZW1lbnRQcm9ncmFtKCkKK3sKKyAgICBjb25zdCBj
aGFyKiBjdXJyZW50UHJvZ3JhbU9mZnNldCA9IG1fcHJvZ3JhbTsKKyAgICBib29sIGtlZXBHb2lu
ZyA9IHRydWU7CisgICAgZG8geworICAgICAgICBrZWVwR29pbmcgPSBpbnRlcnByZXRPcGNvZGUo
Y3VycmVudFByb2dyYW1PZmZzZXQpOworICAgIH0gd2hpbGUgKGtlZXBHb2luZyk7Cit9CisKK2Jv
b2wgRGVidWdMaW5lSW50ZXJwcmV0ZXI6OmludGVycHJldE9wY29kZShjb25zdCBjaGFyKiYgb2Zm
c2V0KQoreworICAgIHVpbnQ4X3QgbmV4dE9wY29kZSA9IHJlYWQ8dWludDhfdD4ob2Zmc2V0KTsK
KyAgICBzd2l0Y2ggKG5leHRPcGNvZGUpIHsKKyAgICBjYXNlIEV4dGVuZGVkT3Bjb2Rlczogewor
ICAgICAgICB1aW50MzJfdCBsZW5ndGggPSBwYXJzZVVMRUIxMjgob2Zmc2V0KTsKKyAgICAgICAg
aWYgKCFsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3Qg
ZXh0ZW5kZWRPcGNvZGUgPSByZWFkPHVpbnQ4X3Q+KG9mZnNldCk7CisgICAgICAgIHN3aXRjaCAo
ZXh0ZW5kZWRPcGNvZGUpIHsKKyAgICAgICAgY2FzZSBEV19MTkVfZW5kX3NlcXVlbmNlOiB7Cisg
ICAgICAgICAgICBtX2N1cnJlbnRTdGF0ZS5lbmRTZXF1ZW5jZSA9IHRydWU7CisgICAgICAgICAg
ICBtX2xpbmVJbmZvTWF0cml4LmFwcGVuZChtX2N1cnJlbnRTdGF0ZSk7CisgICAgICAgICAgICBy
ZXNldEludGVycHJldGVyU3RhdGUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFdfTE5FX3NldF9hZGRyZXNzOiB7CisgICAgICAgICAgICBtX2N1cnJlbnRT
dGF0ZS5hZGRyZXNzID0gcmVhZDxzaXplX3Q+KG9mZnNldCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERXX0xORV9kZWZpbmVfZmlsZTogeworICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJVbmltcGxlbWVudGVkIGV4dGVuZGVkIG9wY29kZSBEV19MTkVf
ZGVmaW5lX2ZpbGUuXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OiB7Cisg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gZXh0ZW5kZWQgb3Bjb2RlLlxuIik7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ICAgIC8qIFN0YW5kYXJkIG9wY29kZXMgKi8KKyAgICBjYXNlIERXX0xOU19jb3B5OiB7CisgICAg
ICAgIG1fbGluZUluZm9NYXRyaXguYXBwZW5kKG1fY3VycmVudFN0YXRlKTsKKyAgICAgICAgbV9j
dXJyZW50U3RhdGUuaXNCYXNpY0Jsb2NrID0gZmFsc2U7CisgICAgICAgIG1fY3VycmVudFN0YXRl
LnByb2xvZ3VlRW5kID0gZmFsc2U7CisgICAgICAgIG1fY3VycmVudFN0YXRlLmVwaWxvZ3VlQmVn
aW4gPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRFdfTE5TX2FkdmFu
Y2VfcGM6IHsKKyAgICAgICAgdWludDMyX3QgYWR2YW5jZSA9IHBhcnNlVUxFQjEyOChvZmZzZXQp
OworICAgICAgICBtX2N1cnJlbnRTdGF0ZS5hZGRyZXNzICs9IGFkdmFuY2UgKiBtX3Byb2xvZ3Vl
Lm1pbmltdW1JbnN0cnVjdGlvbkxlbmd0aDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgRFdfTE5TX2FkdmFuY2VfbGluZTogeworICAgICAgICBpbnQzMl90IGFkdmFuY2UgPSBwYXJz
ZVNMRUIxMjgob2Zmc2V0KTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUubGluZSArPSBhZHZhbmNl
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBEV19MTlNfc2V0X2ZpbGU6IHsKKyAg
ICAgICAgdWludDMyX3QgZmlsZUluZGV4ID0gcGFyc2VVTEVCMTI4KG9mZnNldCk7CisgICAgICAg
IG1fY3VycmVudFN0YXRlLmZpbGUgPSBmaWxlSW5kZXg7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIERXX0xOU19zZXRfY29sdW1uOiB7CisgICAgICAgIG1fY3VycmVudFN0YXRlLmNv
bHVtbiA9IHBhcnNlVUxFQjEyOChvZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBEV19MTlNfbmVnYXRlX3N0bXQ6IHsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUuaXNTdGF0
ZW1lbnQgPSAhbV9jdXJyZW50U3RhdGUuaXNTdGF0ZW1lbnQ7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIERXX0xOU19zZXRfYmFzaWNfYmxvY2s6IHsKKyAgICAgICAgbV9jdXJyZW50
U3RhdGUuaXNCYXNpY0Jsb2NrID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgRFdfTE5TX2NvbnN0X2FkZF9wYzogeworICAgICAgICB1aW50OF90IGFkanVzdGVkT3Bjb2Rl
ID0gbmV4dE9wY29kZSAtIG1fcHJvbG9ndWUub3Bjb2RlQmFzZTsKKyAgICAgICAgdWludDMyX3Qg
YWRkcmVzc0luY3JlbWVudCA9IChhZGp1c3RlZE9wY29kZSAvIG1fcHJvbG9ndWUubGluZVJhbmdl
KSAqIG1fcHJvbG9ndWUubWluaW11bUluc3RydWN0aW9uTGVuZ3RoOworICAgICAgICBtX2N1cnJl
bnRTdGF0ZS5hZGRyZXNzICs9IGFkZHJlc3NJbmNyZW1lbnQ7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIERXX0xOU19maXhlZF9hZHZhbmNlX3BjOiB7CisgICAgICAgIHVpbnQxNl90
IGFkdmFuY2UgPSByZWFkPHVpbnQxNl90PihvZmZzZXQpOworICAgICAgICBtX2N1cnJlbnRTdGF0
ZS5hZGRyZXNzICs9IGFkdmFuY2U7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERX
X0xOU19zZXRfcHJvbG9ndWVfZW5kOiB7CisgICAgICAgIG1fY3VycmVudFN0YXRlLnByb2xvZ3Vl
RW5kID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRFdfTE5TX3NldF9l
cGlsb2d1ZV9iZWdpbjogeworICAgICAgICBtX2N1cnJlbnRTdGF0ZS5lcGlsb2d1ZUJlZ2luID0g
dHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRFdfTE5TX3NldF9pc2E6IHsK
KyAgICAgICAgbV9jdXJyZW50U3RhdGUuaXNhID0gcGFyc2VVTEVCMTI4KG9mZnNldCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgLyogU3BlY2lhbCBvcGNvZGVzICovCisgICAgZGVm
YXVsdDogeworICAgICAgICB1aW50OF90IGFkanVzdGVkT3Bjb2RlID0gbmV4dE9wY29kZSAtIG1f
cHJvbG9ndWUub3Bjb2RlQmFzZTsKKyAgICAgICAgdWludDMyX3QgYWRkcmVzc0luY3JlbWVudCA9
IChhZGp1c3RlZE9wY29kZSAvIG1fcHJvbG9ndWUubGluZVJhbmdlKSAqIG1fcHJvbG9ndWUubWlu
aW11bUluc3RydWN0aW9uTGVuZ3RoOworICAgICAgICBpbnQzMl90IGxpbmVJbmNyZW1lbnQgPSBt
X3Byb2xvZ3VlLmxpbmVCYXNlICsgKGFkanVzdGVkT3Bjb2RlICUgbV9wcm9sb2d1ZS5saW5lUmFu
Z2UpOworICAgICAgICBtX2N1cnJlbnRTdGF0ZS5hZGRyZXNzICs9IGFkZHJlc3NJbmNyZW1lbnQ7
CisgICAgICAgIG1fY3VycmVudFN0YXRlLmxpbmUgKz0gbGluZUluY3JlbWVudDsKKyAgICAgICAg
bV9saW5lSW5mb01hdHJpeC5hcHBlbmQobV9jdXJyZW50U3RhdGUpOworICAgICAgICBtX2N1cnJl
bnRTdGF0ZS5pc0Jhc2ljQmxvY2sgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUucHJv
bG9ndWVFbmQgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUuZXBpbG9ndWVCZWdpbiA9
IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIERlYnVnTGluZUludGVycHJldGVyOjpwcmludExpbmVJbmZvKCkKK3sKKyAgICBk
YXRhTG9nKCJcbkxpbmUgSW5mbyBNYXRyaXg6XG4iKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9saW5lSW5mb01hdHJpeC5zaXplKCk7ICsraSkKKyAgICAgICAgcHJpbnRMaW5lSW5m
byhtX2xpbmVJbmZvTWF0cml4W2ldKTsKKyAgICBkYXRhTG9nKCJcbiIpOworfQorCit2b2lkIERl
YnVnTGluZUludGVycHJldGVyOjpwcmludExpbmVJbmZvKExpbmVJbmZvJiBpbmZvKQoreworICAg
IGRhdGFMb2dGKCJhZGRyZXNzOiAlcCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGluZm8uYWRk
cmVzcykpOworICAgIGRhdGFMb2coIiAgZmlsZTogIiwgaW5mby5maWxlLCAiICBsaW5lOiAiLCBp
bmZvLmxpbmUsICIgIGNvbHVtbjogIiwgaW5mby5jb2x1bW4sICIgIGlzYTogIiwgaW5mby5pc2Es
ICIgICIpOworICAgIGRhdGFMb2coIiAgc3RhdGVtZW50PzogIiwgaW5mby5pc1N0YXRlbWVudCk7
CisgICAgZGF0YUxvZygiICBiYXNpYyBibG9jaz86ICIsIGluZm8uaXNCYXNpY0Jsb2NrKTsKKyAg
ICBkYXRhTG9nKCIgIGVuZCBzZXF1ZW5jZT86ICIsIGluZm8uZW5kU2VxdWVuY2UpOworICAgIGRh
dGFMb2coIiAgcHJvbG9ndWUgZW5kPzogIiwgaW5mby5wcm9sb2d1ZUVuZCk7CisgICAgZGF0YUxv
ZygiICBlcGlsb2d1ZSBiZWdpbj86ICIsIGluZm8uZXBpbG9ndWVCZWdpbik7CisgICAgZGF0YUxv
ZygiXG4iKTsKK30KKwordm9pZCBEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cmVzZXRJbnRlcnByZXRl
clN0YXRlKCkKK3sKKyAgICBtX2N1cnJlbnRTdGF0ZS5hZGRyZXNzID0gMDsKKyAgICBtX2N1cnJl
bnRTdGF0ZS5maWxlID0gMTsKKyAgICBtX2N1cnJlbnRTdGF0ZS5saW5lID0gMTsKKyAgICBtX2N1
cnJlbnRTdGF0ZS5jb2x1bW4gPSAwOworICAgIG1fY3VycmVudFN0YXRlLmlzYSA9IDA7CisgICAg
bV9jdXJyZW50U3RhdGUuaXNTdGF0ZW1lbnQgPSBmYWxzZTsKKyAgICBtX2N1cnJlbnRTdGF0ZS5p
c0Jhc2ljQmxvY2sgPSBmYWxzZTsKKyAgICBtX2N1cnJlbnRTdGF0ZS5lbmRTZXF1ZW5jZSA9IGZh
bHNlOworICAgIG1fY3VycmVudFN0YXRlLnByb2xvZ3VlRW5kID0gZmFsc2U7CisgICAgbV9jdXJy
ZW50U3RhdGUuZXBpbG9ndWVCZWdpbiA9IGZhbHNlOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERXQVJGRGVidWdMaW5l
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRFdBUkZE
ZWJ1Z0xpbmVJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTERXQVJGRGVidWdMaW5lSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBGVExEV0FSRkRlYnVnTGluZUluZm9faAorI2RlZmluZSBG
VExEV0FSRkRlYnVnTGluZUluZm9faAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZU
TCB7CisKK2NsYXNzIERlYnVnTGluZUludGVycHJldGVyIHsKK3B1YmxpYzoKKyAgICBEZWJ1Z0xp
bmVJbnRlcnByZXRlcihjb25zdCBjaGFyKiBwcm9ncmFtKTsKKworICAgIHZvaWQgcnVuKCk7CisK
K3ByaXZhdGU6CisgICAgc3RydWN0IEZpbGVFbnRyeSB7CisgICAgICAgIFN0cmluZyBuYW1lOwor
ICAgICAgICB1aW50MzJfdCBkaXJlY3RvcnlJbmRleDsKKyAgICAgICAgdWludDMyX3QgbGFzdE1v
ZGlmaWVkOworICAgICAgICB1aW50MzJfdCBzaXplOworICAgIH07CisKKyAgICB2b2lkIHJlc2V0
SW50ZXJwcmV0ZXJTdGF0ZSgpOworICAgIHZvaWQgaW50ZXJwcmV0U3RhdGVtZW50UHJvZ3JhbSgp
OworICAgIGJvb2wgaW50ZXJwcmV0T3Bjb2RlKGNvbnN0IGNoYXIqJik7CisgICAgdm9pZCBwYXJz
ZVByb2xvZ3VlKCk7CisgICAgdm9pZCBwYXJzZUluY2x1ZGVEaXJlY3Rvcmllcyhjb25zdCBjaGFy
KiYpOworICAgIHZvaWQgcGFyc2VGaWxlRW50cmllcyhjb25zdCBjaGFyKiYpOworICAgIGJvb2wg
cGFyc2VGaWxlRW50cnkoY29uc3QgY2hhciomLCBEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6RmlsZUVu
dHJ5Jik7CisgICAgdWludDMyX3QgcGFyc2VVTEVCMTI4KGNvbnN0IGNoYXIqJik7CisgICAgaW50
MzJfdCBwYXJzZVNMRUIxMjgoY29uc3QgY2hhciomKTsKKworICAgIGNvbnN0IGNoYXIqIG1fcHJv
Z3JhbTsKKyAgICBib29sIG1fbG9nUmVzdWx0czsKKworICAgIHN0cnVjdCBMaW5lSW5mbyB7Cisg
ICAgICAgIHNpemVfdCBhZGRyZXNzOworICAgICAgICB1aW50MzJfdCBmaWxlOworICAgICAgICB1
aW50MzJfdCBsaW5lOworICAgICAgICB1aW50MzJfdCBjb2x1bW47CisgICAgICAgIHVpbnQzMl90
IGlzYTsKKyAgICAgICAgYm9vbCBpc1N0YXRlbWVudDsKKyAgICAgICAgYm9vbCBpc0Jhc2ljQmxv
Y2s7CisgICAgICAgIGJvb2wgZW5kU2VxdWVuY2U7CisgICAgICAgIGJvb2wgcHJvbG9ndWVFbmQ7
CisgICAgICAgIGJvb2wgZXBpbG9ndWVCZWdpbjsKKyAgICB9OworICAgIAorICAgIHZvaWQgcHJp
bnRMaW5lSW5mbyhMaW5lSW5mbyYpOworICAgIHZvaWQgcHJpbnRMaW5lSW5mbygpOworCisgICAg
TGluZUluZm8gbV9jdXJyZW50U3RhdGU7CisgICAgVmVjdG9yPExpbmVJbmZvPiBtX2xpbmVJbmZv
TWF0cml4OworCisgICAgZW51bSBEd2FyZkZvcm1hdCB7CisgICAgICAgIFNpeHR5Rm91ckJpdCwK
KyAgICAgICAgVGhpcnR5VHdvQml0CisgICAgfTsKKworICAgIHN0cnVjdCBQcm9sb2d1ZSB7Cisg
ICAgICAgIFByb2xvZ3VlKCkKKyAgICAgICAgICAgIDogdG90YWxMZW5ndGgoMCkKKyAgICAgICAg
ICAgICwgZm9ybWF0KFRoaXJ0eVR3b0JpdCkKKyAgICAgICAgICAgICwgdmVyc2lvbigwKQorICAg
ICAgICAgICAgLCBwcm9sb2d1ZUxlbmd0aCgwKQorICAgICAgICAgICAgLCBtaW5pbXVtSW5zdHJ1
Y3Rpb25MZW5ndGgoMCkKKyAgICAgICAgICAgICwgZGVmYXVsdElzU3RhdGVtZW50KDApCisgICAg
ICAgICAgICAsIGxpbmVCYXNlKDApCisgICAgICAgICAgICAsIGxpbmVSYW5nZSgwKQorICAgICAg
ICAgICAgLCBvcGNvZGVCYXNlKDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHVp
bnQzMl90IHRvdGFsTGVuZ3RoOworICAgICAgICBEd2FyZkZvcm1hdCBmb3JtYXQ7CisgICAgICAg
IHVpbnQxNl90IHZlcnNpb247CisgICAgICAgIHNpemVfdCBwcm9sb2d1ZUxlbmd0aDsKKyAgICAg
ICAgdWludDhfdCBtaW5pbXVtSW5zdHJ1Y3Rpb25MZW5ndGg7CisgICAgICAgIHVpbnQ4X3QgZGVm
YXVsdElzU3RhdGVtZW50OworICAgICAgICBpbnQ4X3QgbGluZUJhc2U7CisgICAgICAgIHVpbnQ4
X3QgbGluZVJhbmdlOworICAgICAgICB1aW50OF90IG9wY29kZUJhc2U7CisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBzdGFuZGFyZE9wY29kZUxlbmd0aHM7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGluY2x1ZGVEaXJlY3RvcmllczsKKyAgICAgICAgVmVjdG9yPEZpbGVFbnRyeT4gZmlsZUVudHJp
ZXM7CisgICAgfSBtX3Byb2xvZ3VlOworCisgICAgZW51bSBFeHRlbmRlZE9wY29kZSB7CisgICAg
ICAgIERXX0xORV9lbmRfc2VxdWVuY2UgPSAweDEsCisgICAgICAgIERXX0xORV9zZXRfYWRkcmVz
cyAgPSAweDIsCisgICAgICAgIERXX0xORV9kZWZpbmVfZmlsZSAgPSAweDMKKyAgICB9OworCisg
ICAgZW51bSBTdGFuZGFyZE9wY29kZSB7CisgICAgICAgIEV4dGVuZGVkT3Bjb2RlcyAgICAgICAg
ICAgICA9IDB4MCwKKyAgICAgICAgRFdfTE5TX2NvcHkgICAgICAgICAgICAgICAgID0gMHgxLAor
ICAgICAgICBEV19MTlNfYWR2YW5jZV9wYyAgICAgICAgICAgPSAweDIsCisgICAgICAgIERXX0xO
U19hZHZhbmNlX2xpbmUgICAgICAgICA9IDB4MywKKyAgICAgICAgRFdfTE5TX3NldF9maWxlICAg
ICAgICAgICAgID0gMHg0LAorICAgICAgICBEV19MTlNfc2V0X2NvbHVtbiAgICAgICAgICAgPSAw
eDUsCisgICAgICAgIERXX0xOU19uZWdhdGVfc3RtdCAgICAgICAgICA9IDB4NiwKKyAgICAgICAg
RFdfTE5TX3NldF9iYXNpY19ibG9jayAgICAgID0gMHg3LAorICAgICAgICBEV19MTlNfY29uc3Rf
YWRkX3BjICAgICAgICAgPSAweDgsCisgICAgICAgIERXX0xOU19maXhlZF9hZHZhbmNlX3BjICAg
ICA9IDB4OSwKKyAgICAgICAgRFdfTE5TX3NldF9wcm9sb2d1ZV9lbmQgICAgID0gMHhhLAorICAg
ICAgICBEV19MTlNfc2V0X2VwaWxvZ3VlX2JlZ2luICAgPSAweGIsCisgICAgICAgIERXX0xOU19z
ZXRfaXNhICAgICAgICAgICAgICA9IDB4YworICAgIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6RlRMCisgICAgCisjZW5kaWYgLy8gRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVSYW5nZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmNwcAkocmV2aXNpb24g
MTYyNDkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0
aW9ucy5oIgogCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKIAogdm9pZCBWYWx1ZVJhbmdlOjpkZWNvcmF0ZUluc3RydWN0aW9uKApAQCAtNDAs
MyArNDIsNCBAQCB2b2lkIFZhbHVlUmFuZ2U6OmRlY29yYXRlSW5zdHJ1Y3Rpb24oCiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpGVEwKIAorI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223128</attachid>
            <date>2014-02-04 10:08:01 -0800</date>
            <delta_ts>2014-02-04 12:37:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127394-20140204100756.patch</filename>
            <type>text/plain</type>
            <size>24480</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzMzg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE0LTAyLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIG5lZWRzIHRvIGJlIGFibGUgdG8gcGFyc2UgRFdBUkYgZGVidWdfbGluZSBp
bmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcz
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiB3
ZSB3YW50IHRvIGVuY29kZSBJUiBtYXBzIGluIHRoZSBEV0FSRiBkZWJ1ZyBsaW5lIGluZm8gbWV0
YWRhdGEgZ2VuZXJhdGVkIGJ5IExMVk0sIAorICAgICAgICB3ZSdsbCBuZWVkIHRvIGtub3cgaG93
IHRvIGRlY29kZSB0aGUgLmRlYnVnX2xpbmUgRFdBUkYgc2VjdGlvbi4gVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIAorICAgICAgICBhbiBpbnRlcnByZXRlciBmb3IgdGhlIC5kZWJ1Z19saW5lIERXQVJG
IHNlY3Rpb24gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB2ZXJzaW9uIDMgc3BlYyAKKyAgICAgICAg
cHVibGlzaGVkIGF0IGh0dHA6Ly93d3cuZHdhcmZzdGQub3JnLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGZ0bC9GVExE
V0FSRkRlYnVnTGluZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xp
bmVJbnRlcnByZXRlcjo6RGVidWdMaW5lSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpGVEw6
OnJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRlYnVnTGluZUludGVycHJldGVyOjpwYXJzZVVM
RUIxMjgpOgorICAgICAgICAoSlNDOjpGVEw6OkRlYnVnTGluZUludGVycHJldGVyOjpwYXJzZVNM
RUIxMjgpOgorICAgICAgICAoSlNDOjpGVEw6OkRlYnVnTGluZUludGVycHJldGVyOjpydW4pOgor
ICAgICAgICAoSlNDOjpGVEw6OkRlYnVnTGluZUludGVycHJldGVyOjpwYXJzZVByb2xvZ3VlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cGFyc2VJbmNsdWRlRGly
ZWN0b3JpZXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRlYnVnTGluZUludGVycHJldGVyOjpwYXJz
ZUZpbGVFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6
cGFyc2VGaWxlRW50cnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRlYnVnTGluZUludGVycHJldGVy
OjppbnRlcnByZXRTdGF0ZW1lbnRQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1Z0xp
bmVJbnRlcnByZXRlcjo6aW50ZXJwcmV0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1
Z0xpbmVJbnRlcnByZXRlcjo6cHJpbnRMaW5lSW5mbyk6CisgICAgICAgIChKU0M6OkZUTDo6RGVi
dWdMaW5lSW50ZXJwcmV0ZXI6OnJlc2V0SW50ZXJwcmV0ZXJTdGF0ZSk6CisgICAgICAgICogZnRs
L0ZUTERXQVJGRGVidWdMaW5lSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpEZWJ1
Z0xpbmVJbnRlcnByZXRlcjo6UHJvbG9ndWU6OlByb2xvZ3VlKToKKwogMjAxNC0wMi0wNCAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEdDIHRpbWVy
IHNob3VsZCBhbHdheXMgZG8gYSBGdWxsQ29sbGVjdGlvbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTYzMzg0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NzcsNiArNjc3LDcgQEAgaWYg
KEVOQUJMRV9GVExfSklUKQogICAgICAgICBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAogICAgICAg
ICBmdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAogICAgICAgICBmdGwvRlRMQ29tcGlsZS5jcHAKKyAg
ICAgICAgZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAKICAgICAgICAgZnRsL0ZUTEV4aXRB
cmd1bWVudC5jcHAKICAgICAgICAgZnRsL0ZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwCiAg
ICAgICAgIGZ0bC9GVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTYzMzg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0
OSw2ICs0NDksOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEV0FSRkRlYnVnTGluZUluZm8u
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5mby5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRBcmd1bWVudC5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjMzODQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzQ3LDYgKzc0Nyw4IEBACiAJCTJBNkY0NjI2MTdFOTU5
Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJBN0E1OEVGMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAv
KiBEZWZlckdDLmNwcCAqLzsgfTsKIAkJMkFBRDk2NEExODU2OTQxNzAwMUY5M0JFIC8qIFJlY3Vy
c2l2ZUFsbG9jYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkFBRDk2NDkxODU2OTQxNzAwMUY5M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRp
b25TY29wZS5oICovOyB9OworCQkyQUM5MjJCQjE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZE
ZWJ1Z0xpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJBQzkyMkI5MThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8u
Y3BwICovOyB9OworCQkyQUM5MjJCQzE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xp
bmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
QUM5MjJCQTE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi87IH07
CiAJCTJBQ0NGM0RFMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFD
Q0YzREMxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAg
Ki87IH07CiAJCTJBQ0NGM0RGMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlz
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBQ0NGM0REMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2Uu
aCAqLzsgfTsKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkz
MjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwpAQCAtMjEz
MSw2ICsyMTMzLDggQEAKIAkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcE9wZXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyog
RGVmZXJHQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlckdD
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBRDk2NDkxODU2OTQxNzAwMUY5
M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkFDOTIyQjkxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5l
SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExEV0FSRkRl
YnVnTGluZUluZm8uY3BwOyBwYXRoID0gZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5mby5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBQzkyMkJBMThBMTYxODIwMDNDRTBGQiAvKiBG
VExEV0FSRkRlYnVnTGluZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmg7IHBhdGggPSBmdGwvRlRMRFdBUkZEZWJ1Z0xpbmVJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQ0NGM0RDMTg1RkUyNkIwMDgzRTJB
RCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcDsgcGF0aCA9
IGRmZy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUNDRjNERDE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxp
c2lvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0b3JlQmFy
cmllckVsaXNpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2Njgy
NzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhlYXBJdGVyYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzA0OCw2ICszMDUyLDggQEAKIAkJMEZFQTA5RkMxNzA1MTM3RjAwQkI3MjJDIC8qIGZ0bCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkFDOTIyQjkxOEEx
NjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAgKi8sCisJCQkJMkFDOTIy
QkExOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5oICovLAogCQkJCTBG
REIyQ0M3MTczREE1MUUwMDdCM0MxQiAvKiBGVExBYmJyZXZpYXRlZFR5cGVzLmggKi8sCiAJCQkJ
MEZFQTA5RkQxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCAqLywKIAkJCQkw
RkVBMEExNzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNwcCAqLywKQEAgLTUy
NjcsNiArNTI3Myw3IEBACiAJCQkJMEZCN0YzOUQxNUVEOEU0NjAwRjE2N0IyIC8qIFJlamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTExN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2gu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNo
QnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUM5MjJCQzE4QTE2MTgyMDAzQ0UwRkIgLyog
RlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVCODE4NUI4
QkQzMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVC
Q0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTYwMzQsNiArNjA0MSw3IEBACiAJCQkJMEYyNEU1NTUxN0YwQjcxQzAwQUJCMjE3IC8q
IElubGluZUNhbGxGcmFtZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzg4NTNGOTE3OTcy
NjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkyQUM5MjJCQjE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1
Z0xpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBQ0NGM0RFMTg1RkUyNkIwMDgzRTJB
RCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyOUQ3RDQwRUQyMTI4MjAwQjg5NjE5IC8qIEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0MjlEOTJGMEVEMjJENzAwMEI4OTYxOSAvKiBKSVQuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5mby5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEV0FSRkRlYnVn
TGluZUluZm8uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExEV0FSRkRlYnVnTGluZUluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZUTERXQVJGRGVi
dWdMaW5lSW5mby5oIgorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBGVEwgeworCitEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6RGVidWdMaW5lSW50
ZXJwcmV0ZXIoY29uc3QgY2hhciogcHJvZ3JhbSkKKyAgICA6IG1fcHJvZ3JhbShwcm9ncmFtKQor
ICAgICwgbV9sb2dSZXN1bHRzKGZhbHNlKQoreworICAgIHJlc2V0SW50ZXJwcmV0ZXJTdGF0ZSgp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQgcmVhZChjb25zdCBjaGFyKiYg
cHJvZ3JhbSkKK3sKKyAgICBUIHJlc3VsdCA9ICooVCopcHJvZ3JhbTsKKyAgICBwcm9ncmFtICs9
IHNpemVvZihUKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit1aW50MzJfdCBEZWJ1Z0xpbmVJ
bnRlcnByZXRlcjo6cGFyc2VVTEVCMTI4KGNvbnN0IGNoYXIqJiBvZmZzZXQpCit7CisgICAgdWlu
dDMyX3QgcmVzdWx0ID0gMDsKKyAgICB1aW50OF90IGJ5dGU7CisgICAgdW5zaWduZWQgc2hpZnRB
bW91bnQgPSAwOworICAgIGRvIHsKKyAgICAgICAgYnl0ZSA9IHJlYWQ8dWludDhfdD4ob2Zmc2V0
KTsKKyAgICAgICAgcmVzdWx0IHw9IChieXRlICYgfjB4ODApIDw8IHNoaWZ0QW1vdW50OworICAg
ICAgICBzaGlmdEFtb3VudCArPSA3OworICAgIH0gd2hpbGUgKGJ5dGUgJiAweDgwKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitpbnQzMl90IERlYnVnTGluZUludGVycHJldGVyOjpwYXJzZVNM
RUIxMjgoY29uc3QgY2hhciomIG9mZnNldCkKK3sKKyAgICBpbnQzMl90IHJlc3VsdCA9IDA7Cisg
ICAgdWludDhfdCBieXRlOworICAgIHVuc2lnbmVkIHNoaWZ0QW1vdW50ID0gMDsKKyAgICBkbyB7
CisgICAgICAgIGJ5dGUgPSByZWFkPHVpbnQ4X3Q+KG9mZnNldCk7CisgICAgICAgIHJlc3VsdCB8
PSAoYnl0ZSAmIH4weDgwKSA8PCBzaGlmdEFtb3VudDsKKyAgICAgICAgc2hpZnRBbW91bnQgKz0g
NzsKKyAgICB9IHdoaWxlIChieXRlICYgMHg4MCk7CisgICAgCisgICAgLy8gSWYgdGhlIHNpZ24g
Yml0IChpbiB0aGlzIGNhc2UsIHRoZSBzZWNvbmQgTVNCKSBvbiB0aGUgbGFzdCBieXRlIGlzIHNl
dCB3ZSBuZWVkIHRvIHplcm8gZXh0ZW5kLgorICAgIGlmIChieXRlICYgMHg0MCkKKyAgICAgICAg
cmVzdWx0IHw9IC0oMSA8PCBzaGlmdEFtb3VudCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCBEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6cnVuKCkKK3sKKyAgICBwYXJzZVByb2xvZ3VlKCk7
CisgICAgaW50ZXJwcmV0U3RhdGVtZW50UHJvZ3JhbSgpOworICAgIGlmIChtX2xvZ1Jlc3VsdHMp
CisgICAgICAgIHByaW50TGluZUluZm8oKTsKK30KKwordm9pZCBEZWJ1Z0xpbmVJbnRlcnByZXRl
cjo6cGFyc2VQcm9sb2d1ZSgpCit7CisgICAgY29uc3QgY2hhciogY3VycmVudFByb2dyYW1PZmZz
ZXQgPSBtX3Byb2dyYW07CisgICAgbV9wcm9sb2d1ZS50b3RhbExlbmd0aCA9IHJlYWQ8dWludDMy
X3Q+KGN1cnJlbnRQcm9ncmFtT2Zmc2V0KTsKKyAgICBpZiAobV9wcm9sb2d1ZS50b3RhbExlbmd0
aCA9PSAweGZmZmZmZmZmKSB7CisgICAgICAgIC8vIFRoaXMgaXMgNjQtYml0IERXQVJGIGZvcm1h
dC4KKyAgICAgICAgbV9wcm9sb2d1ZS5mb3JtYXQgPSBTaXh0eUZvdXJCaXQ7CisgICAgICAgIG1f
cHJvbG9ndWUudG90YWxMZW5ndGggPSByZWFkPHVpbnQ2NF90PihjdXJyZW50UHJvZ3JhbU9mZnNl
dCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcHJvbG9ndWUuZm9ybWF0ID0gVGhpcnR5VHdvQml0
OworICAgIG1fcHJvbG9ndWUudmVyc2lvbiA9IHJlYWQ8dWludDE2X3Q+KGN1cnJlbnRQcm9ncmFt
T2Zmc2V0KTsKKyAgICAKKyAgICBpZiAobV9wcm9sb2d1ZS5mb3JtYXQgPT0gVGhpcnR5VHdvQml0
KQorICAgICAgICBtX3Byb2xvZ3VlLnByb2xvZ3VlTGVuZ3RoID0gcmVhZDx1aW50MzJfdD4oY3Vy
cmVudFByb2dyYW1PZmZzZXQpOworICAgIGVsc2UKKyAgICAgICAgbV9wcm9sb2d1ZS5wcm9sb2d1
ZUxlbmd0aCA9IHJlYWQ8dWludDY0X3Q+KGN1cnJlbnRQcm9ncmFtT2Zmc2V0KTsKKyAgICBjb25z
dCBjaGFyKiBhZnRlckxlbmd0aE9mZnNldCA9IGN1cnJlbnRQcm9ncmFtT2Zmc2V0OworICAgIAor
ICAgIG1fcHJvbG9ndWUubWluaW11bUluc3RydWN0aW9uTGVuZ3RoID0gcmVhZDx1aW50OF90Pihj
dXJyZW50UHJvZ3JhbU9mZnNldCk7CisgICAgbV9wcm9sb2d1ZS5kZWZhdWx0SXNTdGF0ZW1lbnQg
PSByZWFkPHVpbnQ4X3Q+KGN1cnJlbnRQcm9ncmFtT2Zmc2V0KTsKKyAgICBtX3Byb2xvZ3VlLmxp
bmVCYXNlID0gcmVhZDxpbnQ4X3Q+KGN1cnJlbnRQcm9ncmFtT2Zmc2V0KTsKKyAgICBtX3Byb2xv
Z3VlLmxpbmVSYW5nZSA9IHJlYWQ8dWludDhfdD4oY3VycmVudFByb2dyYW1PZmZzZXQpOworICAg
IG1fcHJvbG9ndWUub3Bjb2RlQmFzZSA9IHJlYWQ8dWludDhfdD4oY3VycmVudFByb2dyYW1PZmZz
ZXQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBtX3Byb2xvZ3VlLm9wY29kZUJhc2U7
ICsraSkKKyAgICAgICAgbV9wcm9sb2d1ZS5zdGFuZGFyZE9wY29kZUxlbmd0aHMuYXBwZW5kKHJl
YWQ8dWludDhfdD4oY3VycmVudFByb2dyYW1PZmZzZXQpKTsKKyAgICBwYXJzZUluY2x1ZGVEaXJl
Y3RvcmllcyhjdXJyZW50UHJvZ3JhbU9mZnNldCk7CisgICAgcGFyc2VGaWxlRW50cmllcyhjdXJy
ZW50UHJvZ3JhbU9mZnNldCk7CisgICAgCisgICAgbV9wcm9ncmFtID0gYWZ0ZXJMZW5ndGhPZmZz
ZXQgKyBtX3Byb2xvZ3VlLnByb2xvZ3VlTGVuZ3RoOworCisgICAgaWYgKCFtX2xvZ1Jlc3VsdHMp
CisgICAgICAgIHJldHVybjsKKworICAgIGRhdGFMb2coIlxuUHJvbG9ndWU6XG4iKTsKKyAgICBk
YXRhTG9nKCJ0b3RhbExlbmd0aCA9ICIsIG1fcHJvbG9ndWUudG90YWxMZW5ndGgsICJcbiIpOwor
ICAgIGRhdGFMb2coInZlcnNpb24gPSAiLCBtX3Byb2xvZ3VlLnZlcnNpb24sICJcbiIpOworICAg
IGRhdGFMb2coInByb2xvZ3VlTGVuZ3RoID0gIiwgbV9wcm9sb2d1ZS5wcm9sb2d1ZUxlbmd0aCwg
IlxuIik7CisgICAgZGF0YUxvZygibWluaW11bUluc3RydWN0aW9uTGVuZ3RoID0gIiwgbV9wcm9s
b2d1ZS5taW5pbXVtSW5zdHJ1Y3Rpb25MZW5ndGgsICJcbiIpOworICAgIGRhdGFMb2coImRlZmF1
bHRJc1N0YXRlbWVudCA9ICIsIG1fcHJvbG9ndWUuZGVmYXVsdElzU3RhdGVtZW50LCAiXG4iKTsK
KyAgICBkYXRhTG9nKCJsaW5lQmFzZSA9ICIsIG1fcHJvbG9ndWUubGluZUJhc2UsICJcbiIpOwor
ICAgIGRhdGFMb2coImxpbmVSYW5nZSA9ICIsIG1fcHJvbG9ndWUubGluZVJhbmdlLCAiXG4iKTsK
KyAgICBkYXRhTG9nKCJvcGNvZGVCYXNlID0gIiwgbV9wcm9sb2d1ZS5vcGNvZGVCYXNlLCAiXG4i
KTsKKyAgICAKKyAgICBkYXRhTG9nKCJcblN0YW5kYXJkIE9wY29kZSBMZW5ndGhzOlxuIik7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fcHJvbG9ndWUub3Bjb2RlQmFzZTsgKytpKQor
ICAgICAgICBkYXRhTG9nKCJzdGFuZGFyZE9wY29kZUxlbmd0aHNbIiwgaSAtIDEsICJdID0gIiwg
bV9wcm9sb2d1ZS5zdGFuZGFyZE9wY29kZUxlbmd0aHNbaSAtIDFdLCAiXG4iKTsKKyAgICAKKyAg
ICBkYXRhTG9nKCJcbkluY2x1ZGUgRGlyZWN0b3JpZXM6XG4iKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9wcm9sb2d1ZS5pbmNsdWRlRGlyZWN0b3JpZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIGRhdGFMb2coImluY2x1ZGVEaXJlY3Rvcmllc1siLCBpLCAiXSA9ICIsIG1fcHJvbG9n
dWUuaW5jbHVkZURpcmVjdG9yaWVzW2ldLCAiXG4iKTsKKyAgICAKKyAgICBkYXRhTG9nKCJcbkZp
bGVzOlxuIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvbG9ndWUuZmlsZUVu
dHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRmlsZUVudHJ5JiBlbnRyeSA9IG1fcHJvbG9n
dWUuZmlsZUVudHJpZXNbaV07CisgICAgICAgIGRhdGFMb2coImZpbGVFbnRyaWVzWyIsIGksICJd
ID0ge25hbWU6IFwiIiwgZW50cnkubmFtZSwgIlwiLCBkaXJfaW5kZXg6ICIsIGVudHJ5LmRpcmVj
dG9yeUluZGV4LCAiLCBsYXN0X21vZGlmaWVkOiAiLCBlbnRyeS5sYXN0TW9kaWZpZWQsICIsIHNp
emU6ICIsIGVudHJ5LnNpemUsICJ9XG4iKTsKKyAgICB9Cit9CisKK3ZvaWQgRGVidWdMaW5lSW50
ZXJwcmV0ZXI6OnBhcnNlSW5jbHVkZURpcmVjdG9yaWVzKGNvbnN0IGNoYXIqJiBvZmZzZXQpCit7
CisgICAgc2l6ZV90IGxlbmd0aCA9IDA7CisgICAgd2hpbGUgKChsZW5ndGggPSBzdHJsZW4ob2Zm
c2V0KSkpIHsKKyAgICAgICAgbV9wcm9sb2d1ZS5pbmNsdWRlRGlyZWN0b3JpZXMuYXBwZW5kKG9m
ZnNldCk7CisgICAgICAgIG9mZnNldCArPSBsZW5ndGggKyAxOworICAgIH0KKyAgICAKKyAgICAv
LyBFeHRyYSBpbmNyZW1lbnQgdG8gZ2V0IHBhc3QgdGhlIGxhc3QgbnVsbCBieXRlLgorICAgIG9m
ZnNldCArPSAxOworfQorCit2b2lkIERlYnVnTGluZUludGVycHJldGVyOjpwYXJzZUZpbGVFbnRy
aWVzKGNvbnN0IGNoYXIqJiBvZmZzZXQpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
RGVidWdMaW5lSW50ZXJwcmV0ZXI6OkZpbGVFbnRyeSBuZXh0RW50cnk7CisgICAgICAgIGlmICgh
cGFyc2VGaWxlRW50cnkob2Zmc2V0LCBuZXh0RW50cnkpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIG1fcHJvbG9ndWUuZmlsZUVudHJpZXMuYXBwZW5kKG5leHRFbnRyeSk7CisgICAgfQor
fQorCitib29sIERlYnVnTGluZUludGVycHJldGVyOjpwYXJzZUZpbGVFbnRyeShjb25zdCBjaGFy
KiYgb2Zmc2V0LCBGaWxlRW50cnkmIGVudHJ5KQoreworICAgIHNpemVfdCBsZW5ndGggPSBzdHJs
ZW4ob2Zmc2V0KTsKKyAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICBvZmZzZXQgKz0gMTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBlbnRyeS5uYW1lID0gb2Zmc2V0OworICAg
IG9mZnNldCArPSBsZW5ndGggKyAxOworICAgIGVudHJ5LmRpcmVjdG9yeUluZGV4ID0gcGFyc2VV
TEVCMTI4KG9mZnNldCk7CisgICAgZW50cnkubGFzdE1vZGlmaWVkID0gcGFyc2VVTEVCMTI4KG9m
ZnNldCk7CisgICAgZW50cnkuc2l6ZSA9IHBhcnNlVUxFQjEyOChvZmZzZXQpOworICAgIAorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIERlYnVnTGluZUludGVycHJldGVyOjppbnRlcnByZXRT
dGF0ZW1lbnRQcm9ncmFtKCkKK3sKKyAgICBjb25zdCBjaGFyKiBjdXJyZW50UHJvZ3JhbU9mZnNl
dCA9IG1fcHJvZ3JhbTsKKyAgICBib29sIGtlZXBHb2luZyA9IHRydWU7CisgICAgZG8geworICAg
ICAgICBrZWVwR29pbmcgPSBpbnRlcnByZXRPcGNvZGUoY3VycmVudFByb2dyYW1PZmZzZXQpOwor
ICAgIH0gd2hpbGUgKGtlZXBHb2luZyk7Cit9CisKK2Jvb2wgRGVidWdMaW5lSW50ZXJwcmV0ZXI6
OmludGVycHJldE9wY29kZShjb25zdCBjaGFyKiYgb2Zmc2V0KQoreworICAgIHVpbnQ4X3QgbmV4
dE9wY29kZSA9IHJlYWQ8dWludDhfdD4ob2Zmc2V0KTsKKyAgICBzd2l0Y2ggKG5leHRPcGNvZGUp
IHsKKyAgICBjYXNlIEV4dGVuZGVkT3Bjb2RlczogeworICAgICAgICB1aW50MzJfdCBsZW5ndGgg
PSBwYXJzZVVMRUIxMjgob2Zmc2V0KTsKKyAgICAgICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QgZXh0ZW5kZWRPcGNvZGUgPSByZWFkPHVp
bnQ4X3Q+KG9mZnNldCk7CisgICAgICAgIHN3aXRjaCAoZXh0ZW5kZWRPcGNvZGUpIHsKKyAgICAg
ICAgY2FzZSBEV19MTkVfZW5kX3NlcXVlbmNlOiB7CisgICAgICAgICAgICBtX2N1cnJlbnRTdGF0
ZS5lbmRTZXF1ZW5jZSA9IHRydWU7CisgICAgICAgICAgICBtX2xpbmVJbmZvTWF0cml4LmFwcGVu
ZChtX2N1cnJlbnRTdGF0ZSk7CisgICAgICAgICAgICByZXNldEludGVycHJldGVyU3RhdGUoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFdfTE5FX3NldF9h
ZGRyZXNzOiB7CisgICAgICAgICAgICBtX2N1cnJlbnRTdGF0ZS5hZGRyZXNzID0gcmVhZDxzaXpl
X3Q+KG9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERXX0xORV9kZWZpbmVfZmlsZTogeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmlt
cGxlbWVudGVkIGV4dGVuZGVkIG9wY29kZSBEV19MTkVfZGVmaW5lX2ZpbGUuXG4iKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIlVua25vd24gZXh0ZW5kZWQgb3Bjb2RlLlxuIik7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIC8qIFN0YW5kYXJkIG9wY29kZXMg
Ki8KKyAgICBjYXNlIERXX0xOU19jb3B5OiB7CisgICAgICAgIG1fbGluZUluZm9NYXRyaXguYXBw
ZW5kKG1fY3VycmVudFN0YXRlKTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUuaXNCYXNpY0Jsb2Nr
ID0gZmFsc2U7CisgICAgICAgIG1fY3VycmVudFN0YXRlLnByb2xvZ3VlRW5kID0gZmFsc2U7Cisg
ICAgICAgIG1fY3VycmVudFN0YXRlLmVwaWxvZ3VlQmVnaW4gPSBmYWxzZTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgRFdfTE5TX2FkdmFuY2VfcGM6IHsKKyAgICAgICAgdWludDMy
X3QgYWR2YW5jZSA9IHBhcnNlVUxFQjEyOChvZmZzZXQpOworICAgICAgICBtX2N1cnJlbnRTdGF0
ZS5hZGRyZXNzICs9IGFkdmFuY2UgKiBtX3Byb2xvZ3VlLm1pbmltdW1JbnN0cnVjdGlvbkxlbmd0
aDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRFdfTE5TX2FkdmFuY2VfbGluZTog
eworICAgICAgICBpbnQzMl90IGFkdmFuY2UgPSBwYXJzZVNMRUIxMjgob2Zmc2V0KTsKKyAgICAg
ICAgbV9jdXJyZW50U3RhdGUubGluZSArPSBhZHZhbmNlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBEV19MTlNfc2V0X2ZpbGU6IHsKKyAgICAgICAgdWludDMyX3QgZmlsZUluZGV4
ID0gcGFyc2VVTEVCMTI4KG9mZnNldCk7CisgICAgICAgIG1fY3VycmVudFN0YXRlLmZpbGUgPSBm
aWxlSW5kZXg7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERXX0xOU19zZXRfY29s
dW1uOiB7CisgICAgICAgIG1fY3VycmVudFN0YXRlLmNvbHVtbiA9IHBhcnNlVUxFQjEyOChvZmZz
ZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBEV19MTlNfbmVnYXRlX3N0bXQ6
IHsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUuaXNTdGF0ZW1lbnQgPSAhbV9jdXJyZW50U3RhdGUu
aXNTdGF0ZW1lbnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERXX0xOU19zZXRf
YmFzaWNfYmxvY2s6IHsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUuaXNCYXNpY0Jsb2NrID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRFdfTE5TX2NvbnN0X2FkZF9wYzog
eworICAgICAgICB1aW50OF90IGFkanVzdGVkT3Bjb2RlID0gbmV4dE9wY29kZSAtIG1fcHJvbG9n
dWUub3Bjb2RlQmFzZTsKKyAgICAgICAgdWludDMyX3QgYWRkcmVzc0luY3JlbWVudCA9IChhZGp1
c3RlZE9wY29kZSAvIG1fcHJvbG9ndWUubGluZVJhbmdlKSAqIG1fcHJvbG9ndWUubWluaW11bUlu
c3RydWN0aW9uTGVuZ3RoOworICAgICAgICBtX2N1cnJlbnRTdGF0ZS5hZGRyZXNzICs9IGFkZHJl
c3NJbmNyZW1lbnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERXX0xOU19maXhl
ZF9hZHZhbmNlX3BjOiB7CisgICAgICAgIHVpbnQxNl90IGFkdmFuY2UgPSByZWFkPHVpbnQxNl90
PihvZmZzZXQpOworICAgICAgICBtX2N1cnJlbnRTdGF0ZS5hZGRyZXNzICs9IGFkdmFuY2U7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERXX0xOU19zZXRfcHJvbG9ndWVfZW5kOiB7
CisgICAgICAgIG1fY3VycmVudFN0YXRlLnByb2xvZ3VlRW5kID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgRFdfTE5TX3NldF9lcGlsb2d1ZV9iZWdpbjogeworICAgICAg
ICBtX2N1cnJlbnRTdGF0ZS5lcGlsb2d1ZUJlZ2luID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgRFdfTE5TX3NldF9pc2E6IHsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUu
aXNhID0gcGFyc2VVTEVCMTI4KG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAg
ICAgLyogU3BlY2lhbCBvcGNvZGVzICovCisgICAgZGVmYXVsdDogeworICAgICAgICB1aW50OF90
IGFkanVzdGVkT3Bjb2RlID0gbmV4dE9wY29kZSAtIG1fcHJvbG9ndWUub3Bjb2RlQmFzZTsKKyAg
ICAgICAgdWludDMyX3QgYWRkcmVzc0luY3JlbWVudCA9IChhZGp1c3RlZE9wY29kZSAvIG1fcHJv
bG9ndWUubGluZVJhbmdlKSAqIG1fcHJvbG9ndWUubWluaW11bUluc3RydWN0aW9uTGVuZ3RoOwor
ICAgICAgICBpbnQzMl90IGxpbmVJbmNyZW1lbnQgPSBtX3Byb2xvZ3VlLmxpbmVCYXNlICsgKGFk
anVzdGVkT3Bjb2RlICUgbV9wcm9sb2d1ZS5saW5lUmFuZ2UpOworICAgICAgICBtX2N1cnJlbnRT
dGF0ZS5hZGRyZXNzICs9IGFkZHJlc3NJbmNyZW1lbnQ7CisgICAgICAgIG1fY3VycmVudFN0YXRl
LmxpbmUgKz0gbGluZUluY3JlbWVudDsKKyAgICAgICAgbV9saW5lSW5mb01hdHJpeC5hcHBlbmQo
bV9jdXJyZW50U3RhdGUpOworICAgICAgICBtX2N1cnJlbnRTdGF0ZS5pc0Jhc2ljQmxvY2sgPSBm
YWxzZTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGUucHJvbG9ndWVFbmQgPSBmYWxzZTsKKyAgICAg
ICAgbV9jdXJyZW50U3RhdGUuZXBpbG9ndWVCZWdpbiA9IGZhbHNlOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERlYnVnTGluZUludGVy
cHJldGVyOjpwcmludExpbmVJbmZvKCkKK3sKKyAgICBkYXRhTG9nKCJcbkxpbmUgSW5mbyBNYXRy
aXg6XG4iKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9saW5lSW5mb01hdHJpeC5z
aXplKCk7ICsraSkKKyAgICAgICAgcHJpbnRMaW5lSW5mbyhtX2xpbmVJbmZvTWF0cml4W2ldKTsK
KyAgICBkYXRhTG9nKCJcbiIpOworfQorCit2b2lkIERlYnVnTGluZUludGVycHJldGVyOjpwcmlu
dExpbmVJbmZvKExpbmVJbmZvJiBpbmZvKQoreworICAgIGRhdGFMb2dGKCJhZGRyZXNzOiAlcCIs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGluZm8uYWRkcmVzcykpOworICAgIGRhdGFMb2coIiAg
ZmlsZTogIiwgaW5mby5maWxlLCAiICBsaW5lOiAiLCBpbmZvLmxpbmUsICIgIGNvbHVtbjogIiwg
aW5mby5jb2x1bW4sICIgIGlzYTogIiwgaW5mby5pc2EsICIgICIpOworICAgIGRhdGFMb2coIiAg
c3RhdGVtZW50PzogIiwgaW5mby5pc1N0YXRlbWVudCk7CisgICAgZGF0YUxvZygiICBiYXNpYyBi
bG9jaz86ICIsIGluZm8uaXNCYXNpY0Jsb2NrKTsKKyAgICBkYXRhTG9nKCIgIGVuZCBzZXF1ZW5j
ZT86ICIsIGluZm8uZW5kU2VxdWVuY2UpOworICAgIGRhdGFMb2coIiAgcHJvbG9ndWUgZW5kPzog
IiwgaW5mby5wcm9sb2d1ZUVuZCk7CisgICAgZGF0YUxvZygiICBlcGlsb2d1ZSBiZWdpbj86ICIs
IGluZm8uZXBpbG9ndWVCZWdpbik7CisgICAgZGF0YUxvZygiXG4iKTsKK30KKwordm9pZCBEZWJ1
Z0xpbmVJbnRlcnByZXRlcjo6cmVzZXRJbnRlcnByZXRlclN0YXRlKCkKK3sKKyAgICBtX2N1cnJl
bnRTdGF0ZS5hZGRyZXNzID0gMDsKKyAgICBtX2N1cnJlbnRTdGF0ZS5maWxlID0gMTsKKyAgICBt
X2N1cnJlbnRTdGF0ZS5saW5lID0gMTsKKyAgICBtX2N1cnJlbnRTdGF0ZS5jb2x1bW4gPSAwOwor
ICAgIG1fY3VycmVudFN0YXRlLmlzYSA9IDA7CisgICAgbV9jdXJyZW50U3RhdGUuaXNTdGF0ZW1l
bnQgPSBmYWxzZTsKKyAgICBtX2N1cnJlbnRTdGF0ZS5pc0Jhc2ljQmxvY2sgPSBmYWxzZTsKKyAg
ICBtX2N1cnJlbnRTdGF0ZS5lbmRTZXF1ZW5jZSA9IGZhbHNlOworICAgIG1fY3VycmVudFN0YXRl
LnByb2xvZ3VlRW5kID0gZmFsc2U7CisgICAgbV9jdXJyZW50U3RhdGUuZXBpbG9ndWVCZWdpbiA9
IGZhbHNlOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBG
VExEV0FSRkRlYnVnTGluZUluZm9faAorI2RlZmluZSBGVExEV0FSRkRlYnVnTGluZUluZm9faAor
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CisKK2NsYXNzIERlYnVnTGluZUlu
dGVycHJldGVyIHsKK3B1YmxpYzoKKyAgICBEZWJ1Z0xpbmVJbnRlcnByZXRlcihjb25zdCBjaGFy
KiBwcm9ncmFtKTsKKworICAgIHZvaWQgcnVuKCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IEZp
bGVFbnRyeSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICB1aW50MzJfdCBkaXJlY3Rv
cnlJbmRleDsKKyAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkOworICAgICAgICB1aW50MzJf
dCBzaXplOworICAgIH07CisKKyAgICB2b2lkIHJlc2V0SW50ZXJwcmV0ZXJTdGF0ZSgpOworICAg
IHZvaWQgaW50ZXJwcmV0U3RhdGVtZW50UHJvZ3JhbSgpOworICAgIGJvb2wgaW50ZXJwcmV0T3Bj
b2RlKGNvbnN0IGNoYXIqJik7CisgICAgdm9pZCBwYXJzZVByb2xvZ3VlKCk7CisgICAgdm9pZCBw
YXJzZUluY2x1ZGVEaXJlY3Rvcmllcyhjb25zdCBjaGFyKiYpOworICAgIHZvaWQgcGFyc2VGaWxl
RW50cmllcyhjb25zdCBjaGFyKiYpOworICAgIGJvb2wgcGFyc2VGaWxlRW50cnkoY29uc3QgY2hh
ciomLCBEZWJ1Z0xpbmVJbnRlcnByZXRlcjo6RmlsZUVudHJ5Jik7CisgICAgdWludDMyX3QgcGFy
c2VVTEVCMTI4KGNvbnN0IGNoYXIqJik7CisgICAgaW50MzJfdCBwYXJzZVNMRUIxMjgoY29uc3Qg
Y2hhciomKTsKKworICAgIGNvbnN0IGNoYXIqIG1fcHJvZ3JhbTsKKyAgICBib29sIG1fbG9nUmVz
dWx0czsKKworICAgIHN0cnVjdCBMaW5lSW5mbyB7CisgICAgICAgIHNpemVfdCBhZGRyZXNzOwor
ICAgICAgICB1aW50MzJfdCBmaWxlOworICAgICAgICB1aW50MzJfdCBsaW5lOworICAgICAgICB1
aW50MzJfdCBjb2x1bW47CisgICAgICAgIHVpbnQzMl90IGlzYTsKKyAgICAgICAgYm9vbCBpc1N0
YXRlbWVudDsKKyAgICAgICAgYm9vbCBpc0Jhc2ljQmxvY2s7CisgICAgICAgIGJvb2wgZW5kU2Vx
dWVuY2U7CisgICAgICAgIGJvb2wgcHJvbG9ndWVFbmQ7CisgICAgICAgIGJvb2wgZXBpbG9ndWVC
ZWdpbjsKKyAgICB9OworICAgIAorICAgIHZvaWQgcHJpbnRMaW5lSW5mbyhMaW5lSW5mbyYpOwor
ICAgIHZvaWQgcHJpbnRMaW5lSW5mbygpOworCisgICAgTGluZUluZm8gbV9jdXJyZW50U3RhdGU7
CisgICAgVmVjdG9yPExpbmVJbmZvPiBtX2xpbmVJbmZvTWF0cml4OworCisgICAgZW51bSBEd2Fy
ZkZvcm1hdCB7CisgICAgICAgIFNpeHR5Rm91ckJpdCwKKyAgICAgICAgVGhpcnR5VHdvQml0Cisg
ICAgfTsKKworICAgIHN0cnVjdCBQcm9sb2d1ZSB7CisgICAgICAgIFByb2xvZ3VlKCkKKyAgICAg
ICAgICAgIDogdG90YWxMZW5ndGgoMCkKKyAgICAgICAgICAgICwgZm9ybWF0KFRoaXJ0eVR3b0Jp
dCkKKyAgICAgICAgICAgICwgdmVyc2lvbigwKQorICAgICAgICAgICAgLCBwcm9sb2d1ZUxlbmd0
aCgwKQorICAgICAgICAgICAgLCBtaW5pbXVtSW5zdHJ1Y3Rpb25MZW5ndGgoMCkKKyAgICAgICAg
ICAgICwgZGVmYXVsdElzU3RhdGVtZW50KDApCisgICAgICAgICAgICAsIGxpbmVCYXNlKDApCisg
ICAgICAgICAgICAsIGxpbmVSYW5nZSgwKQorICAgICAgICAgICAgLCBvcGNvZGVCYXNlKDApCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHRvdGFsTGVuZ3RoOworICAg
ICAgICBEd2FyZkZvcm1hdCBmb3JtYXQ7CisgICAgICAgIHVpbnQxNl90IHZlcnNpb247CisgICAg
ICAgIHNpemVfdCBwcm9sb2d1ZUxlbmd0aDsKKyAgICAgICAgdWludDhfdCBtaW5pbXVtSW5zdHJ1
Y3Rpb25MZW5ndGg7CisgICAgICAgIHVpbnQ4X3QgZGVmYXVsdElzU3RhdGVtZW50OworICAgICAg
ICBpbnQ4X3QgbGluZUJhc2U7CisgICAgICAgIHVpbnQ4X3QgbGluZVJhbmdlOworICAgICAgICB1
aW50OF90IG9wY29kZUJhc2U7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzdGFuZGFyZE9wY29k
ZUxlbmd0aHM7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGluY2x1ZGVEaXJlY3RvcmllczsKKyAg
ICAgICAgVmVjdG9yPEZpbGVFbnRyeT4gZmlsZUVudHJpZXM7CisgICAgfSBtX3Byb2xvZ3VlOwor
CisgICAgZW51bSBFeHRlbmRlZE9wY29kZSB7CisgICAgICAgIERXX0xORV9lbmRfc2VxdWVuY2Ug
PSAweDEsCisgICAgICAgIERXX0xORV9zZXRfYWRkcmVzcyAgPSAweDIsCisgICAgICAgIERXX0xO
RV9kZWZpbmVfZmlsZSAgPSAweDMKKyAgICB9OworCisgICAgZW51bSBTdGFuZGFyZE9wY29kZSB7
CisgICAgICAgIEV4dGVuZGVkT3Bjb2RlcyAgICAgICAgICAgICA9IDB4MCwKKyAgICAgICAgRFdf
TE5TX2NvcHkgICAgICAgICAgICAgICAgID0gMHgxLAorICAgICAgICBEV19MTlNfYWR2YW5jZV9w
YyAgICAgICAgICAgPSAweDIsCisgICAgICAgIERXX0xOU19hZHZhbmNlX2xpbmUgICAgICAgICA9
IDB4MywKKyAgICAgICAgRFdfTE5TX3NldF9maWxlICAgICAgICAgICAgID0gMHg0LAorICAgICAg
ICBEV19MTlNfc2V0X2NvbHVtbiAgICAgICAgICAgPSAweDUsCisgICAgICAgIERXX0xOU19uZWdh
dGVfc3RtdCAgICAgICAgICA9IDB4NiwKKyAgICAgICAgRFdfTE5TX3NldF9iYXNpY19ibG9jayAg
ICAgID0gMHg3LAorICAgICAgICBEV19MTlNfY29uc3RfYWRkX3BjICAgICAgICAgPSAweDgsCisg
ICAgICAgIERXX0xOU19maXhlZF9hZHZhbmNlX3BjICAgICA9IDB4OSwKKyAgICAgICAgRFdfTE5T
X3NldF9wcm9sb2d1ZV9lbmQgICAgID0gMHhhLAorICAgICAgICBEV19MTlNfc2V0X2VwaWxvZ3Vl
X2JlZ2luICAgPSAweGIsCisgICAgICAgIERXX0xOU19zZXRfaXNhICAgICAgICAgICAgICA9IDB4
YworICAgIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCisgICAgCisjZW5kaWYg
Ly8gRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvX2gK
</data>
<flag name="review"
          id="247146"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>