<?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>144617</bug_id>
          
          <creation_ts>2015-05-04 18:44:08 -0700</creation_ts>
          <short_desc>Large array shouldn&apos;t be slow</short_desc>
          <delta_ts>2015-05-06 16:42:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091646</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 18:44:08 -0700</bug_when>
    <thetext>Currently if you allocate a large array with new Array(large number), you&apos;ll get an ArrayStorage array, which is slower than a Contiguous array.  That threshold is very low - around 10000. We should dramatically lift the threshold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091647</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 18:44:50 -0700</bug_when>
    <thetext>Performance results:

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r183718)
&quot;MoreContiguous&quot; at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r183721)

Collected 6 samples per benchmark/VM, with 6 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.

                                                        TipOfTree               MoreContiguous                                  
SunSpider:
   3d-cube                                            5.3164+-0.1794     ?      5.3700+-0.2710        ? might be 1.0101x slower
   3d-morph                                           5.8342+-0.2059     ?      6.0343+-0.7094        ? might be 1.0343x slower
   3d-raytrace                                        6.6427+-0.0832            6.5142+-0.0662          might be 1.0197x faster
   access-binary-trees                                2.5284+-0.2961     ?      2.5603+-0.2220        ? might be 1.0126x slower
   access-fannkuch                                    6.3661+-0.5139     ?      6.3776+-0.2798        ?
   access-nbody                                       3.0776+-0.2971     ?      3.0959+-0.4850        ?
   access-nsieve                                      3.5214+-0.3341     ?      3.6012+-0.2273        ? might be 1.0227x slower
   bitops-3bit-bits-in-byte                           1.6121+-0.0729            1.6005+-0.0373        
   bitops-bits-in-byte                                3.3408+-0.0457     ?      3.3524+-0.0402        ?
   bitops-bitwise-and                                 2.4364+-0.5014            2.3881+-0.4158          might be 1.0203x faster
   bitops-nsieve-bits                                 3.2037+-0.1535     ?      3.3072+-0.1069        ? might be 1.0323x slower
   controlflow-recursive                              2.3737+-0.1355            2.3385+-0.1349          might be 1.0151x faster
   crypto-aes                                         4.5207+-0.1367            4.4455+-0.1200          might be 1.0169x faster
   crypto-md5                                         3.0997+-0.1633     ^      2.7984+-0.0843        ^ definitely 1.1077x faster
   crypto-sha1                                        2.7003+-0.1021     ?      2.7303+-0.1718        ? might be 1.0111x slower
   date-format-tofte                                  9.4748+-0.2368     ?      9.5740+-0.3156        ? might be 1.0105x slower
   date-format-xparb                                  5.8776+-0.3071     ?      5.9547+-0.2473        ? might be 1.0131x slower
   math-cordic                                        3.1801+-0.0388     ?      3.3481+-0.4625        ? might be 1.0528x slower
   math-partial-sums                                  5.1960+-0.1610     ?      5.3765+-0.2830        ? might be 1.0347x slower
   math-spectral-norm                                 1.9782+-0.0855     ?      2.0730+-0.2083        ? might be 1.0479x slower
   regexp-dna                                         7.6557+-1.3177     ?      8.0805+-1.7195        ? might be 1.0555x slower
   string-base64                                      5.1188+-0.8990            4.8168+-0.1505          might be 1.0627x faster
   string-fasta                                       7.0008+-0.6974     ?      7.2632+-0.8398        ? might be 1.0375x slower
   string-tagcloud                                   10.0095+-0.7471     ?     10.0311+-0.9807        ?
   string-unpack-code                                19.8845+-0.7794     ?     20.0537+-0.4762        ?
   string-validate-input                              4.9489+-0.1286     ?      4.9875+-0.2036        ?

   &lt;arithmetic&gt;                                       5.2654+-0.1052     ?      5.3105+-0.1081        ? might be 1.0086x slower

                                                        TipOfTree               MoreContiguous                                  
LongSpider:
   3d-cube                                          884.7857+-13.5366    ?    892.1535+-11.9395       ?
   3d-morph                                        1536.7594+-13.4348        1533.4007+-7.4068        
   3d-raytrace                                      728.1648+-4.4521     ?    738.5507+-10.2173       ? might be 1.0143x slower
   access-binary-trees                             1028.5177+-12.1514    ?   1031.1358+-5.1743        ?
   access-fannkuch                                  332.2542+-13.1168    ?    333.0854+-7.9943        ?
   access-nbody                                     615.3638+-7.2006          612.3668+-3.5776        
   access-nsieve                                    880.2565+-10.6141    ^    477.4718+-6.6610        ^ definitely 1.8436x faster
   bitops-3bit-bits-in-byte                          44.5376+-0.5043           44.5107+-1.0352        
   bitops-bits-in-byte                              102.7576+-2.7817     ?    103.0568+-2.3476        ?
   bitops-nsieve-bits                               618.7826+-5.2431     ^    417.6654+-2.0517        ^ definitely 1.4815x faster
   controlflow-recursive                            481.3901+-5.5113     ?    483.9118+-1.2855        ?
   crypto-aes                                       704.6516+-7.1093     ?    709.2616+-7.1225        ?
   crypto-md5                                       529.5714+-6.5574          524.5315+-16.5021       
   crypto-sha1                                      599.2212+-8.7237     ?    600.6424+-6.6173        ?
   date-format-tofte                                759.4425+-9.3877     ?    771.9830+-16.2254       ? might be 1.0165x slower
   date-format-xparb                                776.7653+-15.7705    ?    794.3833+-23.2727       ? might be 1.0227x slower
   hash-map                                         222.9610+-3.0782     ^    175.1215+-2.1986        ^ definitely 1.2732x faster
   math-cordic                                      590.6663+-1.9066     ?    593.9672+-7.2558        ?
   math-partial-sums                                507.8475+-4.8448          505.7513+-4.2333        
   math-spectral-norm                               567.0182+-5.3691          565.3840+-2.8638        
   string-base64                                    374.2023+-4.5871     ?    378.8295+-8.9716        ? might be 1.0124x slower
   string-fasta                                     442.3020+-2.4748          438.9292+-5.4332        
   string-tagcloud                                  201.7249+-3.3892     ?    202.1418+-3.0338        ?

   &lt;geometric&gt;                                      477.6542+-1.6085     ^    453.8577+-0.7898        ^ definitely 1.0524x faster

                                                        TipOfTree               MoreContiguous                                  
V8Spider:
   crypto                                            55.3919+-2.4808           55.1911+-3.1391        
   deltablue                                         92.9568+-5.1698     ?     97.4315+-3.5538        ? might be 1.0481x slower
   earley-boyer                                      45.9108+-1.6637           44.7937+-0.7739          might be 1.0249x faster
   raytrace                                          41.3011+-3.7368     ?     42.2448+-2.9674        ? might be 1.0229x slower
   regexp                                            81.1961+-1.5399     ?     82.3695+-1.7575        ? might be 1.0145x slower
   richards                                          80.5929+-1.7450           79.9234+-2.2337        
   splay                                             41.1799+-1.8189     ?     42.2383+-1.9843        ? might be 1.0257x slower

   &lt;geometric&gt;                                       59.4206+-0.9651     ?     60.0509+-0.6714        ? might be 1.0106x slower

                                                        TipOfTree               MoreContiguous                                  
Octane:
   encrypt                                           0.20524+-0.00632          0.20356+-0.00190       
   decrypt                                           3.56053+-0.02716    ?     3.56117+-0.03582       ?
   deltablue                                x2       0.20783+-0.00162    ?     0.20835+-0.00146       ?
   earley                                            0.54004+-0.00498          0.53993+-0.00248       
   boyer                                             6.76241+-0.09031          6.70848+-0.03482       
   navier-stokes                            x2       5.22490+-0.08085          5.17449+-0.00677       
   raytrace                                 x2       1.29120+-0.05856          1.26649+-0.04123         might be 1.0195x faster
   richards                                 x2       0.12297+-0.00157    ?     0.12361+-0.00155       ?
   splay                                    x2       0.40398+-0.00305    ?     0.40708+-0.00385       ?
   regexp                                   x2      32.08092+-0.30188    ?    32.54659+-0.46333       ? might be 1.0145x slower
   pdfjs                                    x2      43.95199+-0.22719    ?    44.53126+-0.63135       ? might be 1.0132x slower
   mandreel                                 x2      50.86215+-1.31063         50.35387+-1.05227         might be 1.0101x faster
   gbemu                                    x2      42.48585+-2.12887         41.52009+-0.40756         might be 1.0233x faster
   closure                                           0.56706+-0.00330    !     0.57843+-0.00449       ! definitely 1.0201x slower
   jquery                                            7.19058+-0.04752    ?     7.28381+-0.08494       ? might be 1.0130x slower
   box2d                                    x2      12.26534+-0.07006    ?    12.34652+-0.13517       ?
   zlib                                     x2     386.61411+-14.04044   ?   394.67131+-3.11404       ? might be 1.0208x slower
   typescript                               x2     845.05428+-11.10455       840.26306+-9.00204       

   &lt;geometric&gt;                                       6.75742+-0.01944    ?     6.76312+-0.03636       ? might be 1.0008x slower

                                                        TipOfTree               MoreContiguous                                  
Kraken:
   ai-astar                                          271.760+-3.469      ?     275.377+-2.085         ? might be 1.0133x slower
   audio-beat-detection                              107.123+-1.265            107.053+-0.395         
   audio-dft                                         151.027+-4.522      ^     121.047+-1.400         ^ definitely 1.2477x faster
   audio-fft                                          86.167+-5.381      ?      88.068+-2.382         ? might be 1.0221x slower
   audio-oscillator                                  207.366+-1.721      ?     210.501+-3.708         ? might be 1.0151x slower
   imaging-darkroom                                  105.664+-2.697            104.694+-1.611         
   imaging-desaturate                                 64.545+-1.531             63.469+-1.230           might be 1.0170x faster
   imaging-gaussian-blur                             112.460+-1.869      ?     114.009+-5.405         ? might be 1.0138x slower
   json-parse-financial                               46.953+-2.757             45.511+-2.295           might be 1.0317x faster
   json-stringify-tinderbox                           57.224+-1.818      ?      58.111+-1.383         ? might be 1.0155x slower
   stanford-crypto-aes                                59.363+-1.192      ?      60.975+-1.616         ? might be 1.0272x slower
   stanford-crypto-ccm                                60.578+-3.035             58.228+-1.792           might be 1.0404x faster
   stanford-crypto-pbkdf2                            137.422+-1.523      ?     139.165+-3.857         ? might be 1.0127x slower
   stanford-crypto-sha256-iterative                   55.270+-3.440             53.269+-4.178           might be 1.0376x faster

   &lt;arithmetic&gt;                                      108.780+-0.816      ^     107.106+-0.635         ^ definitely 1.0156x faster

                                                        TipOfTree               MoreContiguous                                  
JSRegress:
   abs-boolean                                        2.6501+-0.0726     ?      2.7464+-0.1226        ? might be 1.0363x slower
   adapt-to-double-divide                            17.1700+-0.9783           16.7246+-0.5220          might be 1.0266x faster
   aliased-arguments-getbyval                         1.3042+-0.1743            1.2432+-0.0559          might be 1.0491x faster
   allocate-big-object                                2.8277+-0.1995     ?      2.8722+-0.1102        ? might be 1.0157x slower
   arguments-named-and-reflective                    12.7737+-0.3030     ?     13.0215+-0.7441        ? might be 1.0194x slower
   arguments-out-of-bounds                           14.9041+-0.2902     ?     14.9282+-0.4792        ?
   arguments-strict-mode                             12.4999+-0.9748           11.7915+-0.4721          might be 1.0601x faster
   arguments                                         11.3415+-1.4232     ?     11.6696+-1.2862        ? might be 1.0289x slower
   arity-mismatch-inlining                            0.8047+-0.0192     ?      0.8185+-0.0348        ? might be 1.0172x slower
   array-access-polymorphic-structure                 7.2664+-1.2766            6.8135+-0.1830          might be 1.0665x faster
   array-nonarray-polymorhpic-access                 34.9694+-2.9004           34.5563+-0.5965          might be 1.0120x faster
   array-prototype-every                             90.4080+-3.2729           88.3622+-1.4542          might be 1.0232x faster
   array-prototype-forEach                           85.4364+-1.8417     ?     86.2231+-2.0076        ?
   array-prototype-map                               94.6711+-3.0535           94.4213+-1.1874        
   array-prototype-some                              87.1526+-2.4706     ?     87.7965+-2.4630        ?
   array-splice-contiguous                           41.6617+-1.9165     ?     42.1752+-1.5729        ? might be 1.0123x slower
   array-with-double-add                              4.3388+-0.4330            4.2255+-0.2880          might be 1.0268x faster
   array-with-double-increment                        3.2393+-0.0750            3.2054+-0.0612          might be 1.0106x faster
   array-with-double-mul-add                          5.1108+-0.0804            5.1044+-0.1072        
   array-with-double-sum                              3.2548+-0.0594            3.2515+-0.0270        
   array-with-int32-add-sub                           6.7611+-0.0177     ?      6.7646+-0.1678        ?
   array-with-int32-or-double-sum                     3.3095+-0.0402     ?      3.3859+-0.0977        ? might be 1.0231x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     32.9135+-0.8688     ?     36.1412+-3.1751        ? might be 1.0981x slower
   ArrayBuffer-DataView-alloc-long-lived             14.9201+-1.8376           14.5940+-1.1433          might be 1.0223x faster
   ArrayBuffer-Int32Array-byteOffset                  4.1930+-0.5488            4.1659+-0.4673        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     33.5788+-1.4469     ?     33.6593+-2.0526        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     23.7861+-2.1467           23.3998+-1.4222          might be 1.0165x faster
   ArrayBuffer-Int8Array-alloc-long-lived            12.8390+-0.2592     !     16.1198+-2.2945        ! definitely 1.2555x slower
   ArrayBuffer-Int8Array-alloc                       11.1448+-0.8481     ?     12.9184+-2.1064        ? might be 1.1591x slower
   asmjs_bool_bug                                     7.6351+-0.0520            7.6243+-0.0734        
   assign-custom-setter-polymorphic                   3.4672+-0.5963            3.1095+-0.1276          might be 1.1150x faster
   assign-custom-setter                               4.5154+-0.1425            4.5005+-0.8009        
   basic-set                                          8.4713+-0.0988     ?      8.4883+-0.1646        ?
   big-int-mul                                        4.1860+-0.4780            3.9674+-0.1137          might be 1.0551x faster
   boolean-test                                       3.0872+-0.0423     ?      3.2072+-0.3774        ? might be 1.0389x slower
   branch-fold                                        3.7342+-0.0502            3.6929+-0.0242          might be 1.0112x faster
   branch-on-string-as-boolean                       19.6793+-0.8839           19.3754+-1.0060          might be 1.0157x faster
   by-val-generic                                     8.8278+-0.7807            8.3361+-0.6907          might be 1.0590x faster
   call-spread-apply                                 31.7787+-2.6359     ?     33.4744+-2.1069        ? might be 1.0534x slower
   call-spread-call                                  25.8143+-1.3317     !     28.7217+-1.2526        ! definitely 1.1126x slower
   captured-assignments                               0.4296+-0.0103     ?      0.4428+-0.0190        ? might be 1.0307x slower
   cast-int-to-double                                 5.3449+-0.1814     ?      5.3808+-0.1893        ?
   cell-argument                                      8.6288+-0.2525            8.4317+-0.2783          might be 1.0234x faster
   cfg-simplify                                       3.0896+-0.1566            3.0538+-0.0820          might be 1.0117x faster
   chain-getter-access                               10.1065+-0.3477     ?     10.1471+-0.1113        ?
   cmpeq-obj-to-obj-other                            11.5184+-0.5782           11.1918+-1.0518          might be 1.0292x faster
   constant-test                                      4.9445+-0.0292     ?      5.1399+-0.3075        ? might be 1.0395x slower
   create-lots-of-functions                          11.6709+-0.3015     ?     11.7301+-0.3950        ?
   DataView-custom-properties                        38.5016+-2.4243     ?     39.4298+-1.8429        ? might be 1.0241x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.5110+-0.0681     ?      0.5265+-0.0791        ? might be 1.0303x slower
   delay-tear-off-arguments-strictmode               14.3843+-0.3498           14.1201+-0.2740          might be 1.0187x faster
   deltablue-varargs                                204.7220+-3.7639          202.6405+-0.7358          might be 1.0103x faster
   destructuring-arguments                           18.3259+-0.6706     ?     18.3833+-0.8618        ?
   destructuring-swap                                 5.1574+-0.2180            5.0752+-0.0981          might be 1.0162x faster
   direct-arguments-getbyval                          1.2521+-0.0655     ?      1.3152+-0.2223        ? might be 1.0504x slower
   div-boolean-double                                 5.1894+-0.0444     ?      5.2249+-0.0610        ?
   div-boolean                                        7.8598+-0.1225     ?      7.8791+-0.2297        ?
   double-get-by-val-out-of-bounds                    4.5227+-0.0860     ?      4.5264+-0.0884        ?
   double-pollution-getbyval                          8.8144+-0.0453     ?      8.8421+-0.0687        ?
   double-pollution-putbyoffset                       4.3930+-0.1509     ?      4.6360+-0.2966        ? might be 1.0553x slower
   double-to-int32-typed-array-no-inline              2.2590+-0.0798     ?      2.5445+-0.3095        ? might be 1.1264x slower
   double-to-int32-typed-array                        2.0287+-0.1238     ?      2.1125+-0.2155        ? might be 1.0413x slower
   double-to-uint32-typed-array-no-inline             2.3435+-0.1325     ?      2.4958+-0.3081        ? might be 1.0650x slower
   double-to-uint32-typed-array                       2.1536+-0.2803            2.0826+-0.0710          might be 1.0341x faster
   elidable-new-object-dag                           44.8552+-2.3046           44.4521+-2.0983        
   elidable-new-object-roflcopter                    46.5834+-1.9698           46.4515+-1.7835        
   elidable-new-object-then-call                     39.9823+-1.4321           39.8495+-1.7209        
   elidable-new-object-tree                          47.4401+-1.8581           46.3003+-2.0859          might be 1.0246x faster
   empty-string-plus-int                              5.4089+-0.1125     !      5.6292+-0.0552        ! definitely 1.0407x slower
   emscripten-cube2hash                              39.6053+-1.4001           39.3867+-1.1924        
   exit-length-on-plain-object                       15.7920+-2.2680           14.3921+-1.6161          might be 1.0973x faster
   external-arguments-getbyval                        1.2660+-0.0543     ?      1.3818+-0.2057        ? might be 1.0915x slower
   external-arguments-putbyval                        2.4094+-0.2615            2.3558+-0.0791          might be 1.0227x faster
   fixed-typed-array-storage-var-index                1.2491+-0.0799            1.2428+-0.0568        
   fixed-typed-array-storage                          0.9329+-0.0402     ?      1.0306+-0.1332        ? might be 1.1047x slower
   Float32Array-matrix-mult                           4.6794+-0.3934            4.5595+-0.1707          might be 1.0263x faster
   Float32Array-to-Float64Array-set                  55.2214+-1.5438     ?     56.0462+-1.4418        ? might be 1.0149x slower
   Float64Array-alloc-long-lived                     75.2608+-1.6644     ^     70.9583+-1.3983        ^ definitely 1.0606x faster
   Float64Array-to-Int16Array-set                    68.8653+-1.1754     !     71.7477+-1.6564        ! definitely 1.0419x slower
   fold-double-to-int                                13.6940+-0.3393     ?     13.7084+-0.4205        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.7682+-0.6319           10.3924+-1.3084          might be 1.0362x faster
   fold-get-by-id-to-multi-get-by-offset             10.7970+-0.9610            9.9921+-0.5140          might be 1.0805x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.2699+-1.0062            9.2372+-1.3931          might be 1.1118x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.5518+-1.6340            8.8417+-1.0040          might be 1.0803x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.0592+-1.2361            9.6772+-1.2367          might be 1.0395x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.7666+-0.0905     !      7.8682+-1.3750        ! definitely 1.6507x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.6925+-0.3319            9.6322+-0.4869        
   fold-put-by-id-to-multi-put-by-offset             10.5265+-1.2696           10.1635+-0.9704          might be 1.0357x faster
   fold-put-structure                                 4.0600+-0.0451     !      7.3849+-0.1473        ! definitely 1.8189x slower
   for-of-iterate-array-entries                       4.8256+-0.3857     ?      4.8472+-0.1751        ?
   for-of-iterate-array-keys                          3.9561+-0.3520     ?      4.0466+-0.1357        ? might be 1.0229x slower
   for-of-iterate-array-values                        3.9410+-0.2405     ?      4.0113+-0.3194        ? might be 1.0178x slower
   fround                                            21.2818+-0.9514           21.1075+-0.6498        
   ftl-library-inlining-dataview                     68.7347+-2.1373     ^     64.8441+-1.5343        ^ definitely 1.0600x faster
   ftl-library-inlining                              66.0472+-1.6609     ?     66.1025+-1.1654        ?
   function-dot-apply                                 2.2864+-0.1123     ?      2.3396+-0.1937        ? might be 1.0233x slower
   function-test                                      3.3993+-0.0285            3.3826+-0.0338        
   function-with-eval                               104.5631+-3.1942     ?    105.4439+-4.4617        ?
   gcse-poly-get-less-obvious                        18.5422+-0.8925     ?     19.1608+-1.1781        ? might be 1.0334x slower
   gcse-poly-get                                     23.5278+-2.3636           20.9838+-1.5971          might be 1.1212x faster
   gcse                                               4.4626+-0.3517     ?      4.5098+-0.5746        ? might be 1.0106x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7224+-0.1085     ?      2.8363+-0.1313        ? might be 1.0419x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.3700+-0.6037            6.0931+-0.1312          might be 1.0454x faster
   get-by-id-chain-from-try-block                     6.5670+-0.1405     ?      7.4124+-1.0426        ? might be 1.1287x slower
   get-by-id-check-structure-elimination              5.4455+-0.6619     ?      5.6458+-0.5759        ? might be 1.0368x slower
   get-by-id-proto-or-self                           17.1331+-0.8066     ?     17.2008+-0.6674        ?
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.3263+-0.4405            3.1971+-0.1139          might be 1.0404x faster
   get-by-id-self-or-proto                           17.1873+-0.3528     ?     17.4268+-0.5552        ? might be 1.0139x slower
   get-by-val-out-of-bounds                           4.5523+-0.3190            4.3314+-0.0244          might be 1.0510x faster
   get_callee_monomorphic                             2.8426+-0.0778     ?      2.8923+-0.1909        ? might be 1.0175x slower
   get_callee_polymorphic                             3.9594+-0.3297     ?      4.1008+-0.4563        ? might be 1.0357x slower
   getter-no-activation                               5.2644+-0.2943            4.9917+-0.3064          might be 1.0546x faster
   getter-richards                                  129.0467+-4.7603     ?    129.3918+-5.8889        ?
   getter                                             6.1409+-0.9331            5.9330+-0.7694          might be 1.0350x faster
   global-var-const-infer-fire-from-opt               0.8912+-0.0507     ?      1.0255+-0.0884        ? might be 1.1507x slower
   global-var-const-infer                             0.8040+-0.0571            0.7612+-0.0419          might be 1.0561x faster
   HashMap-put-get-iterate-keys                      26.1392+-1.1862     ?     26.9169+-1.1750        ? might be 1.0298x slower
   HashMap-put-get-iterate                           25.4892+-0.4640     !     29.2601+-1.3400        ! definitely 1.1479x slower
   HashMap-string-put-get-iterate                    27.9451+-1.3688     ?     28.4027+-1.3478        ? might be 1.0164x slower
   hoist-make-rope                                   11.9166+-0.6241     ?     12.6364+-1.0734        ? might be 1.0604x slower
   hoist-poly-check-structure-effectful-loop   
                                                      5.0551+-0.0665     ?      5.2345+-0.2989        ? might be 1.0355x slower
   hoist-poly-check-structure                         3.8660+-0.2576            3.7500+-0.1338          might be 1.0309x faster
   imul-double-only                                   8.8618+-0.1279     ^      7.5210+-0.0693        ^ definitely 1.1783x faster
   imul-int-only                                      9.7742+-0.1784     ?      9.7973+-0.1321        ?
   imul-mixed                                         8.0490+-0.2937     ?      8.4051+-0.4400        ? might be 1.0442x slower
   in-four-cases                                     20.6967+-0.2272     ?     21.4410+-0.8624        ? might be 1.0360x slower
   in-one-case-false                                 10.6558+-0.3518     ^      9.9272+-0.2960        ^ definitely 1.0734x faster
   in-one-case-true                                  10.4120+-0.3660           10.0463+-0.4312          might be 1.0364x faster
   in-two-cases                                      10.6497+-0.5361           10.3182+-0.4201          might be 1.0321x faster
   indexed-properties-in-objects                      3.0466+-0.0440     ^      2.8815+-0.0471        ^ definitely 1.0573x faster
   infer-closure-const-then-mov-no-inline             3.9060+-0.0442     !      4.5306+-0.4389        ! definitely 1.1599x slower
   infer-closure-const-then-mov                      20.2983+-0.4232           19.7559+-0.4658          might be 1.0275x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     15.7356+-2.1344           13.9840+-0.3084          might be 1.1253x faster
   infer-closure-const-then-put-to-scope             22.1195+-0.6921     ?     23.7399+-1.8801        ? might be 1.0733x slower
   infer-closure-const-then-reenter-no-inline   
                                                     63.4714+-1.7848           63.1740+-1.2629        
   infer-closure-const-then-reenter                  22.8204+-0.7063     ?     23.3158+-1.6969        ? might be 1.0217x slower
   infer-constant-global-property                    30.8745+-1.7873           30.2427+-0.9865          might be 1.0209x faster
   infer-constant-property                            2.8024+-0.1754            2.7174+-0.0734          might be 1.0313x faster
   infer-one-time-closure-ten-vars                   13.5298+-1.4173           13.1294+-1.7608          might be 1.0305x faster
   infer-one-time-closure-two-vars                   12.3816+-0.8781           12.2787+-0.1277        
   infer-one-time-closure                            12.1328+-0.2642     ?     12.7151+-1.3647        ? might be 1.0480x slower
   infer-one-time-deep-closure                       22.0520+-1.7198     ?     22.3328+-1.3281        ? might be 1.0127x slower
   inline-arguments-access                            4.7694+-0.3487            4.5918+-0.0433          might be 1.0387x faster
   inline-arguments-aliased-access                    4.7465+-0.1521     ?      4.7906+-0.3392        ?
   inline-arguments-local-escape                      4.7665+-0.1808            4.7609+-0.1524        
   inline-get-scoped-var                              4.8094+-0.2051     ?      4.8342+-0.2608        ?
   inlined-put-by-id-transition                      11.5942+-0.7925           11.2152+-0.6313          might be 1.0338x faster
   int-or-other-abs-then-get-by-val                   4.7479+-0.1562            4.7275+-0.0444        
   int-or-other-abs-zero-then-get-by-val             18.6551+-1.5623           18.1880+-1.8769          might be 1.0257x faster
   int-or-other-add-then-get-by-val                   4.3169+-0.0724     ?      4.3293+-0.1035        ?
   int-or-other-add                                   5.3123+-0.0285     ?      5.4205+-0.1759        ? might be 1.0204x slower
   int-or-other-div-then-get-by-val                   4.2490+-0.0762     ?      4.3964+-0.2345        ? might be 1.0347x slower
   int-or-other-max-then-get-by-val                   4.3428+-0.0585     ?      4.4722+-0.1215        ? might be 1.0298x slower
   int-or-other-min-then-get-by-val                   4.4147+-0.0120     ?      4.5133+-0.1862        ? might be 1.0223x slower
   int-or-other-mod-then-get-by-val                   3.9541+-0.1593     ?      4.0054+-0.0493        ? might be 1.0130x slower
   int-or-other-mul-then-get-by-val                   3.9583+-0.0825     ?      4.0755+-0.1521        ? might be 1.0296x slower
   int-or-other-neg-then-get-by-val                   4.4436+-0.0324     ?      4.4803+-0.0410        ?
   int-or-other-neg-zero-then-get-by-val             17.3543+-0.8419     ?     17.8503+-0.9357        ? might be 1.0286x slower
   int-or-other-sub-then-get-by-val                   4.5907+-0.1579            4.5317+-0.0307          might be 1.0130x faster
   int-or-other-sub                                   3.5299+-0.0263     ?      3.5394+-0.0619        ?
   int-overflow-local                                 4.5747+-0.1492            4.5708+-0.0944        
   Int16Array-alloc-long-lived                       54.1247+-1.1662     ^     51.1766+-0.8826        ^ definitely 1.0576x faster
   Int16Array-bubble-sort-with-byteLength            21.3372+-1.6809     ?     21.5047+-1.6161        ?
   Int16Array-bubble-sort                            20.2310+-0.9032           19.8497+-0.5397          might be 1.0192x faster
   Int16Array-load-int-mul                            1.5767+-0.2003     ?      1.6031+-0.1453        ? might be 1.0168x slower
   Int16Array-to-Int32Array-set                      53.9047+-3.8650     ?     55.3427+-3.2419        ? might be 1.0267x slower
   Int32Array-alloc-large                            24.0466+-1.3053     ?     24.8381+-1.1618        ? might be 1.0329x slower
   Int32Array-alloc-long-lived                       60.1217+-1.8694     ^     56.7277+-1.3081        ^ definitely 1.0598x faster
   Int32Array-alloc                                   3.7216+-0.1837     ?      3.7662+-0.4411        ? might be 1.0120x slower
   Int32Array-Int8Array-view-alloc                    7.2631+-0.8854     ?      8.3357+-1.1811        ? might be 1.1477x slower
   int52-spill                                        6.4333+-0.2536     ?      6.6459+-0.2430        ? might be 1.0330x slower
   Int8Array-alloc-long-lived                        49.5846+-1.2873     ^     45.9976+-1.4350        ^ definitely 1.0780x faster
   Int8Array-load-with-byteLength                     3.3175+-0.0343     ?      3.6525+-0.5266        ? might be 1.1010x slower
   Int8Array-load                                     3.4204+-0.0961            3.3949+-0.1093        
   integer-divide                                    11.3833+-0.2957           11.1829+-0.1144          might be 1.0179x faster
   integer-modulo                                     2.1768+-0.2054            2.0558+-0.1010          might be 1.0589x faster
   is-boolean-fold-tricky                             4.6702+-0.5673            4.5062+-0.2041          might be 1.0364x faster
   is-boolean-fold                                    2.8571+-0.0899     ?      2.9080+-0.1279        ? might be 1.0178x slower
   is-function-fold-tricky-internal-function   
                                                      9.7693+-0.0784     !     10.4424+-0.5250        ! definitely 1.0689x slower
   is-function-fold-tricky                            4.6283+-0.1225            4.5847+-0.2342        
   is-function-fold                                   3.0507+-0.3234            2.9296+-0.1314          might be 1.0413x faster
   is-number-fold-tricky                              4.5528+-0.0464            4.4668+-0.1056          might be 1.0193x faster
   is-number-fold                                     3.0605+-0.4143            2.9082+-0.0995          might be 1.0524x faster
   is-object-or-null-fold-functions                   3.0044+-0.2613            2.9012+-0.0338          might be 1.0355x faster
   is-object-or-null-fold-less-tricky                 4.6037+-0.1565     ?      4.8720+-0.4587        ? might be 1.0583x slower
   is-object-or-null-fold-tricky                     10.6608+-1.2649           10.2041+-0.0702          might be 1.0447x faster
   is-object-or-null-fold                             2.8642+-0.0492     ?      2.8878+-0.1196        ?
   is-object-or-null-trickier-function                4.5681+-0.0584     ?      4.6066+-0.0982        ?
   is-object-or-null-trickier-internal-function   
                                                     12.2628+-0.4314           12.1610+-0.1118        
   is-object-or-null-tricky-function                  4.6140+-0.0994     ?      4.7240+-0.3713        ? might be 1.0238x slower
   is-object-or-null-tricky-internal-function   
                                                     10.9078+-0.7557           10.6544+-0.0749          might be 1.0238x faster
   is-string-fold-tricky                              4.6377+-0.1883            4.5870+-0.4164          might be 1.0110x faster
   is-string-fold                                     2.9878+-0.3482            2.8615+-0.0269          might be 1.0441x faster
   is-undefined-fold-tricky                           3.7477+-0.0744            3.6890+-0.0656          might be 1.0159x faster
   is-undefined-fold                                  2.8780+-0.1451     ?      2.9258+-0.1473        ? might be 1.0166x slower
   large-int-captured                                 4.7516+-0.2372            4.6498+-0.0684          might be 1.0219x faster
   large-int-neg                                     17.8549+-2.0426           16.9277+-0.7167          might be 1.0548x faster
   large-int                                         15.4990+-1.4016           15.2605+-0.9233          might be 1.0156x faster
   logical-not                                        4.5917+-0.0986     ?      4.7432+-0.2786        ? might be 1.0330x slower
   lots-of-fields                                    13.1956+-0.2371     ?     13.6794+-0.6256        ? might be 1.0367x slower
   make-indexed-storage                               3.2168+-0.3294            2.9823+-0.3144          might be 1.0786x faster
   make-rope-cse                                      4.7973+-0.0991     ?      4.8990+-0.4057        ? might be 1.0212x slower
   marsaglia-larger-ints                             36.5059+-1.0656     ?     36.5491+-1.4022        ?
   marsaglia-osr-entry                               23.3242+-0.3278     ?     24.3902+-1.5271        ? might be 1.0457x slower
   max-boolean                                        2.4677+-0.0104     ?      2.4900+-0.0336        ?
   method-on-number                                  17.1327+-0.3400     ?     17.4175+-0.6843        ? might be 1.0166x slower
   min-boolean                                        2.4886+-0.0268     ?      2.5177+-0.0413        ? might be 1.0117x slower
   minus-boolean-double                               3.3692+-0.3427            3.2908+-0.3458          might be 1.0238x faster
   minus-boolean                                      2.4670+-0.2920            2.3914+-0.0894          might be 1.0316x faster
   misc-strict-eq                                    38.2176+-1.1012           37.3161+-0.4074          might be 1.0242x faster
   mod-boolean-double                                11.0337+-0.2180           10.9633+-0.3153        
   mod-boolean                                        7.9065+-0.1690            7.8253+-0.0379          might be 1.0104x faster
   mul-boolean-double                                 3.7623+-0.1083     ?      3.8231+-0.2916        ? might be 1.0162x slower
   mul-boolean                                        2.9102+-0.0850            2.8770+-0.1084          might be 1.0115x faster
   neg-boolean                                        3.3532+-0.3684            3.1613+-0.0480          might be 1.0607x faster
   negative-zero-divide                               0.3444+-0.0134     ?      0.3724+-0.0341        ? might be 1.0812x slower
   negative-zero-modulo                               0.3500+-0.0264     ?      0.3733+-0.0252        ? might be 1.0664x slower
   negative-zero-negate                               0.3365+-0.0191     ?      0.3413+-0.0148        ? might be 1.0141x slower
   nested-function-parsing                           39.8082+-1.4500     ?     40.0496+-1.3848        ?
   new-array-buffer-dead                            112.7081+-2.3954     ?    113.3539+-3.1892        ?
   new-array-buffer-push                              6.8611+-0.0699     ?      7.4465+-0.9758        ? might be 1.0853x slower
   new-array-dead                                    19.5033+-0.6321           19.1084+-0.6449          might be 1.0207x faster
   new-array-push                                     4.0328+-0.2338            3.8494+-0.0356          might be 1.0476x faster
   no-inline-constructor                            126.2435+-3.0336          125.5250+-2.1300        
   number-test                                        3.0813+-0.1137            3.0755+-0.0851        
   object-closure-call                                5.9255+-0.6142            5.7793+-0.2122          might be 1.0253x faster
   object-test                                        3.1584+-0.0521            3.1317+-0.0377        
   obvious-sink-pathology-taken                     140.9318+-2.1531          140.0677+-2.3033        
   obvious-sink-pathology                           130.6925+-3.2613     ?    131.1231+-1.6621        ?
   obviously-elidable-new-object                     35.2340+-0.9591     ?     36.0698+-1.9242        ? might be 1.0237x slower
   plus-boolean-arith                                 2.5620+-0.1961     ?      2.6228+-0.3266        ? might be 1.0237x slower
   plus-boolean-double                                3.1836+-0.0678     ?      3.3272+-0.1174        ? might be 1.0451x slower
   plus-boolean                                       2.4246+-0.1099     ?      2.4420+-0.1105        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.2747+-0.0524     ?      3.3343+-0.1505        ? might be 1.0182x slower
   poly-chain-access-different-prototypes             2.6046+-0.1046     ?      2.6293+-0.1461        ?
   poly-chain-access-simpler                          3.3024+-0.0593            3.2937+-0.0339        
   poly-chain-access                                  2.7637+-0.3937            2.6984+-0.3052          might be 1.0242x faster
   poly-stricteq                                     62.6534+-0.6079           62.4565+-0.8048        
   polymorphic-array-call                             1.4395+-0.1172            1.3041+-0.0713          might be 1.1038x faster
   polymorphic-get-by-id                              3.2858+-0.3690            3.1666+-0.0569          might be 1.0376x faster
   polymorphic-put-by-id                             30.9922+-3.2258     ?     31.1428+-1.5208        ?
   polymorphic-structure                             15.4581+-1.5601     ?     15.6654+-1.2756        ? might be 1.0134x slower
   polyvariant-monomorphic-get-by-id                  8.6719+-0.2067            8.5400+-0.1047          might be 1.0154x faster
   proto-getter-access                               10.0412+-0.1277     ?     10.1429+-0.2514        ? might be 1.0101x slower
   put-by-id-replace-and-transition                   9.0136+-0.0778     ?      9.4312+-0.3600        ? might be 1.0463x slower
   put-by-id-slightly-polymorphic                     2.8650+-0.0691     ?      2.9419+-0.2337        ? might be 1.0268x slower
   put-by-id                                         12.5975+-0.2781           12.5283+-0.3873        
   put-by-val-direct                                  0.4208+-0.0211            0.4121+-0.0190          might be 1.0211x faster
   put-by-val-large-index-blank-indexing-type   
                                                      6.2288+-0.4481     ?      6.4093+-1.0992        ? might be 1.0290x slower
   put-by-val-machine-int                             2.7937+-0.0500     ?      2.8536+-0.0989        ? might be 1.0214x slower
   rare-osr-exit-on-local                            16.0055+-0.7500           15.2010+-0.6382          might be 1.0529x faster
   register-pressure-from-osr                        21.4800+-0.1417     ?     21.6744+-0.4374        ?
   setter                                             6.1018+-0.7033     ^      5.2645+-0.0901        ^ definitely 1.1590x faster
   simple-activation-demo                            24.8003+-0.2890     ?     25.3175+-0.7645        ? might be 1.0209x slower
   simple-getter-access                              12.8585+-0.2857     ?     13.2382+-0.5982        ? might be 1.0295x slower
   simple-poly-call-nested                            8.3831+-0.4899            8.2844+-0.2115          might be 1.0119x faster
   simple-poly-call                                   1.3372+-0.0954            1.3024+-0.0382          might be 1.0267x faster
   sin-boolean                                       23.0273+-0.9542     ?     23.1317+-1.0363        ?
   singleton-scope                                   67.0205+-0.7758     ?     67.5812+-1.0025        ?
   sink-function                                     12.6301+-0.9092           12.4038+-0.3671          might be 1.0182x faster
   sinkable-new-object-dag                           71.7736+-2.8624           69.8967+-1.5630          might be 1.0269x faster
   sinkable-new-object-taken                         51.4017+-2.7555     ?     53.2157+-2.6095        ? might be 1.0353x slower
   sinkable-new-object                               39.1752+-1.0394           39.0607+-1.5128        
   slow-array-profile-convergence                     2.8586+-0.1739     ?      2.9787+-0.4064        ? might be 1.0420x slower
   slow-convergence                                   2.8804+-0.3631            2.7864+-0.1042          might be 1.0337x faster
   sorting-benchmark                                 20.9266+-0.7486     ?     20.9731+-0.3448        ?
   sparse-conditional                                 1.1344+-0.0808     ?      1.1523+-0.0663        ? might be 1.0158x slower
   splice-to-remove                                  17.0200+-0.3813     ?     17.5205+-0.8074        ? might be 1.0294x slower
   string-char-code-at                               17.2075+-0.5691     ?     17.9261+-1.4283        ? might be 1.0418x slower
   string-concat-object                               2.8219+-0.3207            2.6626+-0.1171          might be 1.0598x faster
   string-concat-pair-object                          2.5936+-0.2128     ?      2.5948+-0.1032        ?
   string-concat-pair-simple                         12.0952+-1.1104           11.6756+-0.3389          might be 1.0359x faster
   string-concat-simple                              12.6032+-1.1768     ?     13.0687+-1.0111        ? might be 1.0369x slower
   string-cons-repeat                                 8.3725+-0.7884            8.2157+-0.8129          might be 1.0191x faster
   string-cons-tower                                  8.9882+-1.0731            7.9448+-0.1320          might be 1.1313x faster
   string-equality                                   17.7662+-1.4138     ?     18.2210+-0.8105        ? might be 1.0256x slower
   string-get-by-val-big-char                         7.1493+-0.1137     !      7.3383+-0.0606        ! definitely 1.0264x slower
   string-get-by-val-out-of-bounds-insane             3.8024+-0.0604     ?      3.9332+-0.5340        ? might be 1.0344x slower
   string-get-by-val-out-of-bounds                    5.2869+-0.1897     ?      5.3257+-0.2222        ?
   string-get-by-val                                  3.4008+-0.0779            3.3914+-0.0258        
   string-hash                                        2.0427+-0.0378     ?      2.1380+-0.1621        ? might be 1.0467x slower
   string-long-ident-equality                        15.1040+-0.1601     ?     15.8271+-0.9809        ? might be 1.0479x slower
   string-out-of-bounds                              14.9458+-0.3333           14.9019+-0.1790        
   string-repeat-arith                               35.6300+-2.6124           33.8952+-1.9429          might be 1.0512x faster
   string-sub                                        66.0225+-4.8152     ?     69.7011+-1.9270        ? might be 1.0557x slower
   string-test                                        2.9293+-0.0294     ?      2.9439+-0.0585        ?
   string-var-equality                               32.8712+-1.2104           31.9210+-0.3893          might be 1.0298x faster
   structure-hoist-over-transitions                   2.7470+-0.1675            2.6286+-0.1673          might be 1.0450x faster
   substring-concat-weird                            39.6422+-0.6064     ?     40.7181+-2.0572        ? might be 1.0271x slower
   substring-concat                                  42.1106+-1.6515           41.6064+-1.3326          might be 1.0121x faster
   substring                                         47.7675+-2.0867           47.0080+-1.6682          might be 1.0162x faster
   switch-char-constant                               2.7316+-0.0577     ?      2.7561+-0.1030        ?
   switch-char                                        6.4019+-0.8536     ?      6.6479+-0.6684        ? might be 1.0384x slower
   switch-constant                                    8.5650+-0.3397            8.3582+-0.0966          might be 1.0247x faster
   switch-string-basic-big-var                       18.0952+-0.4432     ?     18.9166+-0.7594        ? might be 1.0454x slower
   switch-string-basic-big                           15.1300+-0.9829           14.5828+-0.2572          might be 1.0375x faster
   switch-string-basic-var                           14.9099+-0.5459     ?     15.1759+-1.2317        ? might be 1.0178x slower
   switch-string-basic                               13.6796+-0.4165           13.6250+-0.1637        
   switch-string-big-length-tower-var                21.4414+-1.2231           20.6513+-1.4621          might be 1.0383x faster
   switch-string-length-tower-var                    15.3040+-0.1699           15.2735+-0.2783        
   switch-string-length-tower                        12.8699+-0.2532     ?     12.9859+-0.1529        ?
   switch-string-short                               12.8198+-0.1438     ?     12.9264+-0.1147        ?
   switch                                            12.7591+-0.2912           12.7367+-0.2653        
   tear-off-arguments-simple                          3.7465+-0.3362            3.4753+-0.1207          might be 1.0780x faster
   tear-off-arguments                                 4.8756+-0.3001     ?      4.9015+-0.2638        ?
   temporal-structure                                12.1994+-0.0614     ?     12.3112+-0.2179        ?
   to-int32-boolean                                  13.5200+-0.1211     ?     14.4574+-1.1276        ? might be 1.0693x slower
   try-catch-get-by-val-cloned-arguments             14.5040+-0.1079     ?     15.0992+-1.5531        ? might be 1.0410x slower
   try-catch-get-by-val-direct-arguments              6.8255+-0.8604            6.5403+-0.2303          might be 1.0436x faster
   try-catch-get-by-val-scoped-arguments              8.7947+-1.4280            7.9851+-0.9564          might be 1.1014x faster
   typed-array-get-set-by-val-profiling              33.0471+-3.6861     ?     33.3977+-2.1332        ? might be 1.0106x slower
   undefined-property-access                        359.0500+-4.0426          358.8743+-5.9870        
   undefined-test                                     3.1605+-0.3547            3.0040+-0.0383          might be 1.0521x faster
   unprofiled-licm                                   23.1676+-0.6661     ?     23.6561+-0.8007        ? might be 1.0211x slower
   varargs-call                                      16.1403+-1.0940           15.9808+-0.9152        
   varargs-construct-inline                          23.1110+-1.3852           22.7297+-0.2630          might be 1.0168x faster
   varargs-construct                                 32.5328+-0.4809           32.2319+-0.7970        
   varargs-inline                                     9.5499+-0.1391     ?      9.6461+-0.3671        ? might be 1.0101x slower
   varargs-strict-mode                               10.2897+-0.2343           10.2717+-0.1638        
   varargs                                           10.6200+-0.5910           10.2454+-0.1487          might be 1.0366x faster
   weird-inlining-const-prop                          2.3887+-0.0966            2.3010+-0.1387          might be 1.0381x faster

   &lt;geometric&gt;                                        8.6257+-0.0462     ?      8.6579+-0.0205        ? might be 1.0037x slower

                                                        TipOfTree               MoreContiguous                                  
AsmBench:
   bigfib.cpp                                       499.0017+-6.9327     ?    499.6385+-7.3868        ?
   cray.c                                           425.8257+-3.4337     ?    426.0557+-5.4046        ?
   dry.c                                            487.8049+-8.3093          487.6383+-7.3018        
   FloatMM.c                                        733.3719+-11.0231    ?    737.8465+-21.0527       ?
   gcc-loops.cpp                                   4518.9675+-609.3180       4272.0263+-9.8271          might be 1.0578x faster
   n-body.c                                         986.6908+-9.8873          981.2976+-6.1296        
   Quicksort.c                                      420.1909+-4.1494          419.1851+-4.2653        
   stepanov_container.cpp                          3632.9393+-42.1251        3620.7932+-29.9688       
   Towers.c                                         260.3874+-0.9016          259.6245+-0.6120        

   &lt;geometric&gt;                                      799.8150+-11.1199         794.7190+-2.3529          might be 1.0064x faster

                                                        TipOfTree               MoreContiguous                                  
CompressionBench:
   huffman                                          371.2688+-1.9484          364.7447+-8.7541          might be 1.0179x faster
   arithmetic-simple                                397.9051+-9.9740          393.3864+-4.7753          might be 1.0115x faster
   arithmetic-precise                               303.8306+-5.6079          297.5702+-5.5244          might be 1.0210x faster
   arithmetic-complex-precise                       300.7327+-3.5432          300.0023+-6.6560        
   arithmetic-precise-order-0                       426.2111+-10.2010    ?    432.3674+-8.5352        ? might be 1.0144x slower
   arithmetic-precise-order-1                       329.9871+-5.8803     ?    333.0349+-9.4745        ?
   arithmetic-precise-order-2                       363.8460+-5.1471          360.2196+-6.2842          might be 1.0101x faster
   arithmetic-simple-order-1                        422.3760+-1.7509     ?    422.5983+-5.1418        ?
   arithmetic-simple-order-2                        466.3583+-2.6591          466.2340+-5.3304        
   lz-string                                        325.7708+-8.1882     ?    335.5986+-21.4023       ? might be 1.0302x slower

   &lt;geometric&gt;                                      366.9642+-2.2455          366.5834+-3.0920          might be 1.0010x faster

                                                        TipOfTree               MoreContiguous                                  
Geomean of preferred means:
   &lt;scaled-result&gt;                                   63.9012+-0.2493           63.5008+-0.1605          might be 1.0063x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091649</commentid>
    <comment_count>2</comment_count>
      <attachid>252363</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 18:58:21 -0700</bug_when>
    <thetext>Created attachment 252363
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091651</commentid>
    <comment_count>3</comment_count>
      <attachid>252363</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-05-04 19:21:06 -0700</bug_when>
    <thetext>Comment on attachment 252363
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091652</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-04 19:22:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 252363 [details]
&gt; the patch
&gt; 
&gt; r=me

Bummer.  grain beat me to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091653</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-04 19:22:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 252363 [details]
&gt; &gt; the patch
&gt; &gt; 
&gt; &gt; r=me
&gt; 
&gt; Bummer.  grain beat me to it.

s/grain/ggaren/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091662</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 19:42:37 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183787</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091676</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-04 20:27:47 -0700</bug_when>
    <thetext>** The following Mozilla test failures have been introduced:
	js1_5/Array/regress-101964.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091679</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 20:28:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; ** The following Mozilla test failures have been introduced:
&gt; 	js1_5/Array/regress-101964.js

Details?  I don&apos;t see it locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091680</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 20:31:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; ** The following Mozilla test failures have been introduced:
&gt; &gt; 	js1_5/Array/regress-101964.js
&gt; 
&gt; Details?  I don&apos;t see it locally.

I think I see it.  It appears to be asserting the performance of exotic operations.  I believe we should either skip the test or edit it.  Looking now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091686</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-04 20:45:53 -0700</bug_when>
    <thetext>https://build.webkit.org/builders/Apple%20Mavericks%20LLINT%20CLoop%20%28BuildAndTest%29</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091689</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 20:53:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; https://build.webkit.org/builders/
&gt; Apple%20Mavericks%20LLINT%20CLoop%20%28BuildAndTest%29

I think I fixed it: http://trac.webkit.org/changeset/183791.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091693</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 21:21:49 -0700</bug_when>
    <thetext>Fixed even harder in http://trac.webkit.org/changeset/183792</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091784</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-05-05 09:27:12 -0700</bug_when>
    <thetext>It appears that this broke mozilla-tests.yaml/js1_5/Array/regress-157652.js on iOS.  That test now appears to be flakey.  Here are some of the test outputs since &lt;http://trac.webkit.org/changeset/183787&gt;.  Note that these are 64 bit results, but the failure is seen on 32 bit systems as well.

Failures	                                                                                183786   183787
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-dfg-eager-no-cjit-validate-phases      Passed   Failed

Failures	                                                                                183787   183788
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla                                        Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-baseline                               Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-dfg-eager-no-cjit-validate-phases      Failed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-llint                                  Passed   Failed

Failures	                                                                                183796   183797
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla                                        Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-dfg-eager-no-cjit-validate-phases	Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-ftl                                    Failed   Passed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-ftl-eager-no-cjit-validate-phases      Failed   Passed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-llint                                  Failed   Failed

Failures	                                                                                183797   183798
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla                                        Failed   Passed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-baseline                               Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-dfg-eager-no-cjit-validate-phases	Failed   Passed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-llint                                  Failed   Failed

Failures	                                                                                183798   183801
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla                                        Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-baseline                               Failed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-ftl                                    Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-ftl-eager-no-cjit-validate-phases      Passed   Failed
mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla-llint                                  Failed   Passed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091794</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-05 09:39:57 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; It appears that this broke mozilla-tests.yaml/js1_5/Array/regress-157652.js
&gt; on iOS.  That test now appears to be flakey. …

I’ll try to address this with https://bugs.webkit.org/show_bug.cgi?id=144622 today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092400</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-06 16:42:08 -0700</bug_when>
    <thetext>Looks like a 2.9% progression on Kraken on the bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252363</attachid>
            <date>2015-05-04 18:58:21 -0700</date>
            <delta_ts>2015-05-04 19:21:06 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30950</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODM3ODYpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA1LTA0ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTGFyZ2UgYXJyYXkgc2hv
dWxkbid0IGJlIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWRkIHRoZSBoYXNoLW1hcCBiZW5jaG1hcmsgdG8gTG9uZ1NwaWRlci4g
TG9uZ1NwaWRlciB3YXMgYWxyZWFkeSBub3QgYSBwZXJmZWN0IG1hdGNoIG9mCisgICAgICAgIFN1
blNwaWRlci4gSXQncyBub3QgYW4gb2ZmaWNpYWwgYmVuY2htYXJrLiBJdCBjb250YWlucyBiZW5j
aG1hcmtzIHRoYXQgYXJlIHJlbGF0aXZlbHkKKyAgICAgICAgbG9uZy1ydW5uaW5nLiBTbywgaGFz
aC1tYXAgc29ydCBvZiBiZWxvbmdzIGhlcmUuCisKKyAgICAgICAgKiBMb25nU3BpZGVyL2hhc2gt
bWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKEhhc2hNYXApOgorICAgICAgICAoSGFzaE1hcC4pOgor
ICAgICAgICAoLmdldCB2YXIpOgorCiAyMDE1LTA1LTAxICBEZXdlaSBaaHUgIDxkZXdlaV96aHVA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBvIGJ1ZyBpbiBTcGVlZG9tZXRlci9yZXNvdXJj
ZXMvbWFpbi5qcwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Mb25nU3BpZGVyL2hhc2gtbWFwLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvTG9uZ1NwaWRlci9oYXNoLW1hcC5qcwko
cmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvTG9uZ1NwaWRlci9oYXNoLW1hcC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwMiBAQAorLy9AIHJ1bkRlZmF1bHQKKworLyoKKyAq
ICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIg
b25lIG9yIG1vcmUKKyAqICBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhl
IE5PVElDRSBiZWxvdyBmb3IgYWRkaXRpb25hbAorICogIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBj
b3B5cmlnaHQgb3duZXJzaGlwLgorICogIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlv
dSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCisgKiAgKHRoZSAiTGljZW5z
ZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgK
KyAqICB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
KyAqCisgKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiAgV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
KiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisK
Ky8qKioqKioqIE5PVElDRSAqKioqKioqKioKKworQXBhY2hlIEhhcm1vbnkKK0NvcHlyaWdodCAy
MDA2LCAyMDEwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworVGhpcyBwcm9kdWN0
IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBhdAorVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4KKworUG9ydGlvbnMgb2YgQXBhY2hlIEhh
cm1vbnkgd2VyZSBvcmlnaW5hbGx5IGRldmVsb3BlZCBieQorSW50ZWwgQ29ycG9yYXRpb24gYW5k
IGFyZSBsaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlCitGb3VuZGF0aW9uIHVuZGVyIHRo
ZSAiU29mdHdhcmUgR3JhbnQgYW5kIENvcnBvcmF0ZSBDb250cmlidXRpb24KK0xpY2Vuc2UgQWdy
ZWVtZW50IiBhbmQgZm9yIHdoaWNoIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZXMKK2Fw
cGx5CisgICAgICAgICAoQykgQ29weXJpZ2h0IDIwMDUgSW50ZWwgQ29ycG9yYXRpb24KKyAgICAg
ICAgIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA2IEludGVsIENvcnBvcmF0aW9uCisgICAgICAgICAo
QykgQ29weXJpZ2h0IDIwMDYgSW50ZWwgQ29ycG9yYXRpb24KKworCitUaGUgZm9sbG93aW5nIGNv
cHlyaWdodCBub3RpY2Uocykgd2VyZSBhZmZpeGVkIHRvIHBvcnRpb25zIG9mIHRoZSBjb2RlCit3
aXRoIHdoaWNoIHRoaXMgZmlsZSBpcyBub3cgb3Igd2FzIGF0IG9uZSB0aW1lIGRpc3RyaWJ1dGVk
CithbmQgYXJlIHBsYWNlZCBoZXJlIHVuYWx0ZXJlZC4KKworKEMpIENvcHlyaWdodCAxOTk3LDIw
MDQgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbi4KK0FsbCByaWdo
dHMgcmVzZXJ2ZWQuCisKKyhDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDMuIAorCisKK1RoaXMg
c29mdHdhcmUgY29udGFpbnMgY29kZSBkZXJpdmVkIGZyb20gVU5JWCBWNywgQ29weXJpZ2h0KEMp
CitDYWxkZXJhIEludGVybmF0aW9uYWwgSW5jLgorCisqKioqKioqKioqKioqKioqKioqKioqKiov
CisKKy8vIFRoaXMgY29kZSBpcyBhIG1hbnVhbCB0cmFuc2xhdGlvbiBvZiBBcGFjaGUgSGFybW9u
eSdzIEhhc2hNYXAgY2xhc3MgdG8KKy8vIEphdmFTY3JpcHQuCisKK3ZhciBIYXNoTWFwID0gKGZ1
bmN0aW9uKCkgeworICAgIHZhciBERUZBVUxUX1NJWkUgPSAxNjsKKyAgICAKKyAgICBmdW5jdGlv
biBjYWxjdWxhdGVDYXBhY2l0eSh4KQorICAgIHsKKyAgICAgICAgaWYgKHggPj0gMSA8PCAzMCkK
KyAgICAgICAgICAgIHJldHVybiAxIDw8IDMwOworICAgICAgICBpZiAoeCA9PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIDE2OworICAgICAgICB4ID0geCAtIDE7CisgICAgICAgIHggfD0geCA+PiAx
OworICAgICAgICB4IHw9IHggPj4gMjsKKyAgICAgICAgeCB8PSB4ID4+IDQ7CisgICAgICAgIHgg
fD0geCA+PiA4OworICAgICAgICB4IHw9IHggPj4gMTY7CisgICAgICAgIHJldHVybiB4ICsgMTsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gY29tcHV0ZUhhc2hDb2RlKGtleSkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAodHlwZW9mIGtleSkgeworICAgICAgICBjYXNlICJ1bmRlZmluZWQiOgor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgICAg
ICBpZiAoIWtleSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSAiZnVu
Y3Rpb24iOgorICAgICAgICAgICAgcmV0dXJuIGtleS5oYXNoQ29kZSgpOworICAgICAgICBjYXNl
ICJib29sZWFuIjoKKyAgICAgICAgICAgIHJldHVybiBrZXkgfCAwOworICAgICAgICBjYXNlICJu
dW1iZXIiOgorICAgICAgICAgICAgaWYgKChrZXkgfCAwKSA9PSBrZXkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGtleTsKKyAgICAgICAgICAgIGtleSA9ICIiICsga2V5OyAvLyBDb21wdXRlIHN0
cmluZyBoYXNoIG9mIHRoZSBkb3VibGUuIEl0J3MgdGhlIGJlc3Qgd2UgY2FuIGRvLgorICAgICAg
ICBjYXNlICJzdHJpbmciOgorICAgICAgICAgICAgLy8gc291cmNlOiBodHRwOi8vZW4ud2lraXBl
ZGlhLm9yZy93aWtpL0phdmFfaGFzaENvZGUoKSNTYW1wbGVfaW1wbGVtZW50YXRpb25zX29mX3Ro
ZV9qYXZhLmxhbmcuU3RyaW5nX2FsZ29yaXRobQorICAgICAgICAgICAgdmFyIGggPSAwOworICAg
ICAgICAgICAgdmFyIGxlbiA9IGtleS5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKHZhciBpbmRl
eCA9IDA7IGluZGV4IDwgbGVuOyBpbmRleCsrKSB7CisgICAgICAgICAgICAgICAgaCA9ICgoKDMx
ICogaCkgfCAwKSArIGtleS5jaGFyQ29kZUF0KGluZGV4KSkgfCAwOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIGg7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkludGVybmFsIGVycm9yOiBCYWQgSmF2YVNjcmlwdCB2YWx1ZSB0eXBlIik7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gZXF1YWxzKGEsIGIpCisgICAg
eworICAgICAgICBpZiAodHlwZW9mIGEgIT0gdHlwZW9mIGIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHN3aXRjaCAodHlwZW9mIGEpIHsKKyAgICAgICAgY2FzZSAib2JqZWN0
IjoKKyAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICByZXR1cm4gIWI7CisgICAg
ICAgIGNhc2UgImZ1bmN0aW9uIjoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGIpIHsKKyAg
ICAgICAgICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGEuZXF1YWxzKGIpOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGZ1bmN0aW9uIEVudHJ5KGtleSwgaGFzaCwgdmFsdWUpCisgICAgeworICAgICAgICB0
aGlzLl9rZXkgPSBrZXk7CisgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHRo
aXMuX29yaWdLZXlIYXNoID0gaGFzaDsKKyAgICAgICAgdGhpcy5fbmV4dCA9IG51bGw7CisgICAg
fQorCisgICAgRW50cnkucHJvdG90eXBlID0geworICAgICAgICBjbG9uZTogZnVuY3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEVudHJ5KHRoaXMuX2tleSwg
dGhpcy5faGFzaCwgdGhpcy5fdmFsdWUpOworICAgICAgICAgICAgaWYgKHRoaXMuX25leHQpCisg
ICAgICAgICAgICAgICAgcmVzdWx0Ll9uZXh0ID0gdGhpcy5fbmV4dC5jbG9uZSgpOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHRvU3Ry
aW5nOiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9rZXkg
KyAiPSIgKyB0aGlzLl92YWx1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIGdldCBr
ZXkoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fa2V5OworICAgICAgICB9
LAorICAgICAgICAKKyAgICAgICAgZ2V0IHZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX3ZhbHVlOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBmdW5jdGlv
biBBYnN0cmFjdE1hcEl0ZXJhdG9yKG1hcCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Fzc29jaWF0
ZWRNYXAgPSBtYXA7CisgICAgICAgIHRoaXMuX2V4cGVjdGVkTW9kQ291bnQgPSBtYXAuX21vZENv
dW50OworICAgICAgICB0aGlzLl9mdXR1cmVFbnRyeSA9IG51bGw7CisgICAgICAgIHRoaXMuX2N1
cnJlbnRFbnRyeSA9IG51bGw7CisgICAgICAgIHRoaXMuX3ByZXZFbnRyeSA9IG51bGw7CisgICAg
ICAgIHRoaXMuX3Bvc2l0aW9uID0gMDsKKyAgICB9CisgICAgCisgICAgQWJzdHJhY3RNYXBJdGVy
YXRvci5wcm90b3R5cGUgPSB7CisgICAgICAgIGhhc05leHQ6IGZ1bmN0aW9uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHRoaXMuX2Z1dHVyZUVudHJ5KQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgd2hpbGUgKHRoaXMuX3Bvc2l0aW9uIDwgdGhpcy5fYXNz
b2NpYXRlZE1hcC5fZWxlbWVudERhdGEubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0
aGlzLl9hc3NvY2lhdGVkTWFwLl9lbGVtZW50RGF0YVt0aGlzLl9wb3NpdGlvbl0pCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uKys7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIF9jaGVja0NvbmN1
cnJlbnRNb2Q6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMuX2V4
cGVjdGVkTW9kQ291bnQgIT0gdGhpcy5fYXNzb2NpYXRlZE1hcC5fbW9kQ291bnQpCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb25jdXJyZW50IEhhc2hNYXAgbW9kaWZpY2F0aW9u
IGRldGVjdGVkIik7CisgICAgICAgIH0sCisgICAgICAgIAorICAgICAgICBfbWFrZU5leHQ6IGZ1
bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fY2hlY2tDb25jdXJyZW50TW9k
KCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuaGFzTmV4dCgpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiTm8gc3VjaCBlbGVtZW50Iik7CisgICAgICAgICAgICBpZiAoIXRoaXMu
X2Z1dHVyZUVudHJ5KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudEVudHJ5ID0gdGhp
cy5fYXNzb2NpYXRlZE1hcC5fZWxlbWVudERhdGFbdGhpcy5fcG9zaXRpb24rK107CisgICAgICAg
ICAgICAgICAgdGhpcy5fZnV0dXJlRW50cnkgPSB0aGlzLl9jdXJyZW50RW50cnkuX25leHQ7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fcHJldkVudHJ5ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudEVudHJ5
KQorICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZFbnRyeSA9IHRoaXMuX2N1cnJlbnRFbnRyeTsK
KyAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRFbnRyeSA9IHRoaXMuX2Z1dHVyZUVudHJ5OworICAg
ICAgICAgICAgdGhpcy5fZnV0dXJlRW50cnkgPSB0aGlzLl9mdXR1cmVFbnRyeS5fbmV4dDsKKyAg
ICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oKQorICAgICAgICB7
CisgICAgICAgICAgICB0aGlzLl9jaGVja0NvbmN1cnJlbnRNb2QoKTsKKyAgICAgICAgICAgIGlm
ICghdGhpcy5fY3VycmVudEVudHJ5KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
SWxsZWdhbCBzdGF0ZSIpOworICAgICAgICAgICAgaWYgKCF0aGlzLl9wcmV2RW50cnkpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9jdXJyZW50RW50cnkuX29yaWdLZXlIYXNo
ICYgKHRoaXMuX2Fzc29jaWF0ZWRNYXAuX2VsZW1lbnREYXRhLmxlbmd0aCAtIDEpOworICAgICAg
ICAgICAgICAgIHRoaXMuX2Fzc29jaWF0ZWRNYXAuX2VsZW1lbnREYXRhW2luZGV4XSA9IHRoaXMu
X2Fzc29jaWF0ZWRNYXAuX2VsZW1lbnREYXRhW2luZGV4XS5fbmV4dDsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZFbnRyeS5fbmV4dCA9IHRoaXMuX2N1cnJl
bnRFbnRyeS5fbmV4dDsKKyAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRFbnRyeSA9IG51bGw7Cisg
ICAgICAgICAgICB0aGlzLl9leHBlY3RlZE1vZENvdW50Kys7CisgICAgICAgICAgICB0aGlzLl9h
c3NvY2lhdGVkTWFwLl9tb2RDb3VudCsrOworICAgICAgICAgICAgdGhpcy5fYXNzb2NpYXRlZE1h
cC5fZWxlbWVudENvdW50LS07CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9u
IEVudHJ5SXRlcmF0b3IobWFwKQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RNYXBJdGVyYXRvci5j
YWxsKHRoaXMsIG1hcCk7CisgICAgfQorICAgIAorICAgIEVudHJ5SXRlcmF0b3IucHJvdG90eXBl
ID0geworICAgICAgICBuZXh0OiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRo
aXMuX21ha2VOZXh0KCk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEVudHJ5Owor
ICAgICAgICB9CisgICAgfTsKKyAgICBFbnRyeUl0ZXJhdG9yLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBBYnN0cmFjdE1hcEl0ZXJhdG9yLnByb3RvdHlwZTsKKyAgICAKKyAgICBmdW5jdGlvbiBLZXlJ
dGVyYXRvcihtYXApCisgICAgeworICAgICAgICBBYnN0cmFjdE1hcEl0ZXJhdG9yLmNhbGwodGhp
cywgbWFwKTsKKyAgICB9CisgICAgCisgICAgS2V5SXRlcmF0b3IucHJvdG90eXBlID0geworICAg
ICAgICBuZXh0OiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMubWFrZU5l
eHQoKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50RW50cnkuX2tleTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgS2V5SXRlcmF0b3IucHJvdG90eXBlLl9fcHJvdG9fXyA9IEFic3Ry
YWN0TWFwSXRlcmF0b3IucHJvdG90eXBlOworICAgIAorICAgIGZ1bmN0aW9uIFZhbHVlSXRlcmF0
b3IobWFwKQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RNYXBJdGVyYXRvci5jYWxsKHRoaXMsIG1h
cCk7CisgICAgfQorICAgIAorICAgIFZhbHVlSXRlcmF0b3IucHJvdG90eXBlID0geworICAgICAg
ICBuZXh0OiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMubWFrZU5leHQo
KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50RW50cnkuX3ZhbHVlOworICAgICAg
ICB9CisgICAgfTsKKyAgICBWYWx1ZUl0ZXJhdG9yLnByb3RvdHlwZS5fX3Byb3RvX18gPSBBYnN0
cmFjdE1hcEl0ZXJhdG9yLnByb3RvdHlwZTsKKyAgICAKKyAgICBmdW5jdGlvbiBFbnRyeVNldCht
YXApCisgICAgeworICAgICAgICB0aGlzLl9hc3NvY2lhdGVkTWFwID0gbWFwOworICAgIH0KKyAg
ICAKKyAgICBFbnRyeVNldC5wcm90b3R5cGUgPSB7CisgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Fzc29jaWF0ZWRNYXAuX2VsZW1l
bnRDb3VudDsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIGNsZWFyOiBmdW5jdGlvbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX2Fzc29jaWF0ZWRNYXAuY2xlYXIoKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHJlbW92ZTogZnVuY3Rpb24ob2JqZWN0KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9hc3NvY2lhdGVkTWFwLl9nZXRF
bnRyeShvYmplY3Qua2V5KTsKKyAgICAgICAgICAgIGlmICghZW50cnkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFlcXVhbHMoZW50cnkuX3ZhbHVlLCBv
YmplY3QudmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHRoaXMuX2Fzc29jaWF0ZWRNYXAuX3JlbW92ZUVudHJ5KGVudHJ5KTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICAKKyAgICAgICAgY29udGFpbnM6IGZ1bmN0
aW9uKG9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fYXNz
b2NpYXRlZE1hcC5fZ2V0RW50cnkob2JqZWN0LmtleSk7CisgICAgICAgICAgICBpZiAoIWVudHJ5
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBlcXVh
bHMoZW50cnkuX3ZhbHVlLCBvYmplY3QudmFsdWUpOworICAgICAgICB9LAorICAgICAgICAKKyAg
ICAgICAgaXRlcmF0b3I6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IG5ldyBFbnRyeUl0ZXJhdG9yKHRoaXMuX2Fzc29jaWF0ZWRNYXApOworICAgICAgICB9CisgICAg
fTsKKyAgICAKKyAgICBmdW5jdGlvbiBLZXlTZXQobWFwKQorICAgIHsKKyAgICAgICAgdGhpcy5f
YXNzb2NpYXRlZE1hcCA9IG1hcDsKKyAgICB9CisgICAgCisgICAgS2V5U2V0LnByb3RvdHlwZSA9
IHsKKyAgICAgICAgY29udGFpbnM6IGZ1bmN0aW9uKG9iamVjdCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2Fzc29jaWF0ZWRNYXAuY29udGFpbnMob2JqZWN0KTsKKyAgICAg
ICAgfSwKKyAgICAgICAgCisgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2Fzc29jaWF0ZWRNYXAuX2VsZW1lbnRDb3VudDsKKyAgICAg
ICAgfSwKKyAgICAgICAgCisgICAgICAgIGNsZWFyOiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRoaXMuX2Fzc29jaWF0ZWRNYXAuY2xlYXIoKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgCisgICAgICAgIHJlbW92ZTogZnVuY3Rpb24oa2V5KQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gISF0aGlzLl9hc3NvY2lhdGVkTWFwLnJlbW92ZShrZXkpOworICAgICAgICB9LAor
ICAgICAgICAKKyAgICAgICAgaXRlcmF0b3I6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBLZXlJdGVyYXRvcih0aGlzLl9hc3NvY2lhdGVkTWFwKTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gVmFsdWVDb2xsZWN0aW9uKG1hcCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2Fzc29jaWF0ZWRNYXAgPSBtYXA7CisgICAgfQorICAgIAorICAg
IFZhbHVlQ29sbGVjdGlvbi5wcm90b3R5cGUgPSB7CisgICAgICAgIGNvbnRhaW5zOiBmdW5jdGlv
bihvYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9hc3NvY2lhdGVk
TWFwLmNvbnRhaW5zVmFsdWUob2JqZWN0KTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAg
IHNpemU6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Fz
c29jaWF0ZWRNYXAuX2VsZW1lbnRDb3VudDsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAg
IGNsZWFyOiBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX2Fzc29jaWF0
ZWRNYXAuY2xlYXIoKTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIGl0ZXJhdG9yOiBm
dW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVmFsdWVJdGVyYXRv
cih0aGlzLl9hc3NvY2lhdGVkTWFwKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgZnVu
Y3Rpb24gSGFzaE1hcChjYXBhY2l0eSwgbG9hZEZhY3RvcikKKyAgICB7CisgICAgICAgIGlmIChj
YXBhY2l0eSA9PSBudWxsKQorICAgICAgICAgICAgY2FwYWNpdHkgPSBERUZBVUxUX1NJWkU7Cisg
ICAgICAgIGlmIChsb2FkRmFjdG9yID09IG51bGwpCisgICAgICAgICAgICBsb2FkRmFjdG9yID0g
MC43NTsKKyAgICAgICAgCisgICAgICAgIGlmIChjYXBhY2l0eSA8IDApCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYXJndW1lbnQgdG8gSGFzaE1hcCBjb25zdHJ1Y3Rvcjog
Y2FwYWNpdHkgaXMgbmVnYXRpdmUiKTsKKyAgICAgICAgaWYgKGxvYWRGYWN0b3IgPD0gMCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCB0byBIYXNoTWFwIGNv
bnN0cnVjdG9yOiBsb2FkRmFjdG9yIGlzIG5vdCBwb3NpdGl2ZSIpOworICAgICAgICAKKyAgICAg
ICAgdGhpcy5fY2FwYWNpdHkgPSBjYWxjdWxhdGVDYXBhY2l0eShjYXBhY2l0eSk7CisgICAgICAg
IHRoaXMuX2VsZW1lbnRDb3VudCA9IDA7CisgICAgICAgIHRoaXMuX2VsZW1lbnREYXRhID0gbmV3
IEFycmF5KHRoaXMuY2FwYWNpdHkpOworICAgICAgICB0aGlzLl9sb2FkRmFjdG9yID0gbG9hZEZh
Y3RvcjsKKyAgICAgICAgdGhpcy5fbW9kQ291bnQgPSAwOworICAgICAgICB0aGlzLl9jb21wdXRl
VGhyZXNob2xkKCk7CisgICAgfQorICAgIAorICAgIEhhc2hNYXAucHJvdG90eXBlID0geworICAg
ICAgICBfY29tcHV0ZVRocmVzaG9sZDogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAg
ICB0aGlzLl90aHJlc2hvbGQgPSAodGhpcy5fZWxlbWVudERhdGEubGVuZ3RoICogdGhpcy5fbG9h
ZEZhY3RvcikgfCAwOworICAgICAgICB9LAorICAgICAgICAKKyAgICAgICAgY2xlYXI6IGZ1bmN0
aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50Q291bnQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9l
bGVtZW50Q291bnQgPSAwOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX2VsZW1lbnRE
YXRhLmxlbmd0aDsgaS0tOykKKyAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50RGF0YVtpXSA9
IG51bGw7CisgICAgICAgICAgICB0aGlzLl9tb2RDb3VudCsrOworICAgICAgICB9LAorICAgICAg
ICAKKyAgICAgICAgY2xvbmU6IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IG5ldyBIYXNoTWFwKHRoaXMuX2VsZW1lbnREYXRhLmxlbmd0aCwgdGhpcy5fbG9h
ZEZhY3Rvcik7CisgICAgICAgICAgICByZXN1bHQucHV0QWxsKHRoaXMpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIGNvbnRhaW5zS2V5
OiBmdW5jdGlvbihrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhIXRoaXMuX2dl
dEVudHJ5KGtleSk7CisgICAgICAgIH0sCisgICAgICAgIAorICAgICAgICBjb250YWluc1ZhbHVl
OiBmdW5jdGlvbih2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRo
aXMuX2VsZW1lbnREYXRhLmxlbmd0aDsgaS0tOykgeworICAgICAgICAgICAgICAgIGZvciAodmFy
IGVudHJ5ID0gdGhpcy5fZWxlbWVudERhdGFbaV07IGVudHJ5OyBlbnRyeSA9IGVudHJ5Ll9uZXh0
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcXVhbHModmFsdWUsIGVudHJ5Ll92YWx1ZSkp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0sCisg
ICAgICAgIAorICAgICAgICBlbnRyeVNldDogZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IEVudHJ5U2V0KHRoaXMpOworICAgICAgICB9LAorICAgICAgICAKKyAg
ICAgICAgZ2V0OiBmdW5jdGlvbihrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBlbnRy
eSA9IHRoaXMuX2dldEVudHJ5KGtleSk7CisgICAgICAgICAgICBpZiAoZW50cnkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5Ll92YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICB9LAorICAgICAgICAKKyAgICAgICAgX2dldEVudHJ5OiBmdW5jdGlvbihrZXkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBoYXNoID0gY29tcHV0ZUhhc2hDb2RlKGtleSk7Cisg
ICAgICAgICAgICB2YXIgaW5kZXggPSBoYXNoICYgKHRoaXMuX2VsZW1lbnREYXRhLmxlbmd0aCAt
IDEpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRLZXlFbnRyeShrZXksIGluZGV4LCBo
YXNoKTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIF9maW5kS2V5RW50cnk6IGZ1bmN0
aW9uKGtleSwgaW5kZXgsIGtleUhhc2gpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBlbnRy
eSA9IHRoaXMuX2VsZW1lbnREYXRhW2luZGV4XTsKKyAgICAgICAgICAgIHdoaWxlIChlbnRyeSAm
JiAoZW50cnkuX29yaWdLZXlIYXNoICE9IGtleUhhc2ggfHwgIWVxdWFscyhrZXksIGVudHJ5Ll9r
ZXkpKSkKKyAgICAgICAgICAgICAgICBlbnRyeSA9IGVudHJ5Ll9uZXh0OworICAgICAgICAgICAg
cmV0dXJuIGVudHJ5OworICAgICAgICB9LAorICAgICAgICAKKyAgICAgICAgaXNFbXB0eTogZnVu
Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIXRoaXMuX2VsZW1lbnRDb3Vu
dDsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIGtleVNldDogZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEtleVNldCh0aGlzKTsKKyAgICAgICAgfSwK
KyAgICAgICAgCisgICAgICAgIHB1dDogZnVuY3Rpb24oa2V5LCB2YWx1ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGhhc2ggPSBjb21wdXRlSGFzaENvZGUoa2V5KTsKKyAgICAgICAgICAg
IHZhciBpbmRleCA9IGhhc2ggJiAodGhpcy5fZWxlbWVudERhdGEubGVuZ3RoIC0gMSk7CisgICAg
ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9maW5kS2V5RW50cnkoa2V5LCBpbmRleCwgaGFzaCk7
CisgICAgICAgICAgICBpZiAoIWVudHJ5KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbW9kQ291
bnQrKzsKKyAgICAgICAgICAgICAgICBlbnRyeSA9IHRoaXMuX2NyZWF0ZUhhc2hlZEVudHJ5KGtl
eSwgaW5kZXgsIGhhc2gpOworICAgICAgICAgICAgICAgIGlmICgrK3RoaXMuX2VsZW1lbnRDb3Vu
dCA+IHRoaXMuX3RocmVzaG9sZCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVoYXNoKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBl
bnRyeS5fdmFsdWU7CisgICAgICAgICAgICBlbnRyeS5fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0sCisgICAgICAgIAorICAgICAgICBfY3JlYXRl
SGFzaGVkRW50cnk6IGZ1bmN0aW9uKGtleSwgaW5kZXgsIGhhc2gpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBlbnRyeSA9IG5ldyBFbnRyeShrZXksIGhhc2gsIG51bGwpOworICAgICAgICAg
ICAgZW50cnkuX25leHQgPSB0aGlzLl9lbGVtZW50RGF0YVtpbmRleF07CisgICAgICAgICAgICB0
aGlzLl9lbGVtZW50RGF0YVtpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgICAgIHJldHVybiBlbnRy
eTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHB1dEFsbDogZnVuY3Rpb24obWFwKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobWFwLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBmb3IgKHZhciBpdGVyID0gbWFwLmVudHJ5U2V0KCkuaXRl
cmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7CisgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0g
aXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgcHV0KGVudHJ5LmtleSwgZW50cnkudmFsdWUp
OworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAKKyAgICAgICAgX3JlaGFzaDog
ZnVuY3Rpb24oY2FwYWNpdHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjYXBhY2l0eSA9
PSBudWxsKQorICAgICAgICAgICAgICAgIGNhcGFjaXR5ID0gdGhpcy5fZWxlbWVudERhdGEubGVu
Z3RoOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gY2FsY3VsYXRlQ2Fw
YWNpdHkoIWNhcGFjaXR5ID8gMSA6IGNhcGFjaXR5IDw8IDEpOworICAgICAgICAgICAgdmFyIG5l
d0RhdGEgPSBuZXcgQXJyYXkobGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fZWxlbWVudERhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIg
ZW50cnkgPSB0aGlzLl9lbGVtZW50RGF0YVtpXTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50RGF0YVtpXSA9IG51bGw7CisgICAgICAgICAgICAgICAgd2hpbGUgKGVudHJ5KSB7CisgICAg
ICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGVudHJ5Ll9vcmlnS2V5SGFzaCAmIChsZW5ndGgg
LSAxKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5fbmV4dDsKKyAgICAg
ICAgICAgICAgICAgICAgZW50cnkuX25leHQgPSBuZXdEYXRhW2luZGV4XTsKKyAgICAgICAgICAg
ICAgICAgICAgbmV3RGF0YVtpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgZW50
cnkgPSBuZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnREYXRhID0gbmV3RGF0YTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVU
aHJlc2hvbGQoKTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHJlbW92ZTogZnVuY3Rp
b24oa2V5KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9yZW1vdmVF
bnRyeUZvcktleShrZXkpOworICAgICAgICAgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHJldHVybiBlbnRyeS5fdmFsdWU7CisgICAgICAg
IH0sCisgICAgICAgIAorICAgICAgICBfcmVtb3ZlRW50cnk6IGZ1bmN0aW9uKGVudHJ5KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaW5kZXggPSBlbnRyeS5fb3JpZ0tleUhhc2ggJiAodGhp
cy5fZWxlbWVudERhdGEubGVuZ3RoIC0gMSk7CisgICAgICAgICAgICB2YXIgY3VycmVudCA9IHRo
aXMuX2VsZW1lbnREYXRhW2luZGV4XTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGVudHJ5
KQorICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnREYXRhW2luZGV4XSA9IGVudHJ5Ll9uZXh0
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnQuX25l
eHQgIT0gZW50cnkpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Ll9uZXh0
OworICAgICAgICAgICAgICAgIGN1cnJlbnQuX25leHQgPSBlbnRyeS5fbmV4dDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHRoaXMuX21vZENvdW50Kys7CisgICAgICAgICAgICB0aGlzLl9l
bGVtZW50Q291bnQtLTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIF9yZW1vdmVFbnRy
eUZvcktleTogZnVuY3Rpb24oa2V5KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaGFzaCA9
IGNvbXB1dGVIYXNoQ29kZShrZXkpOworICAgICAgICAgICAgdmFyIGluZGV4ID0gaGFzaCAmICh0
aGlzLl9lbGVtZW50RGF0YS5sZW5ndGggLSAxKTsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9IHRo
aXMuX2VsZW1lbnREYXRhW2luZGV4XTsKKyAgICAgICAgICAgIHZhciBsYXN0ID0gbnVsbDsKKyAg
ICAgICAgICAgIHdoaWxlIChlbnRyeSAhPSBudWxsICYmICEoZW50cnkuX29yaWdLZXlIYXNoID09
IGhhc2ggJiYgZXF1YWxzKGtleSwgZW50cnkuX2tleSkpKSB7CisgICAgICAgICAgICAgICAgbGFz
dCA9IGVudHJ5OworICAgICAgICAgICAgICAgIGVudHJ5ID0gZW50cnkuX25leHQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxsOworICAgICAgICAgICAgaWYgKCFsYXN0KQorICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnREYXRhW2luZGV4XSA9IGVudHJ5Ll9uZXh0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGxhc3QuX25leHQgPSBlbnRyeS5fbmV4dDsKKyAgICAgICAgICAgIHRoaXMuX21vZENv
dW50Kys7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50Q291bnQtLTsKKyAgICAgICAgICAgIHJl
dHVybiBlbnRyeTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHNpemU6IGZ1bmN0aW9u
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRDb3VudDsKKyAg
ICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHZhbHVlczogZnVuY3Rpb24oKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbmV3IFZhbHVlQ29sbGVjdGlvbih0aGlzKTsKKyAgICAgICAg
fQorICAgIH07CisgICAgCisgICAgcmV0dXJuIEhhc2hNYXA7Cit9KSgpOworCit2YXIgbWFwID0g
bmV3IEhhc2hNYXAoKTsKK3ZhciBDT1VOVCA9IDUwMDAwMDsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBDT1VOVDsgKytpKQorICAgIG1hcC5wdXQoaSwgNDIpOworCit2YXIgcmVzdWx0ID0gMDsKK2Zv
ciAodmFyIGogPSAwOyBqIDwgNTsgKytqKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDT1VO
VDsgKytpKQorICAgICAgICByZXN1bHQgKz0gbWFwLmdldChpKTsKK30KKwordmFyIGtleVN1bSA9
IDA7Cit2YXIgdmFsdWVTdW0gPSAwOworZm9yICh2YXIgaXRlcmF0b3IgPSBtYXAuZW50cnlTZXQo
KS5pdGVyYXRvcigpOyBpdGVyYXRvci5oYXNOZXh0KCk7KSB7CisgICAgdmFyIGVudHJ5ID0gaXRl
cmF0b3IubmV4dCgpOworICAgIGtleVN1bSArPSBlbnRyeS5rZXk7CisgICAgdmFsdWVTdW0gKz0g
ZW50cnkudmFsdWU7Cit9CisKK2lmIChyZXN1bHQgIT0gMTA1MDAwMDAwKQorICAgIHRocm93ICJF
cnJvcjogcmVzdWx0ID0gIiArIHJlc3VsdDsKK2lmIChrZXlTdW0gIT0gMTI0OTk5NzUwMDAwKQor
ICAgIHRocm93ICJFcnJvcjoga2V5U3VtID0gIiArIGtleVN1bTsKK2lmICh2YWx1ZVN1bSAhPSAy
MTAwMDAwMCkKKyAgICB0aHJvdyAiRXJyb3I6IHZhbHVlU3VtID0gIiArIHZhbHVlU3VtOworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mzc4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAor
MjAxNS0wNS0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIExh
cmdlIGFycmF5IHNob3VsZG4ndCBiZSBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIERlY291cGxlIE1JTl9TUEFSU0VfQVJSQVlfSU5E
RVgsIHdoaWNoIGlzIHRoZSB0aHJlc2hvbGQgZm9yIHN0b3JpbmcgdG8gdGhlIHNwYXJzZSBtYXAg
d2hlbgorICAgICAgICB5b3UncmUgYWxyZWFkeSB1c2luZyBBcnJheVN0b3JhZ2UgbW9kZSwgZnJv
bSB0aGUgbWluaW11bCBhcnJheSBsZW5ndGggcmVxdWlyZWQgdG8gdXNlCisgICAgICAgIEFycmF5
U3RvcmFnZSBpbiBhIG5ldyBBcnJheShsZW5ndGgpIGFsbG9jYXRpb24uCisgICAgICAgIAorICAg
ICAgICBMaWZ0IHRoZSBhcnJheSBhbGxvY2F0aW9uIGxlbmd0aCB0aHJlc2hvbGQgdG8gc29tZXRo
aW5nIHZlcnkgaGlnaC4gSWYgdGhpcyB3b3Jrcywgd2UnbGwKKyAgICAgICAgcHJvYmFibHkgcmVt
b3ZlIHRoYXQgdGhyZXNob2xkIGVudGlyZWx5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBh
IDI3JSBzcGVlZC11cCBvbiBKZXRTdHJlYW0vaGFzaC1tYXAuIEJlY2F1c2UgcnVuLWpzYy1iZW5j
aG1hcmtzIHN0aWxsIGNhbid0IHJ1bgorICAgICAgICBKZXRTdHJlYW0gYXMgYSBkaXNjcmV0ZSBz
dWl0ZSwgdGhpcyBhZGRzIGhhc2gtbWFwIHRvIExvbmdTcGlkZXIgc28gdGhhdCB3ZSBydW4gaXQg
c29tZXdoZXJlCisgICAgICAgIGZvciBub3cuCisKKyAgICAgICAgKiBkZmcvREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpj
cmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0RW1wdHlBcnJheSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL25ldy1hcnJh
eS1zdG9yYWdlLWFycmF5LXdpdGgtc2l6ZS5qczogU2tpcCB0aGlzIHRlc3QgdW50aWwgd2UgZml4
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2MDkuCisKIDIwMTUt
MDUtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
QWRkIGJhY2tlZCBpbnRyaW5zaWNzIHRvIHByaXZhdGUgZnVuY3Rpb25zIGV4cG9zZWQgd2l0aCBw
cml2YXRlIHN5bWJvbHMgaW4gZ2xvYmFsIG9iamVjdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTgzNzIxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBqaXQtPnNpbGVu
dFNwaWxsKG1fcGxhbnNbaV0pOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEFzc2VtYmx5
SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihtX3NpemVHUFIpOwotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBiaWdMZW5ndGggPSBqaXQtPm1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIG1fc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihN
SU5fU1BBUlNFX0FSUkFZX0lOREVYKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJp
Z0xlbmd0aCA9IGppdC0+bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgbV9zaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1JTl9BUlJBWV9TVE9S
QUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKICAgICAgICAgaml0LT5tX2ppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1fY29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gaml0LT5tX2ppdC5qdW1w
KCk7CiAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZqaXQtPm1faml0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMTgzNzIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxNyw3ICszMzE3LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNp
emVHUFIsIFRydXN0ZWRJbW0zMihNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSkpOworICAgICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNU
SU9OX0xFTkdUSCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKCgxIDw8IDMp
ID09IHNpemVvZihKU1ZhbHVlKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNj
cmF0Y2hHUFIpOwpAQCAtMzM2MSw3ICszMzYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyBzdHJ1Y3R1cmVHUFIgPSBzZWxlY3RTY3JhdGNoR1BSKHNpemVHUFIpOwotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJB
WV9JTkRFWCkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGggPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBUcnVzdGVk
SW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwogICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgc3RydWN0
dXJlR1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAo
KTsKICAgICAgICAgYmlnTGVuZ3RoLmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTgz
NzIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQwOCw3ICszNDA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
c2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNpemVHUFIsIFRydXN0ZWRJ
bW0zMihNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSkpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BS
LCBUcnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKCgxIDw8IDMpID09IHNpemVvZihKU1Zh
bHVlKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHNpemVHUFIsIHNjcmF0Y2hHUFIpOwpAQCAt
MzQ1MCw3ICszNDUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVH
UFIgPSBzZWxlY3RTY3JhdGNoR1BSKHNpemVHUFIpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBiaWdMZW5ndGggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkpOworICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGggPSBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX0FSUkFZ
X1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgc3RydWN0dXJlR1BSKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgYmln
TGVuZ3RoLmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxODM3MjEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzI0Miw3ICszMjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3QXJyYXlXaXRoU2l6ZSBjb250aW51
YXRpb24iKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwocHVibGljTGVuZ3RoLCBtX291dC5jb25zdElu
dDMyKE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpKSwKKyAgICAgICAgICAgICAgICBtX291dC5hYm92
ZU9yRXF1YWwocHVibGljTGVuZ3RoLCBtX291dC5jb25zdEludDMyKE1JTl9BUlJBWV9TVE9SQUdF
X0NPTlNUUlVDVElPTl9MRU5HVEgpKSwKICAgICAgICAgICAgICAgICByYXJlbHkobGFyZ2VDYXNl
KSwgdXN1YWxseShmYXN0Q2FzZSkpOwogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGZhc3RDYXNlLCBsYXJnZUNhc2UpOwpAQCAtMzMxOCw3ICszMzE4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZVZhbHVlID0gbV9vdXQuc2VsZWN0KAotICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFs
KHB1YmxpY0xlbmd0aCwgbV9vdXQuY29uc3RJbnQzMihNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSks
CisgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwocHVibGljTGVuZ3RoLCBtX291dC5jb25z
dEludDMyKE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKSwKICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKAogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5
U3RvcmFnZSkpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb252ZW50aW9u
cy5oCShyZXZpc2lvbiAxODM3MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUNvbnZlbnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAvLyBUaGVzZSB2YWx1ZXMgaGF2ZSB0byBiZSBtYWNyb3MgdG8gYmUgdXNl
ZCBpbiBtYXgoKSBhbmQgbWluKCkgd2l0aG91dCBpbnRyb2R1Y2luZwogLy8gYSBQSUMgYnJhbmNo
IGluIE1hY2gtTyBiaW5hcmllcywgc2VlIDxyZGFyOi8vcHJvYmxlbS81OTcxMzkxPi4KKworLy8g
SWYgeW91IGdyb3cgYW4gQXJyYXlTdG9yYWdlIGFycmF5IGJ5IG1vcmUgdGhhbiB0aGlzLCB0aGVu
IHRoZSBhcnJheSB3aWxsIGdvIHNwYXJzZS4gTm90ZSB0aGF0IHdlCisvLyBjb3VsZCBwcm9iYWJs
eSBtYWtlIHRoaXMgc21hbGxlciAoaXQncyBsYXJnZSBiZWNhdXNlIGl0IHVzZWQgdG8gYmUgY29u
ZmxhdGVkIHdpdGgKKy8vIE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpLgog
I2RlZmluZSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYIDEwMDAwMFUKKy8vIElmIHlvdSB0cnkgdG8g
YWxsb2NhdGUgYSBjb250aWd1b3VzIGFycmF5IGxhcmdlciB0aGFuIHRoaXMsIHRoZW4gd2Ugd2ls
bCBhbGxvY2F0ZSBhbiBBcnJheVN0b3JhZ2UKKy8vIGFycmF5IGluc3RlYWQuIFdlIGFsbG93IGZv
ciBhbiBhcnJheSB0aGF0IG9jY3VwaWVzIDFHQiBvZiBWTS4KKyNkZWZpbmUgTUlOX0FSUkFZX1NU
T1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCAxMDI0ICogMTAyNCAqIDEwMjQgLyA4CiAjZGVmaW5l
IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWCAoTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCAtIDEp
CiAvLyAweEZGRkZGRkZGIGlzIGEgYml0IHdlaXJkIC0tIGlzIG5vdCBhbiBhcnJheSBpbmRleCBl
dmVuIHRob3VnaCBpdCdzIGFuIGludGVnZXIuCiAjZGVmaW5lIE1BWF9BUlJBWV9JTkRFWCAweEZG
RkZGRkZFVQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2
aXNpb24gMTgzNzIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgaW5saW5lIEpTQXJyYXkqIEpTQXJy
YXk6OmNyZWF0ZShWTSYgdm0sIAogICAgICAgICAgICAgfHwgaGFzQ29udGlndW91cyhzdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aDsKICAg
ICAgICAgYnV0dGVyZmx5ID0gY3JlYXRlQ29udGlndW91c0FycmF5QnV0dGVyZmx5KHZtLCAwLCBp
bml0aWFsTGVuZ3RoLCB2ZWN0b3JMZW5ndGgpOwotICAgICAgICBBU1NFUlQoaW5pdGlhbExlbmd0
aCA8IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpOworICAgICAgICBBU1NFUlQoaW5pdGlhbExlbmd0
aCA8IE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpOwogICAgICAgICBpZiAo
aGFzRG91YmxlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAg
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBQTmFOOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxODM3
MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NzIsNyArNjcyLDcgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmpl
Y3Q6OnN5bWJvbFRhYmxlSAogCiBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShF
eGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSAwKQogewotICAg
IHJldHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxlOjp1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihw
cm9maWxlLCBKU0FycmF5OjpjcmVhdGUoZXhlYy0+dm0oKSwgaW5pdGlhbExlbmd0aCA+PSBNSU5f
U1BBUlNFX0FSUkFZX0lOREVYID8gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSA6IGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9maWxlRHVyaW5nQWxsb2NhdGlvbihwcm9maWxlKSwg
aW5pdGlhbExlbmd0aCkpOworICAgIHJldHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxlOjp1cGRh
dGVMYXN0QWxsb2NhdGlvbkZvcihwcm9maWxlLCBKU0FycmF5OjpjcmVhdGUoZXhlYy0+dm0oKSwg
aW5pdGlhbExlbmd0aCA+PSBNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIID8g
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSA6IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JQcm9maWxlRHVyaW5nQWxsb2NhdGlvbihwcm9maWxlKSwgaW5pdGlhbExlbmd0aCkpOwogfQog
CiBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSAw
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktc3Rv
cmFnZS1hcnJheS13aXRoLXNpemUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9uZXctYXJyYXktc3RvcmFnZS1hcnJheS13aXRoLXNpemUuanMJKHJl
dmlzaW9uIDE4MzcyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3
LWFycmF5LXN0b3JhZ2UtYXJyYXktd2l0aC1zaXplLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNiBAQAorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDYw
OQorLy9AIHNraXAKKwogZnVuY3Rpb24gZm9vKHgpIHsKICAgICByZXR1cm4gbmV3IEFycmF5KHgp
OwogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTgzNzg2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTUtMDUtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KKworICAgICAgICBMYXJnZSBhcnJheSBzaG91bGRuJ3QgYmUgc2xvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgdGhlIGhhc2gt
bWFwIGJlbmNobWFyayB0byBMb25nU3BpZGVyLiBMb25nU3BpZGVyIHdhcyBhbHJlYWR5IG5vdCBh
IHBlcmZlY3QgbWF0Y2ggb2YKKyAgICAgICAgU3VuU3BpZGVyLiBJdCdzIG5vdCBhbiBvZmZpY2lh
bCBiZW5jaG1hcmsuIEl0IGNvbnRhaW5zIGJlbmNobWFya3MgdGhhdCBhcmUgcmVsYXRpdmVseQor
ICAgICAgICBsb25nLXJ1bm5pbmcuIFNvLCBoYXNoLW1hcCBzb3J0IG9mIGJlbG9uZ3MgaGVyZS4K
KworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzOgorCiAyMDE1LTA1LTA0ICBE
b3VnIFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBzZXR0aW5n
IGZvY3VzIHZpYSBhY2Nlc3NpYmlsaXR5IG9iamVjdCBuZWVkcyB0byBzZXQgaXNTeW5jaHJvbml6
aW5nIGluIHJlc3VsdGluZyBzZWxlY3Rpb24gaW50ZW50CkluZGV4OiBUb29scy9TY3JpcHRzL3J1
bi1qc2MtYmVuY2htYXJrcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qc2MtYmVu
Y2htYXJrcwkocmV2aXNpb24gMTgzNzIxKQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNo
bWFya3MJKHdvcmtpbmcgY29weSkKQEAgLTI4OTcsNyArMjg5Nyw3IEBAIGJlZ2luCiAgICAiYWNj
ZXNzLWZhbm5rdWNoIiwgImFjY2Vzcy1uYm9keSIsICJhY2Nlc3MtbnNpZXZlIiwKICAgICJiaXRv
cHMtM2JpdC1iaXRzLWluLWJ5dGUiLCAiYml0b3BzLWJpdHMtaW4tYnl0ZSIsICJiaXRvcHMtbnNp
ZXZlLWJpdHMiLAogICAgImNvbnRyb2xmbG93LXJlY3Vyc2l2ZSIsICJjcnlwdG8tYWVzIiwgImNy
eXB0by1tZDUiLCAiY3J5cHRvLXNoYTEiLAotICAgImRhdGUtZm9ybWF0LXRvZnRlIiwgImRhdGUt
Zm9ybWF0LXhwYXJiIiwgIm1hdGgtY29yZGljIiwKKyAgICJkYXRlLWZvcm1hdC10b2Z0ZSIsICJk
YXRlLWZvcm1hdC14cGFyYiIsICJoYXNoLW1hcCIsICJtYXRoLWNvcmRpYyIsCiAgICAibWF0aC1w
YXJ0aWFsLXN1bXMiLCAibWF0aC1zcGVjdHJhbC1ub3JtIiwgInN0cmluZy1iYXNlNjQiLAogICAg
InN0cmluZy1mYXN0YSIsICJzdHJpbmctdGFnY2xvdWQiXS5lYWNoIHsKICAgICB8IG5hbWUgfAo=
</data>
<flag name="review"
          id="277212"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>