<?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>79446</bug_id>
          
          <creation_ts>2012-02-23 22:47:04 -0800</creation_ts>
          <short_desc>RegExp lastIndex should behave as a regular property</short_desc>
          <delta_ts>2012-02-27 10:29:21 -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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>563947</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-23 22:47:04 -0800</bug_when>
    <thetext>lastIndex should be a regular data descriptor, with the attributes configurable:false, enumerable:false, writable:true.
As such, it should be possible to reconfigure writable as false.  If the lastIndex property is reconfigured to be read-only, we should respect this correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563949</commentid>
    <comment_count>1</comment_count>
      <attachid>128654</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-23 22:49:10 -0800</bug_when>
    <thetext>Created attachment 128654
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563966</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-23 23:04:04 -0800</bug_when>
    <thetext>No performance impact.

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function
to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                               Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                 6.8111+-0.1780     ?      6.8113+-0.1999        ?
   3d-morph                               10.9236+-0.0529     !     11.1283+-0.1014        ! definitely 1.0187x slower
   3d-raytrace                             9.2228+-0.1226     ?      9.3640+-0.2049        ? might be 1.0153x slower
   access-binary-trees                     2.2318+-0.1129            2.1965+-0.1116          might be 1.0161x faster
   access-fannkuch                         8.3716+-0.0767            8.3513+-0.0736        
   access-nbody                            4.3366+-0.0204     ?      4.3618+-0.0387        ?
   access-nsieve                           3.6919+-0.0474     ?      3.7106+-0.0561        ?
   bitops-3bit-bits-in-byte                1.3252+-0.0089            1.3228+-0.0031        
   bitops-bits-in-byte                     5.3760+-0.0134            5.3730+-0.0176        
   bitops-bitwise-and                      3.6484+-0.0307     ?      3.6556+-0.0325        ?
   bitops-nsieve-bits                      6.2557+-0.0094     ?      6.2591+-0.0091        ?
   controlflow-recursive                   3.2197+-0.0311     ?      3.2210+-0.0300        ?
   crypto-aes                              9.2954+-0.1891     ?      9.4747+-0.2483        ? might be 1.0193x slower
   crypto-md5                              3.0143+-0.0496            3.0132+-0.0452        
   crypto-sha1                             2.6138+-0.0327            2.6026+-0.0228        
   date-format-tofte                      15.0003+-0.1857           14.8812+-0.1958        
   date-format-xparb                      14.8199+-0.1110           14.7790+-0.1327        
   math-cordic                             8.7902+-0.0852            8.7166+-0.0725        
   math-partial-sums                      12.0955+-0.0253     !     12.1571+-0.0206        ! definitely 1.0051x slower
   math-spectral-norm                      2.9147+-0.0107     ?      2.9253+-0.0165        ?
   regexp-dna                             12.7093+-0.2167           12.6207+-0.1546        
   string-base64                           5.7476+-0.1213     ?      5.8222+-0.1810        ? might be 1.0130x slower
   string-fasta                            8.6426+-0.1011            8.6022+-0.0977        
   string-tagcloud                        15.7174+-0.3493           15.5674+-0.1795        
   string-unpack-code                     26.3507+-0.1263     ?     26.5122+-0.1653        ?
   string-validate-input                   7.7892+-0.1489            7.7774+-0.1693        

   &lt;arithmetic&gt; *                          8.1121+-0.0653     ?      8.1233+-0.0530        ? might be 1.0014x slower
   &lt;geometric&gt;                             6.4456+-0.0580     ?      6.4518+-0.0486        ? might be 1.0010x slower
   &lt;harmonic&gt;                              5.0023+-0.0530            5.0004+-0.0463          might be 1.0004x faster

                                               Conf#1                    Conf#2                                      
V8:
   crypto                                 86.1056+-0.3238           85.9216+-0.3517        
   deltablue                             204.5970+-0.6370     !    208.5022+-1.5991        ! definitely 1.0191x slower
   earley-boyer                          140.3861+-1.2696          140.0453+-0.6685        
   raytrace                               71.1920+-0.3033     ^     70.5504+-0.1053        ^ definitely 1.0091x faster
   regexp                                134.7421+-0.2149     ?    134.8495+-0.3901        ?
   richards                              158.9397+-0.5501     ?    159.2791+-1.0537        ?
   splay                                  88.8850+-0.2850     ?     88.9852+-0.3304        ?

   &lt;arithmetic&gt;                          126.4068+-0.2742     !    126.8762+-0.1884        ! definitely 1.0037x slower
   &lt;geometric&gt; *                         118.8578+-0.2468     ?    119.0157+-0.1436        ? might be 1.0013x slower
   &lt;harmonic&gt;                            111.7551+-0.2397          111.6720+-0.1504          might be 1.0007x faster

                                               Conf#1                    Conf#2                                      
V8Real:
   encrypt                                0.50364+-0.00021    ?     0.50392+-0.00016       ?
   decrypt                                8.52085+-0.01046    ?     8.68461+-0.24005       ? might be 1.0192x slower
   deltablue                              1.22677+-0.00788    ?     1.23632+-0.00571       ?
   earley                                 3.82961+-0.02641    ?     3.83128+-0.03211       ?
   boyer                                 25.01824+-0.43295    ?    25.04744+-0.42514       ?
   raytrace                              10.66808+-0.06927         10.57299+-0.04685       
   regexp                                51.34842+-0.44470    ?    51.81961+-0.62095       ?
   richards                               0.46305+-0.00418    ?     0.47031+-0.00349       ? might be 1.0157x slower
   splay                                  1.54283+-0.10934          1.52444+-0.09144         might be 1.0121x faster

   &lt;arithmetic&gt;                          11.45794+-0.02470    ?    11.52121+-0.04017       ? might be 1.0055x slower
   &lt;geometric&gt; *                          3.87340+-0.03062    ?     3.88772+-0.02739       ? might be 1.0037x slower
   &lt;harmonic&gt;                             1.46404+-0.01089    ?     1.47269+-0.00906       ? might be 1.0059x slower

                                               Conf#1                    Conf#2                                      
Kraken:
   ai-astar                               561.978+-0.388      ?     564.414+-3.686         ?
   audio-beat-detection                   225.838+-0.405      ?     227.688+-2.133         ?
   audio-dft                              417.950+-2.085      ?     420.808+-6.806         ?
   audio-fft                              142.826+-0.111            142.766+-0.084         
   audio-oscillator                       369.000+-1.358            368.056+-1.292         
   imaging-darkroom                       333.088+-6.779            333.081+-6.506         
   imaging-desaturate                     254.928+-0.034      ?     255.050+-0.095         ?
   imaging-gaussian-blur                  547.193+-29.543           532.517+-1.466           might be 1.0276x faster
   json-parse-financial                    75.779+-0.078      !      76.925+-0.140         ! definitely 1.0151x slower
   json-stringify-tinderbox                92.926+-0.425             92.674+-0.341         
   stanford-crypto-aes                    134.219+-0.712      !     136.188+-0.763         ! definitely 1.0147x slower
   stanford-crypto-ccm                    128.816+-0.671            127.662+-0.620         
   stanford-crypto-pbkdf2                 237.529+-1.067      ^     232.872+-0.174         ^ definitely 1.0200x faster
   stanford-crypto-sha256-iterative       107.185+-1.276      ^     105.396+-0.167         ^ definitely 1.0170x faster

   &lt;arithmetic&gt; *                         259.233+-2.306            258.293+-0.684           might be 1.0036x faster
   &lt;geometric&gt;                            213.215+-0.938            212.808+-0.408           might be 1.0019x faster
   &lt;harmonic&gt;                             175.457+-0.375            175.401+-0.273           might be 1.0003x faster

                                               Conf#1                    Conf#2                                      
JSRegress:
   adapt-to-double-divide                 72.0196+-0.0603           71.9932+-0.0443        
   fold-double-to-int                     44.1317+-0.3762           44.0780+-0.7954        
   method-on-number                      248.3783+-11.0232         239.9454+-1.9886          might be 1.0351x faster

   &lt;arithmetic&gt;                          121.5099+-3.6319          118.6722+-0.6631          might be 1.0239x faster
   &lt;geometric&gt; *                          92.3725+-1.2706           91.3052+-0.5632          might be 1.0117x faster
   &lt;harmonic&gt;                             73.9122+-0.3915           73.6139+-0.7382          might be 1.0041x faster

                                               Conf#1                    Conf#2                                      
All benchmarks:
   &lt;arithmetic&gt;                           88.0114+-0.5996           87.7143+-0.1782          might be 1.0034x faster
   &lt;geometric&gt;                            22.1336+-0.1235     ?     22.1362+-0.0956        ? might be 1.0001x slower
   &lt;harmonic&gt;                              5.1176+-0.0352     ?      5.1328+-0.0314        ? might be 1.0030x slower

                                               Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                        38.9287+-0.1882           38.8614+-0.1157          might be 1.0017x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564008</commentid>
    <comment_count>3</comment_count>
      <attachid>128654</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 23:52:10 -0800</bug_when>
    <thetext>Comment on attachment 128654
Fix

Attachment 128654 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11603719

New failing tests:
fast/regex/lastIndex.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564365</commentid>
    <comment_count>4</comment_count>
      <attachid>128654</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-02-24 09:13:01 -0800</bug_when>
    <thetext>Comment on attachment 128654
Fix

Once again, gross. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565790</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-27 10:29:21 -0800</bug_when>
    <thetext>Fixed in r109008.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128654</attachid>
            <date>2012-02-23 22:49:10 -0800</date>
            <delta_ts>2012-02-24 09:13:01 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>79446.patch</filename>
            <type>text/plain</type>
            <size>20749</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NzI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEyLTAyLTIzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWdFeHAgbGFzdEluZGV4IHNob3VsZCBiZWhhdmUgYXMgYSByZWd1bGFyIHBy
b3BlcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGxh
c3RJbmRleCBzaG91bGQgYmUgYSByZWd1bGFyIGRhdGEgZGVzY3JpcHRvciwgd2l0aCB0aGUgYXR0
cmlidXRlcyBjb25maWd1cmFibGU6ZmFsc2UsCisgICAgICAgIGVudW1lcmFibGU6ZmFsc2UsIHdy
aXRhYmxlOnRydWUuIEFzIHN1Y2gsIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byByZWNvbmZpZ3Vy
ZSB3cml0YWJsZQorICAgICAgICBhcyBmYWxzZS4gSWYgdGhlIGxhc3RJbmRleCBwcm9wZXJ0eSBp
cyByZWNvbmZpZ3VyZWQgdG8gYmUgcmVhZC1vbmx5LCB3ZSBzaG91bGQgcmVzcGVjdAorICAgICAg
ICB0aGlzIGNvcnJlY3RseS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgICAgIC0gUmVtb3ZlZCBzb21lIHVudXNlZCBpZGVudGlmaWVycywgYWRkZWQg
bGFzdEluZGV4LgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAgICAgLSBs
YXN0SW5kZXggaXMgbm8gbG9uZ2VyIGEgc3RhdGljIHZhbHVlLCBwcm92aWRlZCBzcGVjaWZpYyBo
YW5kbGluZy4KKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAgICAgLSBsYXN0SW5kZXggaXMgbm8gbG9uZ2VyIGEgc3RhdGljIHZh
bHVlLCBwcm92aWRlZCBzcGVjaWZpYyBoYW5kbGluZy4KKyAgICAgICAgKEpTQzo6UmVnRXhwT2Jq
ZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICAgICAtIGxhc3RJbmRleCBpcyBubyBsb25n
ZXIgYSBzdGF0aWMgdmFsdWUsIHByb3ZpZGVkIHNwZWNpZmljIGhhbmRsaW5nLgorICAgICAgICAo
SlNDOjpSZWdFeHBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAgICAgLSBs
YXN0SW5kZXggaXMgbm8gbG9uZ2VyIGEgc3RhdGljIHZhbHVlLCBwcm92aWRlZCBzcGVjaWZpYyBo
YW5kbGluZy4KKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKToK
KyAgICAgICAgICAgIC0gbGFzdEluZGV4IGlzIG5vIGxvbmdlciBhIHN0YXRpYyB2YWx1ZSwgcHJv
dmlkZWQgc3BlY2lmaWMgaGFuZGxpbmcuCisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAg
ICAgICAtIGhlbHBlciBmdW5jdGlvbiBmb3IgZGVmaW5lT3duUHJvcGVydHkuCisgICAgICAgIChK
U0M6OlJlZ0V4cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAgICAgLSBsYXN0
SW5kZXggaXMgbm8gbG9uZ2VyIGEgc3RhdGljIHZhbHVlLCBwcm92aWRlZCBzcGVjaWZpYyBoYW5k
bGluZy4KKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAgICAgLSBs
YXN0SW5kZXggaXMgbm8gbG9uZ2VyIGEgc3RhdGljIHZhbHVlLCBwcm92aWRlZCBzcGVjaWZpYyBo
YW5kbGluZy4KKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaCk6CisgICAgICAgICAg
ICAtIFBhc3Mgc2V0TGFzdEluZGV4IGFuIEV4ZWNTdGF0ZSwgc28gaXQgY2FuIHRocm93IGlmIHJl
YWQtb25seS4KKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAoSlND
OjpSZWdFeHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICAgICAtIFBhc3Mgc2V0TGFz
dEluZGV4IGFuIEV4ZWNTdGF0ZSwgc28gaXQgY2FuIHRocm93IGlmIHJlYWQtb25seS4KKyAgICAg
ICAgKFJlZ0V4cE9iamVjdERhdGEpOgorICAgICAgICAgICAgLSBBZGRlZCBsYXN0SW5kZXhJc1dy
aXRhYmxlLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6cmVnRXhwUHJvdG9GdW5jQ29tcGlsZSk6CisgICAgICAgICAgICAtIFBhc3Mgc2V0TGFz
dEluZGV4IGFuIEV4ZWNTdGF0ZSwgc28gaXQgY2FuIHRocm93IGlmIHJlYWQtb25seS4KKwogMjAx
Mi0wMi0yMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFplcm8gb3V0IENvcGllZEJsb2NrcyBvbiBpbml0aWFsaXphdGlvbgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZp
c2lvbiAxMDg2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsNiBAQAogLy8gTWFya2VkQXJn
dW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNh
biBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCiAvLyB3YXlzIHdpdGhvdXQgcmVwZWF0aW5nIHRoZSBs
aXN0LgogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRSht
YWNybykgXAotICAgIG1hY3JvKF9fZGVmaW5lR2V0dGVyX18pIFwKLSAgICBtYWNybyhfX2RlZmlu
ZVNldHRlcl9fKSBcCi0gICAgbWFjcm8oX19sb29rdXBHZXR0ZXJfXykgXAotICAgIG1hY3JvKF9f
bG9va3VwU2V0dGVyX18pIFwKICAgICBtYWNybyhhcHBseSkgXAogICAgIG1hY3JvKGFyZ3VtZW50
cykgXAogICAgIG1hY3JvKGJpbmQpIFwKQEAgLTUyLDYgKzQ4LDcgQEAKICAgICBtYWNybyhpbnB1
dCkgXAogICAgIG1hY3JvKGlzQXJyYXkpIFwKICAgICBtYWNybyhpc1Byb3RvdHlwZU9mKSBcCisg
ICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFjcm8obWVz
c2FnZSkgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAxMDg2NDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw4ICs0MCw2IEBAIHN0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChF
eGVjU3QKIHN0YXRpYyBKU1ZhbHVlIHJlZ0V4cE9iamVjdElnbm9yZUNhc2UoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwogc3RhdGljIEpTVmFsdWUgcmVnRXhwT2JqZWN0
TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKIHN0YXRp
YyBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJik7Ci1zdGF0aWMgSlNWYWx1ZSByZWdFeHBPYmplY3RMYXN0SW5kZXgoRXhlY1N0
YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwotc3RhdGljIHZvaWQgc2V0UmVnRXhw
T2JqZWN0TGFzdEluZGV4KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCkBAIC01OSw3ICs1Nyw2IEBAIGNvbnN0IENsYXNzSW5mbyBSZWdFeHBP
YmplY3Q6OnNfaW5mbyA9IHsKICAgICBpZ25vcmVDYXNlICAgIHJlZ0V4cE9iamVjdElnbm9yZUNh
c2UgICBEb250RGVsZXRlfFJlYWRPbmx5fERvbnRFbnVtCiAgICAgbXVsdGlsaW5lICAgICByZWdF
eHBPYmplY3RNdWx0aWxpbmUgICAgRG9udERlbGV0ZXxSZWFkT25seXxEb250RW51bQogICAgIHNv
dXJjZSAgICAgICAgcmVnRXhwT2JqZWN0U291cmNlICAgICAgIERvbnREZWxldGV8UmVhZE9ubHl8
RG9udEVudW0KLSAgICBsYXN0SW5kZXggICAgIHJlZ0V4cE9iamVjdExhc3RJbmRleCAgICBEb250
RGVsZXRlfERvbnRFbnVtCiBAZW5kCiAqLwogCkBAIC05NSwxNCArOTIsNzkgQEAgdm9pZCBSZWdF
eHBPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogCiBib29sIFJlZ0V4cE9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKKyAgICAgICAg
UmVnRXhwT2JqZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChjZWxsKTsKKyAgICAgICAgc2xv
dC5zZXRWYWx1ZShyZWdFeHAsIHJlZ0V4cC0+Z2V0TGFzdEluZGV4KCkpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxSZWdFeHBPYmpl
Y3QsIEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnJlZ0V4cFRhYmxlKGV4ZWMpLCBqc0Nhc3Q8
UmVnRXhwT2JqZWN0Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgUmVn
RXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpIHsKKyAgICAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHAg
PSBhc1JlZ0V4cE9iamVjdChvYmplY3QpOworICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0
b3IocmVnRXhwLT5nZXRMYXN0SW5kZXgoKSwgcmVnRXhwLT5kLT5sYXN0SW5kZXhJc1dyaXRhYmxl
ID8gRG9udERlbGV0ZSB8IERvbnRFbnVtIDogRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIGdldFN0YXRpY1Zh
bHVlRGVzY3JpcHRvcjxSZWdFeHBPYmplY3QsIEpTT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6OnJl
Z0V4cFRhYmxlKGV4ZWMpLCBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsKIH0KIAorYm9vbCBSZWdFeHBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGFzdEluZGV4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0
ZVByb3BlcnR5KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cit9CisKK3ZvaWQgUmVnRXhwT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQoreworICAgIGlmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpCisgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sYXN0SW5kZXgpOworICAg
IEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKK30KKwordm9pZCBSZWdFeHBPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
cywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcykKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxhc3RJbmRleCk7CisgICAgQmFzZTo6Z2V0UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworfQorCitzdGF0aWMgYm9vbCByZWplY3QoRXhlY1N0
YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdlKQorewor
ICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgbWVz
c2FnZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sYXN0SW5kZXgpIHsKKyAgICAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHAgPSBhc1Jl
Z0V4cE9iamVjdChvYmplY3QpOworICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQ
cmVzZW50KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkKKyAgICAgICAgICAgIHJldHVy
biByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1
cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpOworICAgICAgICBp
ZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJs
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpOworICAgICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
KQorICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJvdywgIkF0dGVtcHRp
bmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3Bl
cnR5LiIpOworICAgICAgICBpZiAoIXJlZ0V4cC0+ZC0+bGFzdEluZGV4SXNXcml0YWJsZSkgewor
ICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRv
ci53cml0YWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2hvdWxk
VGhyb3csICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25m
aWd1cmFibGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBy
ZWdFeHAtPmdldExhc3RJbmRleCgpLCBkZXNjcmlwdG9yLnZhbHVlKCkpKQorICAgICAgICAgICAg
ICAgIHJldHVybiByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkg
JiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHJlZ0V4cC0+ZC0+bGFzdElu
ZGV4SXNXcml0YWJsZSA9IGZhbHNlOworICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpKQor
ICAgICAgICAgICAgcmVnRXhwLT5zZXRMYXN0SW5kZXgoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgp
LCBmYWxzZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBCYXNl
OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgc2hvdWxkVGhyb3cpOworfQorCiBKU1ZhbHVlIHJlZ0V4cE9iamVjdEdsb2JhbChFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICByZXR1cm4g
anNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHNsb3RCYXNlKS0+cmVnRXhwKCktPmdsb2JhbCgpKTsK
QEAgLTIwMCwyMSArMjYyLDE1IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0
ZSogZXgKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcmVzdWx0LnRvVVN0cmluZygpKTsKIH0K
IAotSlNWYWx1ZSByZWdFeHBPYmplY3RMYXN0SW5kZXgoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCi17Ci0gICAgcmV0dXJuIGFzUmVnRXhwT2JqZWN0KHNs
b3RCYXNlKS0+Z2V0TGFzdEluZGV4KCk7Ci19Ci0KIHZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxhc3RJbmRleCkgeworICAgICAgICBh
c1JlZ0V4cE9iamVjdChjZWxsKS0+c2V0TGFzdEluZGV4KGV4ZWMsIHZhbHVlLCBzbG90LmlzU3Ry
aWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBsb29rdXBQdXQ8UmVnRXhw
T2JqZWN0LCBKU09iamVjdD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgRXhlY1N0YXRlOjpy
ZWdFeHBUYWJsZShleGVjKSwganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpLCBzbG90KTsKIH0K
IAotdm9pZCBzZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZU9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhc1JlZ0V4cE9iamVjdChiYXNl
T2JqZWN0KS0+c2V0TGFzdEluZGV4KGV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpOwotfQotCiBK
U1ZhbHVlIFJlZ0V4cE9iamVjdDo6dGVzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJu
IGpzQm9vbGVhbihtYXRjaChleGVjKSk7CkBAIC0yNDUsMTMgKzMwMSwxMyBAQCBib29sIFJlZ0V4
cE9iamVjdDo6bWF0Y2goRXhlY1N0YXRlKiBleGVjCiAgICAgaWYgKExJS0VMWShqc0xhc3RJbmRl
eC5pc1VJbnQzMigpKSkgewogICAgICAgICBsYXN0SW5kZXggPSBqc0xhc3RJbmRleC5hc1VJbnQz
MigpOwogICAgICAgICBpZiAobGFzdEluZGV4ID4gaW5wdXQubGVuZ3RoKCkpIHsKLSAgICAgICAg
ICAgIHNldExhc3RJbmRleCgwKTsKKyAgICAgICAgICAgIHNldExhc3RJbmRleChleGVjLCAwKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGRvdWJsZSBkb3VibGVMYXN0SW5kZXggPSBqc0xhc3RJbmRleC50b0ludGVnZXIoZXhlYyk7
CiAgICAgICAgIGlmIChkb3VibGVMYXN0SW5kZXggPCAwIHx8IGRvdWJsZUxhc3RJbmRleCA+IGlu
cHV0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzZXRMYXN0SW5kZXgoMCk7CisgICAgICAgICAg
ICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgbGFzdEluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRvdWJsZUxh
c3RJbmRleCk7CkBAIC0yNjEsMTEgKzMxNywxMSBAQCBib29sIFJlZ0V4cE9iamVjdDo6bWF0Y2go
RXhlY1N0YXRlKiBleGVjCiAgICAgaW50IGxlbmd0aCA9IDA7CiAgICAgcmVnRXhwQ29uc3RydWN0
b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0YSwgZC0+cmVnRXhwLmdldCgpLCBpbnB1dCwgbGFz
dEluZGV4LCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICBpZiAocG9zaXRpb24gPCAwKSB7Ci0gICAg
ICAgIHNldExhc3RJbmRleCgwKTsKKyAgICAgICAgc2V0TGFzdEluZGV4KGV4ZWMsIDApOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc2V0TGFzdEluZGV4KHBvc2l0aW9uICsg
bGVuZ3RoKTsKKyAgICBzZXRMYXN0SW5kZXgoZXhlYywgcG9zaXRpb24gKyBsZW5ndGgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTA4NjQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEzICs0Nywy
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRSZWdFeHAoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBSZWdFeHAqIHIpIHsgZC0+cmVnRXhwLnNldChnbG9iYWxEYXRhLCB0aGlz
LCByKTsgfQogICAgICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsgcmV0dXJuIGQtPnJlZ0V4
cC5nZXQoKTsgfQogCi0gICAgICAgIHZvaWQgc2V0TGFzdEluZGV4KHNpemVfdCBsYXN0SW5kZXgp
CisgICAgICAgIHZvaWQgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGxhc3RJ
bmRleCkKICAgICAgICAgewogICAgICAgICAgICAgZC0+bGFzdEluZGV4LnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIoanNOdW1iZXIobGFzdEluZGV4KSk7CisgICAgICAgICAgICBpZiAoTElLRUxZKGQt
Pmxhc3RJbmRleElzV3JpdGFibGUpKQorICAgICAgICAgICAgICAgIGQtPmxhc3RJbmRleC5zZXRX
aXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGxhc3RJbmRleCkpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBzZXRMYXN0SW5k
ZXgoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIGxhc3RJbmRleCkKKyAgICAgICAg
dm9pZCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9v
bCBzaG91bGRUaHJvdykKICAgICAgICAgewotICAgICAgICAgICAgZC0+bGFzdEluZGV4LnNldChn
bG9iYWxEYXRhLCB0aGlzLCBsYXN0SW5kZXgpOworICAgICAgICAgICAgaWYgKExJS0VMWShkLT5s
YXN0SW5kZXhJc1dyaXRhYmxlKSkKKyAgICAgICAgICAgICAgICBkLT5sYXN0SW5kZXguc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbGFzdEluZGV4KTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHNob3VsZFRocm93KQorICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIH0KICAgICAgICAgSlNW
YWx1ZSBnZXRMYXN0SW5kZXgoKSBjb25zdAogICAgICAgICB7CkBAIC04Myw2ICs5MCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhy
b3cpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtYXRjaChFeGVjU3RhdGUqKTsKIApA
QCAtOTEsMTIgKzEwMywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcHVibGljOgogICAg
ICAgICAgICAgUmVnRXhwT2JqZWN0RGF0YShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJlZ0V4
cE9iamVjdCogb3duZXIsIFJlZ0V4cCogcmVnRXhwKQogICAgICAgICAgICAgICAgIDogcmVnRXhw
KGdsb2JhbERhdGEsIG93bmVyLCByZWdFeHApCisgICAgICAgICAgICAgICAgLCBsYXN0SW5kZXhJ
c1dyaXRhYmxlKHRydWUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbGFzdEluZGV4
LnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoanNOdW1iZXIoMCkpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwPiByZWdFeHA7CiAgICAgICAgICAgICBXcml0
ZUJhcnJpZXI8VW5rbm93bj4gbGFzdEluZGV4OworICAgICAgICAgICAgYm9vbCBsYXN0SW5kZXhJ
c1dyaXRhYmxlOwogICAgICAgICB9OwogI2lmIENPTVBJTEVSKE1TVkMpCiAgICAgICAgIGZyaWVu
ZCB2b2lkIFdURjo6ZGVsZXRlT3duZWRQdHI8UmVnRXhwT2JqZWN0RGF0YT4oUmVnRXhwT2JqZWN0
RGF0YSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMDg2NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyAr
MTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4
cC0+ZXJyb3JNZXNzYWdlKCkpKTsKIAogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnNl
dFJlZ0V4cChleGVjLT5nbG9iYWxEYXRhKCksIHJlZ0V4cCk7Ci0gICAgYXNSZWdFeHBPYmplY3Qo
dGhpc1ZhbHVlKS0+c2V0TGFzdEluZGV4KDApOworICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1
ZSktPnNldExhc3RJbmRleChleGVjLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDg3MjkpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wMi0y
MyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVnRXhwIGxhc3RJbmRleCBzaG91bGQgYmVoYXZlIGFzIGEgcmVndWxhciBwcm9wZXJ0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0NDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsYXN0SW5kZXggc2hv
dWxkIGJlIGEgcmVndWxhciBkYXRhIGRlc2NyaXB0b3IsIHdpdGggdGhlIGF0dHJpYnV0ZXMgY29u
ZmlndXJhYmxlOmZhbHNlLAorICAgICAgICBlbnVtZXJhYmxlOmZhbHNlLCB3cml0YWJsZTp0cnVl
LiBBcyBzdWNoLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gcmVjb25maWd1cmUgd3JpdGFibGUK
KyAgICAgICAgYXMgZmFsc2UuIElmIHRoZSBsYXN0SW5kZXggcHJvcGVydHkgaXMgcmVjb25maWd1
cmVkIHRvIGJlIHJlYWQtb25seSwgd2Ugc2hvdWxkIHJlc3BlY3QKKyAgICAgICAgdGhpcyBjb3Jy
ZWN0bHkuCisKKyAgICAgICAgKiBmYXN0L3JlZ2V4L2xhc3RJbmRleC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVnZXgvbGFzdEluZGV4Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2xhc3RJbmRleC5qczogQWRkZWQuCisgICAgICAg
ICAgICAtIEFkZGVkIHRlc3QgY2FzZXMgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgbGFzdEluZGV4
LgorCiAyMDEyLTAyLTIzICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmVuYW1lIERPTVdpbmRvdyB0byBXaW5kb3cgaW4gdGhlIGJpbmRpbmdzCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3JlZ2V4L2xhc3RJbmRleC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9sYXN0SW5kZXgtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9sYXN0SW5kZXgtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACitUaGlzIHBhZ2UgdGVzdHMgdGhhdCBhIFJlZ0V4
cCBvYmplY3QncyBsYXN0SW5kZXggYmVoYXZlcyBsaWtlIGEgcmVndWxhciBwcm9wZXJ0eS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGVsZXRlIC94Ly5sYXN0SW5kZXgg
aXMgZmFsc2UKK1BBU1MgJ3VzZSBzdHJpY3QnOyBkZWxldGUgL3gvLmxhc3RJbmRleCB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5Li4KK1BBU1MgJ2xh
c3RJbmRleCcgaW4gL3gvIGlzIHRydWUKK1BBU1MgZm9yIChwcm9wZXJ0eSBpbiAveC8pIGlmIChw
cm9wZXJ0eSA9PT0gJ2xhc3RJbmRleCcpIHRocm93IGZhbHNlOyB0cnVlIGlzIHRydWUKK1BBU1Mg
dmFyIHJlID0gL3gvOyByZS5sYXN0SW5kZXggPSByZTsgcmUubGFzdEluZGV4ID09PSByZSBpcyB0
cnVlCitQQVNTIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgveC8sIHtnZXQ6ZnVuY3Rpb24oKXt9fSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBh
biBvYmplY3QuLgorUEFTUyBPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywg
e2VudW1lcmFibGU6dHJ1ZX0pOyB0cnVlIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5Li4KK1BBU1MgT2JqZWN0LmRlZmluZVByb3BlcnR5KC94LywgJ2xhc3RJbmRleCcsIHtl
bnVtZXJhYmxlOmZhbHNlfSk7IHRydWUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoL3gvLCAnbGFzdEluZGV4Jywge2NvbmZpZ3VyYWJsZTp0cnVlfSk7IHRydWUgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJp
YnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4uCitQQVNTIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSgveC8sICdsYXN0SW5kZXgnLCB7Y29uZmlndXJhYmxlOmZhbHNlfSk7IHRydWUgaXMgdHJ1
ZQorUEFTUyB2YXIgcmUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywg
e3dyaXRhYmxlOnRydWV9KTsgcmUubGFzdEluZGV4ID0gNDI7IHJlLmxhc3RJbmRleCBpcyA0Mgor
UEFTUyB2YXIgcmUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywge3dy
aXRhYmxlOmZhbHNlfSk7IHJlLmxhc3RJbmRleCA9IDQyOyByZS5sYXN0SW5kZXggaXMgMAorUEFT
UyB2YXIgcmUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywge3ZhbHVl
OjQyfSk7IHJlLmxhc3RJbmRleCBpcyA0MgorUEFTUyBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KC94LywgJ2xhc3RJbmRleCcsIHt3cml0YWJsZTpmYWxzZX0pLCAn
bGFzdEluZGV4Jywge3dyaXRhYmxlOnRydWV9KTsgdHJ1ZSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1
cmFibGUgcHJvcGVydHkuLgorUEFTUyBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KC94LywgJ2xhc3RJbmRleCcsIHt3cml0YWJsZTpmYWxzZX0pLCAnbGFzdEluZGV4
Jywge3ZhbHVlOjQyfSk7IHRydWUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4uCitQQVNTIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywge3dy
aXRhYmxlOmZhbHNlfSksICdsYXN0SW5kZXgnLCB7dmFsdWU6MH0pOyB0cnVlIGlzIHRydWUKK1BB
U1MgT2JqZWN0LmRlZmluZVByb3BlcnR5KC94LywgJ2xhc3RJbmRleCcsIHt3cml0YWJsZTpmYWxz
ZX0pLmV4ZWMoJycpIGlzIG51bGwKK1BBU1MgT2JqZWN0LmRlZmluZVByb3BlcnR5KC94LywgJ2xh
c3RJbmRleCcsIHt3cml0YWJsZTpmYWxzZX0pLmV4ZWMoJ3gnKSBpcyBbIngiXQorUEFTUyBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoL3gvZywgJ2xhc3RJbmRleCcsIHt3cml0YWJsZTpmYWxzZX0pLmV4
ZWMoJycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8g
cmVhZG9ubHkgcHJvcGVydHkuLgorUEFTUyBPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvZywgJ2xh
c3RJbmRleCcsIHt3cml0YWJsZTpmYWxzZX0pLmV4ZWMoJ3gnKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5Li4KK1BBU1Mg
dmFyIHJlID0gL3gvOyBPYmplY3QuZnJlZXplKHJlKTsgT2JqZWN0LmlzRnJvemVuKHJlKTsgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvbGFzdEluZGV4Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9sYXN0SW5kZXguaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvbGFzdEluZGV4Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9sYXN0SW5kZXguanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvbGFzdEluZGV4LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2xhc3RJbmRleC5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2xhc3RJbmRl
eC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorZGVzY3JpcHRpb24oCisiVGhpcyBw
YWdlIHRlc3RzIHRoYXQgYSBSZWdFeHAgb2JqZWN0J3MgbGFzdEluZGV4IGJlaGF2ZXMgbGlrZSBh
IHJlZ3VsYXIgcHJvcGVydHkuIgorKTsKKworLy8gbGFzdEluZGV4IGlzIG5vdCBjb25maWd1cmFi
bGUKK3Nob3VsZEJlRmFsc2UoImRlbGV0ZSAveC8ubGFzdEluZGV4Iik7CitzaG91bGRUaHJvdygi
J3VzZSBzdHJpY3QnOyBkZWxldGUgL3gvLmxhc3RJbmRleCIpOworCisvLyBsYXN0SW5kZXggaXMg
bm90IGVudW1lcmFibGUKK3Nob3VsZEJlVHJ1ZSgiJ2xhc3RJbmRleCcgaW4gL3gvIik7CitzaG91
bGRCZVRydWUoImZvciAocHJvcGVydHkgaW4gL3gvKSBpZiAocHJvcGVydHkgPT09ICdsYXN0SW5k
ZXgnKSB0aHJvdyBmYWxzZTsgdHJ1ZSIpOworCisvLyBsYXN0SW5kZXggaXMgd3JpdGFibGUKK3No
b3VsZEJlVHJ1ZSgidmFyIHJlID0gL3gvOyByZS5sYXN0SW5kZXggPSByZTsgcmUubGFzdEluZGV4
ID09PSByZSIpOworCisvLyBDYW5ub3QgcmVkZWZpbmUgbGFzdEluZGV4IGFzIGFuIGFjY2Vzc29y
CitzaG91bGRUaHJvdygiT2JqZWN0LmRlZmluZVByb3BlcnR5KC94Lywge2dldDpmdW5jdGlvbigp
e319KSIpOworCisvLyBDYW5ub3QgcmVkZWZpbmUgbGFzdEluZGV4IGFzIGVudW1lcmFibGUKK3No
b3VsZFRocm93KCJPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywge2VudW1l
cmFibGU6dHJ1ZX0pOyB0cnVlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5kZWZpbmVQcm9wZXJ0
eSgveC8sICdsYXN0SW5kZXgnLCB7ZW51bWVyYWJsZTpmYWxzZX0pOyB0cnVlIik7CisKKy8vIENh
bm5vdCByZWRlZmluZSBsYXN0SW5kZXggYXMgY29uZmlndXJhYmxlCitzaG91bGRUaHJvdygiT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KC94LywgJ2xhc3RJbmRleCcsIHtjb25maWd1cmFibGU6dHJ1ZX0p
OyB0cnVlIik7CitzaG91bGRCZVRydWUoIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSgveC8sICdsYXN0
SW5kZXgnLCB7Y29uZmlndXJhYmxlOmZhbHNlfSk7IHRydWUiKTsKKworLy8gQ2FuIHJlZGVmaW5l
IGxhc3RJbmRleCBhcyByZWFkLW9ubHkKK3Nob3VsZEJlKCJ2YXIgcmUgPSBPYmplY3QuZGVmaW5l
UHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywge3dyaXRhYmxlOnRydWV9KTsgcmUubGFzdEluZGV4
ID0gNDI7IHJlLmxhc3RJbmRleCIsICc0MicpOworc2hvdWxkQmUoInZhciByZSA9IE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSgveC8sICdsYXN0SW5kZXgnLCB7d3JpdGFibGU6ZmFsc2V9KTsgcmUubGFz
dEluZGV4ID0gNDI7IHJlLmxhc3RJbmRleCIsICcwJyk7CisKKy8vIENhbiByZWRlZmluZSB0aGUg
dmFsdWUKK3Nob3VsZEJlKCJ2YXIgcmUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFz
dEluZGV4Jywge3ZhbHVlOjQyfSk7IHJlLmxhc3RJbmRleCIsICc0MicpOworCisvLyBDYW5ub3Qg
cmVkZWZpbmUgcmVhZC1vbmx5IGxhc3RJbmRleCBhcyB3cml0YWJsZQorc2hvdWxkVGhyb3coIk9i
amVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4
Jywge3dyaXRhYmxlOmZhbHNlfSksICdsYXN0SW5kZXgnLCB7d3JpdGFibGU6dHJ1ZX0pOyB0cnVl
Iik7CisKKy8vIENhbiBvbmx5IHJlZGVmaW5lIHRoZSB2YWx1ZSBvZiBhIHJlYWQtb25seSBsYXN0
SW5kZXggYXMgdGhlIGN1cnJlbnQgdmFsdWUKK3Nob3VsZFRocm93KCJPYmplY3QuZGVmaW5lUHJv
cGVydHkoT2JqZWN0LmRlZmluZVByb3BlcnR5KC94LywgJ2xhc3RJbmRleCcsIHt3cml0YWJsZTpm
YWxzZX0pLCAnbGFzdEluZGV4Jywge3ZhbHVlOjQyfSk7IHRydWUiKTsKK3Nob3VsZEJlVHJ1ZSgi
T2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgveC8sICdsYXN0SW5k
ZXgnLCB7d3JpdGFibGU6ZmFsc2V9KSwgJ2xhc3RJbmRleCcsIHt2YWx1ZTowfSk7IHRydWUiKTsK
KworLy8gVHJ5aW5nIHRvIHJ1biBhIGdsb2JhbCByZWd1bGFyIGV4cHJlc3Npb24gc2hvdWxkIHRo
cm93LCBpZiBsYXN0SW5kZXggaXMgcmVhZC1vbmx5CitzaG91bGRCZSgiT2JqZWN0LmRlZmluZVBy
b3BlcnR5KC94LywgJ2xhc3RJbmRleCcsIHt3cml0YWJsZTpmYWxzZX0pLmV4ZWMoJycpIiwgJ251
bGwnKTsKK3Nob3VsZEJlKCJPYmplY3QuZGVmaW5lUHJvcGVydHkoL3gvLCAnbGFzdEluZGV4Jywg
e3dyaXRhYmxlOmZhbHNlfSkuZXhlYygneCcpIiwgJ1sieCJdJyk7CitzaG91bGRUaHJvdygiT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KC94L2csICdsYXN0SW5kZXgnLCB7d3JpdGFibGU6ZmFsc2V9KS5l
eGVjKCcnKSIpOworc2hvdWxkVGhyb3coIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSgveC9nLCAnbGFz
dEluZGV4Jywge3dyaXRhYmxlOmZhbHNlfSkuZXhlYygneCcpIik7CisKKy8vIFNob3VsZCBiZSBh
YmxlIHRvIGZyZWV6ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QuCitzaG91bGRCZVRydWUo
InZhciByZSA9IC94LzsgT2JqZWN0LmZyZWV6ZShyZSk7IE9iamVjdC5pc0Zyb3plbihyZSk7Iik7
Cg==
</data>
<flag name="review"
          id="131103"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="131119"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>