<?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>160443</bug_id>
          
          <creation_ts>2016-08-01 21:50:17 -0700</creation_ts>
          <short_desc>[JSC] Improve the memory locality of DFG Node&apos;s AbstractValues</short_desc>
          <delta_ts>2016-08-03 20:45:16 -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>New Bugs</component>
          <version>WebKit 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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216381</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-01 21:50:17 -0700</bug_when>
    <thetext>[JSC] Improve the memory locality of DFG Node&apos;s AbstractValues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216383</commentid>
    <comment_count>1</comment_count>
      <attachid>285075</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-01 22:01:55 -0700</bug_when>
    <thetext>Created attachment 285075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216386</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-01 22:03:59 -0700</bug_when>
    <thetext>Fast benchmarks with 20 runs. https://bugs.webkit.org/show_bug.cgi?id=160370 not applied.


                                               Baseline                  NoPacking                 Packing                Packing VS Baseline
SunSpider:
   3d-cube                                 4.6536+-0.0512     ?      4.7191+-0.0418            4.6983+-0.0291        ?
   3d-morph                                4.9866+-0.0291     ?      5.0245+-0.0826     ?      5.0260+-0.0673        ?
   3d-raytrace                             4.8657+-0.0226     ?      4.8984+-0.0382            4.8764+-0.0218        ?
   access-binary-trees                     1.9769+-0.0197     ?      1.9786+-0.0198     ?      1.9910+-0.0211        ?
   access-fannkuch                         6.1405+-0.1443     ^      5.7092+-0.0503     ?      5.7431+-0.0717        ^ definitely 1.0692x faster
   access-nbody                            2.3701+-0.0247     ?      2.4108+-0.0623            2.4038+-0.0361        ? might be 1.0142x slower
   access-nsieve                           2.9353+-0.0170     ?      2.9516+-0.0359     ?      2.9606+-0.0418        ?
   bitops-3bit-bits-in-byte                1.0751+-0.0124     ?      1.0799+-0.0142     ?      1.0864+-0.0153        ? might be 1.0105x slower
   bitops-bits-in-byte                     2.5868+-0.0139     ?      2.6015+-0.0220     ?      2.6016+-0.0253        ?
   bitops-bitwise-and                      1.9917+-0.0138     ?      2.0033+-0.0185            1.9954+-0.0202        ?
   bitops-nsieve-bits                      3.1241+-0.0634            3.0963+-0.0178            3.0912+-0.0124          might be 1.0106x faster
   controlflow-recursive                   2.3295+-0.0291            2.3194+-0.0165            2.3177+-0.0189        
   crypto-aes                              4.4244+-0.0248            4.4145+-0.0258     ?      4.4314+-0.0364        ?
   crypto-md5                              2.6643+-0.0166     ?      2.6792+-0.0159            2.6630+-0.0143        
   crypto-sha1                             2.7432+-0.0192     ?      2.7508+-0.0223            2.7333+-0.0227        
   date-format-tofte                       6.4480+-0.0404     ?      6.4797+-0.0568     ?      6.4828+-0.0583        ?
   date-format-xparb                       4.7469+-0.0385     ?      4.7700+-0.0562            4.7562+-0.0216        ?
   math-cordic                             2.8051+-0.1163            2.7456+-0.0144            2.7452+-0.0189          might be 1.0218x faster
   math-partial-sums                       4.0163+-0.0811            3.9938+-0.0322            3.9796+-0.0221        
   math-spectral-norm                      2.0590+-0.0242            2.0395+-0.0201     ?      2.0402+-0.0256        
   regexp-dna                              6.4929+-0.1547            6.3862+-0.0724            6.3714+-0.0804          might be 1.0191x faster
   string-base64                           4.0149+-0.0403     ?      4.0216+-0.0520            3.9967+-0.0320        
   string-fasta                            5.5171+-0.0717     ?      5.5301+-0.0221     ?      5.5722+-0.0666        ?
   string-tagcloud                         8.2997+-0.0436     ?      8.4353+-0.1311            8.3946+-0.1105        ? might be 1.0114x slower
   string-unpack-code                     18.2689+-0.3052           18.1604+-0.1514           18.0942+-0.1289        
   string-validate-input                   4.0771+-0.0282     ?      4.0942+-0.0244            4.0794+-0.0165        ?

   &lt;arithmetic&gt;                            4.4467+-0.0156            4.4344+-0.0108            4.4281+-0.0097          might be 1.0042x faster

                                               Conf#1                    Conf#2                    Conf#3                 Conf#3 v. Conf#1     
Kraken:
   ai-astar                                87.304+-0.459      ?      87.626+-0.604             87.563+-0.650         ?
   audio-beat-detection                    38.880+-0.096             38.858+-0.073      ?      38.925+-0.181         ?
   audio-dft                               98.224+-0.834      ?      98.612+-0.847             97.780+-0.606         
   audio-fft                               30.242+-0.043      ?      30.286+-0.090             30.261+-0.086         ?
   audio-oscillator                        47.770+-0.117      !      48.441+-0.147             48.363+-0.315         ! definitely 1.0124x slower
   imaging-darkroom                        61.236+-0.245      ?      61.334+-0.316             61.217+-0.102         
   imaging-desaturate                      45.033+-1.155             44.225+-0.287      ?      44.706+-0.494         
   imaging-gaussian-blur                   63.102+-1.443             61.888+-0.702             61.735+-0.866           might be 1.0221x faster
   json-parse-financial                    34.362+-0.423             33.975+-0.391      ?      34.308+-0.462         
   json-stringify-tinderbox                23.038+-0.134      !      23.607+-0.155      ^      22.496+-0.372         ^ definitely 1.0241x faster
   stanford-crypto-aes                     37.048+-0.287             36.878+-0.135             36.866+-0.150         
   stanford-crypto-ccm                     32.975+-0.810      ?      33.778+-0.920             33.745+-0.661         ? might be 1.0234x slower
   stanford-crypto-pbkdf2                  92.973+-0.412             92.844+-0.397      ?      93.084+-0.570         ?
   stanford-crypto-sha256-iterative        30.277+-0.087      ?      30.326+-0.220             30.235+-0.057         

   &lt;arithmetic&gt;                            51.605+-0.149      ?      51.620+-0.112             51.520+-0.104           might be 1.0016x faster

                                               Conf#1                    Conf#2                    Conf#3                 Conf#3 v. Conf#1     
Geomean of preferred means:
   &lt;scaled-result&gt;                         4.7902+-0.0112            4.7843+-0.0083            4.7763+-0.0072          might be 1.0029x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216387</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-01 22:05:39 -0700</bug_when>
    <thetext>Top benchmarks, 12 runs.
I doubt this truly affects Octane or ASM. The patch should only improve latency.

                                                  Conf#1                    Conf#2                    Conf#3                 Conf#3 v. Conf#1     
SunSpider:
   3d-cube                                    4.5283+-0.1014     ?      4.6555+-0.0992     ?      4.6592+-0.0829        ? might be 1.0289x slower
   3d-morph                                   5.0856+-0.2175            4.9622+-0.0236     ?      4.9952+-0.0475          might be 1.0181x faster
   3d-raytrace                                4.9069+-0.0752            4.8879+-0.0473            4.8830+-0.0449        
   access-binary-trees                        1.9808+-0.0331     ?      1.9852+-0.0214            1.9774+-0.0212        
   access-fannkuch                            6.0591+-0.2568            5.6775+-0.1289     ?      5.7488+-0.0521        ^ definitely 1.0540x faster
   access-nbody                               2.3775+-0.0704     ?      2.4133+-0.0721            2.3501+-0.0113          might be 1.0117x faster
   access-nsieve                              3.0211+-0.1542            2.9470+-0.0426            2.9079+-0.0161          might be 1.0389x faster
   bitops-3bit-bits-in-byte                   1.1107+-0.0374            1.0642+-0.0162     ?      1.0790+-0.0175          might be 1.0294x faster
   bitops-bits-in-byte                        2.5840+-0.0389     ?      2.6131+-0.0429            2.5571+-0.0242          might be 1.0105x faster
   bitops-bitwise-and                         1.9724+-0.0165     ?      2.0130+-0.0351     ^      1.9663+-0.0088        
   bitops-nsieve-bits                         3.1177+-0.0498            3.1062+-0.0290            3.0869+-0.0339        
   controlflow-recursive                      2.2982+-0.0174     ?      2.3464+-0.0560            2.3055+-0.0148        ?
   crypto-aes                                 4.4093+-0.0333            4.3720+-0.0149     ?      4.4218+-0.0566        ?
   crypto-md5                                 2.6692+-0.0296            2.6621+-0.0220     ?      2.6739+-0.0301        ?
   crypto-sha1                                2.7202+-0.0265     ?      2.7475+-0.0721            2.7304+-0.0306        ?
   date-format-tofte                          6.4128+-0.0736     ?      6.4836+-0.0598            6.4377+-0.0760        ?
   date-format-xparb                          4.7407+-0.0507     ?      4.7453+-0.0529     ?      4.8116+-0.0892        ? might be 1.0150x slower
   math-cordic                                2.7143+-0.0120     ?      2.7296+-0.0133     ?      2.7331+-0.0201        ?
   math-partial-sums                          3.9748+-0.0444            3.9590+-0.0413     ?      3.9781+-0.0399        ?
   math-spectral-norm                         2.1045+-0.0845            2.0234+-0.0346     ?      2.0276+-0.0424          might be 1.0380x faster
   regexp-dna                                 6.2487+-0.0942     ?      6.3608+-0.0866            6.3352+-0.0911        ? might be 1.0138x slower
   string-base64                              3.9914+-0.0415            3.9655+-0.0313     ?      4.0455+-0.1087        ? might be 1.0135x slower
   string-fasta                               5.4522+-0.0194     ?      5.4978+-0.0312     ?      5.5369+-0.0314        ! definitely 1.0155x slower
   string-tagcloud                            8.3369+-0.1944     ?      8.3548+-0.1254     ?      8.3549+-0.1651        ?
   string-unpack-code                        18.1269+-0.2051     ?     18.3100+-0.7568           18.1349+-0.2341        ?
   string-validate-input                      4.0817+-0.0515     ?      4.1097+-0.0774            4.0952+-0.0499        ?

   &lt;arithmetic&gt;                               4.4241+-0.0237            4.4228+-0.0276            4.4167+-0.0141          might be 1.0017x faster

                                                  Conf#1                    Conf#2                    Conf#3                 Conf#3 v. Conf#1     
Octane:
   encrypt                                   0.16172+-0.00215          0.16109+-0.00128    ?     0.16152+-0.00151       
   decrypt                                   2.71957+-0.03372          2.69736+-0.00951    ?     2.72519+-0.03534       ?
   deltablue                        x2       0.12925+-0.00105    ?     0.13364+-0.00841          0.13346+-0.00792       ? might be 1.0326x slower
   earley                                    0.28582+-0.00161    ?     0.28620+-0.00141          0.28566+-0.00157       
   boyer                                     4.98424+-0.06369    ?     4.99195+-0.05932    ?     5.00784+-0.01777       ?
   navier-stokes                    x2       4.92973+-0.01107    ?     4.93727+-0.01295    ?     4.94075+-0.01603       ?
   raytrace                         x2       0.79913+-0.00429    ?     0.79932+-0.00322          0.79918+-0.00384       ?
   richards                         x2       0.08366+-0.00112          0.08281+-0.00121    ?     0.08308+-0.00096       
   splay                            x2       0.33701+-0.00093          0.33677+-0.00194          0.33657+-0.00198       
   regexp                           x2      16.85333+-0.29356         16.59632+-0.52353    ?    17.19453+-0.48489       ? might be 1.0202x slower
   pdfjs                            x2      38.77752+-0.26053         38.50117+-0.27065    ?    38.79237+-0.24719       ?
   mandreel                         x2      42.75439+-0.28420    ?    42.78746+-0.22917         42.68880+-0.22971       
   gbemu                            x2      29.81598+-0.13736         29.67881+-0.13219    ?    29.74712+-0.08697       
   closure                                   0.48299+-0.00163    ?     0.48372+-0.00187          0.48132+-0.00214       
   jquery                                    6.46137+-0.03051          6.44973+-0.03612          6.44857+-0.02278       
   box2d                            x2       9.28965+-0.03613          9.25584+-0.06818          9.20210+-0.04473       ^ definitely 1.0095x faster
   zlib                             x2     369.83863+-6.00287        366.80492+-2.10013        357.38211+-9.99199         might be 1.0349x faster
   typescript                       x2     604.51898+-4.68085        601.46037+-7.09917        599.99866+-3.66573       

   &lt;geometric&gt;                               5.04284+-0.01109          5.03358+-0.02908    ?     5.03844+-0.01300         might be 1.0009x faster

                                                  Conf#1                    Conf#2                    Conf#3                 Conf#3 v. Conf#1     
Kraken:
   ai-astar                                   87.510+-1.135             87.323+-1.244             86.933+-1.437         
   audio-beat-detection                       38.795+-0.089      ?      38.803+-0.086      ?      38.955+-0.146         ?
   audio-dft                                  98.008+-1.442      ?      99.360+-1.819             97.978+-1.367         
   audio-fft                                  30.219+-0.036      ?      30.232+-0.057             30.217+-0.035         
   audio-oscillator                           47.718+-0.117      !      48.244+-0.383      ?      49.056+-0.959         ! definitely 1.0280x slower
   imaging-darkroom                           61.229+-0.140             61.168+-0.099             61.079+-0.118         
   imaging-desaturate                         43.766+-0.176      ?      44.381+-1.204             44.234+-1.271         ? might be 1.0107x slower
   imaging-gaussian-blur                      62.002+-2.629             61.873+-1.343             61.511+-0.835         
   json-parse-financial                       34.149+-0.528             34.027+-0.827      ?      34.664+-1.635         ? might be 1.0151x slower
   json-stringify-tinderbox                   23.238+-0.274      ?      23.801+-0.844             22.486+-0.501           might be 1.0335x faster
   stanford-crypto-aes                        36.782+-0.411      ?      37.145+-1.011      ?      37.468+-1.077         ? might be 1.0187x slower
   stanford-crypto-ccm                        33.039+-1.668      ?      34.222+-1.015             32.737+-1.606         
   stanford-crypto-pbkdf2                     92.784+-0.727             92.221+-0.190      ?      92.377+-0.257         
   stanford-crypto-sha256-iterative           30.210+-0.173      ?      30.377+-0.487             30.229+-0.106         ?

   &lt;arithmetic&gt;                               51.389+-0.231      ?      51.655+-0.257             51.423+-0.305         ? might be 1.0007x slower

                                                  Conf#1                    Conf#2                    Conf#3                 Conf#3 v. Conf#1     
AsmBench:
   bigfib.cpp                               428.4924+-1.7935          428.1734+-3.9477          427.0936+-1.5308        
   cray.c                                   388.9729+-2.6488          388.7526+-2.2565          388.6483+-1.6919        
   dry.c                                    473.8678+-57.7763         472.7513+-52.1405         427.1050+-3.3011          might be 1.1095x faster
   FloatMM.c                                738.9834+-22.5742         736.8981+-24.3549         729.6907+-19.7195         might be 1.0127x faster
   gcc-loops.cpp                           3608.5908+-14.2060        3600.5040+-11.9867    ?   3605.0666+-12.3677       
   n-body.c                                 800.9911+-4.6294          799.0552+-1.8147     ?    799.8246+-2.8250        
   Quicksort.c                              397.6229+-2.8334          396.7095+-3.1127     ?    399.3499+-3.4433        ?
   stepanov_container.cpp                  3313.9651+-21.8253        3294.3932+-19.0162    ?   3300.6651+-8.2700        
   Towers.c                                 265.6785+-0.9580          264.7243+-0.6980     ?    265.2861+-1.3943        

   &lt;geometric&gt;                              729.0649+-9.1576          727.3731+-8.0087          720.1744+-2.7211          might be 1.0123x faster

                                                  Conf#1                    Conf#2                    Conf#3                 Conf#3 v. Conf#1     
Geomean of preferred means:
   &lt;scaled-result&gt;                           30.2352+-0.0944     ?     30.2406+-0.1047           30.1294+-0.0573          might be 1.0035x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216718</commentid>
    <comment_count>4</comment_count>
      <attachid>285174</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-02 18:07:21 -0700</bug_when>
    <thetext>Created attachment 285174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216719</commentid>
    <comment_count>5</comment_count>
      <attachid>285174</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-02 18:08:28 -0700</bug_when>
    <thetext>Comment on attachment 285174
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp:60
&gt; +    m_abstractValues.resize(m_graph.maxNodeCount());

I had to move this here because ConstantFolding can add values after executing each block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216955</commentid>
    <comment_count>6</comment_count>
      <attachid>285174</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-03 09:46:14 -0700</bug_when>
    <thetext>Comment on attachment 285174
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        I moved the vector to Graph as a cache shared by every instanciation of

typo: /instanciation/instantiation/.

&gt; Source/JavaScriptCore/b3/B3SparseCollection.h:83
&gt; +        unsigned lastValueIndex = m_vector.size();

I suggest calling this endIndex.  lastValueIndex implies that it points to the last value, when it is meant to point just past the last value.

&gt; Source/JavaScriptCore/b3/B3SparseCollection.h:110
&gt; +        m_vector.resize(holeIndex);

I suggest changing this to be m_vector.resize(endIndex).

&gt;&gt; Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp:60
&gt;&gt; +    m_abstractValues.resize(m_graph.maxNodeCount());
&gt; 
&gt; I had to move this here because ConstantFolding can add values after executing each block.

Can you turn this into a comment here?  I would think that future readers of the code may want to know why this line is here, and at best may glance at the ChangeLog, but will very likely not see this comment in bugzilla.  The most likely place to look for an explanation of why this is done is in a comment right here in the code where it&apos;s relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217304</commentid>
    <comment_count>7</comment_count>
      <attachid>285298</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-03 20:16:37 -0700</bug_when>
    <thetext>Created attachment 285298
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217307</commentid>
    <comment_count>8</comment_count>
      <attachid>285298</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-03 20:45:12 -0700</bug_when>
    <thetext>Comment on attachment 285298
Patch for landing

Clearing flags on attachment: 285298

Committed r204112: &lt;http://trac.webkit.org/changeset/204112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217308</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-03 20:45:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285075</attachid>
            <date>2016-08-01 22:01:55 -0700</date>
            <delta_ts>2016-08-02 18:07:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160443-20160801220034.patch</filename>
            <type>text/plain</type>
            <size>7909</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGRmMmExYTVlNTM2MGFiOWVhMDdiMTBkNjg1ZTA0MmYzZjE3ZWQxLi44ZjY5ZTQyMTY0NTZjNzRk
YWEyODkyOTEyYmYzY2JlNTZmZTViYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNi0wOC0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIHRoZSBtZW1vcnkgbG9jYWxpdHkgb2YgREZH
IE5vZGUncyBBYnN0cmFjdFZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIEFic3RyYWN0SW50ZXJwcmV0ZXIgc3BlbmRzIGEgbG90IG9mIHRp
bWUgb24gbWVtb3J5IG9wZXJhdGlvbnMKKyAgICAgICAgZm9yIEFic3RyYWN0VmFsdWVzLiBUaGlz
IHBhdGNoIGF0dGVtcHRzIHRvIGltcHJvdmUgdGhlIHNpdHVhdGlvbgorICAgICAgICBieSBwdXR0
aW5nIHRoZSB2YWx1ZXMgY2xvc2VyIHRvZ2V0aGVyIGluIG1lbW9yeS4KKworICAgICAgICBGaXJz
dCwgQWJzdHJhY3RWYWx1ZSBpcyBtb3ZlZCBvdXQgb2YgREZHOjpOb2RlIGFuZCBpdCBrZXB0IGlu
CisgICAgICAgIGEgdmVjdG9yIGFkZHJlc3NlZCBieSBub2RlIGluZGljZXMuCisKKyAgICAgICAg
SSBpbml0aWFsbHkgbW92ZWQgdGhlbSB0byBJblBsYWNlQWJzdHJhY3RTdGF0ZSBidXQgSSBxdWlj
a2x5IGRpc2NvdmVyZWQKKyAgICAgICAgaW5pdGlhbGl6aW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHZl
Y3RvciB3YXMgY29zdGx5LgorICAgICAgICBJIG1vdmVkIHRoZSB2ZWN0b3IgdG8gR3JhcGggYXMg
YSBjYWNoZSBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2lhdGlvbiBvZgorICAgICAgICBJblBsYWNl
QWJzdHJhY3RTdGF0ZS4gSXQgaXMgbWFpbmx5IHRoZXJlIHRvIGF2b2lkIGNvbnN0cnVjdG9ycyBh
bmQgZGVzdHJ1Y3RvcnMKKyAgICAgICAgb2YgQWJzdHJhY3RWYWx1ZS4gVGhlIHBhdGNoIG9mIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzNzAKKyAgICAgICAgc2hv
dWxkIGFsc28gaGVscCBldmVudHVhbGx5LgorCisgICAgICAgIEkgaW5zdHJ1bWVudGVkIENGQSB0
byBmaW5kIGhvdyBwYWNrZWQgaXMgU3BhcnNlQ29sbGVjdGlvbi4KKyAgICAgICAgVGhlIGFuc3dl
ciBpcyBpdCBjYW4gYmUgdmVyeSBzcGFyc2UsIHdoaWNoIGlzIGJhZCBmb3IgQ0ZBLgorICAgICAg
ICBJIGFkZGVkIHBhY2tJbmRpY2VzKCkgdG8gcmVwYWNrIHRoZSBjb2xsZWN0aW9uIGJlZm9yZSBy
dW5uaW5nCisgICAgICAgIGxpdmVuZXNzIHNpbmNlIHRoYXQncyB3aGVyZSB3ZSBzdGFydCB1c2lu
ZyB0aGUgbWVtb3J5IGludGVuc2l2ZWx5LgorICAgICAgICBUaGlzIGlzIGEgbWVhc3VyYWJsZSBp
bXByb3ZlbWVudCBidXQgaXQgaW1wbGllcyB3ZSBjYW4gbm8gbG9uZ2VyCisgICAgICAgIGtlZXAg
aW5kaWNlcyBvbiBhIHNpZGUgY2hhbm5lbCBiZXR3ZWVuIHBoYXNlcyBzaW5jZSB0aGV5IG1heSBj
aGFuZ2UuCisKKyAgICAgICAgKiBiMy9CM1NwYXJzZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6QjM6OlNwYXJzZUNvbGxlY3Rpb246OnBhY2tJbmRpY2VzKToKKyAgICAgICAgKiBkZmcvREZH
R3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwYWNrTm9kZUluZGljZXMpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphYnN0
cmFjdFZhbHVlc0NhY2hlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpJblBsYWNlQWJz
dHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmZvck5vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorCiAy
MDE2LTA3LTI5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbSlNDXSBVc2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBERkcgYW5kIEFpciBM
aXZlbmVzcyBBbmFseXNpcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3BhcnNlQ29sbGVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29s
bGVjdGlvbi5oCmluZGV4IDBjMWY5YWM3ZTNjYzMyMTRmMjY1YzY5MDFjZTQxZDY4NWMxMmRlMDYu
LjBkMWUxYzJlNDQ1Yzg1ZTU3NDA5ZWUyYmM2ODc3MzE1ZTE3YzI1NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKQEAgLTc0LDYgKzc0LDM5IEBA
IHB1YmxpYzoKICAgICAgICAgbV92ZWN0b3JbdmFsdWUtPm1faW5kZXhdID0gbnVsbHB0cjsKICAg
ICB9CiAKKyAgICB2b2lkIHBhY2tJbmRpY2VzKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luZGV4
RnJlZUxpc3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2ln
bmVkIGhvbGVJbmRleCA9IDA7CisgICAgICAgIHVuc2lnbmVkIGxhc3RWYWx1ZUluZGV4ID0gbV92
ZWN0b3Iuc2l6ZSgpOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB3aGls
ZSAoaG9sZUluZGV4IDwgbGFzdFZhbHVlSW5kZXggJiYgbV92ZWN0b3JbaG9sZUluZGV4XSkKKyAg
ICAgICAgICAgICAgICArK2hvbGVJbmRleDsKKworICAgICAgICAgICAgaWYgKGhvbGVJbmRleCA9
PSBsYXN0VmFsdWVJbmRleCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEFT
U0VSVChob2xlSW5kZXggPCBtX3ZlY3Rvci5zaXplKCkpOworCisgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgLS1sYXN0VmFsdWVJbmRleDsKKyAgICAgICAgICAgIH0gd2hpbGUgKCFt
X3ZlY3RvcltsYXN0VmFsdWVJbmRleF0gJiYgbGFzdFZhbHVlSW5kZXggPiBob2xlSW5kZXgpOwor
CisgICAgICAgICAgICBpZiAoaG9sZUluZGV4ID09IGxhc3RWYWx1ZUluZGV4KQorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBhdXRvJiB2YWx1ZSA9IG1fdmVjdG9yW2xhc3RW
YWx1ZUluZGV4XTsKKyAgICAgICAgICAgIHZhbHVlLT5tX2luZGV4ID0gaG9sZUluZGV4OworICAg
ICAgICAgICAgbV92ZWN0b3JbaG9sZUluZGV4XSA9IFdURk1vdmUodmFsdWUpOworICAgICAgICAg
ICAgKytob2xlSW5kZXg7CisgICAgICAgIH0KKworICAgICAgICBtX2luZGV4RnJlZUxpc3QucmVz
aXplKDApOworICAgICAgICBtX3ZlY3Rvci5yZXNpemUoaG9sZUluZGV4KTsKKyAgICB9CisKICAg
ICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuaXNFbXB0eSgpOyB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDMyMGY5ZjFkMTM2NDk3
NWI3MGFjYjJkYWQ4OWNlMzc2ZDYwMTg0NWQuLmE1ZjUyMzE0ODU1MDIyYTc1NDlmMGQ1ZGJhMzk2
YzNjMTg0YWNiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC01
NzgsNiArNTc4LDExIEBAIHZvaWQgR3JhcGg6OmRlbGV0ZU5vZGUoTm9kZSogbm9kZSkKICAgICBt
X25vZGVzLnJlbW92ZShub2RlKTsKIH0KIAordm9pZCBHcmFwaDo6cGFja05vZGVJbmRpY2VzKCkK
K3sKKyAgICBtX25vZGVzLnBhY2tJbmRpY2VzKCk7Cit9CisKIHZvaWQgR3JhcGg6OmRldGhyZWFk
KCkKIHsKICAgICBpZiAobV9mb3JtID09IExvYWRTdG9yZSB8fCBtX2Zvcm0gPT0gU1NBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDA3NTM1OTJhNmYyODM3N2M4NWFiNTQ5
YjEyOWNkZmUyMWY1YjM2OWMuLmMxMzdlN2YyZjMyNWEyY2Q1OTk2YTU5ODQ2NWY1NzJlMTg1ZDY1
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTE5Nyw2ICsxOTcsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVOb2RlKE5vZGUqKTsKICAgICB1bnNpZ25lZCBtYXhO
b2RlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX25vZGVzLnNpemUoKTsgfQogICAgIE5vZGUqIG5v
ZGVBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9ub2Rlc1tpbmRleF07IH0KKyAg
ICB2b2lkIHBhY2tOb2RlSW5kaWNlcygpOworCisgICAgVmVjdG9yPEFic3RyYWN0VmFsdWU+JiBh
YnN0cmFjdFZhbHVlc0NhY2hlKCkgeyByZXR1cm4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOyB9CiAK
ICAgICB2b2lkIGRldGhyZWFkKCk7CiAgICAgCkBAIC05NTQsNiArOTU3LDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICBCMzo6U3BhcnNlQ29sbGVjdGlvbjxOb2RlPiBtX25vZGVzOworICAgIFZl
Y3RvcjxBYnN0cmFjdFZhbHVlPiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiB9OwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCmluZGV4IDU0MmY4OTY4YWU5ZThmMGYyOGI4YTZk
YjRkYTljNzkxZGVhNWRhOTEuLjY4ODNiYzM5MzI2MDYwOWUzZjJmOGViODJiODUyNTI4ZTU5YTg1
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGUuY3BwCkBAIC00MSw5ICs0MSwxMSBAQCBzdGF0aWMgY29uc3QgYm9vbCB2ZXJi
b3NlID0gZmFsc2U7CiAKIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpJblBsYWNlQWJzdHJhY3RTdGF0
ZShHcmFwaCYgZ3JhcGgpCiAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgICwgbV9hYnN0cmFjdFZh
bHVlcyhncmFwaC5hYnN0cmFjdFZhbHVlc0NhY2hlKCkpCiAgICAgLCBtX3ZhcmlhYmxlcyhtX2dy
YXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGdyYXBoLm1fbG9jYWxWYXJzKQogICAg
ICwgbV9ibG9jaygwKQogeworICAgIG1fYWJzdHJhY3RWYWx1ZXMucmVzaXplKG1fZ3JhcGgubWF4
Tm9kZUNvdW50KCkpOwogfQogCiBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6fkluUGxhY2VBYnN0cmFj
dFN0YXRlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmgKaW5kZXggNzk0YWQ4YTdmZWJiYmU3N2VlZWU4ODA0ZWMwOTQwYjg1
ZjJjMzc1Yy4uMDYwYWI3OTlmZWJhMzY0ZWIzNWFjZWQzOGU5ZDM3MDkzNjY5NTg4OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
aApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgZm9y
Tm9kZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5vZGUtPnZhbHVlOworICAg
ICAgICByZXR1cm4gbV9hYnN0cmFjdFZhbHVlc1tub2RlLT5pbmRleCgpXTsKICAgICB9CiAgICAg
CiAgICAgQWJzdHJhY3RWYWx1ZSYgZm9yTm9kZShFZGdlIGVkZ2UpCkBAIC0xMzIsNyArMTMyLDgg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhB
YnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3RWYWx1ZSYgc291cmNlLCBOb2RlKiBk
ZXN0aW5hdGlvbk5vZGUsIE5vZGUqIHNvdXJjZU5vZGUpOwogICAgIAogICAgIEdyYXBoJiBtX2dy
YXBoOwotICAgIAorCisgICAgVmVjdG9yPEFic3RyYWN0VmFsdWU+JiBtX2Fic3RyYWN0VmFsdWVz
OwogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+IG1fdmFyaWFibGVzOwogICAgIEJhc2ljQmxv
Y2sqIG1fYmxvY2s7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggZDJiZGY4MGNkYzBmZjZkNTAyOWNj
OWRhNjM0MGIzZTZmZjBlNjIzYy4uMjMwNDdlNmFmMDUwZjI4OGQ3OGU4ZWIyZTUyZWI1YmRhNTlh
Yjk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5l
c3NBbmFseXNpc1BoYXNlLmNwcApAQCAtMTk1LDYgKzE5NSw4IEBAIHByaXZhdGU6CiAKIGJvb2wg
cGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQogeworICAgIGdyYXBoLnBhY2tO
b2RlSW5kaWNlcygpOworCiAgICAgcmV0dXJuIHJ1blBoYXNlPExpdmVuZXNzQW5hbHlzaXNQaGFz
ZT4oZ3JhcGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDczNzFj
Y2M1ODQxMzljZWIwNTg3ZTcwYjRkOTliMTg5MWI4OWFiZjMuLmQzOGU4ZTdkYTk0YmUxZmQ4ZmI4
ZTRhY2RkZmVlODNkN2Q1YjhlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0yMzYyLDEwICsyMzYyLDYgQEAgcHJpdmF0ZToKICAgICB1aW50cHRyX3QgbV9vcEluZm87CiAg
ICAgdWludHB0cl90IG1fb3BJbmZvMjsKIAotcHVibGljOgotICAgIC8vIEZpZWxkcyB1c2VkIGJ5
IHZhcmlvdXMgYW5hbHlzZXMuCi0gICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZTsKLSAgICAKICAgICAv
LyBNaXNjZWxsYW5lb3VzIGRhdGEgdGhhdCBpcyB1c3VhbGx5IG1lYW5pbmdsZXNzLCBidXQgY2Fu
IGhvbGQgc29tZSBhbmFseXNpcyByZXN1bHRzCiAgICAgLy8gaWYgeW91IGFzayByaWdodC4gRm9y
IGV4YW1wbGUsIGlmIHlvdSBkbyBHcmFwaDo6aW5pdGlhbGl6ZU5vZGVPd25lcnMoKSwgTm9kZTo6
b3duZXIKICAgICAvLyB3aWxsIHRlbGwgeW91IHdoaWNoIGJhc2ljIGJsb2NrIGEgbm9kZSBiZWxv
bmdzIHRvLiBZb3UgY2Fubm90IHJlbHkgb24gdGhpcyBwZXJzaXN0aW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285174</attachid>
            <date>2016-08-02 18:07:21 -0700</date>
            <delta_ts>2016-08-03 20:16:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160443-20160802180559.patch</filename>
            <type>text/plain</type>
            <size>8497</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZGRmMmExYTVlNTM2MGFiOWVhMDdiMTBkNjg1ZTA0MmYzZjE3ZWQxLi44ZjY5ZTQyMTY0NTZjNzRk
YWEyODkyOTEyYmYzY2JlNTZmZTViYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNi0wOC0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBJbXByb3ZlIHRoZSBtZW1vcnkgbG9jYWxpdHkgb2YgREZH
IE5vZGUncyBBYnN0cmFjdFZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwNDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIEFic3RyYWN0SW50ZXJwcmV0ZXIgc3BlbmRzIGEgbG90IG9mIHRp
bWUgb24gbWVtb3J5IG9wZXJhdGlvbnMKKyAgICAgICAgZm9yIEFic3RyYWN0VmFsdWVzLiBUaGlz
IHBhdGNoIGF0dGVtcHRzIHRvIGltcHJvdmUgdGhlIHNpdHVhdGlvbgorICAgICAgICBieSBwdXR0
aW5nIHRoZSB2YWx1ZXMgY2xvc2VyIHRvZ2V0aGVyIGluIG1lbW9yeS4KKworICAgICAgICBGaXJz
dCwgQWJzdHJhY3RWYWx1ZSBpcyBtb3ZlZCBvdXQgb2YgREZHOjpOb2RlIGFuZCBpdCBrZXB0IGlu
CisgICAgICAgIGEgdmVjdG9yIGFkZHJlc3NlZCBieSBub2RlIGluZGljZXMuCisKKyAgICAgICAg
SSBpbml0aWFsbHkgbW92ZWQgdGhlbSB0byBJblBsYWNlQWJzdHJhY3RTdGF0ZSBidXQgSSBxdWlj
a2x5IGRpc2NvdmVyZWQKKyAgICAgICAgaW5pdGlhbGl6aW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHZl
Y3RvciB3YXMgY29zdGx5LgorICAgICAgICBJIG1vdmVkIHRoZSB2ZWN0b3IgdG8gR3JhcGggYXMg
YSBjYWNoZSBzaGFyZWQgYnkgZXZlcnkgaW5zdGFuY2lhdGlvbiBvZgorICAgICAgICBJblBsYWNl
QWJzdHJhY3RTdGF0ZS4gSXQgaXMgbWFpbmx5IHRoZXJlIHRvIGF2b2lkIGNvbnN0cnVjdG9ycyBh
bmQgZGVzdHJ1Y3RvcnMKKyAgICAgICAgb2YgQWJzdHJhY3RWYWx1ZS4gVGhlIHBhdGNoIG9mIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzNzAKKyAgICAgICAgc2hv
dWxkIGFsc28gaGVscCBldmVudHVhbGx5LgorCisgICAgICAgIEkgaW5zdHJ1bWVudGVkIENGQSB0
byBmaW5kIGhvdyBwYWNrZWQgaXMgU3BhcnNlQ29sbGVjdGlvbi4KKyAgICAgICAgVGhlIGFuc3dl
ciBpcyBpdCBjYW4gYmUgdmVyeSBzcGFyc2UsIHdoaWNoIGlzIGJhZCBmb3IgQ0ZBLgorICAgICAg
ICBJIGFkZGVkIHBhY2tJbmRpY2VzKCkgdG8gcmVwYWNrIHRoZSBjb2xsZWN0aW9uIGJlZm9yZSBy
dW5uaW5nCisgICAgICAgIGxpdmVuZXNzIHNpbmNlIHRoYXQncyB3aGVyZSB3ZSBzdGFydCB1c2lu
ZyB0aGUgbWVtb3J5IGludGVuc2l2ZWx5LgorICAgICAgICBUaGlzIGlzIGEgbWVhc3VyYWJsZSBp
bXByb3ZlbWVudCBidXQgaXQgaW1wbGllcyB3ZSBjYW4gbm8gbG9uZ2VyCisgICAgICAgIGtlZXAg
aW5kaWNlcyBvbiBhIHNpZGUgY2hhbm5lbCBiZXR3ZWVuIHBoYXNlcyBzaW5jZSB0aGV5IG1heSBj
aGFuZ2UuCisKKyAgICAgICAgKiBiMy9CM1NwYXJzZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6QjM6OlNwYXJzZUNvbGxlY3Rpb246OnBhY2tJbmRpY2VzKToKKyAgICAgICAgKiBkZmcvREZH
R3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwYWNrTm9kZUluZGljZXMpOgor
ICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphYnN0
cmFjdFZhbHVlc0NhY2hlKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0YXRlOjpJblBsYWNlQWJz
dHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmZvck5vZGUpOgorICAgICAg
ICAqIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OnBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorCiAy
MDE2LTA3LTI5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbSlNDXSBVc2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBERkcgYW5kIEFpciBM
aXZlbmVzcyBBbmFseXNpcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3BhcnNlQ29sbGVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29s
bGVjdGlvbi5oCmluZGV4IDBjMWY5YWM3ZTNjYzMyMTRmMjY1YzY5MDFjZTQxZDY4NWMxMmRlMDYu
LjdiYTc2MDFiMDE4MDMzMDZkN2Y1ZmFkZGZiY2NmZGMxNmY3Y2E4MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgKQEAgLTc0LDYgKzc0LDQyIEBA
IHB1YmxpYzoKICAgICAgICAgbV92ZWN0b3JbdmFsdWUtPm1faW5kZXhdID0gbnVsbHB0cjsKICAg
ICB9CiAKKyAgICB2b2lkIHBhY2tJbmRpY2VzKCkKKyAgICB7CisgICAgICAgIGlmIChtX2luZGV4
RnJlZUxpc3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2ln
bmVkIGhvbGVJbmRleCA9IDA7CisgICAgICAgIHVuc2lnbmVkIGxhc3RWYWx1ZUluZGV4ID0gbV92
ZWN0b3Iuc2l6ZSgpOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB3aGls
ZSAoaG9sZUluZGV4IDwgbGFzdFZhbHVlSW5kZXggJiYgbV92ZWN0b3JbaG9sZUluZGV4XSkKKyAg
ICAgICAgICAgICAgICArK2hvbGVJbmRleDsKKworICAgICAgICAgICAgaWYgKGhvbGVJbmRleCA9
PSBsYXN0VmFsdWVJbmRleCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEFT
U0VSVChob2xlSW5kZXggPCBtX3ZlY3Rvci5zaXplKCkpOworICAgICAgICAgICAgQVNTRVJUKCFt
X3ZlY3Rvcltob2xlSW5kZXhdKTsKKworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAg
IC0tbGFzdFZhbHVlSW5kZXg7CisgICAgICAgICAgICB9IHdoaWxlICghbV92ZWN0b3JbbGFzdFZh
bHVlSW5kZXhdICYmIGxhc3RWYWx1ZUluZGV4ID4gaG9sZUluZGV4KTsKKworICAgICAgICAgICAg
aWYgKGhvbGVJbmRleCA9PSBsYXN0VmFsdWVJbmRleCkKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIEFTU0VSVChsYXN0VmFsdWVJbmRleCA+IGhvbGVJbmRleCk7CisgICAgICAg
ICAgICBBU1NFUlQobV92ZWN0b3JbbGFzdFZhbHVlSW5kZXhdKTsKKworICAgICAgICAgICAgYXV0
byYgdmFsdWUgPSBtX3ZlY3RvcltsYXN0VmFsdWVJbmRleF07CisgICAgICAgICAgICB2YWx1ZS0+
bV9pbmRleCA9IGhvbGVJbmRleDsKKyAgICAgICAgICAgIG1fdmVjdG9yW2hvbGVJbmRleF0gPSBX
VEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgICAgICsraG9sZUluZGV4OworICAgICAgICB9CisKKyAg
ICAgICAgbV9pbmRleEZyZWVMaXN0LnJlc2l6ZSgwKTsKKyAgICAgICAgbV92ZWN0b3IucmVzaXpl
KGhvbGVJbmRleCk7CisgICAgfQorCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmVjdG9yLnNpemUoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmVjdG9yLmlzRW1wdHkoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAppbmRleCAzMjBmOWYxZDEzNjQ5NzViNzBhY2IyZGFkODljZTM3NmQ2MDE4NDVkLi5hNWY1
MjMxNDg1NTAyMmE3NTQ5ZjBkNWRiYTM5NmMzYzE4NGFjYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNTc4LDYgKzU3OCwxMSBAQCB2b2lkIEdyYXBoOjpkZWxl
dGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgbV9ub2Rlcy5yZW1vdmUobm9kZSk7CiB9CiAKK3ZvaWQg
R3JhcGg6OnBhY2tOb2RlSW5kaWNlcygpCit7CisgICAgbV9ub2Rlcy5wYWNrSW5kaWNlcygpOwor
fQorCiB2b2lkIEdyYXBoOjpkZXRocmVhZCgpCiB7CiAgICAgaWYgKG1fZm9ybSA9PSBMb2FkU3Rv
cmUgfHwgbV9mb3JtID09IFNTQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRl
eCAwNzUzNTkyYTZmMjgzNzdjODVhYjU0OWIxMjljZGZlMjFmNWIzNjljLi5jMTM3ZTdmMmYzMjVh
MmNkNTk5NmE1OTg0NjVmNTcyZTE4NWQ2NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCkBAIC0xOTcsNiArMTk3LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlTm9kZShO
b2RlKik7CiAgICAgdW5zaWduZWQgbWF4Tm9kZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
cy5zaXplKCk7IH0KICAgICBOb2RlKiBub2RlQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZXNbaW5kZXhdOyB9CisgICAgdm9pZCBwYWNrTm9kZUluZGljZXMoKTsKKworICAg
IFZlY3RvcjxBYnN0cmFjdFZhbHVlPiYgYWJzdHJhY3RWYWx1ZXNDYWNoZSgpIHsgcmV0dXJuIG1f
YWJzdHJhY3RWYWx1ZXNDYWNoZTsgfQogCiAgICAgdm9pZCBkZXRocmVhZCgpOwogICAgIApAQCAt
OTU0LDYgKzk1Nyw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgQjM6OlNwYXJzZUNvbGxlY3Rp
b248Tm9kZT4gbV9ub2RlczsKKyAgICBWZWN0b3I8QWJzdHJhY3RWYWx1ZT4gbV9hYnN0cmFjdFZh
bHVlc0NhY2hlOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAppbmRl
eCA1NDJmODk2OGFlOWU4ZjBmMjhiOGE2ZGI0ZGE5Yzc5MWRlYTVkYTkxLi4yNDViZTdlM2E1YjM4
ZTk4ZmI3OGEzY2YzODRkNWQ3NGNlNjY4OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcApAQCAtNDEsNiArNDEsNyBA
QCBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjpJblBsYWNlQWJzdHJhY3RTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgOiBtX2dyYXBoKGdy
YXBoKQorICAgICwgbV9hYnN0cmFjdFZhbHVlcyhncmFwaC5hYnN0cmFjdFZhbHVlc0NhY2hlKCkp
CiAgICAgLCBtX3ZhcmlhYmxlcyhtX2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCks
IGdyYXBoLm1fbG9jYWxWYXJzKQogICAgICwgbV9ibG9jaygwKQogewpAQCAtNTUsNiArNTYsOCBA
QCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2soQmFzaWNCbG9jayog
YmFzaWNCbG9jaykKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkp
OwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMo
KSA9PSBiYXNpY0Jsb2NrLT52YWx1ZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgQVNT
RVJUKGJhc2ljQmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2lj
QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpKTsKKworICAgIG1fYWJzdHJh
Y3RWYWx1ZXMucmVzaXplKG1fZ3JhcGgubWF4Tm9kZUNvdW50KCkpOwogICAgIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmFzaWNCbG9jay0+c2l6ZSgpOyBpKyspCiAgICAgICAgIGZvck5v
ZGUoYmFzaWNCbG9jay0+YXQoaSkpLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKaW5kZXggNzk0YWQ4YTdmZWJiYmU3
N2VlZWU4ODA0ZWMwOTQwYjg1ZjJjMzc1Yy4uMDYwYWI3OTlmZWJhMzY0ZWIzNWFjZWQzOGU5ZDM3
MDkzNjY5NTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
QWJzdHJhY3RWYWx1ZSYgZm9yTm9kZShOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG5vZGUtPnZhbHVlOworICAgICAgICByZXR1cm4gbV9hYnN0cmFjdFZhbHVlc1tub2RlLT5pbmRl
eCgpXTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgZm9yTm9kZShFZGdlIGVkZ2Up
CkBAIC0xMzIsNyArMTMyLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBtZXJnZVZhcmlh
YmxlQmV0d2VlbkJsb2NrcyhBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3RWYWx1
ZSYgc291cmNlLCBOb2RlKiBkZXN0aW5hdGlvbk5vZGUsIE5vZGUqIHNvdXJjZU5vZGUpOwogICAg
IAogICAgIEdyYXBoJiBtX2dyYXBoOwotICAgIAorCisgICAgVmVjdG9yPEFic3RyYWN0VmFsdWU+
JiBtX2Fic3RyYWN0VmFsdWVzOwogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+IG1fdmFyaWFi
bGVzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggZDJi
ZGY4MGNkYzBmZjZkNTAyOWNjOWRhNjM0MGIzZTZmZjBlNjIzYy4uMjMwNDdlNmFmMDUwZjI4OGQ3
OGU4ZWIyZTUyZWI1YmRhNTlhYjk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcApAQCAtMTk1LDYgKzE5NSw4IEBA
IHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQog
eworICAgIGdyYXBoLnBhY2tOb2RlSW5kaWNlcygpOworCiAgICAgcmV0dXJuIHJ1blBoYXNlPExp
dmVuZXNzQW5hbHlzaXNQaGFzZT4oZ3JhcGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IDczNzFjY2M1ODQxMzljZWIwNTg3ZTcwYjRkOTliMTg5MWI4OWFiZjMuLmQz
OGU4ZTdkYTk0YmUxZmQ4ZmI4ZTRhY2RkZmVlODNkN2Q1YjhlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC0yMzYyLDEwICsyMzYyLDYgQEAgcHJpdmF0ZToKICAgICB1aW50
cHRyX3QgbV9vcEluZm87CiAgICAgdWludHB0cl90IG1fb3BJbmZvMjsKIAotcHVibGljOgotICAg
IC8vIEZpZWxkcyB1c2VkIGJ5IHZhcmlvdXMgYW5hbHlzZXMuCi0gICAgQWJzdHJhY3RWYWx1ZSB2
YWx1ZTsKLSAgICAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGRhdGEgdGhhdCBpcyB1c3VhbGx5IG1l
YW5pbmdsZXNzLCBidXQgY2FuIGhvbGQgc29tZSBhbmFseXNpcyByZXN1bHRzCiAgICAgLy8gaWYg
eW91IGFzayByaWdodC4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkbyBHcmFwaDo6aW5pdGlhbGl6ZU5v
ZGVPd25lcnMoKSwgTm9kZTo6b3duZXIKICAgICAvLyB3aWxsIHRlbGwgeW91IHdoaWNoIGJhc2lj
IGJsb2NrIGEgbm9kZSBiZWxvbmdzIHRvLiBZb3UgY2Fubm90IHJlbHkgb24gdGhpcyBwZXJzaXN0
aW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285298</attachid>
            <date>2016-08-03 20:16:37 -0700</date>
            <delta_ts>2016-08-03 20:45:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-160443-20160803201513.patch</filename>
            <type>text/plain</type>
            <size>8242</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA0MTExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE2LTA4LTAzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIEltcHJvdmUgdGhlIG1lbW9yeSBsb2NhbGl0eSBvZiBERkcgTm9kZSdzIEFi
c3RyYWN0VmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjA0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBU
aGUgQWJzdHJhY3RJbnRlcnByZXRlciBzcGVuZHMgYSBsb3Qgb2YgdGltZSBvbiBtZW1vcnkgb3Bl
cmF0aW9ucworICAgICAgICBmb3IgQWJzdHJhY3RWYWx1ZXMuIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gaW1wcm92ZSB0aGUgc2l0dWF0aW9uCisgICAgICAgIGJ5IHB1dHRpbmcgdGhlIHZhbHVlcyBj
bG9zZXIgdG9nZXRoZXIgaW4gbWVtb3J5LgorCisgICAgICAgIEZpcnN0LCBBYnN0cmFjdFZhbHVl
IGlzIG1vdmVkIG91dCBvZiBERkc6Ok5vZGUgYW5kIGl0IGtlcHQgaW4KKyAgICAgICAgYSB2ZWN0
b3IgYWRkcmVzc2VkIGJ5IG5vZGUgaW5kaWNlcy4KKworICAgICAgICBJIGluaXRpYWxseSBtb3Zl
ZCB0aGVtIHRvIEluUGxhY2VBYnN0cmFjdFN0YXRlIGJ1dCBJIHF1aWNrbHkgZGlzY292ZXJlZAor
ICAgICAgICBpbml0aWFsaXppbmcgdGhlIHZhbHVlcyBpbiB0aGUgdmVjdG9yIHdhcyBjb3N0bHku
CisgICAgICAgIEkgbW92ZWQgdGhlIHZlY3RvciB0byBHcmFwaCBhcyBhIGNhY2hlIHNoYXJlZCBi
eSBldmVyeSBpbnN0YW50aWF0aW9uIG9mCisgICAgICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlLiBJ
dCBpcyBtYWlubHkgdGhlcmUgdG8gYXZvaWQgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycwor
ICAgICAgICBvZiBBYnN0cmFjdFZhbHVlLiBUaGUgcGF0Y2ggb2YgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDM3MAorICAgICAgICBzaG91bGQgYWxzbyBoZWxwIGV2
ZW50dWFsbHkuCisKKyAgICAgICAgSSBpbnN0cnVtZW50ZWQgQ0ZBIHRvIGZpbmQgaG93IHBhY2tl
ZCBpcyBTcGFyc2VDb2xsZWN0aW9uLgorICAgICAgICBUaGUgYW5zd2VyIGlzIGl0IGNhbiBiZSB2
ZXJ5IHNwYXJzZSwgd2hpY2ggaXMgYmFkIGZvciBDRkEuCisgICAgICAgIEkgYWRkZWQgcGFja0lu
ZGljZXMoKSB0byByZXBhY2sgdGhlIGNvbGxlY3Rpb24gYmVmb3JlIHJ1bm5pbmcKKyAgICAgICAg
bGl2ZW5lc3Mgc2luY2UgdGhhdCdzIHdoZXJlIHdlIHN0YXJ0IHVzaW5nIHRoZSBtZW1vcnkgaW50
ZW5zaXZlbHkuCisgICAgICAgIFRoaXMgaXMgYSBtZWFzdXJhYmxlIGltcHJvdmVtZW50IGJ1dCBp
dCBpbXBsaWVzIHdlIGNhbiBubyBsb25nZXIKKyAgICAgICAga2VlcCBpbmRpY2VzIG9uIGEgc2lk
ZSBjaGFubmVsIGJldHdlZW4gcGhhc2VzIHNpbmNlIHRoZXkgbWF5IGNoYW5nZS4KKworICAgICAg
ICAqIGIzL0IzU3BhcnNlQ29sbGVjdGlvbi5oOgorICAgICAgICAoSlNDOjpCMzo6U3BhcnNlQ29s
bGVjdGlvbjo6cGFja0luZGljZXMpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6R3JhcGg6OnBhY2tOb2RlSW5kaWNlcyk6CisgICAgICAgICogZGZnL0RG
R0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFic3RyYWN0VmFsdWVzQ2FjaGUp
OgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OkluUGxhY2VBYnN0cmFjdFN0YXRlKToKKyAg
ICAgICAgKiBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6Zm9yTm9kZSk6CisgICAgICAgICogZGZnL0RGR0xpdmVu
ZXNzQW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUxpdmVuZXNz
QW5hbHlzaXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisKIDIwMTYtMDgtMDMgIENhaXRs
aW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBDbGFyaWZ5IFN5bnRheEVy
cm9ycyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaAkocmV2aXNpb24gMjA0MTExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw2ICs3NCw0MiBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmVjdG9yW3ZhbHVlLT5t
X2luZGV4XSA9IG51bGxwdHI7CiAgICAgfQogCisgICAgdm9pZCBwYWNrSW5kaWNlcygpCisgICAg
eworICAgICAgICBpZiAobV9pbmRleEZyZWVMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB1bnNpZ25lZCBob2xlSW5kZXggPSAwOworICAgICAgICB1bnNpZ25l
ZCBlbmRJbmRleCA9IG1fdmVjdG9yLnNpemUoKTsKKworICAgICAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICAgICAgd2hpbGUgKGhvbGVJbmRleCA8IGVuZEluZGV4ICYmIG1fdmVjdG9yW2hvbGVJ
bmRleF0pCisgICAgICAgICAgICAgICAgKytob2xlSW5kZXg7CisKKyAgICAgICAgICAgIGlmICho
b2xlSW5kZXggPT0gZW5kSW5kZXgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBBU1NFUlQoaG9sZUluZGV4IDwgbV92ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VS
VCghbV92ZWN0b3JbaG9sZUluZGV4XSk7CisKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAg
ICAgICAtLWVuZEluZGV4OworICAgICAgICAgICAgfSB3aGlsZSAoIW1fdmVjdG9yW2VuZEluZGV4
XSAmJiBlbmRJbmRleCA+IGhvbGVJbmRleCk7CisKKyAgICAgICAgICAgIGlmIChob2xlSW5kZXgg
PT0gZW5kSW5kZXgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBBU1NFUlQo
ZW5kSW5kZXggPiBob2xlSW5kZXgpOworICAgICAgICAgICAgQVNTRVJUKG1fdmVjdG9yW2VuZElu
ZGV4XSk7CisKKyAgICAgICAgICAgIGF1dG8mIHZhbHVlID0gbV92ZWN0b3JbZW5kSW5kZXhdOwor
ICAgICAgICAgICAgdmFsdWUtPm1faW5kZXggPSBob2xlSW5kZXg7CisgICAgICAgICAgICBtX3Zl
Y3Rvcltob2xlSW5kZXhdID0gV1RGTW92ZSh2YWx1ZSk7CisgICAgICAgICAgICArK2hvbGVJbmRl
eDsKKyAgICAgICAgfQorCisgICAgICAgIG1faW5kZXhGcmVlTGlzdC5yZXNpemUoMCk7CisgICAg
ICAgIG1fdmVjdG9yLnJlc2l6ZShlbmRJbmRleCk7CisgICAgfQorCiAgICAgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmlzRW1wdHkoKTsgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIwNDExMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nzgs
NiArNTc4LDExIEBAIHZvaWQgR3JhcGg6OmRlbGV0ZU5vZGUoTm9kZSogbm9kZSkKICAgICBtX25v
ZGVzLnJlbW92ZShub2RlKTsKIH0KIAordm9pZCBHcmFwaDo6cGFja05vZGVJbmRpY2VzKCkKK3sK
KyAgICBtX25vZGVzLnBhY2tJbmRpY2VzKCk7Cit9CisKIHZvaWQgR3JhcGg6OmRldGhyZWFkKCkK
IHsKICAgICBpZiAobV9mb3JtID09IExvYWRTdG9yZSB8fCBtX2Zvcm0gPT0gU1NBKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjA0MTExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcs
NiArMTk3LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlTm9kZShOb2RlKik7CiAgICAgdW5z
aWduZWQgbWF4Tm9kZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2Rlcy5zaXplKCk7IH0KICAg
ICBOb2RlKiBub2RlQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXNbaW5k
ZXhdOyB9CisgICAgdm9pZCBwYWNrTm9kZUluZGljZXMoKTsKKworICAgIFZlY3RvcjxBYnN0cmFj
dFZhbHVlPiYgYWJzdHJhY3RWYWx1ZXNDYWNoZSgpIHsgcmV0dXJuIG1fYWJzdHJhY3RWYWx1ZXND
YWNoZTsgfQogCiAgICAgdm9pZCBkZXRocmVhZCgpOwogICAgIApAQCAtOTU0LDYgKzk1Nyw3IEBA
IHByaXZhdGU6CiAgICAgfQogCiAgICAgQjM6OlNwYXJzZUNvbGxlY3Rpb248Tm9kZT4gbV9ub2Rl
czsKKyAgICBWZWN0b3I8QWJzdHJhY3RWYWx1ZT4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogfTsK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIw
NDExMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIHN0YXRpYyBjb25zdCBib29s
IHZlcmJvc2UgPSBmYWxzZTsKIAogSW5QbGFjZUFic3RyYWN0U3RhdGU6OkluUGxhY2VBYnN0cmFj
dFN0YXRlKEdyYXBoJiBncmFwaCkKICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgLCBtX2Fic3Ry
YWN0VmFsdWVzKGdyYXBoLmFic3RyYWN0VmFsdWVzQ2FjaGUoKSkKICAgICAsIG1fdmFyaWFibGVz
KG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgZ3JhcGgubV9sb2NhbFZhcnMp
CiAgICAgLCBtX2Jsb2NrKDApCiB7CkBAIC01NSw2ICs1NiwxMSBAQCB2b2lkIEluUGxhY2VBYnN0
cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvCiAgICAgQVNTRVJUKGJhc2ljQmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpID09IGJhc2ljQmxvY2stPnZhbHVlc0F0SGVhZC5udW1i
ZXJPZkxvY2FscygpKTsKICAgICBBU1NFUlQoYmFzaWNCbG9jay0+dmFyaWFibGVzQXRUYWlsLm51
bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFsdWVzQXRUYWlsLm51bWJlck9mTG9jYWxz
KCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisK
KyAgICAvLyBDZXJ0YWluIHBoYXNlcyBpbnNlcnQgbm9kZXMgaW4gYSBibG9jayBhZnRlciBydW5u
aW5nIHRocm91Z2ggaXQuCisgICAgLy8gV2UgY2Fubm90IHJlc2VydmUgdGhlIHNwYWNlIGZvciBB
YnN0cmFjdFZhbHVlcyB3aGVuIGluaXRpYWxpemluZyBBYnN0cmFjdFN0YXRlIGJlY2F1c2UgdGhl
IG51bWJlciBvZiB2YWx1ZXMKKyAgICAvLyBjYW4gaW5jcmVhc2UgYXMgd2UgZXhlY3V0ZS4gSW5z
dGVhZCwgd2UgaW5jcmVhc2UgdGhlIHNpemUgYXMgbmVlZGVkIGJlZm9yZSBwcm9jZXNzaW5nIGVh
Y2ggYmxvY2suCisgICAgbV9hYnN0cmFjdFZhbHVlcy5yZXNpemUobV9ncmFwaC5tYXhOb2RlQ291
bnQoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNpY0Jsb2NrLT5zaXpl
KCk7IGkrKykKICAgICAgICAgZm9yTm9kZShiYXNpY0Jsb2NrLT5hdChpKSkuY2xlYXIoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmgJKHJldmlzaW9uIDIwNDExMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1ZSYgZm9yTm9kZShOb2RlKiBub2RlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG5vZGUtPnZhbHVlOworICAgICAgICByZXR1cm4gbV9hYnN0
cmFjdFZhbHVlc1tub2RlLT5pbmRleCgpXTsKICAgICB9CiAgICAgCiAgICAgQWJzdHJhY3RWYWx1
ZSYgZm9yTm9kZShFZGdlIGVkZ2UpCkBAIC0xMzIsNyArMTMyLDggQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgYm9vbCBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhBYnN0cmFjdFZhbHVlJiBkZXN0
aW5hdGlvbiwgQWJzdHJhY3RWYWx1ZSYgc291cmNlLCBOb2RlKiBkZXN0aW5hdGlvbk5vZGUsIE5v
ZGUqIHNvdXJjZU5vZGUpOwogICAgIAogICAgIEdyYXBoJiBtX2dyYXBoOwotICAgIAorCisgICAg
VmVjdG9yPEFic3RyYWN0VmFsdWU+JiBtX2Fic3RyYWN0VmFsdWVzOwogICAgIE9wZXJhbmRzPEFi
c3RyYWN0VmFsdWU+IG1fdmFyaWFibGVzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVz
c0FuYWx5c2lzUGhhc2UuY3BwCShyZXZpc2lvbiAyMDQxMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5NSw2ICsxOTUsOCBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lz
KEdyYXBoJiBncmFwaCkKIHsKKyAgICBncmFwaC5wYWNrTm9kZUluZGljZXMoKTsKKwogICAgIHJl
dHVybiBydW5QaGFzZTxMaXZlbmVzc0FuYWx5c2lzUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIwNDExMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYyLDEw
ICsyMzYyLDYgQEAgcHJpdmF0ZToKICAgICB1aW50cHRyX3QgbV9vcEluZm87CiAgICAgdWludHB0
cl90IG1fb3BJbmZvMjsKIAotcHVibGljOgotICAgIC8vIEZpZWxkcyB1c2VkIGJ5IHZhcmlvdXMg
YW5hbHlzZXMuCi0gICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZTsKLSAgICAKICAgICAvLyBNaXNjZWxs
YW5lb3VzIGRhdGEgdGhhdCBpcyB1c3VhbGx5IG1lYW5pbmdsZXNzLCBidXQgY2FuIGhvbGQgc29t
ZSBhbmFseXNpcyByZXN1bHRzCiAgICAgLy8gaWYgeW91IGFzayByaWdodC4gRm9yIGV4YW1wbGUs
IGlmIHlvdSBkbyBHcmFwaDo6aW5pdGlhbGl6ZU5vZGVPd25lcnMoKSwgTm9kZTo6b3duZXIKICAg
ICAvLyB3aWxsIHRlbGwgeW91IHdoaWNoIGJhc2ljIGJsb2NrIGEgbm9kZSBiZWxvbmdzIHRvLiBZ
b3UgY2Fubm90IHJlbHkgb24gdGhpcyBwZXJzaXN0aW5nCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>