<?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>150746</bug_id>
          
          <creation_ts>2015-10-30 18:38:39 -0700</creation_ts>
          <short_desc>Air should eliminate dead code</short_desc>
          <delta_ts>2015-10-31 16:15:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>150456</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138084</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-30 18:38:39 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138085</commentid>
    <comment_count>1</comment_count>
      <attachid>264456</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-30 18:43:59 -0700</bug_when>
    <thetext>Created attachment 264456
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138086</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-30 18:45:53 -0700</bug_when>
    <thetext>Attachment 264456 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp:83:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/air/AirEliminateDeadCode.cpp:100:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138162</commentid>
    <comment_count>3</comment_count>
      <attachid>264456</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-31 10:10:53 -0700</bug_when>
    <thetext>Comment on attachment 264456
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138163</commentid>
    <comment_count>4</comment_count>
      <attachid>264456</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-31 10:12:51 -0700</bug_when>
    <thetext>Comment on attachment 264456
the patch

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

&gt; Source/JavaScriptCore/b3/air/AirEliminateDeadCode.h:36
&gt; +// This allocates StackSlots to places on the stack. It first allocates the pinned ones in index
&gt; +// order and then it allocates the rest using first fit.

Comment is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138175</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-31 11:07:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 264456 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264456&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/air/AirEliminateDeadCode.h:36
&gt; &gt; +// This allocates StackSlots to places on the stack. It first allocates the pinned ones in index
&gt; &gt; +// order and then it allocates the rest using first fit.
&gt; 
&gt; Comment is wrong.

Ooops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138230</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-10-31 16:15:42 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/191846</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264456</attachid>
            <date>2015-10-30 18:43:59 -0700</date>
            <delta_ts>2015-10-31 10:10:53 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22901</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxODM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE1LTEwLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyIHNob3VsZCBlbGltaW5hdGUgZGVhZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSB2ZXJ5IHNpbXBsZSBkZWFkIGNvZGUg
ZWxpbWluYXRpb24gdG8gQWlyLiBJdCBzaW1wbHkgbG9va3MgYXQgd2hldGhlciBhIFRtcCBvcgor
ICAgICAgICBTdGFja1Nsb3QgaGFzIGV2ZXIgYmVlbiB1c2VkIGJ5IGEgbGl2ZSBpbnN0cnVjdGlv
bi4gQW4gaW5zdHJ1Y3Rpb24gaXMgbGl2ZSBpZiBpdCBoYXMgbm9uLWFyZworICAgICAgICBlZmZl
Y3RzIChicmFuY2hpbmcsIHJldHVybmluZywgY2FsbGluZywgZXRjKSBvciBpZiBpdCBzdG9yZXMg
dG8gYSBsaXZlIEFyZy4gQW4gQXJnIGlzIGxpdmUgaWYKKyAgICAgICAgaXQgcmVmZXJlbmNlcyBh
IGxpdmUgVG1wIG9yIFN0YWNrU2xvdCwgb3IgaWYgaXQgaXMgbmVpdGhlciBhIFRtcCBub3IgYSBT
dGFja1Nsb3QuIFRoZSBwaGFzZQorICAgICAgICBydW5zIHRoZXNlIHJ1bGVzIHRvIGZpeHBvaW50
LCBhbmQgdGhlbiByZW1vdmVzIHRoZSBkZWFkIGluc3RydWN0aW9ucy4KKworICAgICAgICBUaGlz
IGFsc28gY2hhbmdlcyB0aGUgQWlyT3Bjb2RlcyBwYXJzZXIgdG8gaGFuZGxlIG11bHRpcGxlIGF0
dHJpYnV0ZXMgcGVyIG9wY29kZSwgc28gdGhhdCB3ZQorICAgICAgICBjb3VsZCBjb25jZWl2YWJs
eSBzYXkgdGhpbmdzIGxpa2UgIkZvb0JhciAvYnJhbmNoIC9lZmZlY3RzIi4gSXQgYWxzbyBhZGRz
IHRoZSAvZWZmZWN0cworICAgICAgICBhdHRyaWJ1dGUsIHdoaWNoIHdlIGN1cnJlbnRseSB1c2Ug
Zm9yIEJyZWFrcG9pbnQgYW5kIG5vdGhpbmcgZWxzZS4gQyBjYWxscywgcGF0Y2hwb2ludHMsIGFu
ZAorICAgICAgICBjaGVja3MgYXJlIGFsbCBTcGVjaWFscywgYW5kIHRoZSBTcGVjaWFsIGJhc2Ug
Y2xhc3MgYnkgZGVmYXVsdCBhbHdheXMgY2xhaW1zIHRoYXQgdGhlCisgICAgICAgIGluc3RydWN0
aW9uIGhhcyBlZmZlY3RzLiBJbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBoYXZlIEIzIHVzZSBhIFBh
dGNoIGluIEFpciB0byBpbXBsZW1lbnQKKyAgICAgICAgZXhvdGljIG1hdGggY29uc3RydWN0czsg
dGhlbiB0aGUgU3BlY2lhbCBhc3NvY2lhdGVkIHdpdGggdGhhdCB0aGluZyB3b3VsZCBjbGFpbSB0
aGF0IHRoZXJlCisgICAgICAgIGFyZSBubyBlZmZlY3RzLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9haXIvQWlyQmFz
aWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpiZWdpbik6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OkJhc2ljQmxvY2s6OmVuZCk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkJhc2ljQmxvY2s6OmF0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QmFzaWNCbG9j
azo6bGFzdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkJhc2ljQmxvY2s6OnJlc2l6ZSk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OkJhc2ljQmxvY2s6OmFwcGVuZEluc3QpOgorICAgICAgICAq
IGIzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjplbGltaW5hdGVEZWFkQ29kZSk6CisgICAgICAgICogYjMvYWlyL0FpckVsaW1pbmF0
ZURlYWRDb2RlLmg6IEFkZGVkLgorICAgICAgICAqIGIzL2Fpci9BaXJHZW5lcmF0ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy9haXIvQWlySW5z
dC5oOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy9h
aXIvQWlyU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlNwZWNpYWw6Om5hbWUp
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpTcGVjaWFsOjpoYXNOb25BcmdOb25Db250cm9sRWZm
ZWN0cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlNwZWNpYWw6OmR1bXApOgorICAgICAgICAq
IGIzL2Fpci9BaXJTcGVjaWFsLmg6CisgICAgICAgICogYjMvYWlyL29wY29kZV9nZW5lcmF0b3Iu
cmI6CisKIDIwMTUtMTAtMzAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZm9yZ290IHRvIG1hcmsgdGVzdHMgYXMgcGFzc2luZyBm
b3IgbmV3IGZlYXR1cmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTkxODI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMxMSw2ICszMTEsOCBAQAog
CQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAx
MzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3Jt
YXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2
QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8q
IExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDU3MDM4
MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2
MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovOyB9OworCQkwRjQ1NzAzOTFCRTQ0Qzkx
MDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJF
bGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1
NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5jcHAgKi87IH07CiAJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjMyNiw2ICsyMzI4LDgg
QEAKIAkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlz
dGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxl
SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ1NzAzNjFCRTQ0Qzkx
MDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOyBwYXRoID0gYjMvYWly
L0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NTcwMzcxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmg7IHBhdGgg
PSBiMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NzksNiArNDQ4Myw4IEBACiAJ
CQkJMEZFQzg1NEYxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5oICovLAogCQkJ
CTBGRUM4NTUwMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmNwcCAqLywKIAkJCQkwRkVDODU1
MTFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5oICovLAorCQkJCTBGNDU3MDM2MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCisJCQkJMEY0NTcwMzcxQkU0
NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCiAJCQkJMEZFQzg1NTIx
QkRBQ0RDNzAwODBGRjc0IC8qIEFpckZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NTUz
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg1NTQxQkRB
Q0RDNzAwODBGRjc0IC8qIEFpckdlbmVyYXRlLmggKi8sCkBAIC03NTM1LDYgKzc1NDEsNyBAQAog
CQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTk2QjczMjYxQkRBMDhFRjAwMzMxQjg0IC8qIFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDJFNTExQjc5NkVDRTAwRjRC
RjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBkYXRlQ29u
dGVudHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyog
VmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTgyNzQsNiArODI4MSw3IEBACiAJCQkJ
MEZEOEEzMjUxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5NzkxMTQ2QTZGNzEwMENGMjQ0MiAvKiBERkdP
U1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVCMTcxNzhFNzMwMDY5MEM3RiAv
KiBERkdPU1JFeGl0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ1NzAzODFCRTQ0Qzkx
MDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZDMDk3OTIxNDZBNkY3MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBp
bGVyMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzIxNDY5M0FGOTAwQ0YyNDQy
IC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE5MTgy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NywxMiArNTcsMTQgQEAgcHVibGljOgogICAgIEluc3RMaXN0Ojpjb25z
dF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHMuYmVnaW4oKTsgfQogICAg
IEluc3RMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2luc3RzLmVu
ZCgpOyB9CiAKLSAgICBjb25zdCBJbnN0JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IG1faW5zdHNbaW5kZXhdOyB9Ci0gICAgSW5zdCYgYXQoc2l6ZV90IGluZGV4KSB7IHJldHVybiBt
X2luc3RzW2luZGV4XTsgfQorICAgIGNvbnN0IEluc3QmIGF0KHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2luc3RzW2luZGV4XTsgfQorICAgIEluc3QmIGF0KHVuc2lnbmVkIGluZGV4
KSB7IHJldHVybiBtX2luc3RzW2luZGV4XTsgfQogCiAgICAgY29uc3QgSW5zdCYgbGFzdCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zdHMubGFzdCgpOyB9CiAgICAgSW5zdCYgbGFzdCgpIHsgcmV0dXJu
IG1faW5zdHMubGFzdCgpOyB9CiAKKyAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBzaXplKSB7IG1f
aW5zdHMucmVzaXplKHNpemUpOyB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0PgogICAg
IHZvaWQgYXBwZW5kSW5zdChJbnN0JiYgaW5zdCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVh
ZENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBaXJFbGltaW5hdGVEZWFkQ29kZS5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwor
I2luY2x1ZGUgIkFpckNvZGUuaCIKKyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorI2luY2x1
ZGUgIkFpclBoYXNlU2NvcGUuaCIKKyNpbmNsdWRlICJCM0luZGV4U2V0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworYm9vbCBlbGltaW5hdGVE
ZWFkQ29kZShDb2RlJiBjb2RlKQoreworICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShjb2RlLCAi
ZWxpbWluYXRlRGVhZENvZGUiKTsKKworICAgIEhhc2hTZXQ8VG1wPiBsaXZlVG1wczsKKyAgICBJ
bmRleFNldDxTdGFja1Nsb3Q+IGxpdmVTdGFja1Nsb3RzOworICAgIGJvb2wgY2hhbmdlZDsKKwor
ICAgIGF1dG8gaXNBcmdMaXZlID0gWyZdIChjb25zdCBBcmcmIGFyZykgLT4gYm9vbCB7CisgICAg
ICAgIHN3aXRjaCAoYXJnLmtpbmQoKSkgeworICAgICAgICBjYXNlIEFyZzo6VG1wOgorICAgICAg
ICAgICAgaWYgKGFyZy5pc1JlZygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgcmV0dXJuIGxpdmVUbXBzLmNvbnRhaW5zKGFyZy50bXAoKSk7CisgICAgICAgIGNh
c2UgQXJnOjpTdGFjazoKKyAgICAgICAgICAgIGlmIChhcmcuc3RhY2tTbG90KCktPmlzTG9ja2Vk
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gbGl2
ZVN0YWNrU2xvdHMuY29udGFpbnMoYXJnLnN0YWNrU2xvdCgpKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfTsKKworICAgIGF1dG8g
YWRkTGl2ZUFyZyA9IFsmXSAoY29uc3QgQXJnJiBhcmcpIC0+IGJvb2wgeworICAgICAgICBzd2l0
Y2ggKGFyZy5raW5kKCkpIHsKKyAgICAgICAgY2FzZSBBcmc6OlRtcDoKKyAgICAgICAgICAgIGlm
IChhcmcuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm4gbGl2ZVRtcHMuYWRkKGFyZy50bXAoKSkuaXNOZXdFbnRyeTsKKyAgICAgICAgY2Fz
ZSBBcmc6OlN0YWNrOgorICAgICAgICAgICAgaWYgKGFyZy5zdGFja1Nsb3QoKS0+aXNMb2NrZWQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gbGl2
ZVN0YWNrU2xvdHMuYWRkKGFyZy5zdGFja1Nsb3QoKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBpc0lu
c3RMaXZlID0gWyZdIChJbnN0JiBpbnN0KSAtPiBib29sIHsKKyAgICAgICAgaWYgKGluc3QuaGFz
Tm9uQXJnRWZmZWN0cygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8g
VGhpcyBpbnN0cnVjdGlvbiBzaG91bGQgYmUgcHJlc3VtZWQgZGVhZCwgaWYgaXRzIEFyZ3MgYXJl
IGFsbCBkZWFkLgorICAgICAgICBib29sIHN0b3Jlc1RvTGl2ZSA9IGZhbHNlOworICAgICAgICBp
bnN0LmZvckVhY2hBcmcoCisgICAgICAgICAgICBbJl0gKEFyZyYgYXJnLCBBcmc6OlJvbGUgcm9s
ZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzRGVmKHJvbGUpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc3RvcmVzVG9MaXZl
IHw9IGlzQXJnTGl2ZShhcmcpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBzdG9y
ZXNUb0xpdmU7CisgICAgfTsKKworICAgIGF1dG8gaGFuZGxlSW5zdCA9IFsmXSAoSW5zdCYgaW5z
dCkgeworICAgICAgICBpZiAoIWlzSW5zdExpdmUoaW5zdCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgdGhlIEluc3QgaXMgbGl2ZS4gRm9yIHNpbXBs
aWNpdHkgd2Ugc2F5IHRoYXQgYSBsaXZlIGluc3RydWN0aW9uIGZvcmNlcworICAgICAgICAvLyBs
aXZlbmVzcyB1cG9uIGV2ZXJ5dGhpbmcgaXQgbWVudGlvbnMuCisgICAgICAgIGZvciAoQXJnJiBh
cmcgOiBpbnN0LmFyZ3MpIHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gYWRkTGl2ZUFyZyhhcmcp
OworICAgICAgICAgICAgYXJnLmZvckVhY2hUbXBGYXN0KAorICAgICAgICAgICAgICAgIFsmXSAo
VG1wJiB0bXApIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBhZGRMaXZlQXJnKHRt
cCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBy
dW5Gb3J3YXJkID0gWyZdICgpIC0+IGJvb2wgeworICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Cisg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7CisgICAgICAgICAgICBmb3Ig
KEluc3QmIGluc3QgOiAqYmxvY2spCisgICAgICAgICAgICAgICAgaGFuZGxlSW5zdChpbnN0KTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9OworCisgICAgYXV0byBy
dW5CYWNrd2FyZCA9IFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGJsb2NrSW5kZXggPSBjb2RlLnNpemUoKTsgYmxvY2tJbmRl
eC0tOykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBjb2RlW2Jsb2NrSW5kZXhd
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBp
bnN0SW5kZXgtLTspCisgICAgICAgICAgICAgICAgaGFuZGxlSW5zdChibG9jay0+YXQoaW5zdElu
ZGV4KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfTsKKworICAg
IGZvciAoOzspIHsKKyAgICAgICAgLy8gUHJvcGFnYXRpbmcgYmFja3dhcmQgaXMgbW9zdCBsaWtl
bHkgdG8gYmUgcHJvZml0YWJsZS4KKyAgICAgICAgaWYgKCFydW5CYWNrd2FyZCgpKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGlmICghcnVuQmFja3dhcmQoKSkKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIC8vIE9jY2FzaW9uYWxseSBwcm9wYWdhdGluZyBmb3J3YXJkIGdyZWF0
bHkgcmVkdWNlcyB0aGUgbGlrZWxpaG9vZCBvZiBwYXRob2xvZ2llcy4KKyAgICAgICAgaWYgKCFy
dW5Gb3J3YXJkKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjaGFuZ2VkID0g
ZmFsc2U7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgdW5z
aWduZWQgc291cmNlSW5kZXggPSAwOworICAgICAgICB1bnNpZ25lZCB0YXJnZXRJbmRleCA9IDA7
CisgICAgICAgIHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkpIHsKKyAgICAgICAg
ICAgIEluc3QgaW5zdCA9IFdURjo6bW92ZShibG9jay0+YXQoc291cmNlSW5kZXgrKykpOworICAg
ICAgICAgICAgaWYgKGlzSW5zdExpdmUoaW5zdCkpCisgICAgICAgICAgICAgICAgYmxvY2stPmF0
KHRhcmdldEluZGV4KyspID0gV1RGOjptb3ZlKGluc3QpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJsb2NrLT5y
ZXNpemUodGFyZ2V0SW5kZXgpOworICAgIH0KKworICAgIHJldHVybiBjaGFuZ2VkOworfQorCit9
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRD
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGlt
aW5hdGVEZWFkQ29kZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBBaXJFbGltaW5hdGVEZWFkQ29kZV9oCisjZGVmaW5lIEFpckVsaW1pbmF0ZURlYWRDb2RlX2gK
KworI2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKKworY2xhc3MgQ29kZTsKKworLy8gVGhpcyBhbGxvY2F0ZXMgU3RhY2tT
bG90cyB0byBwbGFjZXMgb24gdGhlIHN0YWNrLiBJdCBmaXJzdCBhbGxvY2F0ZXMgdGhlIHBpbm5l
ZCBvbmVzIGluIGluZGV4CisvLyBvcmRlciBhbmQgdGhlbiBpdCBhbGxvY2F0ZXMgdGhlIHJlc3Qg
dXNpbmcgZmlyc3QgZml0LgorCitib29sIGVsaW1pbmF0ZURlYWRDb2RlKENvZGUmKTsKKworfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
KworI2VuZGlmIC8vIEFpckVsaW1pbmF0ZURlYWRDb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDE5MTgyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBaXJBbGxvY2F0ZVN0YWNrLmgiCiAj
aW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgIkFpckVsaW1pbmF0ZURlYWRDb2RlLmgiCiAj
aW5jbHVkZSAiQWlyR2VuZXJhdGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJBaXJIYW5kbGVDYWxs
ZWVTYXZlcy5oIgogI2luY2x1ZGUgIkFpclNwaWxsRXZlcnl0aGluZy5oIgpAQCAtNTcsNiArNTgs
OCBAQCB2b2lkIGdlbmVyYXRlKENvZGUmIGNvZGUsIENDYWxsSGVscGVycyYgCiAgICAgLy8gVGhp
cyBpcyB3aGVyZSB3ZSBydW4gb3VyIG9wdGltaXphdGlvbnMgYW5kIHRyYW5zZm9ybWF0aW9ucy4K
ICAgICAvLyBGSVhNRTogQWRkIEFpciBvcHRpbWl6YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0NTYKKyAgICAKKyAgICBlbGltaW5hdGVE
ZWFkQ29kZShjb2RlKTsKIAogICAgIC8vIFRoaXMgaXMgd2hlcmUgd2Ugd291bGQgaGF2ZSBhIHJl
YWwgcmVnaXN0ZXIgYWxsb2NhdG9yLiBUaGVuLCB3ZSBjb3VsZCB1c2Ugc3BpbGxFdmVyeXRoaW5n
KCkKICAgICAvLyBpbiBwbGFjZSBvZiB0aGUgcmVnaXN0ZXIgYWxsb2NhdG9yIG9ubHkgZm9yIHRl
c3RpbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAkocmV2aXNp
b24gMTkxODI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsMTQgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gaXMgYXV0by1nZW5lcmF0ZWQgYnkgb3Bjb2RlX2dlbmVyYXRvci5yYi4KICAgICBib29s
IGFkbWl0c1N0YWNrKHVuc2lnbmVkIGFyZ0luZGV4KTsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGlzIGluc3RydWN0aW9uIGNhbiBoYXZlIGFueSBlZmZlY3RzIG90aGVyIHRoYW4gY29udHJv
bCBmbG93IG9yIGFyZ3VtZW50cy4KKyAgICBib29sIGhhc05vbkFyZ05vbkNvbnRyb2xFZmZlY3Rz
KCk7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBpbnN0cnVjdGlvbiBjYW4gaGF2ZSBh
bnkgZWZmZWN0cyBvdGhlciB0aGFuIHdoYXQgaXMgaW1wbGllZCBieSBhcmd1bWVudHMuCisgICAg
Ly8gRm9yIGV4YW1wbGUsICJNb3ZlICQ0MiwgKCVyYXgpIiB3aWxsIHJldHVybiBmYWxzZSBiZWNh
dXNlIHRoZSBlZmZlY3Qgb2Ygc3RvcmluZyB0byAoJXJheCkgaXMKKyAgICAvLyBpbXBsaWVkIGJ5
IHRoZSBzZWNvbmQgYXJndW1lbnQuCisgICAgYm9vbCBoYXNOb25BcmdFZmZlY3RzKCk7CisKICAg
ICAvLyBHZW5lcmF0ZSBzb21lIGNvZGUgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMsIGxp
a2UsIGxpdGVyYWxseSBvdXIgYmFja2VuZC4gSWYgdGhpcyBpcyB0aGUKICAgICAvLyB0ZXJtaW5h
bCwgaXQgcmV0dXJucyB0aGUganVtcCB0aGF0IG5lZWRzIHRvIGJlIGxpbmtlZCBmb3IgdGhlICJ0
aGVuIiBjYXNlLCB3aXRoIHRoZSAiZWxzZSIKICAgICAvLyBjYXNlIGJlaW5nIGZhbGwtdGhyb3Vn
aC4gVGhpcyBmdW5jdGlvbiBpcyBhdXRvLWdlbmVyYXRlZCBieSBvcGNvZGVfZ2VuZXJhdG9yLnJi
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCShyZXZpc2lvbiAxOTE4MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDggQEAgTW92ZTMy
IFU6RywgRDpHCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkMzIKICAgICBUbXAsIEFkZHIgYXMgc3Rv
cmUzMgogICAgIFRtcCwgSW5kZXggYXMgc3RvcmUzMgorICAgIEltbSwgQWRkciBhcyBzdG9yZTMy
CisgICAgSW1tLCBJbmRleCBhcyBzdG9yZTMyCiAKIE1vdmVEb3VibGUgVTpGLCBEOkYKICAgICBU
bXAsIFRtcApAQCAtMTc1LDcgKzE3Nyw3IEBAIEp1bXAgL2JyYW5jaAogCiBSZXQgL3Rlcm1pbmFs
CiAKLUJyZWFrcG9pbnQgL3Rlcm1pbmFsCitCcmVha3BvaW50IC9lZmZlY3RzCiAKICMgQWlyIGFs
bG93cyBmb3IgZXhvdGljIGJlaGF2aW9yLiBBIFBhdGNoJ3MgYmVoYXZpb3IgaXMgZGV0ZXJtaW5l
ZCBlbnRpcmVseSBieSB0aGUgU3BlY2lhbCBvcGVyYW5kLAogIyB3aGljaCBtdXN0IGJlIHRoZSBm
aXJzdCBvcGVyYW5kLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVj
aWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNw
ZWNpYWwuY3BwCShyZXZpc2lvbiAxOTE4MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclNwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMSBAQCBDU3Ry
aW5nIFNwZWNpYWw6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CiB9
CiAKK2Jvb2wgU3BlY2lhbDo6aGFzTm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKQoreworICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIFNwZWNpYWw6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIHsKICAgICBvdXQucHJpbnQoZHVtcFByZWZpeCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAkocmV2aXNpb24gMTkxODI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYg
KzgyLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBSZWdpc3RlclNldCYgZXh0cmFD
bG9iYmVyZWRSZWdzKEluc3QmKSA9IDA7CiAKKyAgICAvLyBCeSBkZWZhdWx0LCB0aGlzIHJldHVy
bnMgdHJ1ZS4KKyAgICB2aXJ0dWFsIGJvb2wgaGFzTm9uQXJnTm9uQ29udHJvbEVmZmVjdHMoKTsK
KwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZGVlcER1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9vcGNvZGVfZ2VuZXJhdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkocmV2aXNpb24gMTkxODI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMiArMjcsMTIgQEAgcmVxdWlyZSAicGF0aG5hbWUiCiAKIGNsYXNzIE9wY29kZQog
ICAgIGF0dHJfcmVhZGVyIDpuYW1lLCA6c3BlY2lhbCwgOm92ZXJsb2FkcwotICAgIGF0dHJfYWNj
ZXNzb3IgOmtpbmQKKyAgICBhdHRyX3JlYWRlciA6YXR0cmlidXRlcwogCiAgICAgZGVmIGluaXRp
YWxpemUobmFtZSwgc3BlY2lhbCkKICAgICAgICAgQG5hbWUgPSBuYW1lCiAgICAgICAgIEBzcGVj
aWFsID0gc3BlY2lhbAotICAgICAgICBAa2luZCA9IDppbnN0CisgICAgICAgIEBhdHRyaWJ1dGVz
ID0ge30KICAgICAgICAgdW5sZXNzIHNwZWNpYWwKICAgICAgICAgICAgIEBvdmVybG9hZHMgPSBb
XQogICAgICAgICBlbmQKQEAgLTI5MSwxMyArMjkxLDE1IEBAIGNsYXNzIFBhcnNlcgogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZW5kCiAKLSAgICAgICAgICAgICAgICBp
ZiB0b2tlbiA9PSAiLyIKKyAgICAgICAgICAgICAgICB3aGlsZSB0b2tlbiA9PSAiLyIKICAgICAg
ICAgICAgICAgICAgICAgY29uc3VtZSgiLyIpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgdG9r
ZW4uc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgIHdoZW4gImJyYW5jaCIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9wY29kZS5raW5kID0gOmJyYW5jaAorICAgICAgICAgICAgICAgICAgICAg
ICAgb3Bjb2RlLmF0dHJpYnV0ZXNbOmJyYW5jaF0gPSB0cnVlCiAgICAgICAgICAgICAgICAgICAg
IHdoZW4gInRlcm1pbmFsIgotICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlLmtpbmQgPSA6
dGVybWluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZS5hdHRyaWJ1dGVzWzp0ZXJt
aW5hbF0gPSB0cnVlCisgICAgICAgICAgICAgICAgICAgIHdoZW4gImVmZmVjdHMiCisgICAgICAg
ICAgICAgICAgICAgICAgICBvcGNvZGUuYXR0cmlidXRlc1s6ZWZmZWN0c10gPSB0cnVlCiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRXJyb3Io
IkJhZCAvIGRpcmVjdGl2ZSIpCiAgICAgICAgICAgICAgICAgICAgIGVuZApAQCAtNTgwLDcgKzU4
Miw3IEBAIHdyaXRlSCgiT3Bjb2RlVXRpbHMiKSB7CiAgICAgb3V0cC5wdXRzICJzd2l0Y2ggKG9w
Y29kZSkgeyIKICAgICAkb3Bjb2Rlcy52YWx1ZXMuZWFjaCB7CiAgICAgICAgIHwgb3Bjb2RlIHwK
LSAgICAgICAgaWYgb3Bjb2RlLmtpbmQgPT0gOnRlcm1pbmFsIG9yIG9wY29kZS5raW5kID09IDpi
cmFuY2gKKyAgICAgICAgaWYgb3Bjb2RlLmF0dHJpYnV0ZXNbOnRlcm1pbmFsXSBvciBvcGNvZGUu
YXR0cmlidXRlc1s6YnJhbmNoXQogICAgICAgICAgICAgb3V0cC5wdXRzICJjYXNlICN7b3Bjb2Rl
Lm5hbWV9OiIKICAgICAgICAgZW5kCiAgICAgfQpAQCAtNzg2LDYgKzc4OCw1MCBAQCB3cml0ZUgo
Ik9wY29kZUdlbmVyYXRlZCIpIHsKICAgICBvdXRwLnB1dHMgInJldHVybiBmYWxzZTsiCiAgICAg
b3V0cC5wdXRzICJ9IgogCisgICAgb3V0cC5wdXRzICJib29sIEluc3Q6Omhhc05vbkFyZ05vbkNv
bnRyb2xFZmZlY3RzKCkiCisgICAgb3V0cC5wdXRzICJ7IgorICAgIG91dHAucHV0cyAic3dpdGNo
IChvcGNvZGUpIHsiCisgICAgJG9wY29kZXMudmFsdWVzLmVhY2ggeworICAgICAgICB8IG9wY29k
ZSB8CisgICAgICAgIGlmIG9wY29kZS5hdHRyaWJ1dGVzWzplZmZlY3RzXQorICAgICAgICAgICAg
b3V0cC5wdXRzICJjYXNlICN7b3Bjb2RlLm5hbWV9OiIKKyAgICAgICAgZW5kCisgICAgfQorICAg
IG91dHAucHV0cyAicmV0dXJuIHRydWU7IgorICAgICRvcGNvZGVzLnZhbHVlcy5lYWNoIHsKKyAg
ICAgICAgfCBvcGNvZGUgfAorICAgICAgICBpZiBvcGNvZGUuc3BlY2lhbAorICAgICAgICAgICAg
b3V0cC5wdXRzICJjYXNlICN7b3Bjb2RlLm5hbWV9OiIKKyAgICAgICAgZW5kCisgICAgfQorICAg
IG91dHAucHV0cyAicmV0dXJuIGFyZ3NbMF0uc3BlY2lhbCgpLT5oYXNOb25BcmdOb25Db250cm9s
RWZmZWN0cygpOyIKKyAgICBvdXRwLnB1dHMgImRlZmF1bHQ6IgorICAgIG91dHAucHV0cyAicmV0
dXJuIGZhbHNlOyIKKyAgICBvdXRwLnB1dHMgIn0iCisgICAgb3V0cC5wdXRzICJ9IgorICAgIAor
ICAgIG91dHAucHV0cyAiYm9vbCBJbnN0OjpoYXNOb25BcmdFZmZlY3RzKCkiCisgICAgb3V0cC5w
dXRzICJ7IgorICAgIG91dHAucHV0cyAic3dpdGNoIChvcGNvZGUpIHsiCisgICAgJG9wY29kZXMu
dmFsdWVzLmVhY2ggeworICAgICAgICB8IG9wY29kZSB8CisgICAgICAgIGlmIG9wY29kZS5hdHRy
aWJ1dGVzWzpicmFuY2hdIG9yIG9wY29kZS5hdHRyaWJ1dGVzWzp0ZXJtaW5hbF0gb3Igb3Bjb2Rl
LmF0dHJpYnV0ZXNbOmVmZmVjdHNdCisgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvcGNv
ZGUubmFtZX06IgorICAgICAgICBlbmQKKyAgICB9CisgICAgb3V0cC5wdXRzICJyZXR1cm4gdHJ1
ZTsiCisgICAgJG9wY29kZXMudmFsdWVzLmVhY2ggeworICAgICAgICB8IG9wY29kZSB8CisgICAg
ICAgIGlmIG9wY29kZS5zcGVjaWFsCisgICAgICAgICAgICBvdXRwLnB1dHMgImNhc2UgI3tvcGNv
ZGUubmFtZX06IgorICAgICAgICBlbmQKKyAgICB9CisgICAgb3V0cC5wdXRzICJyZXR1cm4gYXJn
c1swXS5zcGVjaWFsKCktPmhhc05vbkFyZ05vbkNvbnRyb2xFZmZlY3RzKCk7IgorICAgIG91dHAu
cHV0cyAiZGVmYXVsdDoiCisgICAgb3V0cC5wdXRzICJyZXR1cm4gZmFsc2U7IgorICAgIG91dHAu
cHV0cyAifSIKKyAgICBvdXRwLnB1dHMgIn0iCisgICAgCiAgICAgb3V0cC5wdXRzICJDQ2FsbEhl
bHBlcnM6Okp1bXAgSW5zdDo6Z2VuZXJhdGUoQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25D
b250ZXh0JiBjb250ZXh0KSIKICAgICBvdXRwLnB1dHMgInsiCiAgICAgb3V0cC5wdXRzICJVTlVT
RURfUEFSQU0oaml0KTsiCkBAIC04MDEsNyArODQ3LDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0
ZWQiKSB7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbWV0aG9kTmFtZSA9IG9w
Y29kZS5tYXNtTmFtZQogICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBpZiBvcGNvZGUua2lu
ZCA9PSA6YnJhbmNoCisgICAgICAgICAgICBpZiBvcGNvZGUuYXR0cmlidXRlc1s6YnJhbmNoXQog
ICAgICAgICAgICAgICAgIG91dHAucHJpbnQgInJlc3VsdCA9ICIKICAgICAgICAgICAgIGVuZAog
ICAgICAgICAgICAgb3V0cC5wcmludCAiaml0LiN7bWV0aG9kTmFtZX0oIgo=
</data>
<flag name="review"
          id="289583"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>