<?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>126545</bug_id>
          
          <creation_ts>2014-01-06 15:42:58 -0800</creation_ts>
          <short_desc>FTL should not use the inputs of an add or sub as the live-at-exit values in an overflow check, if the values aren&apos;t live after</short_desc>
          <delta_ts>2014-01-30 13:32:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964786</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-06 15:42:58 -0800</bug_when>
    <thetext>Effectively, make SpeculationRecovery work in the FTL.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965612</commentid>
    <comment_count>1</comment_count>
      <attachid>220658</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 13:27:48 -0800</bug_when>
    <thetext>Created attachment 220658
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965634</commentid>
    <comment_count>2</comment_count>
      <attachid>220663</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 14:13:21 -0800</bug_when>
    <thetext>Created attachment 220663
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965635</commentid>
    <comment_count>3</comment_count>
      <attachid>220664</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 14:15:03 -0800</bug_when>
    <thetext>Created attachment 220664
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965679</commentid>
    <comment_count>4</comment_count>
      <attachid>220673</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 16:22:34 -0800</bug_when>
    <thetext>Created attachment 220673
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965685</commentid>
    <comment_count>5</comment_count>
      <attachid>220676</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 16:51:53 -0800</bug_when>
    <thetext>Created attachment 220676
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965764</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 19:57:51 -0800</bug_when>
    <thetext>Here&apos;s what the performance looks like.  Note that gbemu is slower with FTL anyway.  We need to investigate that.  So, it&apos;s possible that the gbemu result below is a fluke.  If I can&apos;t figure it out easily then I&apos;ll just ignore it for now and fix gbemu as part of a separate investigation.


Benchmark report for SunSpider, Octane, and Kraken on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/cStack/OpenSource/WebKitBuild/Release/jsc (r161524)
    export JSC_useExperimentalFTL=true
&quot;AddSubRecovery&quot; at /Volumes/Data/fromMiniMe/cStack/OpenSource/WebKitBuild/Release/jsc (r161520)
    export JSC_useExperimentalFTL=true

Collected 10 samples per benchmark/VM, with 10 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               AddSubRecovery                                  
SunSpider:
   3d-cube                                    7.7477+-0.0921            7.6919+-0.0624        
   3d-morph                                   8.9602+-0.1306            8.9439+-0.1633        
   3d-raytrace                                9.5637+-0.1792            9.5186+-0.1196        
   access-binary-trees                        2.4490+-0.0225     ?      2.4539+-0.0312        ?
   access-fannkuch                            8.0607+-0.0973            8.0432+-0.1013        
   access-nbody                               4.2694+-0.0749     ?      4.2695+-0.0168        ?
   access-nsieve                              5.5850+-0.0770     ?      5.6194+-0.0248        ?
   bitops-3bit-bits-in-byte                   1.9774+-0.0268     ?      1.9896+-0.0100        ?
   bitops-bits-in-byte                        6.6305+-0.0235            6.6007+-0.0865        
   bitops-bitwise-and                         3.0238+-0.0835     ?      3.0575+-0.0304        ? might be 1.0112x slower
   bitops-nsieve-bits                         5.8492+-0.0190     ?      5.8584+-0.0438        ?
   controlflow-recursive                      4.5934+-0.0648            4.5706+-0.0487        
   crypto-aes                                 5.8817+-0.1081     ?      5.9063+-0.0429        ?
   crypto-md5                                 3.5607+-0.0620     ?      3.5769+-0.0402        ?
   crypto-sha1                                3.6101+-0.0187            3.5884+-0.0552        
   date-format-tofte                         11.5845+-0.1187     ?     11.6822+-0.1167        ?
   date-format-xparb                          8.7830+-0.0958     ^      8.5817+-0.0888        ^ definitely 1.0235x faster
   math-cordic                                4.7315+-0.0493     ?      4.7629+-0.0156        ?
   math-partial-sums                         10.0864+-0.1116     ?     10.1489+-0.1402        ?
   math-spectral-norm                         4.6061+-0.0208            4.4216+-0.3540          might be 1.0417x faster
   regexp-dna                                12.9702+-0.0865     ?     12.9944+-0.1125        ?
   string-base64                              5.5906+-0.0428            5.5418+-0.0193        
   string-fasta                              11.5935+-0.2043     ?     11.6970+-0.2534        ?
   string-tagcloud                           15.0665+-0.1307     ?     15.2615+-0.1236        ? might be 1.0129x slower
   string-unpack-code                        32.5556+-0.2230     ?     32.7959+-0.4159        ?
   string-validate-input                      7.0304+-0.0611     ?      7.0469+-0.0563        ?

   &lt;arithmetic&gt; *                             7.9370+-0.0112     ?      7.9471+-0.0260        ? might be 1.0013x slower
   &lt;geometric&gt;                                6.5435+-0.0148            6.5385+-0.0267          might be 1.0008x faster
   &lt;harmonic&gt;                                 5.5255+-0.0247            5.5191+-0.0302          might be 1.0012x faster

                                                TipOfTree               AddSubRecovery                                  
Octane and V8v7:
   encrypt                                   0.47793+-0.00038    ^     0.43935+-0.00583       ^ definitely 1.0878x faster
   decrypt                                   8.59600+-0.05267    ^     8.13880+-0.09517       ^ definitely 1.0562x faster
   deltablue                        x2       0.55095+-0.00425    ?     0.55502+-0.00560       ?
   earley                                    0.88133+-0.00916    ?     0.89300+-0.01437       ? might be 1.0132x slower
   boyer                                    12.10769+-0.14450         11.99398+-0.02967       
   raytrace                         x2       3.92836+-0.03043    ?     3.94097+-0.04681       ?
   regexp                           x2      30.82303+-0.09634    ?    31.04310+-0.58821       ?
   richards                         x2       0.22442+-0.00251          0.22347+-0.00274       
   splay                            x2       0.62854+-0.00353    ?     0.63194+-0.00737       ?
   navier-stokes                    x2       8.39458+-0.13356    ^     8.22516+-0.01000       ^ definitely 1.0206x faster
   closure                                   0.77800+-0.00791          0.77601+-0.00993       
   jquery                                   10.96835+-0.08423         10.86367+-0.07504       
   gbemu                            x2      82.45033+-0.34407    !    94.26814+-0.64635       ! definitely 1.1433x slower
   mandreel                         x2     103.46800+-0.23636        102.74142+-0.57080       
   pdfjs                            x2      99.56900+-0.26983    ?    99.82254+-0.25272       ?
   box2d                            x2      35.31580+-0.45731         35.14919+-0.12333       

V8v7:
   &lt;arithmetic&gt;                              6.94767+-0.03015          6.91903+-0.07269         might be 1.0041x faster
   &lt;geometric&gt; *                             2.18671+-0.01090          2.16780+-0.01165         might be 1.0087x faster
   &lt;harmonic&gt;                                0.80145+-0.00474          0.79453+-0.00688         might be 1.0087x faster

Octane including V8v7:
   &lt;arithmetic&gt;                             29.40444+-0.04191    !    30.24257+-0.06338       ! definitely 1.0285x slower
   &lt;geometric&gt; *                             6.60793+-0.01984    ?     6.63299+-0.02120       ? might be 1.0038x slower
   &lt;harmonic&gt;                                1.21150+-0.00671          1.20167+-0.00973         might be 1.0082x faster

                                                TipOfTree               AddSubRecovery                                  
Kraken:
   ai-astar                                  493.103+-0.779      ?     493.471+-0.729         ?
   audio-beat-detection                      222.061+-1.313      ?     222.454+-1.470         ?
   audio-dft                                 293.444+-2.965            291.676+-1.039         
   audio-fft                                 129.743+-0.136            129.604+-0.132         
   audio-oscillator                          531.025+-7.483      ?     532.127+-3.620         ?
   imaging-darkroom                          294.288+-1.613            293.047+-1.153         
   imaging-desaturate                        120.759+-0.120      ^     110.162+-1.400         ^ definitely 1.0962x faster
   imaging-gaussian-blur                     199.408+-0.386      ^     190.213+-0.642         ^ definitely 1.0483x faster
   json-parse-financial                       79.736+-0.247      ?      80.204+-0.363         ?
   json-stringify-tinderbox                  106.659+-1.333            106.562+-0.444         
   stanford-crypto-aes                        92.862+-1.503             92.286+-0.383         
   stanford-crypto-ccm                       105.746+-7.114            102.586+-3.351           might be 1.0308x faster
   stanford-crypto-pbkdf2                    261.388+-4.301            259.783+-0.818         
   stanford-crypto-sha256-iterative          113.275+-0.435      ?     114.188+-0.730         ?

   &lt;arithmetic&gt; *                            217.393+-1.180      ^     215.597+-0.380         ^ definitely 1.0083x faster
   &lt;geometric&gt;                               180.389+-1.110      ^     178.179+-0.500         ^ definitely 1.0124x faster
   &lt;harmonic&gt;                                153.694+-1.141      ^     151.589+-0.598         ^ definitely 1.0139x faster

                                                TipOfTree               AddSubRecovery                                  
All benchmarks:
   &lt;arithmetic&gt;                              60.8238+-0.2464           60.7772+-0.0805          might be 1.0008x faster
   &lt;geometric&gt;                               13.2746+-0.0202           13.2558+-0.0263          might be 1.0014x faster
   &lt;harmonic&gt;                                 2.5135+-0.0119            2.4962+-0.0170          might be 1.0070x faster

                                                TipOfTree               AddSubRecovery                                  
Geomean of preferred means:
   &lt;scaled-result&gt;                           22.5070+-0.0437           22.4828+-0.0349          might be 1.0011x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965766</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 20:06:12 -0800</bug_when>
    <thetext>Yes, the gbemu regression is real.  I think it&apos;s better to investigate it separately and get this landed.

(In reply to comment #6)
&gt; Here&apos;s what the performance looks like.  Note that gbemu is slower with FTL anyway.  We need to investigate that.  So, it&apos;s possible that the gbemu result below is a fluke.  If I can&apos;t figure it out easily then I&apos;ll just ignore it for now and fix gbemu as part of a separate investigation.
&gt; 
&gt; 
&gt; Benchmark report for SunSpider, Octane, and Kraken on oldmac (MacPro4,1).
&gt; 
&gt; VMs tested:
&gt; &quot;TipOfTree&quot; at /Volumes/Data/pizlo/cStack/OpenSource/WebKitBuild/Release/jsc (r161524)
&gt;     export JSC_useExperimentalFTL=true
&gt; &quot;AddSubRecovery&quot; at /Volumes/Data/fromMiniMe/cStack/OpenSource/WebKitBuild/Release/jsc (r161520)
&gt;     export JSC_useExperimentalFTL=true
&gt; 
&gt; Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample
&gt; measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
&gt; get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.
&gt; 
&gt;                                                 TipOfTree               AddSubRecovery                                  
&gt; SunSpider:
&gt;    3d-cube                                    7.7477+-0.0921            7.6919+-0.0624        
&gt;    3d-morph                                   8.9602+-0.1306            8.9439+-0.1633        
&gt;    3d-raytrace                                9.5637+-0.1792            9.5186+-0.1196        
&gt;    access-binary-trees                        2.4490+-0.0225     ?      2.4539+-0.0312        ?
&gt;    access-fannkuch                            8.0607+-0.0973            8.0432+-0.1013        
&gt;    access-nbody                               4.2694+-0.0749     ?      4.2695+-0.0168        ?
&gt;    access-nsieve                              5.5850+-0.0770     ?      5.6194+-0.0248        ?
&gt;    bitops-3bit-bits-in-byte                   1.9774+-0.0268     ?      1.9896+-0.0100        ?
&gt;    bitops-bits-in-byte                        6.6305+-0.0235            6.6007+-0.0865        
&gt;    bitops-bitwise-and                         3.0238+-0.0835     ?      3.0575+-0.0304        ? might be 1.0112x slower
&gt;    bitops-nsieve-bits                         5.8492+-0.0190     ?      5.8584+-0.0438        ?
&gt;    controlflow-recursive                      4.5934+-0.0648            4.5706+-0.0487        
&gt;    crypto-aes                                 5.8817+-0.1081     ?      5.9063+-0.0429        ?
&gt;    crypto-md5                                 3.5607+-0.0620     ?      3.5769+-0.0402        ?
&gt;    crypto-sha1                                3.6101+-0.0187            3.5884+-0.0552        
&gt;    date-format-tofte                         11.5845+-0.1187     ?     11.6822+-0.1167        ?
&gt;    date-format-xparb                          8.7830+-0.0958     ^      8.5817+-0.0888        ^ definitely 1.0235x faster
&gt;    math-cordic                                4.7315+-0.0493     ?      4.7629+-0.0156        ?
&gt;    math-partial-sums                         10.0864+-0.1116     ?     10.1489+-0.1402        ?
&gt;    math-spectral-norm                         4.6061+-0.0208            4.4216+-0.3540          might be 1.0417x faster
&gt;    regexp-dna                                12.9702+-0.0865     ?     12.9944+-0.1125        ?
&gt;    string-base64                              5.5906+-0.0428            5.5418+-0.0193        
&gt;    string-fasta                              11.5935+-0.2043     ?     11.6970+-0.2534        ?
&gt;    string-tagcloud                           15.0665+-0.1307     ?     15.2615+-0.1236        ? might be 1.0129x slower
&gt;    string-unpack-code                        32.5556+-0.2230     ?     32.7959+-0.4159        ?
&gt;    string-validate-input                      7.0304+-0.0611     ?      7.0469+-0.0563        ?
&gt; 
&gt;    &lt;arithmetic&gt; *                             7.9370+-0.0112     ?      7.9471+-0.0260        ? might be 1.0013x slower
&gt;    &lt;geometric&gt;                                6.5435+-0.0148            6.5385+-0.0267          might be 1.0008x faster
&gt;    &lt;harmonic&gt;                                 5.5255+-0.0247            5.5191+-0.0302          might be 1.0012x faster
&gt; 
&gt;                                                 TipOfTree               AddSubRecovery                                  
&gt; Octane and V8v7:
&gt;    encrypt                                   0.47793+-0.00038    ^     0.43935+-0.00583       ^ definitely 1.0878x faster
&gt;    decrypt                                   8.59600+-0.05267    ^     8.13880+-0.09517       ^ definitely 1.0562x faster
&gt;    deltablue                        x2       0.55095+-0.00425    ?     0.55502+-0.00560       ?
&gt;    earley                                    0.88133+-0.00916    ?     0.89300+-0.01437       ? might be 1.0132x slower
&gt;    boyer                                    12.10769+-0.14450         11.99398+-0.02967       
&gt;    raytrace                         x2       3.92836+-0.03043    ?     3.94097+-0.04681       ?
&gt;    regexp                           x2      30.82303+-0.09634    ?    31.04310+-0.58821       ?
&gt;    richards                         x2       0.22442+-0.00251          0.22347+-0.00274       
&gt;    splay                            x2       0.62854+-0.00353    ?     0.63194+-0.00737       ?
&gt;    navier-stokes                    x2       8.39458+-0.13356    ^     8.22516+-0.01000       ^ definitely 1.0206x faster
&gt;    closure                                   0.77800+-0.00791          0.77601+-0.00993       
&gt;    jquery                                   10.96835+-0.08423         10.86367+-0.07504       
&gt;    gbemu                            x2      82.45033+-0.34407    !    94.26814+-0.64635       ! definitely 1.1433x slower
&gt;    mandreel                         x2     103.46800+-0.23636        102.74142+-0.57080       
&gt;    pdfjs                            x2      99.56900+-0.26983    ?    99.82254+-0.25272       ?
&gt;    box2d                            x2      35.31580+-0.45731         35.14919+-0.12333       
&gt; 
&gt; V8v7:
&gt;    &lt;arithmetic&gt;                              6.94767+-0.03015          6.91903+-0.07269         might be 1.0041x faster
&gt;    &lt;geometric&gt; *                             2.18671+-0.01090          2.16780+-0.01165         might be 1.0087x faster
&gt;    &lt;harmonic&gt;                                0.80145+-0.00474          0.79453+-0.00688         might be 1.0087x faster
&gt; 
&gt; Octane including V8v7:
&gt;    &lt;arithmetic&gt;                             29.40444+-0.04191    !    30.24257+-0.06338       ! definitely 1.0285x slower
&gt;    &lt;geometric&gt; *                             6.60793+-0.01984    ?     6.63299+-0.02120       ? might be 1.0038x slower
&gt;    &lt;harmonic&gt;                                1.21150+-0.00671          1.20167+-0.00973         might be 1.0082x faster
&gt; 
&gt;                                                 TipOfTree               AddSubRecovery                                  
&gt; Kraken:
&gt;    ai-astar                                  493.103+-0.779      ?     493.471+-0.729         ?
&gt;    audio-beat-detection                      222.061+-1.313      ?     222.454+-1.470         ?
&gt;    audio-dft                                 293.444+-2.965            291.676+-1.039         
&gt;    audio-fft                                 129.743+-0.136            129.604+-0.132         
&gt;    audio-oscillator                          531.025+-7.483      ?     532.127+-3.620         ?
&gt;    imaging-darkroom                          294.288+-1.613            293.047+-1.153         
&gt;    imaging-desaturate                        120.759+-0.120      ^     110.162+-1.400         ^ definitely 1.0962x faster
&gt;    imaging-gaussian-blur                     199.408+-0.386      ^     190.213+-0.642         ^ definitely 1.0483x faster
&gt;    json-parse-financial                       79.736+-0.247      ?      80.204+-0.363         ?
&gt;    json-stringify-tinderbox                  106.659+-1.333            106.562+-0.444         
&gt;    stanford-crypto-aes                        92.862+-1.503             92.286+-0.383         
&gt;    stanford-crypto-ccm                       105.746+-7.114            102.586+-3.351           might be 1.0308x faster
&gt;    stanford-crypto-pbkdf2                    261.388+-4.301            259.783+-0.818         
&gt;    stanford-crypto-sha256-iterative          113.275+-0.435      ?     114.188+-0.730         ?
&gt; 
&gt;    &lt;arithmetic&gt; *                            217.393+-1.180      ^     215.597+-0.380         ^ definitely 1.0083x faster
&gt;    &lt;geometric&gt;                               180.389+-1.110      ^     178.179+-0.500         ^ definitely 1.0124x faster
&gt;    &lt;harmonic&gt;                                153.694+-1.141      ^     151.589+-0.598         ^ definitely 1.0139x faster
&gt; 
&gt;                                                 TipOfTree               AddSubRecovery                                  
&gt; All benchmarks:
&gt;    &lt;arithmetic&gt;                              60.8238+-0.2464           60.7772+-0.0805          might be 1.0008x faster
&gt;    &lt;geometric&gt;                               13.2746+-0.0202           13.2558+-0.0263          might be 1.0014x faster
&gt;    &lt;harmonic&gt;                                 2.5135+-0.0119            2.4962+-0.0170          might be 1.0070x faster
&gt; 
&gt;                                                 TipOfTree               AddSubRecovery                                  
&gt; Geomean of preferred means:
&gt;    &lt;scaled-result&gt;                           22.5070+-0.0437           22.4828+-0.0349          might be 1.0011x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965767</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-08 20:08:33 -0800</bug_when>
    <thetext>Landed on branch in http://trac.webkit.org/changeset/161543</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966740</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-01-10 20:26:43 -0800</bug_when>
    <thetext>*** Bug 125755 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967601</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-13 18:41:33 -0800</bug_when>
    <thetext>Review status updated in r161938: &lt;http://trac.webkit.org/r161938&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220658</attachid>
            <date>2014-01-08 13:27:48 -0800</date>
            <delta_ts>2014-01-08 14:13:21 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24989</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE0LTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBub3QgdXNlIHRoZSBpbnB1dHMgb2YgYW4gYWRkIG9yIHN1YiBhcyB0aGUgbGl2
ZS1hdC1leGl0IHZhbHVlcyBpbiBhbiBvdmVyZmxvdyBjaGVjaywgaWYgdGhlIHZhbHVlcyBhcmVu
J3QgbGl2ZSBhZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBJbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gRXhpdFZhbHVlIHRoYXQg
aXMgY29tcHV0ZWQgYnkgZG9pbmcgc29tZSBtYXRoIG9uIHR3bworICAgICAgICBleGl0IGFyZ3Vt
ZW50cy4gVGhpcyBnZXRzIHVzZWQgYnkgTG93ZXJERkdUb0xMVk0gYnkgdHJhY2tpbmcgdGhlCisg
ICAgICAgIEF2YWlsYWJsZVJlY292ZXJpZXMgLSBpLmUuIHRoZSBzZXQgb2Ygd2F5cyB3ZSBrbm93
IGhvdyB0byByZWNvdmVyIHRoZSB2YWx1ZSBvZiBhCisgICAgICAgIG5vZGUgYnkgcGVyZm9ybWlu
ZyBtYXRoIG9uIExWYWx1ZSdzIC0gYW5kIHRoZW4gcGlja2luZyBhbiBBdmFpbGFibGVSZWNvdmVy
eSBpZiB3ZQorICAgICAgICB0cnkgdG8gZXhpdCB3aXRoIGFuIEF2YWlsYWJpbGl0eSBwb2ludGlu
ZyB0byBhIE5vZGUgdGhhdCBpcyBkZWFkLiBUaGUKKyAgICAgICAgY29tcGlsZUFyaXRoQWRkT3JT
dWIoKSBjb2RlIGFkZHMgQXZhaWxhYmxlUmVjb3ZlcmllcyBmb3IgYWxsIG9mIHRoZSB3YXlzIHlv
dSBjb3VsZAorICAgICAgICByZWNvdmVyeSB0aGUgbGVmdCBvciByaWdodCBvcGVyYW5kIGJ5IHVz
aW5nIHRoZSByZXN1bHQuCisKKyAgICAgICAgKiBmdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVyeTo6ZHVtcCk6Cisg
ICAgICAgICogZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5Lmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpGVEw6OkF2YWlsYWJsZVJlY292ZXJ5OjpBdmFpbGFibGVSZWNvdmVyeSk6CisgICAgICAgIChK
U0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zlcnk6Om5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkF2
YWlsYWJsZVJlY292ZXJ5Ojpmb3JtYXQpOgorICAgICAgICAoSlNDOjpGVEw6OkF2YWlsYWJsZVJl
Y292ZXJ5OjpvcGNvZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkF2YWlsYWJsZVJlY292ZXJ5Ojps
ZWZ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVyeTo6cmlnaHQpOgorICAg
ICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1
ZTo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICogZnRsL0ZUTEV4aXRWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6cmVjb3ZlcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkV4
aXRWYWx1ZTo6aXNSZWNvdmVyeSk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpsZWZ0
UmVjb3ZlcnlBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpyaWdodFJl
Y292ZXJ5QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6cmVjb3ZlcnlG
b3JtYXQpOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6cmVjb3ZlcnlPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6dmFsdWVGb3JtYXQpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVCbG9jayk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphZGRFeGl0
QXJndW1lbnRGb3JOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6a2ls
bERlYWROb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aXNMaXZlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YWRkQXZhaWxhYmxlUmVjb3Zlcnkp
OgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZnRsL0ZUTFJl
Y292ZXJ5T3Bjb2RlLmg6IEFkZGVkLgorCiAyMDE0LTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSBk
aXNhYmxpbmcgb2YgQVZYCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEF2YWls
YWJsZVJlY292ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgi
CisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
eworCit2b2lkIEF2YWlsYWJsZVJlY292ZXJ5OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
Cit7CisgICAgb3V0LnByaW50KG5vZGUoKSwgIiA9PiAiLCBvcGNvZGUoKSwgIiwgIiwgUmF3UG9p
bnRlcihtX2xlZnQpLCAiLCAiLCBSYXdQb2ludGVSKG1fcmlnaHQpLCAiLCAiLCBtX2Zvcm1hdCk7
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEF2YWlsYWJsZVJlY292
ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBdmFpbGFi
bGVSZWNvdmVyeS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBdmFpbGFibGVSZWNvdmVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGVExB
dmFpbGFibGVSZWNvdmVyeV9oCisjZGVmaW5lIEZUTEF2YWlsYWJsZVJlY292ZXJ5X2gKKworI2lm
IEVOQUJMRShGVExfSklUKQorCisjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkZUTEFi
YnJldmlhdGVkVHlwZXMuaCIKKyNpbmNsdWRlICJGVExSZWNvdmVyeU9wY29kZS5oIgorI2luY2x1
ZGUgIkZUTFZhbHVlRm9ybWF0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
KworY2xhc3MgQXZhaWxhYmxlUmVjb3ZlcnkgeworcHVibGljOgorICAgIEF2YWlsYWJsZVJlY292
ZXJ5KCkKKyAgICAgICAgOiBtX25vZGUoMCkKKyAgICAgICAgLCBtX2Zvcm1hdChJbnZhbGlkVmFs
dWVGb3JtYXQpCisgICAgICAgICwgbV9vcGNvZGUoQWRkUmVjb3ZlcnkpCisgICAgICAgICwgbV9s
ZWZ0KDApCisgICAgICAgICwgbV9yaWdodCgwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQXZh
aWxhYmxlUmVjb3ZlcnkoTm9kZSogbm9kZSwgUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlLCBMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0LCBWYWx1ZUZvcm1hdCBmb3JtYXQpCisgICAgICAgIDogbV9ub2Rl
KG5vZGUpCisgICAgICAgICwgbV9mb3JtYXQoZm9ybWF0KQorICAgICAgICAsIG1fb3Bjb2RlKG9w
Y29kZSkKKyAgICAgICAgLCBtX2xlZnQobGVmdCkKKyAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZTsgfQorICAgIFZhbHVlRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9
CisgICAgUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGU7IH0K
KyAgICBMVmFsdWUgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIExWYWx1ZSBy
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgTm9kZSogbV9ub2RlOworICAg
IFZhbHVlRm9ybWF0IG1fZm9ybWF0OworICAgIFJlY292ZXJ5T3Bjb2RlIG1fb3Bjb2RlOworICAg
IExWYWx1ZSBtX2xlZnQ7CisgICAgTFZhbHVlIG1fcmlnaHQ7Cit9OworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6RlRMCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKworI2VuZGlmIC8vIEZU
TEF2YWlsYWJsZVJlY292ZXJ5X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExFeGl0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRXhpdFZhbHVlLmNwcAkocmV2aXNpb24gMTYxNTEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw5IEBAIHZv
aWQgRXhpdFZhbHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWEKICAgICBjYXNlIEV4aXRWYWx1
ZUluSlNTdGFja0FzRG91YmxlOgogICAgICAgICBvdXQucHJpbnQoIkluSlNTdGFja0FzRG91Ymxl
OnIiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRW
YWx1ZVJlY292ZXJ5OgorICAgICAgICBvdXQucHJpbnQoIlJlY292ZXJ5KCIsIHJlY292ZXJ5T3Bj
b2RlKCksICIsIGFyZyIsIGxlZnRSZWNvdmVyeUFyZ3VtZW50KCksICIsIGFyZyIsIHJpZ2h0UmVj
b3ZlcnlBcmd1bWVudCgpLCAiLCAiLCByZWNvdmVyeUZvcm1hdCgpLCAiKSIpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJKHJldmlzaW9uIDE2
MTUxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1ZGUg
IkZUTEV4aXRBcmd1bWVudC5oIgorI2luY2x1ZGUgIkZUTFJlY292ZXJ5T3Bjb2RlLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtNTEsNyArNTIsOCBAQCBlbnVtIEV4aXRWYWx1ZUtp
bmQgewogICAgIEV4aXRWYWx1ZUluSlNTdGFjaywKICAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0lu
dDMyLAogICAgIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50NTIsCi0gICAgRXhpdFZhbHVlSW5KU1N0
YWNrQXNEb3VibGUKKyAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZSwKKyAgICBFeGl0VmFs
dWVSZWNvdmVyeQogfTsKIAogY2xhc3MgRXhpdFZhbHVlIHsKQEAgLTExOCw2ICsxMjAsMTcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMg
RXhpdFZhbHVlIHJlY292ZXJ5KFJlY292ZXJ5T3Bjb2RlIG9wY29kZSwgdW5zaWduZWQgbGVmdEFy
Z3VtZW50LCB1bnNpZ25lZCByaWdodEFyZ3VtZW50LCBWYWx1ZUZvcm1hdCBmb3JtYXQpCisgICAg
eworICAgICAgICBFeGl0VmFsdWUgcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gRXhp
dFZhbHVlUmVjb3Zlcnk7CisgICAgICAgIHJlc3VsdC51LnJlY292ZXJ5Lm9wY29kZSA9IG9wY29k
ZTsKKyAgICAgICAgcmVzdWx0LnUucmVjb3ZlcnkubGVmdEFyZ3VtZW50ID0gbGVmdDsKKyAgICAg
ICAgcmVzdWx0LnUucmVjb3ZlcnkucmlnaHRBcmd1bWVudCA9IHJpZ2h0OworICAgICAgICByZXN1
bHQudS5yZWNvdmVyeS5mb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAogICAgIEV4aXRWYWx1ZUtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQogICAgIAogICAgIGJvb2wgaXNEZWFkKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEV4
aXRWYWx1ZURlYWQ7IH0KQEAgLTEzNSw2ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJv
b2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFsdWVDb25zdGFu
dDsgfQogICAgIGJvb2wgaXNBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0
VmFsdWVBcmd1bWVudDsgfQorICAgIGJvb2wgaXNSZWNvdmVyeSgpIGNvbnN0IHsgcmV0dXJuIGtp
bmQoKSA9PSBFeGl0VmFsdWVSZWNvdmVyeTsgfQogICAgIAogICAgIEV4aXRBcmd1bWVudCBleGl0
QXJndW1lbnQoKSBjb25zdAogICAgIHsKQEAgLTE0Miw2ICsxNTYsMzAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gRXhpdEFyZ3VtZW50KHUuYXJndW1lbnQpOwogICAgIH0KICAgICAKKyAgICB1
bnNpZ25lZCBsZWZ0UmVjb3ZlcnlBcmd1bWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoaXNSZWNvdmVyeSgpKTsKKyAgICAgICAgcmV0dXJuIHUucmVjb3ZlcnkubGVmdEFyZ3VtZW50
OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCByaWdodFJlY292ZXJ5QXJndW1lbnQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzUmVjb3ZlcnkoKSk7CisgICAgICAgIHJldHVybiB1
LnJlY292ZXJ5LnJpZ2h0QXJndW1lbnQ7CisgICAgfQorICAgIAorICAgIFZhbHVlRm9ybWF0IHJl
Y292ZXJ5Rm9ybWF0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1JlY292ZXJ5KCkp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWVGb3JtYXQ+KHUucmVjb3ZlcnkuZm9y
bWF0KTsKKyAgICB9CisgICAgCisgICAgUmVjb3ZlcnlPcGNvZGUgcmVjb3ZlcnlPcGNvZGUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzUmVjb3ZlcnkoKSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxSZWNvdmVyeU9wY29kZT4odS5yZWNvdmVyeS5vcGNvZGUpOworICAgIH0K
KyAgICAKICAgICBKU1ZhbHVlIGNvbnN0YW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0NvbnN0YW50KCkpOwpAQCAtMTkwLDYgKzIyOCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZToKICAgICAgICAgICAg
IHJldHVybiBWYWx1ZUZvcm1hdERvdWJsZTsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEV4
aXRWYWx1ZUFkZFJlY292ZXJ5OgorICAgICAgICBjYXNlIEV4aXRWYWx1ZVN1YlJlY292ZXJ5Ogor
ICAgICAgICAgICAgcmV0dXJuIHJlY292ZXJ5Rm9ybWF0KCk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDUsNiArMjQ3LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIEV4aXRBcmd1bWVudFJlcHJlc2VudGF0aW9uIGFyZ3VtZW50
OwogICAgICAgICBFbmNvZGVkSlNWYWx1ZSBjb25zdGFudDsKICAgICAgICAgaW50IHZpcnR1YWxS
ZWdpc3RlcjsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQxNl90IGxlZnRBcmd1
bWVudDsKKyAgICAgICAgICAgIHVpbnQxNl90IHJpZ2h0QXJndW1lbnQ7CisgICAgICAgICAgICB1
aW50MTZfdCBvcGNvZGU7CisgICAgICAgICAgICB1aW50MTZfdCBmb3JtYXQ7CisgICAgICAgIH0g
cmVjb3Zlcnk7CiAgICAgfSB1OwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2MTUxNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMzMsNiArMjMzLDggQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGluaXRpYWxpemVP
U1JFeGl0U3RhdGVGb3JCbG9jaygpOwogICAgICAgICAKKyAgICAgICAgbV9saXZlID0gbV9oaWdo
QmxvY2stPnNzYS0+bGl2ZUF0SGVhZDsKKyAgICAgICAgCiAgICAgICAgIG1fc3RhdGUucmVzZXQo
KTsKICAgICAgICAgbV9zdGF0ZS5iZWdpbkJhc2ljQmxvY2sobV9oaWdoQmxvY2spOwogICAgICAg
ICAKQEAgLTI1Niw2ICsyNTgsOCBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZUNvbXBp
bGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgIiwgbV9ub2Rl
LCAiXG4iKTsKICAgICAgICAgCisgICAgICAgIG1fYXZhaWxhYmxlUmVjb3Zlcmllcy5yZXNpemUo
MCk7CisgICAgICAgIAogICAgICAgICBib29sIHNob3VsZEV4ZWN1dGVFZmZlY3RzID0gbV9pbnRl
cnByZXRlci5zdGFydEV4ZWN1dGluZyhtX25vZGUpOwogICAgICAgICAKICAgICAgICAgc3dpdGNo
IChtX25vZGUtPm9wKCkpIHsKQEAgLTI5NSwxMCArMjk5LDggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNvbXBpbGVWYWx1ZUFkZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
QXJpdGhBZGQ6Ci0gICAgICAgICAgICBjb21waWxlQWRkU3ViKCk7Ci0gICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgIGNvbXBpbGVBZGRTdWIoKTsK
KyAgICAgICAgICAgIGNvbXBpbGVBcml0aEFkZE9yU3ViKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBcml0aE11bDoKICAgICAgICAgICAgIGNvbXBpbGVBcml0aE11bCgpOwpA
QCAtNTA5LDYgKzUxMSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgCisgICAgICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1f
bm9kZSwga2lsbERlYWROb2RlKTsKKyAgICAgICAgaWYgKG1fbm9kZS0+YWRqdXN0ZWRSZWZDb3Vu
dCgpKQorICAgICAgICAgICAgbV9saXZlLmFkZChtX25vZGUpOworICAgICAgICAKICAgICAgICAg
aWYgKHNob3VsZEV4ZWN1dGVFZmZlY3RzKQogICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVj
dXRlRWZmZWN0cyhub2RlSW5kZXgpOwogICAgICAgICAKQEAgLTgwOCw3ICs4MTQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVBZGRT
dWIoKQorICAgIHZvaWQgY29tcGlsZUFyaXRoQWRkT3JTdWIoKQogICAgIHsKICAgICAgICAgYm9v
bCBpc1N1YiA9ICBtX25vZGUtPm9wKCkgPT0gQXJpdGhTdWI7CiAgICAgICAgIHN3aXRjaCAobV9u
b2RlLT5iaW5hcnlVc2VLaW5kKCkpIHsKQEAgLTgyMSw3ICs4MjcsMzEgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IGlzU3ViID8gbV9vdXQuc3ViV2l0aE92ZXJmbG93MzIobGVmdCwgcmlnaHQpIDog
bV9vdXQuYWRkV2l0aE92ZXJmbG93MzIobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdDsKKyAgICAgICAgICAgIGlmICghaXNTdWIpIHsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBtX291dC5hZGRXaXRoT3ZlcmZsb3czMihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICAg
ICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hp
bGQxKCksIFN1YlJlY292ZXJ5LAorICAgICAgICAgICAgICAgICAgICBtX291dC5leHRyYWN0VmFs
dWUocmVzdWx0LCAwKSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50MzIpOworICAgICAgICAgICAgICAg
IGFkZEF2YWlsYWJsZVJlY292ZXJ5KAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxk
MigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuZXh0cmFjdFZhbHVl
KHJlc3VsdCwgMCksIGxlZnQsIFZhbHVlRm9ybWF0SW50MzIpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZsb3czMihsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gcmVzdWx0ID0g
bGVmdCAtIHJpZ2h0CisgICAgICAgICAgICAgICAgLy8gcmVzdWx0ICsgcmlnaHQgPSBsZWZ0Cisg
ICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAg
IG1fbm9kZS0+Y2hpbGQxKCksIEFkZFJlY292ZXJ5LAorICAgICAgICAgICAgICAgICAgICBtX291
dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50MzIpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIHJlc3VsdCA9IGxlZnQgLSByaWdodAor
ICAgICAgICAgICAgICAgIC8vIHJlc3VsdCAtIGxlZnQgPSAtcmlnaHQKKyAgICAgICAgICAgICAg
ICAvLyByaWdodCA9IGxlZnQgLSByZXN1bHQKKyAgICAgICAgICAgICAgICBhZGRBdmFpbGFibGVS
ZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIoKSwgU3ViUmVjb3Zl
cnksCisgICAgICAgICAgICAgICAgICAgIGxlZnQsIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQs
IDApLCBWYWx1ZUZvcm1hdEludDMyKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc3Bl
Y3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQs
IDEpKTsKICAgICAgICAgICAgIHNldEludDMyKG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDAp
KTsKQEAgLTg0MSw3ICs4NzEsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0
ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQg
PSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IGlzU3ViID8gbV9vdXQuc3ViV2l0aE92ZXJmbG93NjQobGVmdCwgcmlnaHQpIDogbV9vdXQu
YWRkV2l0aE92ZXJmbG93NjQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dDsKKyAgICAgICAgICAgIGlmICghaXNTdWIpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBt
X291dC5hZGRXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICAgICAgYWRk
QXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCks
IFN1YlJlY292ZXJ5LAorICAgICAgICAgICAgICAgICAgICBtX291dC5leHRyYWN0VmFsdWUocmVz
dWx0LCAwKSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50NTIpOworICAgICAgICAgICAgICAgIGFkZEF2
YWlsYWJsZVJlY292ZXJ5KAorICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBT
dWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3Vs
dCwgMCksIGxlZnQsIFZhbHVlRm9ybWF0SW50NTIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gcmVzdWx0ID0gbGVmdCAt
IHJpZ2h0CisgICAgICAgICAgICAgICAgLy8gcmVzdWx0ICsgcmlnaHQgPSBsZWZ0CisgICAgICAg
ICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgIG1fbm9k
ZS0+Y2hpbGQxKCksIEFkZFJlY292ZXJ5LAorICAgICAgICAgICAgICAgICAgICBtX291dC5leHRy
YWN0VmFsdWUocmVzdWx0LCAwKSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50NTIpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIC8vIHJlc3VsdCA9IGxlZnQgLSByaWdodAorICAgICAg
ICAgICAgICAgIC8vIHJlc3VsdCAtIGxlZnQgPSAtcmlnaHQKKyAgICAgICAgICAgICAgICAvLyBy
aWdodCA9IGxlZnQgLSByZXN1bHQKKyAgICAgICAgICAgICAgICBhZGRBdmFpbGFibGVSZWNvdmVy
eSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIoKSwgU3ViUmVjb3ZlcnksCisg
ICAgICAgICAgICAgICAgICAgIGxlZnQsIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBW
YWx1ZUZvcm1hdEludDUyKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc3BlY3VsYXRl
KEludDUyT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwg
MSkpOwogICAgICAgICAgICAgc2V0SW50NTIobV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTkxLDYgKzQyNDYsMjEgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKHRyeVRvU2V0Q29uc3RhbnRFeGl0QXJndW1lbnQoZXhpdCwgaW5kZXgsIG5vZGUp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICAgICAgaWYgKCFpc0xpdmUobm9k
ZSkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F2YWlsYWJsZVJl
Y292ZXJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBBdmFpbGFibGVSZWNvdmVy
eSByZWNvdmVyeSA9IG1fYXZhaWxhYmxlUmVjb3Zlcmllc1tpXTsKKyAgICAgICAgICAgICAgICBp
ZiAocmVjb3Zlcnkubm9kZSgpICE9IG5vZGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGV4aXQubV92YWx1ZXNbaW5kZXhd
ID0gRXhpdFZhbHVlOjpyZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgcmVjb3Zlcnkub3Bj
b2RlKCksIGFyZ3VtZW50cy5zaXplKCksIGFyZ3VtZW50cy5zaXplKCkgKyAxLAorICAgICAgICAg
ICAgICAgICAgICByZWNvdmVyeS5mb3JtYXQoKSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRz
LmFwcGVuZChyZWNvdmVyeS5sZWZ0KCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQocmVjb3ZlcnkucmlnaHQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVl
ID0gbV9pbnQzMlZhbHVlcy5nZXQobm9kZSk7CiAgICAgICAgIGlmIChpc1ZhbGlkKHZhbHVlKSkg
ewogICAgICAgICAgICAgYWRkRXhpdEFyZ3VtZW50KGV4aXQsIGFyZ3VtZW50cywgaW5kZXgsIFZh
bHVlRm9ybWF0SW50MzIsIHZhbHVlLnZhbHVlKCkpOwpAQCAtNDI2MCw2ICs0MzMwLDI5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogICAgIH0KICAgICAKKyAg
ICB2b2lkIGtpbGxEZWFkTm9kZShOb2RlKiwgRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgaWYg
KGVkZ2UuZG9lc0tpbGwoKSkKKyAgICAgICAgICAgIG1fbGl2ZS5yZW1vdmUoZWRnZS5ub2RlKCkp
OworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGl2ZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fbGl2ZS5jb250YWlucyhub2RlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
ZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgTm9kZSogbm9kZSwgUmVjb3ZlcnlPcGNvZGUg
b3Bjb2RlLCBMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0LCBWYWx1ZUZvcm1hdCBmb3JtYXQpCisg
ICAgeworICAgICAgICBtX2F2YWlsYWJsZVJlY292ZXJpZXMuYXBwZW5kKEF2YWlsYWJsZVJlY292
ZXJ5KG5vZGUsIG9wY29kZSwgbGVmdCwgcmlnaHQsIGZvcm1hdCkpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGFkZEF2YWlsYWJsZVJlY292ZXJ5KAorICAgICAgICBFZGdlIGVkZ2UsIFJlY292ZXJ5
T3Bjb2RlIG9wY29kZSwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCwgVmFsdWVGb3JtYXQgZm9y
bWF0KQorICAgIHsKKyAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoZWRnZS5ub2RlKCksIG9w
Y29kZSwgbGVmdCwgcmlnaHQsIGZvcm1hdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0SW50
MzIoTm9kZSogbm9kZSwgTFZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9pbnQzMlZhbHVl
cy5zZXQobm9kZSwgTG93ZXJlZE5vZGVWYWx1ZSh2YWx1ZSwgbV9oaWdoQmxvY2spKTsKQEAgLTQ0
MjIsNiArNDUxNSw5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxOb2RlKiwgTFZhbHVlPiBtX3Bo
aXM7CiAgICAgCiAgICAgT3BlcmFuZHM8QXZhaWxhYmlsaXR5PiBtX2F2YWlsYWJpbGl0eTsKKyAg
ICBIYXNoU2V0PE5vZGUqPiBtX2xpdmU7CisgICAgCisgICAgVmVjdG9yPEF2YWlsYWJsZVJlY292
ZXJ5LCAzPiBtX2F2YWlsYWJsZVJlY292ZXJpZXM7CiAgICAgCiAgICAgSW5QbGFjZUFic3RyYWN0
U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0
YXRlPiBtX2ludGVycHJldGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTYxNTEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQsNiArMTM0LDQ0IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAg
aml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IodmFsdWUudmlydHVhbFJlZ2lz
dGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEV4aXRWYWx1ZVJlY292ZXJ5OgorICAgICAgICAgICAgcmVjb3JkLT5s
b2NhdGlvbnNbdmFsdWUubGVmdFJlY292ZXJ5QXJndW1lbnQoKV0ucmVzdG9yZUludG8oCisgICAg
ICAgICAgICAgICAgaml0LCBqaXRDb2RlLT5zdGFja21hcHMsIHJlZ2lzdGVyU2NyYXRjaCwgR1BS
SW5mbzo6cmVnVDEpOworICAgICAgICAgICAgcmVjb3JkLT5sb2NhdGlvbnNbdmFsdWUucmlnaHRS
ZWNvdmVyeUFyZ3VtZW50KCldLnJlc3RvcmVJbnRvKAorICAgICAgICAgICAgICAgIGppdCwgaml0
Q29kZS0+c3RhY2ttYXBzLCByZWdpc3RlclNjcmF0Y2gsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAodmFsdWUucmVjb3ZlcnlPcGNvZGUoKSkgeworICAgICAgICAgICAgY2Fz
ZSBBZGRSZWNvdmVyeToKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLnJlY292ZXJ5Rm9y
bWF0KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlRm9ybWF0SW50MzI6CisgICAgICAg
ICAgICAgICAgICAgIGppdC5hZGQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlRm9y
bWF0SW50NTI6CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGQ2NChHUFJJbmZvOjpyZWdUMSwg
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN1YlJlY292ZXJ5OgorICAg
ICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUucmVjb3ZlcnlGb3JtYXQoKSkgeworICAgICAgICAg
ICAgICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1
YjMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQ1MjoKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnN1YjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlP
cGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2xkdWUgIkZUTFJlY292ZXJ5T3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6RlRMOjpSZWNvdmVyeU9wY29kZSBvcGNv
ZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEpTQzo6RlRMOjpBZGRSZWNv
dmVyeToKKyAgICAgICAgb3V0LnByaW50KCJBZGQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgSlNDOjpGVEw6OlN1YlJlY292ZXJ5OgorICAgICAgICBvdXQucHJpbnQoIlN1YiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNvZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZUTFJlY292ZXJ5T3Bjb2RlX2gKKyNk
ZWZpbmUgRlRMUmVjb3ZlcnlPcGNvZGVfaAorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKKworZW51bSBSZWNvdmVyeU9wY29kZSB7CisgICAg
QWRkUmVjb3ZlcnksCisgICAgU3ViUmVjb3ZlcnkKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpGVEwKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpGVEw6OlJlY292ZXJ5T3Bjb2RlKTsKKworfSAv
LyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKworI2VuZGlmIC8v
IEZUTFJlY292ZXJ5T3Bjb2RlX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220663</attachid>
            <date>2014-01-08 14:13:21 -0800</date>
            <delta_ts>2014-01-08 14:15:03 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33056</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE0LTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBub3QgdXNlIHRoZSBpbnB1dHMgb2YgYW4gYWRkIG9yIHN1YiBhcyB0aGUgbGl2
ZS1hdC1leGl0IHZhbHVlcyBpbiBhbiBvdmVyZmxvdyBjaGVjaywgaWYgdGhlIHZhbHVlcyBhcmVu
J3QgbGl2ZSBhZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBJbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gRXhpdFZhbHVlIHRoYXQg
aXMgY29tcHV0ZWQgYnkgZG9pbmcgc29tZSBtYXRoIG9uIHR3bworICAgICAgICBleGl0IGFyZ3Vt
ZW50cy4gVGhpcyBnZXRzIHVzZWQgYnkgTG93ZXJERkdUb0xMVk0gYnkgdHJhY2tpbmcgdGhlCisg
ICAgICAgIEF2YWlsYWJsZVJlY292ZXJpZXMgLSBpLmUuIHRoZSBzZXQgb2Ygd2F5cyB3ZSBrbm93
IGhvdyB0byByZWNvdmVyIHRoZSB2YWx1ZSBvZiBhCisgICAgICAgIG5vZGUgYnkgcGVyZm9ybWlu
ZyBtYXRoIG9uIExWYWx1ZSdzIC0gYW5kIHRoZW4gdHJ5aW5nIHRvIHBpY2sgYW4gQXZhaWxhYmxl
UmVjb3ZlcnkKKyAgICAgICAgaWYgd2UgdHJ5IHRvIGV4aXQgd2l0aCBhbiBBdmFpbGFiaWxpdHkg
cG9pbnRpbmcgdG8gYSBOb2RlIHRoYXQgaXNuJ3QgYSBjb25zdGFudC4KKyAgICAgICAgVGhlIGNv
bXBpbGVBcml0aEFkZE9yU3ViKCkgY29kZSBhZGRzIEF2YWlsYWJsZVJlY292ZXJpZXMgZm9yIHRo
ZSB3YXlzIHlvdSBjb3VsZAorICAgICAgICByZWNvdmVyeSB0aGUgbGVmdCBvciByaWdodCBvcGVy
YW5kIGJ5IHVzaW5nIHRoZSByZXN1bHQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVy
eS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGVEw6OkF2YWlsYWJsZVJlY292ZXJ5OjpkdW1w
KToKKyAgICAgICAgKiBmdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zlcnk6OkF2YWlsYWJsZVJlY292ZXJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVyeTo6bm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6QXZhaWxhYmxlUmVjb3Zlcnk6OmZvcm1hdCk6CisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxh
YmxlUmVjb3Zlcnk6Om9wY29kZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zl
cnk6OmxlZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkF2YWlsYWJsZVJlY292ZXJ5OjpyaWdodCk6
CisgICAgICAgICogZnRsL0ZUTEV4aXRWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6RXhp
dFZhbHVlOjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBmdGwvRlRMRXhpdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpyZWNvdmVyeSk6CisgICAgICAgIChKU0M6OkZU
TDo6RXhpdFZhbHVlOjppc1JlY292ZXJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6
OmxlZnRSZWNvdmVyeUFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnJp
Z2h0UmVjb3ZlcnlBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpyZWNv
dmVyeUZvcm1hdCk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpyZWNvdmVyeU9wY29k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjp2YWx1ZUZvcm1hdCk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQXJpdGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjph
ZGRFeGl0QXJndW1lbnRGb3JOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZG9lc0tpbGwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphZGRBdmFp
bGFibGVSZWNvdmVyeSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExSZWNvdmVy
eU9wY29kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAg
ICAgKiBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuaDogQWRkZWQuCisKIDIwMTQtMDEtMDggIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRv
IGRpc2FibGUgdGhlIGRpc2FibGluZyBvZiBBVlgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNjE1MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDYgKzIzNiwxMCBAQAogCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ4NTMyMTE4Nzc1
MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzFGMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0
aE1vZGUuY3BwICovOyB9OwogCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhN
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ4
NTMyMDE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0ODUzMjcxODdERkRFQzAwODNCNjg3
IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFi
bGVSZWNvdmVyeS5jcHAgKi87IH07CisJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4NyAvKiBGVExB
dmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI1MTg3REZERUMwMDgz
QjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgKi87IH07CisJCTBGNDg1MzJBMTg3REZERUMw
MDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDkzQUY4MTZEMENB
RDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi87IH07CiAJCTBGNEI5NERDMTdCOUYw
NzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVk
QXJyYXlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU0MUFGMTYx
M0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi87IH07CkBAIC0xNTY2LDYgKzE1
NzAsMTAgQEAKIAkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ4NTMxRjE4Nzc1MDU2MDA4M0I2
ODcgLyogREZHQXJpdGhNb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0FyaXRoTW9kZS5jcHA7IHBhdGggPSBkZmcvREZHQXJpdGhNb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0ODUzMjAxODc3NTA1NjAwODNCNjg3IC8qIERGR0Fy
aXRoTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcml0aE1vZGUu
aDsgcGF0aCA9IGRmZy9ERkdBcml0aE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0ODUzMjMxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEF2YWlsYWJsZVJlY292ZXJ5
LmNwcDsgcGF0aCA9IGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDg1MzI0MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVS
ZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBdmFpbGFibGVS
ZWNvdmVyeS5oOyBwYXRoID0gZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVy
eU9wY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExSZWNv
dmVyeU9wY29kZS5jcHA7IHBhdGggPSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVj
b3ZlcnlPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVjb3Zl
cnlPcGNvZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRCOTREQjE3QjlGMDc1MDBE
RDAzQTQgLyogVHlwZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWNpYWxQb2ludGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjQsNiArMjg3Miw4IEBACiAJCQkJMEZFQTBBMTgxNzA4
QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oICovLAogCQkJCTBGRUEwQTE5MTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKIAkJCQkwRkVB
MEExQTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAor
CQkJCTBGNDg1MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5jcHAg
Ki8sCisJCQkJMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5
LmggKi8sCiAJCQkJMEZFQTA5RkUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5j
cHAgKi8sCiAJCQkJMEZFQTA5RkYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5o
ICovLAogCQkJCTBGRUEwQTI1MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuY3Bw
ICovLApAQCAtMjkxMiw2ICsyOTIyLDggQEAKIAkJCQkwRjIzNUJDQTE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMT1NSRXhpdENvbXBpbGVyLmggKi8sCiAJCQkJMEZFQTBBMjkxNzA5NjI5NjAwQkI3MjJD
IC8qIEZUTE91dHB1dC5jcHAgKi8sCiAJCQkJMEZFQTBBMDYxNzA1MTNEQjAwQkI3MjJDIC8qIEZU
TE91dHB1dC5oICovLAorCQkJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVy
eU9wY29kZS5jcHAgKi8sCisJCQkJMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggKi8sCiAJCQkJMEY2QjFDQkYxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lz
dGVyQXRPZmZzZXQuY3BwICovLAogCQkJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExS
ZWdpc3RlckF0T2Zmc2V0LmggKi8sCiAJCQkJMEZDRUZBQTkxODA0QzEzRTAwNDcyQ0U0IC8qIEZU
TFNhdmVSZXN0b3JlLmNwcCAqLywKQEAgLTQ0MTksNiArNDQzMSw3IEBACiAJCQkJMEY4MzY0Qjcx
NjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZU
TEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFE
MDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NTUxLDYgKzQ1NjQsNyBAQAogCQkJCTBGRUEw
QTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMg
LyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ4NTMyQTE4N0RGREVD
MDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEw
QTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTU1NjUsNiArNTU3OSw3IEBACiAJCQkJMEZDMDk3QTExNDZCMjhDQTAw
Q0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyNzE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQ4QTMyOTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0ODUzMjcxODdERkRF
QzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRDhBMzJCMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDQwMTVDNzVG
MUQwMDZBNTk3QyAvKiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQkUwRjc2MTZDMURCMEYwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtNTY5Nyw2ICs1NzEyLDcgQEAKIAkJCQkxNDI4MDg3NTEwN0VD
MTNFMDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZE
RTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3
MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjQ4NTMyOTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ4NzRBRTMxNUVCREU0QTAwMkUzNTg3IC8qIEpTTmFtZVNjb3BlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3MjcwMDkwMERBQzZCQkMwMEU1NDhENyAvKiBKU05vdEFuT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ0MTA3RUMzNzYwMDQyN0E0OCAvKiBK
U09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRlRMQXZhaWxhYmxl
UmVjb3ZlcnkuaCIKKworI2lmIEVOQUJMRShGVExfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CisKK3ZvaWQgQXZhaWxhYmxlUmVjb3Zlcnk6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQobm9kZSgpLCAiID0+ICIsIG9wY29kZSgpLCAi
LCAiLCBSYXdQb2ludGVyKG1fbGVmdCksICIsICIsIFJhd1BvaW50ZXIobV9yaWdodCksICIsICIs
IG1fZm9ybWF0KTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8g
RU5BQkxFKEZUTF9KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZh
aWxhYmxlUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEZUTEF2YWlsYWJsZVJlY292ZXJ5X2gKKyNkZWZpbmUgRlRMQXZhaWxhYmxlUmVjb3Zl
cnlfaAorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKKyNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5j
bHVkZSAiRlRMQWJicmV2aWF0ZWRUeXBlcy5oIgorI2luY2x1ZGUgIkZUTFJlY292ZXJ5T3Bjb2Rl
LmgiCisjaW5jbHVkZSAiRlRMVmFsdWVGb3JtYXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgeworCitjbGFzcyBBdmFpbGFibGVSZWNvdmVyeSB7CitwdWJsaWM6CisgICAgQXZh
aWxhYmxlUmVjb3ZlcnkoKQorICAgICAgICA6IG1fbm9kZSgwKQorICAgICAgICAsIG1fZm9ybWF0
KEludmFsaWRWYWx1ZUZvcm1hdCkKKyAgICAgICAgLCBtX29wY29kZShBZGRSZWNvdmVyeSkKKyAg
ICAgICAgLCBtX2xlZnQoMCkKKyAgICAgICAgLCBtX3JpZ2h0KDApCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBBdmFpbGFibGVSZWNvdmVyeShERkc6Ok5vZGUqIG5vZGUsIFJlY292ZXJ5T3Bjb2Rl
IG9wY29kZSwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCwgVmFsdWVGb3JtYXQgZm9ybWF0KQor
ICAgICAgICA6IG1fbm9kZShub2RlKQorICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKKyAgICAg
ICAgLCBtX29wY29kZShvcGNvZGUpCisgICAgICAgICwgbV9sZWZ0KGxlZnQpCisgICAgICAgICwg
bV9yaWdodChyaWdodCkKKyAgICB7CisgICAgfQorICAgIAorICAgIERGRzo6Tm9kZSogbm9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQorICAgIFZhbHVlRm9ybWF0IGZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybWF0OyB9CisgICAgUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGNvZGU7IH0KKyAgICBMVmFsdWUgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGVmdDsgfQorICAgIExWYWx1ZSByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KKyAg
ICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgREZHOjpOb2RlKiBtX25vZGU7CisgICAgVmFsdWVGb3JtYXQgbV9mb3JtYXQ7CisgICAgUmVj
b3ZlcnlPcGNvZGUgbV9vcGNvZGU7CisgICAgTFZhbHVlIG1fbGVmdDsKKyAgICBMVmFsdWUgbV9y
aWdodDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMQXZhaWxhYmxlUmVjb3ZlcnlfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjE1
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJp
bnRTdHJlYQogICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6CiAgICAgICAgIG91
dC5wcmludCgiSW5KU1N0YWNrQXNEb3VibGU6ciIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRXhpdFZhbHVlUmVjb3Zlcnk6CisgICAgICAgIG91dC5wcmlu
dCgiUmVjb3ZlcnkoIiwgcmVjb3ZlcnlPcGNvZGUoKSwgIiwgYXJnIiwgbGVmdFJlY292ZXJ5QXJn
dW1lbnQoKSwgIiwgYXJnIiwgcmlnaHRSZWNvdmVyeUFyZ3VtZW50KCksICIsICIsIHJlY292ZXJ5
Rm9ybWF0KCksICIpIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRXhpdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExFeGl0VmFsdWUuaAkocmV2aXNpb24gMTYxNTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExFeGl0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVO
QUJMRShGVExfSklUKQogCiAjaW5jbHVkZSAiRlRMRXhpdEFyZ3VtZW50LmgiCisjaW5jbHVkZSAi
RlRMUmVjb3ZlcnlPcGNvZGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
VmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC01MSw3
ICs1Miw4IEBAIGVudW0gRXhpdFZhbHVlS2luZCB7CiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrLAog
ICAgIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50MzIsCiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrQXNJ
bnQ1MiwKLSAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZQorICAgIEV4aXRWYWx1ZUluSlNT
dGFja0FzRG91YmxlLAorICAgIEV4aXRWYWx1ZVJlY292ZXJ5CiB9OwogCiBjbGFzcyBFeGl0VmFs
dWUgewpAQCAtMTE4LDYgKzEyMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBFeGl0VmFsdWUgcmVjb3ZlcnkoUmVjb3ZlcnlPcGNv
ZGUgb3Bjb2RlLCB1bnNpZ25lZCBsZWZ0QXJndW1lbnQsIHVuc2lnbmVkIHJpZ2h0QXJndW1lbnQs
IFZhbHVlRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIEV4aXRWYWx1ZSByZXN1bHQ7Cisg
ICAgICAgIHJlc3VsdC5tX2tpbmQgPSBFeGl0VmFsdWVSZWNvdmVyeTsKKyAgICAgICAgcmVzdWx0
LnUucmVjb3Zlcnkub3Bjb2RlID0gb3Bjb2RlOworICAgICAgICByZXN1bHQudS5yZWNvdmVyeS5s
ZWZ0QXJndW1lbnQgPSBsZWZ0QXJndW1lbnQ7CisgICAgICAgIHJlc3VsdC51LnJlY292ZXJ5LnJp
Z2h0QXJndW1lbnQgPSByaWdodEFyZ3VtZW50OworICAgICAgICByZXN1bHQudS5yZWNvdmVyeS5m
b3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAg
IEV4aXRWYWx1ZUtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIAogICAg
IGJvb2wgaXNEZWFkKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEV4aXRWYWx1ZURlYWQ7IH0K
QEAgLTEzNSw2ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJvb2wgaXNDb25zdGFudCgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFsdWVDb25zdGFudDsgfQogICAgIGJvb2wg
aXNBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFsdWVBcmd1bWVudDsg
fQorICAgIGJvb2wgaXNSZWNvdmVyeSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFs
dWVSZWNvdmVyeTsgfQogICAgIAogICAgIEV4aXRBcmd1bWVudCBleGl0QXJndW1lbnQoKSBjb25z
dAogICAgIHsKQEAgLTE0Miw2ICsxNTYsMzAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRXhp
dEFyZ3VtZW50KHUuYXJndW1lbnQpOwogICAgIH0KICAgICAKKyAgICB1bnNpZ25lZCBsZWZ0UmVj
b3ZlcnlBcmd1bWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNSZWNvdmVyeSgp
KTsKKyAgICAgICAgcmV0dXJuIHUucmVjb3ZlcnkubGVmdEFyZ3VtZW50OworICAgIH0KKyAgICAK
KyAgICB1bnNpZ25lZCByaWdodFJlY292ZXJ5QXJndW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzUmVjb3ZlcnkoKSk7CisgICAgICAgIHJldHVybiB1LnJlY292ZXJ5LnJpZ2h0
QXJndW1lbnQ7CisgICAgfQorICAgIAorICAgIFZhbHVlRm9ybWF0IHJlY292ZXJ5Rm9ybWF0KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1JlY292ZXJ5KCkpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VmFsdWVGb3JtYXQ+KHUucmVjb3ZlcnkuZm9ybWF0KTsKKyAgICB9Cisg
ICAgCisgICAgUmVjb3ZlcnlPcGNvZGUgcmVjb3ZlcnlPcGNvZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzUmVjb3ZlcnkoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxS
ZWNvdmVyeU9wY29kZT4odS5yZWNvdmVyeS5vcGNvZGUpOworICAgIH0KKyAgICAKICAgICBKU1Zh
bHVlIGNvbnN0YW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0NvbnN0YW50KCkp
OwpAQCAtMTkwLDYgKzIyOCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEV4aXRWYWx1ZUluSlNTdGFja0FzRG91YmxlOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlRm9y
bWF0RG91YmxlOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRXhpdFZhbHVlUmVjb3Zlcnk6
CisgICAgICAgICAgICByZXR1cm4gcmVjb3ZlcnlGb3JtYXQoKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNSw2ICsyNDYs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgRXhpdEFyZ3VtZW50UmVwcmVzZW50YXRpb24gYXJndW1l
bnQ7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGNvbnN0YW50OwogICAgICAgICBpbnQgdmlydHVh
bFJlZ2lzdGVyOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgbGVmdEFy
Z3VtZW50OworICAgICAgICAgICAgdWludDE2X3QgcmlnaHRBcmd1bWVudDsKKyAgICAgICAgICAg
IHVpbnQxNl90IG9wY29kZTsKKyAgICAgICAgICAgIHVpbnQxNl90IGZvcm1hdDsKKyAgICAgICAg
fSByZWNvdmVyeTsKICAgICB9IHU7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTYxNTIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkRGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgiCiAjaW5jbHVkZSAiRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgorI2luY2x1ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5
LmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMRm9y
bWF0dGVkVmFsdWUuaCIKICNpbmNsdWRlICJGVExJbmxpbmVDYWNoZVNpemUuaCIKQEAgLTI1Niw2
ICsyNTcsOCBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxl
ZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgIiwgbV9ub2RlLCAiXG4iKTsKICAg
ICAgICAgCisgICAgICAgIG1fYXZhaWxhYmxlUmVjb3Zlcmllcy5yZXNpemUoMCk7CisgICAgICAg
IAogICAgICAgICBib29sIHNob3VsZEV4ZWN1dGVFZmZlY3RzID0gbV9pbnRlcnByZXRlci5zdGFy
dEV4ZWN1dGluZyhtX25vZGUpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9w
KCkpIHsKQEAgLTI5NSwxMCArMjk4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbXBpbGVW
YWx1ZUFkZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0g
ICAgICAgICAgICBjb21waWxlQWRkU3ViKCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgIGNvbXBpbGVBZGRTdWIoKTsKKyAgICAgICAgICAg
IGNvbXBpbGVBcml0aEFkZE9yU3ViKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBcml0aE11bDoKICAgICAgICAgICAgIGNvbXBpbGVBcml0aE11bCgpOwpAQCAtODA4LDcgKzgw
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
Y29tcGlsZUFkZFN1YigpCisgICAgdm9pZCBjb21waWxlQXJpdGhBZGRPclN1YigpCiAgICAgewog
ICAgICAgICBib29sIGlzU3ViID0gIG1fbm9kZS0+b3AoKSA9PSBBcml0aFN1YjsKICAgICAgICAg
c3dpdGNoIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewpAQCAtODIxLDcgKzgyMiwzNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gaXNTdWIgPyBtX291dC5zdWJXaXRoT3ZlcmZsb3czMihsZWZ0
LCByaWdodCkgOiBtX291dC5hZGRXaXRoT3ZlcmZsb3czMihsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICAgICAgaWYgKCFpc1N1YikgeworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzMyKGxlZnQsIHJpZ2h0KTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZG9lc0tpbGwobV9ub2RlLT5jaGls
ZDIoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBsZWZ0LCBW
YWx1ZUZvcm1hdEludDMyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1f
bm9kZS0+Y2hpbGQxKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZEF2YWlsYWJsZVJlY292
ZXJ5KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwgU3ViUmVjb3Zl
cnksCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAw
KSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50MzIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJm
bG93MzIobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlm
IChkb2VzS2lsbChtX25vZGUtPmNoaWxkMigpKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBy
ZXN1bHQgPSBsZWZ0IC0gcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0IC0gbGVm
dCA9IC1yaWdodAorICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IGxlZnQgLSByZXN1bHQK
KyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxlZnQsIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBWYWx1ZUZvcm1h
dEludDMyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1fbm9kZS0+Y2hp
bGQxKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdCA9IGxlZnQgLSByaWdodAor
ICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgKyByaWdodCA9IGxlZnQKKyAgICAgICAgICAg
ICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X25vZGUtPmNoaWxkMSgpLCBBZGRSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCByaWdodCwgVmFsdWVGb3JtYXRJbnQzMik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzcGVjdWxhdGUo
T3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMSkpOwog
ICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkpOwpAQCAt
ODQxLDcgKzg3MiwzMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dJ
bnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0lu
dDUyKG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gaXNT
dWIgPyBtX291dC5zdWJXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCkgOiBtX291dC5hZGRXaXRo
T3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0OworICAg
ICAgICAgICAgaWYgKCFpc1N1YikgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LmFk
ZFdpdGhPdmVyZmxvdzY0KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBhZGRBdmFpbGFi
bGVSZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwgU3ViUmVj
b3ZlcnksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDAp
LCByaWdodCwgVmFsdWVGb3JtYXRJbnQ1Mik7CisgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxl
UmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQyKCksIFN1YlJlY292
ZXJ5LAorICAgICAgICAgICAgICAgICAgICBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSwg
bGVmdCwgVmFsdWVGb3JtYXRJbnQ1Mik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1fb3V0LnN1YldpdGhPdmVyZmxvdzY0KGxlZnQsIHJpZ2h0KTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyByZXN1bHQgPSBsZWZ0IC0gcmlnaHQK
KyAgICAgICAgICAgICAgICAvLyByZXN1bHQgKyByaWdodCA9IGxlZnQKKyAgICAgICAgICAgICAg
ICBhZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGls
ZDEoKSwgQWRkUmVjb3ZlcnksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1
ZShyZXN1bHQsIDApLCByaWdodCwgVmFsdWVGb3JtYXRJbnQ1Mik7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgLy8gcmVzdWx0ID0gbGVmdCAtIHJpZ2h0CisgICAgICAgICAgICAg
ICAgLy8gcmVzdWx0IC0gbGVmdCA9IC1yaWdodAorICAgICAgICAgICAgICAgIC8vIHJpZ2h0ID0g
bGVmdCAtIHJlc3VsdAorICAgICAgICAgICAgICAgIGFkZEF2YWlsYWJsZVJlY292ZXJ5KAorICAg
ICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAg
ICAgICAgICAgICAgbGVmdCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCksIFZhbHVlRm9y
bWF0SW50NTIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBzcGVjdWxhdGUoSW50NTJP
dmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CiAg
ICAgICAgICAgICBzZXRJbnQ1MihtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTQwNjUsOCArNDEyMSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXBwZW5kT1NSRXhpdCgKICAgICAgICAgRXhpdEtpbmQga2luZCwgRm9ybWF0dGVkVmFsdWUgbG93
VmFsdWUsIE5vZGUqIGhpZ2hWYWx1ZSwgTFZhbHVlIGZhaWxDb25kaXRpb24pCiAgICAgewotICAg
ICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQorICAgICAgICBpZiAodmVyYm9z
ZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGV4
aXQgIyIsIG1fZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXplKCksICIgd2l0aCBhdmFpbGFi
aWxpdHk6ICIsIG1fYXZhaWxhYmlsaXR5LCAiXG4iKTsKKyAgICAgICAgICAgIGlmICghbV9hdmFp
bGFibGVSZWNvdmVyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICAgIEF2YWlsYWJsZSByZWNvdmVyaWVzOiAiLCBsaXN0RHVtcChtX2F2YWlsYWJsZVJlY292ZXJp
ZXMpLCAiXG4iKTsKKyAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChtX2Z0bFN0YXRlLmppdENv
ZGUtPm9zckV4aXQuc2l6ZSgpID09IG1fZnRsU3RhdGUuZmluYWxpemVyLT5vc3JFeGl0LnNpemUo
KSk7CiAgICAgICAgIApAQCAtNDE5MSw2ICs0MjUwLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICh0cnlUb1NldENvbnN0YW50RXhpdEFyZ3VtZW50KGV4aXQsIGluZGV4LCBub2RlKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2F2YWlsYWJsZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEF2YWls
YWJsZVJlY292ZXJ5IHJlY292ZXJ5ID0gbV9hdmFpbGFibGVSZWNvdmVyaWVzW2ldOworICAgICAg
ICAgICAgaWYgKHJlY292ZXJ5Lm5vZGUoKSAhPSBub2RlKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBleGl0Lm1fdmFsdWVzW2luZGV4XSA9IEV4
aXRWYWx1ZTo6cmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgcmVjb3Zlcnkub3Bjb2RlKCksIGFy
Z3VtZW50cy5zaXplKCksIGFyZ3VtZW50cy5zaXplKCkgKyAxLAorICAgICAgICAgICAgICAgIHJl
Y292ZXJ5LmZvcm1hdCgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQocmVjb3Zlcnku
bGVmdCgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQocmVjb3ZlcnkucmlnaHQoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2Vy
ZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChub2RlKTsKICAgICAgICAgaWYg
KGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhpdCwgYXJn
dW1lbnRzLCBpbmRleCwgVmFsdWVGb3JtYXRJbnQzMiwgdmFsdWUudmFsdWUoKSk7CkBAIC00MjYw
LDYgKzQzMzIsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7
CiAgICAgfQogICAgIAorICAgIGJvb2wgZG9lc0tpbGwoRWRnZSBlZGdlKQorICAgIHsKKyAgICAg
ICAgaWYgKGVkZ2UuZG9lc05vdEtpbGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAor
ICAgIHZvaWQgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgIE5vZGUqIG5vZGUsIFJlY292
ZXJ5T3Bjb2RlIG9wY29kZSwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCwgVmFsdWVGb3JtYXQg
Zm9ybWF0KQorICAgIHsKKyAgICAgICAgbV9hdmFpbGFibGVSZWNvdmVyaWVzLmFwcGVuZChBdmFp
bGFibGVSZWNvdmVyeShub2RlLCBvcGNvZGUsIGxlZnQsIHJpZ2h0LCBmb3JtYXQpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBhZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgRWRnZSBlZGdl
LCBSZWNvdmVyeU9wY29kZSBvcGNvZGUsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQsIFZhbHVl
Rm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIGFkZEF2YWlsYWJsZVJlY292ZXJ5KGVkZ2Uu
bm9kZSgpLCBvcGNvZGUsIGxlZnQsIHJpZ2h0LCBmb3JtYXQpOworICAgIH0KKyAgICAKICAgICB2
b2lkIHNldEludDMyKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1f
aW50MzJWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2Nr
KSk7CkBAIC00NDIzLDYgKzQ1MTgsOCBAQCBwcml2YXRlOgogICAgIAogICAgIE9wZXJhbmRzPEF2
YWlsYWJpbGl0eT4gbV9hdmFpbGFiaWxpdHk7CiAgICAgCisgICAgVmVjdG9yPEF2YWlsYWJsZVJl
Y292ZXJ5LCAzPiBtX2F2YWlsYWJsZVJlY292ZXJpZXM7CisgICAgCiAgICAgSW5QbGFjZUFic3Ry
YWN0U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFj
dFN0YXRlPiBtX2ludGVycHJldGVyOwogICAgIEJhc2ljQmxvY2sqIG1faGlnaEJsb2NrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMTYxNTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzQsNiArMTM0LDQ0IEBAIHN0YXRpYyB2
b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3IodmFsdWUudmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEV4aXRWYWx1ZVJl
Y292ZXJ5OgorICAgICAgICAgICAgcmVjb3JkLT5sb2NhdGlvbnNbdmFsdWUucmlnaHRSZWNvdmVy
eUFyZ3VtZW50KCldLnJlc3RvcmVJbnRvKAorICAgICAgICAgICAgICAgIGppdCwgaml0Q29kZS0+
c3RhY2ttYXBzLCByZWdpc3RlclNjcmF0Y2gsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAg
IHJlY29yZC0+bG9jYXRpb25zW3ZhbHVlLmxlZnRSZWNvdmVyeUFyZ3VtZW50KCldLnJlc3RvcmVJ
bnRvKAorICAgICAgICAgICAgICAgIGppdCwgaml0Q29kZS0+c3RhY2ttYXBzLCByZWdpc3RlclNj
cmF0Y2gsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIHN3aXRjaCAodmFsdWUucmVjb3Zl
cnlPcGNvZGUoKSkgeworICAgICAgICAgICAgY2FzZSBBZGRSZWNvdmVyeToKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHZhbHVlLnJlY292ZXJ5Rm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIFZhbHVlRm9ybWF0SW50MzI6CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGQzMihHUFJJ
bmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlRm9ybWF0SW50NTI6CisgICAgICAgICAgICAgICAg
ICAgIGppdC5hZGQ2NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFN1YlJlY292ZXJ5OgorICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUu
cmVjb3ZlcnlGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQz
MjoKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YjMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgVmFsdWVGb3JtYXRJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YjY0KEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZUTFJlY292ZXJ5T3Bjb2RlLmgi
CisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgor
CituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IEpTQzo6RlRMOjpSZWNvdmVyeU9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUp
IHsKKyAgICBjYXNlIEpTQzo6RlRMOjpBZGRSZWNvdmVyeToKKyAgICAgICAgb3V0LnByaW50KCJB
ZGQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpGVEw6OlN1YlJlY292ZXJ5Ogor
ICAgICAgICBvdXQucHJpbnQoIlN1YiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMUmVjb3ZlcnlPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEZUTFJlY292ZXJ5T3Bjb2RlX2gKKyNkZWZpbmUgRlRMUmVjb3ZlcnlPcGNvZGVfaAor
CisjaWYgRU5BQkxFKEZUTF9KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
KworZW51bSBSZWNvdmVyeU9wY29kZSB7CisgICAgQWRkUmVjb3ZlcnksCisgICAgU3ViUmVjb3Zl
cnkKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworbmFtZXNwYWNlIFdURiB7CisK
K2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlND
OjpGVEw6OlJlY292ZXJ5T3Bjb2RlKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKKworI2VuZGlmIC8vIEZUTFJlY292ZXJ5T3Bjb2RlX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220664</attachid>
            <date>2014-01-08 14:15:03 -0800</date>
            <delta_ts>2014-01-08 16:22:34 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33380</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE0LTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBub3QgdXNlIHRoZSBpbnB1dHMgb2YgYW4gYWRkIG9yIHN1YiBhcyB0aGUgbGl2
ZS1hdC1leGl0IHZhbHVlcyBpbiBhbiBvdmVyZmxvdyBjaGVjaywgaWYgdGhlIHZhbHVlcyBhcmVu
J3QgbGl2ZSBhZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBJbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gRXhpdFZhbHVlIHRoYXQg
aXMgY29tcHV0ZWQgYnkgZG9pbmcgc29tZSBtYXRoIG9uIHR3bworICAgICAgICBleGl0IGFyZ3Vt
ZW50cy4gVGhpcyBnZXRzIHVzZWQgYnkgTG93ZXJERkdUb0xMVk0gYnkgdHJhY2tpbmcgdGhlCisg
ICAgICAgIEF2YWlsYWJsZVJlY292ZXJpZXMgLSBpLmUuIHRoZSBzZXQgb2Ygd2F5cyB3ZSBrbm93
IGhvdyB0byByZWNvdmVyIHRoZSB2YWx1ZSBvZiBhCisgICAgICAgIG5vZGUgYnkgcGVyZm9ybWlu
ZyBtYXRoIG9uIExWYWx1ZSdzIC0gYW5kIHRoZW4gdHJ5aW5nIHRvIHBpY2sgYW4gQXZhaWxhYmxl
UmVjb3ZlcnkKKyAgICAgICAgaWYgd2UgdHJ5IHRvIGV4aXQgd2l0aCBhbiBBdmFpbGFiaWxpdHkg
cG9pbnRpbmcgdG8gYSBOb2RlIHRoYXQgaXNuJ3QgYSBjb25zdGFudC4KKyAgICAgICAgVGhlIGNv
bXBpbGVBcml0aEFkZE9yU3ViKCkgY29kZSBhZGRzIEF2YWlsYWJsZVJlY292ZXJpZXMgZm9yIHRo
ZSB3YXlzIHlvdSBjb3VsZAorICAgICAgICByZWNvdmVyeSB0aGUgbGVmdCBvciByaWdodCBvcGVy
YW5kIGJ5IHVzaW5nIHRoZSByZXN1bHQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVy
eS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGVEw6OkF2YWlsYWJsZVJlY292ZXJ5OjpkdW1w
KToKKyAgICAgICAgKiBmdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zlcnk6OkF2YWlsYWJsZVJlY292ZXJ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVyeTo6bm9kZSk6CisgICAgICAgIChKU0M6OkZU
TDo6QXZhaWxhYmxlUmVjb3Zlcnk6OmZvcm1hdCk6CisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxh
YmxlUmVjb3Zlcnk6Om9wY29kZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zl
cnk6OmxlZnQpOgorICAgICAgICAoSlNDOjpGVEw6OkF2YWlsYWJsZVJlY292ZXJ5OjpyaWdodCk6
CisgICAgICAgICogZnRsL0ZUTEV4aXRWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6RXhp
dFZhbHVlOjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBmdGwvRlRMRXhpdFZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpyZWNvdmVyeSk6CisgICAgICAgIChKU0M6OkZU
TDo6RXhpdFZhbHVlOjppc1JlY292ZXJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6
OmxlZnRSZWNvdmVyeUFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnJp
Z2h0UmVjb3ZlcnlBcmd1bWVudCk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpyZWNv
dmVyeUZvcm1hdCk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjpyZWNvdmVyeU9wY29k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6RXhpdFZhbHVlOjp2YWx1ZUZvcm1hdCk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQXJpdGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OmFwcGVuZE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjph
ZGRFeGl0QXJndW1lbnRGb3JOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6ZG9lc0tpbGwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphZGRBdmFp
bGFibGVSZWNvdmVyeSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExSZWNvdmVy
eU9wY29kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAg
ICAgKiBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuaDogQWRkZWQuCisKIDIwMTQtMDEtMDggIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRv
IGRpc2FibGUgdGhlIGRpc2FibGluZyBvZiBBVlgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNjE1MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDYgKzIzNiwxMCBAQAogCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ4NTMyMTE4Nzc1
MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzFGMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0
aE1vZGUuY3BwICovOyB9OwogCQkwRjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhN
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ4
NTMyMDE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0ODUzMjcxODdERkRFQzAwODNCNjg3
IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFi
bGVSZWNvdmVyeS5jcHAgKi87IH07CisJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4NyAvKiBGVExB
dmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
ODUzMjkxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI1MTg3REZERUMwMDgz
QjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgKi87IH07CisJCTBGNDg1MzJBMTg3REZERUMw
MDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDkzQUY4MTZEMENB
RDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi87IH07CiAJCTBGNEI5NERDMTdCOUYw
NzUwMEREMDNBNCAvKiBUeXBlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVk
QXJyYXlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU0MUFGMTYx
M0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi87IH07CkBAIC0xNTY2LDYgKzE1
NzAsMTAgQEAKIAkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ4NTMxRjE4Nzc1MDU2MDA4M0I2
ODcgLyogREZHQXJpdGhNb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0FyaXRoTW9kZS5jcHA7IHBhdGggPSBkZmcvREZHQXJpdGhNb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0ODUzMjAxODc3NTA1NjAwODNCNjg3IC8qIERGR0Fy
aXRoTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcml0aE1vZGUu
aDsgcGF0aCA9IGRmZy9ERkdBcml0aE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0ODUzMjMxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTEF2YWlsYWJsZVJlY292ZXJ5
LmNwcDsgcGF0aCA9IGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDg1MzI0MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVS
ZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBdmFpbGFibGVS
ZWNvdmVyeS5oOyBwYXRoID0gZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVy
eU9wY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExSZWNv
dmVyeU9wY29kZS5jcHA7IHBhdGggPSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVj
b3ZlcnlPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVjb3Zl
cnlPcGNvZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRCOTREQjE3QjlGMDc1MDBE
RDAzQTQgLyogVHlwZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWNpYWxQb2ludGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjQsNiArMjg3Miw4IEBACiAJCQkJMEZFQTBBMTgxNzA4
QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oICovLAogCQkJCTBGRUEwQTE5MTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKIAkJCQkwRkVB
MEExQTE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAor
CQkJCTBGNDg1MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5jcHAg
Ki8sCisJCQkJMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5
LmggKi8sCiAJCQkJMEZFQTA5RkUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5j
cHAgKi8sCiAJCQkJMEZFQTA5RkYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5o
ICovLAogCQkJCTBGRUEwQTI1MTcwOTYyM0IwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuY3Bw
ICovLApAQCAtMjkxMiw2ICsyOTIyLDggQEAKIAkJCQkwRjIzNUJDQTE3MTc4RTFDMDA2OTBDN0Yg
LyogRlRMT1NSRXhpdENvbXBpbGVyLmggKi8sCiAJCQkJMEZFQTBBMjkxNzA5NjI5NjAwQkI3MjJD
IC8qIEZUTE91dHB1dC5jcHAgKi8sCiAJCQkJMEZFQTBBMDYxNzA1MTNEQjAwQkI3MjJDIC8qIEZU
TE91dHB1dC5oICovLAorCQkJCTBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVy
eU9wY29kZS5jcHAgKi8sCisJCQkJMEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggKi8sCiAJCQkJMEY2QjFDQkYxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lz
dGVyQXRPZmZzZXQuY3BwICovLAogCQkJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExS
ZWdpc3RlckF0T2Zmc2V0LmggKi8sCiAJCQkJMEZDRUZBQTkxODA0QzEzRTAwNDcyQ0U0IC8qIEZU
TFNhdmVSZXN0b3JlLmNwcCAqLywKQEAgLTQ0MTksNiArNDQzMSw3IEBACiAJCQkJMEY4MzY0Qjcx
NjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZU
TEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFE
MDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NTUxLDYgKzQ1NjQsNyBAQAogCQkJCTBGRUEw
QTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMg
LyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ4NTMyQTE4N0RGREVD
MDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEw
QTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTU1NjUsNiArNTU3OSw3IEBACiAJCQkJMEZDMDk3QTExNDZCMjhDQTAw
Q0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyNzE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQ4QTMyOTE3RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0ODUzMjcxODdERkRF
QzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRDhBMzJCMTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDQwMTVDNzVG
MUQwMDZBNTk3QyAvKiBERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQkUwRjc2MTZDMURCMEYwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtNTY5Nyw2ICs1NzEyLDcgQEAKIAkJCQkxNDI4MDg3NTEwN0VD
MTNFMDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZE
RTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3
MDA4NzQxMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjQ4NTMyOTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ4NzRBRTMxNUVCREU0QTAwMkUzNTg3IC8qIEpTTmFtZVNjb3BlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3MjcwMDkwMERBQzZCQkMwMEU1NDhENyAvKiBKU05vdEFuT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQ0MTA3RUMzNzYwMDQyN0E0OCAvKiBK
U09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRlRMQXZhaWxhYmxl
UmVjb3ZlcnkuaCIKKworI2lmIEVOQUJMRShGVExfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CisKK3ZvaWQgQXZhaWxhYmxlUmVjb3Zlcnk6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQobm9kZSgpLCAiID0+ICIsIG9wY29kZSgpLCAi
LCAiLCBSYXdQb2ludGVyKG1fbGVmdCksICIsICIsIFJhd1BvaW50ZXIobV9yaWdodCksICIsICIs
IG1fZm9ybWF0KTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8g
RU5BQkxFKEZUTF9KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZh
aWxhYmxlUmVjb3ZlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEZUTEF2YWlsYWJsZVJlY292ZXJ5X2gKKyNkZWZpbmUgRlRMQXZhaWxhYmxlUmVjb3Zl
cnlfaAorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKKyNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5j
bHVkZSAiRlRMQWJicmV2aWF0ZWRUeXBlcy5oIgorI2luY2x1ZGUgIkZUTFJlY292ZXJ5T3Bjb2Rl
LmgiCisjaW5jbHVkZSAiRlRMVmFsdWVGb3JtYXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgeworCitjbGFzcyBBdmFpbGFibGVSZWNvdmVyeSB7CitwdWJsaWM6CisgICAgQXZh
aWxhYmxlUmVjb3ZlcnkoKQorICAgICAgICA6IG1fbm9kZSgwKQorICAgICAgICAsIG1fZm9ybWF0
KEludmFsaWRWYWx1ZUZvcm1hdCkKKyAgICAgICAgLCBtX29wY29kZShBZGRSZWNvdmVyeSkKKyAg
ICAgICAgLCBtX2xlZnQoMCkKKyAgICAgICAgLCBtX3JpZ2h0KDApCisgICAgeworICAgIH0KKyAg
ICAKKyAgICBBdmFpbGFibGVSZWNvdmVyeShERkc6Ok5vZGUqIG5vZGUsIFJlY292ZXJ5T3Bjb2Rl
IG9wY29kZSwgTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCwgVmFsdWVGb3JtYXQgZm9ybWF0KQor
ICAgICAgICA6IG1fbm9kZShub2RlKQorICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKKyAgICAg
ICAgLCBtX29wY29kZShvcGNvZGUpCisgICAgICAgICwgbV9sZWZ0KGxlZnQpCisgICAgICAgICwg
bV9yaWdodChyaWdodCkKKyAgICB7CisgICAgfQorICAgIAorICAgIERGRzo6Tm9kZSogbm9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQorICAgIFZhbHVlRm9ybWF0IGZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybWF0OyB9CisgICAgUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGNvZGU7IH0KKyAgICBMVmFsdWUgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGVmdDsgfQorICAgIExWYWx1ZSByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KKyAg
ICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgREZHOjpOb2RlKiBtX25vZGU7CisgICAgVmFsdWVGb3JtYXQgbV9mb3JtYXQ7CisgICAgUmVj
b3ZlcnlPcGNvZGUgbV9vcGNvZGU7CisgICAgTFZhbHVlIG1fbGVmdDsKKyAgICBMVmFsdWUgbV9y
aWdodDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMQXZhaWxhYmxlUmVjb3ZlcnlfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjE1
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJp
bnRTdHJlYQogICAgIGNhc2UgRXhpdFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6CiAgICAgICAgIG91
dC5wcmludCgiSW5KU1N0YWNrQXNEb3VibGU6ciIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRXhpdFZhbHVlUmVjb3Zlcnk6CisgICAgICAgIG91dC5wcmlu
dCgiUmVjb3ZlcnkoIiwgcmVjb3ZlcnlPcGNvZGUoKSwgIiwgYXJnIiwgbGVmdFJlY292ZXJ5QXJn
dW1lbnQoKSwgIiwgYXJnIiwgcmlnaHRSZWNvdmVyeUFyZ3VtZW50KCksICIsICIsIHJlY292ZXJ5
Rm9ybWF0KCksICIpIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRXhpdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExFeGl0VmFsdWUuaAkocmV2aXNpb24gMTYxNTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExFeGl0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVO
QUJMRShGVExfSklUKQogCiAjaW5jbHVkZSAiRlRMRXhpdEFyZ3VtZW50LmgiCisjaW5jbHVkZSAi
RlRMUmVjb3ZlcnlPcGNvZGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
VmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC01MSw3
ICs1Miw4IEBAIGVudW0gRXhpdFZhbHVlS2luZCB7CiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrLAog
ICAgIEV4aXRWYWx1ZUluSlNTdGFja0FzSW50MzIsCiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrQXNJ
bnQ1MiwKLSAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZQorICAgIEV4aXRWYWx1ZUluSlNT
dGFja0FzRG91YmxlLAorICAgIEV4aXRWYWx1ZVJlY292ZXJ5CiB9OwogCiBjbGFzcyBFeGl0VmFs
dWUgewpAQCAtMTE4LDYgKzEyMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBFeGl0VmFsdWUgcmVjb3ZlcnkoUmVjb3ZlcnlPcGNv
ZGUgb3Bjb2RlLCB1bnNpZ25lZCBsZWZ0QXJndW1lbnQsIHVuc2lnbmVkIHJpZ2h0QXJndW1lbnQs
IFZhbHVlRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIEV4aXRWYWx1ZSByZXN1bHQ7Cisg
ICAgICAgIHJlc3VsdC5tX2tpbmQgPSBFeGl0VmFsdWVSZWNvdmVyeTsKKyAgICAgICAgcmVzdWx0
LnUucmVjb3Zlcnkub3Bjb2RlID0gb3Bjb2RlOworICAgICAgICByZXN1bHQudS5yZWNvdmVyeS5s
ZWZ0QXJndW1lbnQgPSBsZWZ0QXJndW1lbnQ7CisgICAgICAgIHJlc3VsdC51LnJlY292ZXJ5LnJp
Z2h0QXJndW1lbnQgPSByaWdodEFyZ3VtZW50OworICAgICAgICByZXN1bHQudS5yZWNvdmVyeS5m
b3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAg
IEV4aXRWYWx1ZUtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIAogICAg
IGJvb2wgaXNEZWFkKCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEV4aXRWYWx1ZURlYWQ7IH0K
QEAgLTEzNSw2ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJvb2wgaXNDb25zdGFudCgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFsdWVDb25zdGFudDsgfQogICAgIGJvb2wg
aXNBcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFsdWVBcmd1bWVudDsg
fQorICAgIGJvb2wgaXNSZWNvdmVyeSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFs
dWVSZWNvdmVyeTsgfQogICAgIAogICAgIEV4aXRBcmd1bWVudCBleGl0QXJndW1lbnQoKSBjb25z
dAogICAgIHsKQEAgLTE0Miw2ICsxNTYsMzAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRXhp
dEFyZ3VtZW50KHUuYXJndW1lbnQpOwogICAgIH0KICAgICAKKyAgICB1bnNpZ25lZCBsZWZ0UmVj
b3ZlcnlBcmd1bWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNSZWNvdmVyeSgp
KTsKKyAgICAgICAgcmV0dXJuIHUucmVjb3ZlcnkubGVmdEFyZ3VtZW50OworICAgIH0KKyAgICAK
KyAgICB1bnNpZ25lZCByaWdodFJlY292ZXJ5QXJndW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzUmVjb3ZlcnkoKSk7CisgICAgICAgIHJldHVybiB1LnJlY292ZXJ5LnJpZ2h0
QXJndW1lbnQ7CisgICAgfQorICAgIAorICAgIFZhbHVlRm9ybWF0IHJlY292ZXJ5Rm9ybWF0KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1JlY292ZXJ5KCkpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VmFsdWVGb3JtYXQ+KHUucmVjb3ZlcnkuZm9ybWF0KTsKKyAgICB9Cisg
ICAgCisgICAgUmVjb3ZlcnlPcGNvZGUgcmVjb3ZlcnlPcGNvZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzUmVjb3ZlcnkoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxS
ZWNvdmVyeU9wY29kZT4odS5yZWNvdmVyeS5vcGNvZGUpOworICAgIH0KKyAgICAKICAgICBKU1Zh
bHVlIGNvbnN0YW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0NvbnN0YW50KCkp
OwpAQCAtMTkwLDYgKzIyOCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEV4aXRWYWx1ZUluSlNTdGFja0FzRG91YmxlOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlRm9y
bWF0RG91YmxlOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRXhpdFZhbHVlUmVjb3Zlcnk6
CisgICAgICAgICAgICByZXR1cm4gcmVjb3ZlcnlGb3JtYXQoKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNSw2ICsyNDYs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgRXhpdEFyZ3VtZW50UmVwcmVzZW50YXRpb24gYXJndW1l
bnQ7CiAgICAgICAgIEVuY29kZWRKU1ZhbHVlIGNvbnN0YW50OwogICAgICAgICBpbnQgdmlydHVh
bFJlZ2lzdGVyOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgbGVmdEFy
Z3VtZW50OworICAgICAgICAgICAgdWludDE2X3QgcmlnaHRBcmd1bWVudDsKKyAgICAgICAgICAg
IHVpbnQxNl90IG9wY29kZTsKKyAgICAgICAgICAgIHVpbnQxNl90IGZvcm1hdDsKKyAgICAgICAg
fSByZWNvdmVyeTsKICAgICB9IHU7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTYxNTIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkRGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgiCiAjaW5jbHVkZSAiRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIgorI2luY2x1ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5
LmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMRm9y
bWF0dGVkVmFsdWUuaCIKICNpbmNsdWRlICJGVExJbmxpbmVDYWNoZVNpemUuaCIKQEAgLTI1Niw2
ICsyNTcsOCBAQCBwcml2YXRlOgogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxl
ZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgIiwgbV9ub2RlLCAiXG4iKTsKICAg
ICAgICAgCisgICAgICAgIG1fYXZhaWxhYmxlUmVjb3Zlcmllcy5yZXNpemUoMCk7CisgICAgICAg
IAogICAgICAgICBib29sIHNob3VsZEV4ZWN1dGVFZmZlY3RzID0gbV9pbnRlcnByZXRlci5zdGFy
dEV4ZWN1dGluZyhtX25vZGUpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9w
KCkpIHsKQEAgLTI5NSwxMCArMjk4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbXBpbGVW
YWx1ZUFkZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0g
ICAgICAgICAgICBjb21waWxlQWRkU3ViKCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBBcml0aFN1YjoKLSAgICAgICAgICAgIGNvbXBpbGVBZGRTdWIoKTsKKyAgICAgICAgICAg
IGNvbXBpbGVBcml0aEFkZE9yU3ViKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBcml0aE11bDoKICAgICAgICAgICAgIGNvbXBpbGVBcml0aE11bCgpOwpAQCAtODA4LDcgKzgw
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
Y29tcGlsZUFkZFN1YigpCisgICAgdm9pZCBjb21waWxlQXJpdGhBZGRPclN1YigpCiAgICAgewog
ICAgICAgICBib29sIGlzU3ViID0gIG1fbm9kZS0+b3AoKSA9PSBBcml0aFN1YjsKICAgICAgICAg
c3dpdGNoIChtX25vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewpAQCAtODIxLDcgKzgyMiwzNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gaXNTdWIgPyBtX291dC5zdWJXaXRoT3ZlcmZsb3czMihsZWZ0
LCByaWdodCkgOiBtX291dC5hZGRXaXRoT3ZlcmZsb3czMihsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICAgICAgaWYgKCFpc1N1YikgeworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzMyKGxlZnQsIHJpZ2h0KTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZG9lc0tpbGwobV9ub2RlLT5jaGls
ZDIoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBsZWZ0LCBW
YWx1ZUZvcm1hdEludDMyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1f
bm9kZS0+Y2hpbGQxKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZEF2YWlsYWJsZVJlY292
ZXJ5KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwgU3ViUmVjb3Zl
cnksCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAw
KSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50MzIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJm
bG93MzIobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlm
IChkb2VzS2lsbChtX25vZGUtPmNoaWxkMigpKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBy
ZXN1bHQgPSBsZWZ0IC0gcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0IC0gbGVm
dCA9IC1yaWdodAorICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IGxlZnQgLSByZXN1bHQK
KyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxlZnQsIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBWYWx1ZUZvcm1h
dEludDMyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1fbm9kZS0+Y2hp
bGQxKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdCA9IGxlZnQgLSByaWdodAor
ICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgKyByaWdodCA9IGxlZnQKKyAgICAgICAgICAg
ICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X25vZGUtPmNoaWxkMSgpLCBBZGRSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCByaWdodCwgVmFsdWVGb3JtYXRJbnQzMik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzcGVjdWxhdGUo
T3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMSkpOwog
ICAgICAgICAgICAgc2V0SW50MzIobV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkpOwpAQCAt
ODQxLDcgKzg3MiwzOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dJ
bnQ1MihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0lu
dDUyKG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gaXNT
dWIgPyBtX291dC5zdWJXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCkgOiBtX291dC5hZGRXaXRo
T3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0OworICAg
ICAgICAgICAgaWYgKCFpc1N1YikgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LmFk
ZFdpdGhPdmVyZmxvdzY0KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoZG9lc0tpbGwobV9ub2RlLT5jaGlsZDIoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBsZWZ0LCBWYWx1ZUZvcm1hdEludDUyKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGFkZEF2YWlsYWJsZVJlY292ZXJ5KAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ub2RlLT5jaGlsZDEoKSwgU3ViUmVjb3ZlcnksCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50
NTIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJmbG93NjQobGVmdCwgcmlnaHQpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChkb2VzS2lsbChtX25vZGUtPmNoaWxk
MigpKSkgeworICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgPSBsZWZ0IC0gcmlnaHQKKyAg
ICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0IC0gbGVmdCA9IC1yaWdodAorICAgICAgICAgICAg
ICAgICAgICAvLyByaWdodCA9IGxlZnQgLSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgYWRk
QXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxk
MigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsIG1fb3V0LmV4
dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBWYWx1ZUZvcm1hdEludDUyKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIHJlc3VsdCA9IGxlZnQgLSByaWdodAorICAgICAgICAgICAgICAgICAgICAvLyBy
ZXN1bHQgKyByaWdodCA9IGxlZnQKKyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVj
b3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLCBBZGRSZWNv
dmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQs
IDApLCByaWdodCwgVmFsdWVGb3JtYXRJbnQ1Mik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICBzcGVjdWxhdGUoSW50NTJPdmVyZmxvdywgbm9WYWx1ZSgp
LCAwLCBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CiAgICAgICAgICAgICBzZXRJbnQ1
MihtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQwNjUsOCArNDEyNywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kT1NSRXhpdCgKICAg
ICAgICAgRXhpdEtpbmQga2luZCwgRm9ybWF0dGVkVmFsdWUgbG93VmFsdWUsIE5vZGUqIGhpZ2hW
YWx1ZSwgTFZhbHVlIGZhaWxDb25kaXRpb24pCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZUNv
bXBpbGF0aW9uRW5hYmxlZCgpKQorICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxl
ZCgpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NSIGV4aXQgIyIsIG1fZnRsU3RhdGUu
aml0Q29kZS0+b3NyRXhpdC5zaXplKCksICIgd2l0aCBhdmFpbGFiaWxpdHk6ICIsIG1fYXZhaWxh
YmlsaXR5LCAiXG4iKTsKKyAgICAgICAgICAgIGlmICghbV9hdmFpbGFibGVSZWNvdmVyaWVzLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIEF2YWlsYWJsZSByZWNv
dmVyaWVzOiAiLCBsaXN0RHVtcChtX2F2YWlsYWJsZVJlY292ZXJpZXMpLCAiXG4iKTsKKyAgICAg
ICAgfQogCiAgICAgICAgIEFTU0VSVChtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXQuc2l6ZSgp
ID09IG1fZnRsU3RhdGUuZmluYWxpemVyLT5vc3JFeGl0LnNpemUoKSk7CiAgICAgICAgIApAQCAt
NDE5MSw2ICs0MjU2LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh0cnlUb1NldENvbnN0YW50
RXhpdEFyZ3VtZW50KGV4aXQsIGluZGV4LCBub2RlKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F2YWlsYWJsZVJlY292
ZXJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEF2YWlsYWJsZVJlY292ZXJ5IHJlY292
ZXJ5ID0gbV9hdmFpbGFibGVSZWNvdmVyaWVzW2ldOworICAgICAgICAgICAgaWYgKHJlY292ZXJ5
Lm5vZGUoKSAhPSBub2RlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
CisgICAgICAgICAgICBleGl0Lm1fdmFsdWVzW2luZGV4XSA9IEV4aXRWYWx1ZTo6cmVjb3Zlcnko
CisgICAgICAgICAgICAgICAgcmVjb3Zlcnkub3Bjb2RlKCksIGFyZ3VtZW50cy5zaXplKCksIGFy
Z3VtZW50cy5zaXplKCkgKyAxLAorICAgICAgICAgICAgICAgIHJlY292ZXJ5LmZvcm1hdCgpKTsK
KyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQocmVjb3ZlcnkubGVmdCgpKTsKKyAgICAgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQocmVjb3ZlcnkucmlnaHQoKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUg
PSBtX2ludDMyVmFsdWVzLmdldChub2RlKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7
CiAgICAgICAgICAgICBhZGRFeGl0QXJndW1lbnQoZXhpdCwgYXJndW1lbnRzLCBpbmRleCwgVmFs
dWVGb3JtYXRJbnQzMiwgdmFsdWUudmFsdWUoKSk7CkBAIC00MjYwLDYgKzQzMzgsMjkgQEAgcHJp
dmF0ZToKICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgfQogICAgIAorICAg
IGJvb2wgZG9lc0tpbGwoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgaWYgKGVkZ2UuZG9lc05v
dEtpbGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlm
IChlZGdlLT5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkQXZhaWxh
YmxlUmVjb3ZlcnkoCisgICAgICAgIE5vZGUqIG5vZGUsIFJlY292ZXJ5T3Bjb2RlIG9wY29kZSwg
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCwgVmFsdWVGb3JtYXQgZm9ybWF0KQorICAgIHsKKyAg
ICAgICAgbV9hdmFpbGFibGVSZWNvdmVyaWVzLmFwcGVuZChBdmFpbGFibGVSZWNvdmVyeShub2Rl
LCBvcGNvZGUsIGxlZnQsIHJpZ2h0LCBmb3JtYXQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBh
ZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgRWRnZSBlZGdlLCBSZWNvdmVyeU9wY29kZSBv
cGNvZGUsIExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQsIFZhbHVlRm9ybWF0IGZvcm1hdCkKKyAg
ICB7CisgICAgICAgIGFkZEF2YWlsYWJsZVJlY292ZXJ5KGVkZ2Uubm9kZSgpLCBvcGNvZGUsIGxl
ZnQsIHJpZ2h0LCBmb3JtYXQpOworICAgIH0KKyAgICAKICAgICB2b2lkIHNldEludDMyKE5vZGUq
IG5vZGUsIExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faW50MzJWYWx1ZXMuc2V0KG5v
ZGUsIExvd2VyZWROb2RlVmFsdWUodmFsdWUsIG1faGlnaEJsb2NrKSk7CkBAIC00NDIzLDYgKzQ1
MjQsOCBAQCBwcml2YXRlOgogICAgIAogICAgIE9wZXJhbmRzPEF2YWlsYWJpbGl0eT4gbV9hdmFp
bGFiaWxpdHk7CiAgICAgCisgICAgVmVjdG9yPEF2YWlsYWJsZVJlY292ZXJ5LCAzPiBtX2F2YWls
YWJsZVJlY292ZXJpZXM7CisgICAgCiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0ZTsK
ICAgICBBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVycHJl
dGVyOwogICAgIEJhc2ljQmxvY2sqIG1faGlnaEJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTYxNTIw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzQsNiArMTM0LDQ0IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAog
ICAgICAgICAgICAgaml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IodmFsdWUu
dmlydHVhbFJlZ2lzdGVyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEV4aXRWYWx1ZVJlY292ZXJ5OgorICAgICAgICAg
ICAgcmVjb3JkLT5sb2NhdGlvbnNbdmFsdWUucmlnaHRSZWNvdmVyeUFyZ3VtZW50KCldLnJlc3Rv
cmVJbnRvKAorICAgICAgICAgICAgICAgIGppdCwgaml0Q29kZS0+c3RhY2ttYXBzLCByZWdpc3Rl
clNjcmF0Y2gsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIHJlY29yZC0+bG9jYXRpb25z
W3ZhbHVlLmxlZnRSZWNvdmVyeUFyZ3VtZW50KCldLnJlc3RvcmVJbnRvKAorICAgICAgICAgICAg
ICAgIGppdCwgaml0Q29kZS0+c3RhY2ttYXBzLCByZWdpc3RlclNjcmF0Y2gsIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgIHN3aXRjaCAodmFsdWUucmVjb3ZlcnlPcGNvZGUoKSkgeworICAg
ICAgICAgICAgY2FzZSBBZGRSZWNvdmVyeToKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVl
LnJlY292ZXJ5Rm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlRm9ybWF0SW50
MzI6CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFZhbHVlRm9ybWF0SW50NTI6CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGQ2NChHUFJJ
bmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN1YlJl
Y292ZXJ5OgorICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUucmVjb3ZlcnlGb3JtYXQoKSkg
eworICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQzMjoKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnN1YjMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQ1
MjoKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bj
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292
ZXJ5T3Bjb2RlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMUmVjb3ZlcnlPcGNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkZUTFJlY292ZXJ5T3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUoRlRM
X0pJVCkKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6RlRMOjpSZWNvdmVy
eU9wY29kZSBvcGNvZGUpCit7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEpTQzo6
RlRMOjpBZGRSZWNvdmVyeToKKyAgICAgICAgb3V0LnByaW50KCJBZGQiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgSlNDOjpGVEw6OlN1YlJlY292ZXJ5OgorICAgICAgICBvdXQucHJpbnQo
IlN1YiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEZU
TF9KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNv
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5
T3Bjb2RlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJl
Y292ZXJ5T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZUTFJlY292ZXJ5
T3Bjb2RlX2gKKyNkZWZpbmUgRlRMUmVjb3ZlcnlPcGNvZGVfaAorCisjaWYgRU5BQkxFKEZUTF9K
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKKworZW51bSBSZWNvdmVyeU9w
Y29kZSB7CisgICAgQWRkUmVjb3ZlcnksCisgICAgU3ViUmVjb3ZlcnkKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpGVEwKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFt
Owordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpGVEw6OlJlY292ZXJ5T3Bj
b2RlKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkK
KworI2VuZGlmIC8vIEZUTFJlY292ZXJ5T3Bjb2RlX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220673</attachid>
            <date>2014-01-08 16:22:34 -0800</date>
            <delta_ts>2014-01-08 16:51:53 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>36337</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE0LTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBub3QgdXNlIHRoZSBpbnB1dHMgb2YgYW4gYWRkIG9yIHN1YiBhcyB0aGUgbGl2
ZS1hdC1leGl0IHZhbHVlcyBpbiBhbiBvdmVyZmxvdyBjaGVjaywgaWYgdGhlIHZhbHVlcyBhcmVu
J3QgbGl2ZSBhZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBJbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gRXhpdFZhbHVlIHRoYXQg
aXMgY29tcHV0ZWQgYnkgZG9pbmcgc29tZSBtYXRoIG9uIHR3bworICAgICAgICBleGl0IGFyZ3Vt
ZW50cy4gVGhpcyBnZXRzIHVzZWQgYnkgTG93ZXJERkdUb0xMVk0gYnkgdHJhY2tpbmcgdGhlCisg
ICAgICAgIEF2YWlsYWJsZVJlY292ZXJpZXMgLSBpLmUuIHRoZSBzZXQgb2Ygd2F5cyB3ZSBrbm93
IGhvdyB0byByZWNvdmVyIHRoZSB2YWx1ZSBvZiBhCisgICAgICAgIG5vZGUgYnkgcGVyZm9ybWlu
ZyBtYXRoIG9uIExWYWx1ZSdzIC0gYW5kIHRoZW4gdHJ5aW5nIHRvIHBpY2sgYW4gQXZhaWxhYmxl
UmVjb3ZlcnkKKyAgICAgICAgaWYgd2UgdHJ5IHRvIGV4aXQgd2l0aCBhbiBBdmFpbGFiaWxpdHkg
cG9pbnRpbmcgdG8gYSBOb2RlIHRoYXQgaXNuJ3QgYSBjb25zdGFudC4KKyAgICAgICAgVGhlIGNv
bXBpbGVBcml0aEFkZE9yU3ViKCkgY29kZSBhZGRzIEF2YWlsYWJsZVJlY292ZXJpZXMgZm9yIHRo
ZSB3YXlzIHlvdSBjb3VsZAorICAgICAgICByZWNvdmVyeSB0aGUgbGVmdCBvciByaWdodCBvcGVy
YW5kIGJ5IHVzaW5nIHRoZSByZXN1bHQuCisgICAgICAgIAorICAgICAgICBEb2luZyB0aGlzIHVu
Y292ZXJlZCBhIGJ1ZyBpbiBzdGFja21hcCBjb25zdGFudCBwYXJzaW5nIHdoZXJlIHdlIHdlcmUg
Y2FzdGluZyBhCisgICAgICAgIDMyLWJpdCB2YWx1ZSB0byAxNi1iaXQsIHRoZXJlYnkgbG9zaW5n
IHRoZSB0b3AgYml0cy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zlcnk6OmR1bXApOgorICAgICAg
ICAqIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpBdmFpbGFibGVSZWNvdmVyeTo6QXZhaWxhYmxlUmVjb3ZlcnkpOgorICAgICAgICAoSlNDOjpG
VEw6OkF2YWlsYWJsZVJlY292ZXJ5Ojpub2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFi
bGVSZWNvdmVyeTo6Zm9ybWF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVy
eTo6b3Bjb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVyeTo6bGVmdCk6
CisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zlcnk6OnJpZ2h0KToKKyAgICAgICAg
KiBmdGwvRlRMRXhpdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OmR1
bXBJbkNvbnRleHQpOgorICAgICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpFeGl0VmFsdWU6OnJlY292ZXJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFs
dWU6OmlzUmVjb3ZlcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6bGVmdFJlY292
ZXJ5QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6cmlnaHRSZWNvdmVy
eUFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnJlY292ZXJ5Rm9ybWF0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnJlY292ZXJ5T3Bjb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnZhbHVlRm9ybWF0KToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVB
cml0aEFkZE9yU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YXBwZW5k
T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFkZEV4aXRBcmd1
bWVudEZvck5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpkb2VzS2ls
bCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFkZEF2YWlsYWJsZVJlY292
ZXJ5KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNw
cDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGZ0bC9G
VExSZWNvdmVyeU9wY29kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBmdGwvRlRMU3RhY2tNYXBzLmg6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2FkZC1jb25zdGFudC1vdmVyZmxvdy1yZWNvdmVyeS5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hZGQtb3Zl
cmZsb3ctcmVjb3ZlcnkuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvYWRkLXNtYWxsLWNvbnN0YW50LW92ZXJmbG93LXJlY292ZXJ5LmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbyk6CisKIDIwMTQtMDEtMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIGRpc2FibGlu
ZyBvZiBBVlgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjE1
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM2LDYgKzIzNiwxMCBAQAogCQkwRjQ2
ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ4NTMyMTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDg1MzFGMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuY3BwICovOyB9OwogCQkw
RjQ4NTMyMjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ4NTMyMDE4Nzc1MDU2MDA4M0I2ODcg
LyogREZHQXJpdGhNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0ODUzMjcxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292
ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDg1MzIzMTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5jcHAgKi87IH07
CisJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0ODUzMjQxODdE
RkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0ODUzMjkxODdERkRFQzAwODNCNjg3
IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9w
Y29kZS5jcHAgKi87IH07CisJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVy
eU9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0OTNBRkExNkQwQ0FE
MzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQ
cm92aWRlci5jcHAgKi87IH07CiAJCTBGNEI5NERDMTdCOUYwNzUwMEREMDNBNCAvKiBUeXBlZEFy
cmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0Qjk0REIxN0I5RjA3NTAwREQwM0E0IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NTQxQjExNjEz
QzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVj
aWFsUG9pbnRlci5jcHAgKi87IH07CkBAIC0xNTY2LDYgKzE1NzAsMTAgQEAKIAkJMEY0NjgwRDEx
NEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjQ4NTMxRjE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0FyaXRoTW9kZS5jcHA7
IHBhdGggPSBkZmcvREZHQXJpdGhNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0ODUzMjAxODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcml0aE1vZGUuaDsgcGF0aCA9IGRmZy9ERkdBcml0
aE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0ODUzMjMxODdERkRFQzAw
ODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcDsgcGF0aCA9IGZ0bC9GVExB
dmFpbGFibGVSZWNvdmVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDg1
MzI0MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExBdmFpbGFibGVSZWNvdmVyeS5oOyBwYXRoID0gZnRs
L0ZUTEF2YWlsYWJsZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExSZWNvdmVyeU9wY29kZS5jcHA7IHBhdGgg
PSBmdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVjb3ZlcnlPcGNvZGUuaDsgcGF0aCA9IGZ0
bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ5
M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjRCOTREQjE3QjlGMDc1MDBERDAzQTQgLyogVHlwZWRBcnJheUlu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZWRBcnJheUlubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTQxQUYxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNwZWNpYWxQb2ludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI4NjQsNiArMjg3Miw4IEBACiAJCQkJMEZFQTBBMTgxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFi
c3RyYWN0SGVhcC5oICovLAogCQkJCTBGRUEwQTE5MTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCAqLywKIAkJCQkwRkVBMEExQTE3MDhCMDA3MDBCQjcyMkMg
LyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovLAorCQkJCTBGNDg1MzIzMTg3REZERUMw
MDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5jcHAgKi8sCisJCQkJMEY0ODUzMjQxODdE
RkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggKi8sCiAJCQkJMEZFQTA5RkUx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5jcHAgKi8sCiAJCQkJMEZFQTA5RkYx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oICovLAogCQkJCTBGRUEwQTI1MTcw
OTYyM0IwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuY3BwICovLApAQCAtMjkxMiw2ICsyOTIy
LDggQEAKIAkJCQkwRjIzNUJDQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVy
LmggKi8sCiAJCQkJMEZFQTBBMjkxNzA5NjI5NjAwQkI3MjJDIC8qIEZUTE91dHB1dC5jcHAgKi8s
CiAJCQkJMEZFQTBBMDYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTE91dHB1dC5oICovLAorCQkJCTBG
NDg1MzI1MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgKi8sCisJCQkJ
MEY0ODUzMjYxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggKi8sCiAJCQkJ
MEY2QjFDQkYxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwICovLAog
CQkJCTBGNkIxQ0MwMTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExSZWdpc3RlckF0T2Zmc2V0LmggKi8s
CiAJCQkJMEZDRUZBQTkxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCAqLywK
QEAgLTQ0MTksNiArNDQzMSw3IEBACiAJCQkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERG
R0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAw
Q0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5
REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFy
cmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0Iy
OTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00NTUxLDYgKzQ1NjQsNyBAQAogCQkJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAv
KiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5
MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3Zl
cnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAv
KiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBDMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENDE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTU1NjUs
NiArNTU3OSw3IEBACiAJCQkJMEZDMDk3QTExNDZCMjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyNzE3RDUxRjU3MDBDQTJDNDAgLyogREZHVGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyOTE3
RDUxRjU3MDBDQTJDNDAgLyogREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY0ODUzMjcxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWls
YWJsZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhBMzJCMTdENTFGNTcwMENB
MkM0MCAvKiBERkdUb0ZUTEZvck9TUkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjM5NDQwMTVDNzVGMUQwMDZBNTk3QyAvKiBERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc2MTZDMURC
MEYwMDgyQzVFOCAvKiBERkdVbmlmaWNhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTY5Nyw2ICs1NzEyLDcgQEAKIAkJCQkxNDI4MDg3NTEwN0VDMTNFMDAxM0U3QjIgLyogSlNMb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01h
bmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzQxMTdDQkU4RUIwMEMzRTY0
MyAvKiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ4NTMyOTE4N0RGREVDMDA4M0I2
ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4NzRBRTMx
NUVCREU0QTAwMkUzNTg3IC8qIEpTTmFtZVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
MjcwMDkwMERBQzZCQkMwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0N0YzOUQ0MTA3RUMzNzYwMDQyN0E0OCAvKiBKU09iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZhaWxhYmxlUmVjb3Zl
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZhaWxh
YmxlUmVjb3ZlcnkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCIKKworI2lmIEVO
QUJMRShGVExfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CisKK3ZvaWQg
QXZhaWxhYmxlUmVjb3Zlcnk6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnQobm9kZSgpLCAiID0+ICIsIG9wY29kZSgpLCAiLCAiLCBSYXdQb2ludGVyKG1fbGVm
dCksICIsICIsIFJhd1BvaW50ZXIobV9yaWdodCksICIsICIsIG1fZm9ybWF0KTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEF2YWlsYWJs
ZVJlY292ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZUTEF2YWlsYWJsZVJl
Y292ZXJ5X2gKKyNkZWZpbmUgRlRMQXZhaWxhYmxlUmVjb3ZlcnlfaAorCisjaWYgRU5BQkxFKEZU
TF9KSVQpCisKKyNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiRlRMQWJicmV2aWF0ZWRU
eXBlcy5oIgorI2luY2x1ZGUgIkZUTFJlY292ZXJ5T3Bjb2RlLmgiCisjaW5jbHVkZSAiRlRMVmFs
dWVGb3JtYXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitjbGFzcyBB
dmFpbGFibGVSZWNvdmVyeSB7CitwdWJsaWM6CisgICAgQXZhaWxhYmxlUmVjb3ZlcnkoKQorICAg
ICAgICA6IG1fbm9kZSgwKQorICAgICAgICAsIG1fZm9ybWF0KEludmFsaWRWYWx1ZUZvcm1hdCkK
KyAgICAgICAgLCBtX29wY29kZShBZGRSZWNvdmVyeSkKKyAgICAgICAgLCBtX2xlZnQoMCkKKyAg
ICAgICAgLCBtX3JpZ2h0KDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBBdmFpbGFibGVSZWNv
dmVyeShERkc6Ok5vZGUqIG5vZGUsIFJlY292ZXJ5T3Bjb2RlIG9wY29kZSwgTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCwgVmFsdWVGb3JtYXQgZm9ybWF0KQorICAgICAgICA6IG1fbm9kZShub2Rl
KQorICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKKyAgICAgICAgLCBtX29wY29kZShvcGNvZGUp
CisgICAgICAgICwgbV9sZWZ0KGxlZnQpCisgICAgICAgICwgbV9yaWdodChyaWdodCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIERGRzo6Tm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZTsgfQorICAgIFZhbHVlRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9
CisgICAgUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGU7IH0K
KyAgICBMVmFsdWUgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIExWYWx1ZSBy
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgREZHOjpOb2RlKiBtX25vZGU7
CisgICAgVmFsdWVGb3JtYXQgbV9mb3JtYXQ7CisgICAgUmVjb3ZlcnlPcGNvZGUgbV9vcGNvZGU7
CisgICAgTFZhbHVlIG1fbGVmdDsKKyAgICBMVmFsdWUgbV9yaWdodDsKK307CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorCisjZW5kaWYg
Ly8gRlRMQXZhaWxhYmxlUmVjb3ZlcnlfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExFeGl0VmFsdWUuY3BwCShyZXZpc2lvbiAxNjE1MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYgKzU5LDkg
QEAgdm9pZCBFeGl0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYQogICAgIGNhc2UgRXhp
dFZhbHVlSW5KU1N0YWNrQXNEb3VibGU6CiAgICAgICAgIG91dC5wcmludCgiSW5KU1N0YWNrQXNE
b3VibGU6ciIsIHZpcnR1YWxSZWdpc3RlcigpKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
RXhpdFZhbHVlUmVjb3Zlcnk6CisgICAgICAgIG91dC5wcmludCgiUmVjb3ZlcnkoIiwgcmVjb3Zl
cnlPcGNvZGUoKSwgIiwgYXJnIiwgbGVmdFJlY292ZXJ5QXJndW1lbnQoKSwgIiwgYXJnIiwgcmln
aHRSZWNvdmVyeUFyZ3VtZW50KCksICIsICIsIHJlY292ZXJ5Rm9ybWF0KCksICIpIik7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuaAkocmV2aXNp
b24gMTYxNTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShGVExfSklUKQogCiAjaW5j
bHVkZSAiRlRMRXhpdEFyZ3VtZW50LmgiCisjaW5jbHVkZSAiRlRMUmVjb3ZlcnlPcGNvZGUuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC01MSw3ICs1Miw4IEBAIGVudW0gRXhpdFZh
bHVlS2luZCB7CiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrLAogICAgIEV4aXRWYWx1ZUluSlNTdGFj
a0FzSW50MzIsCiAgICAgRXhpdFZhbHVlSW5KU1N0YWNrQXNJbnQ1MiwKLSAgICBFeGl0VmFsdWVJ
bkpTU3RhY2tBc0RvdWJsZQorICAgIEV4aXRWYWx1ZUluSlNTdGFja0FzRG91YmxlLAorICAgIEV4
aXRWYWx1ZVJlY292ZXJ5CiB9OwogCiBjbGFzcyBFeGl0VmFsdWUgewpAQCAtMTE4LDYgKzEyMCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIHN0
YXRpYyBFeGl0VmFsdWUgcmVjb3ZlcnkoUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlLCB1bnNpZ25lZCBs
ZWZ0QXJndW1lbnQsIHVuc2lnbmVkIHJpZ2h0QXJndW1lbnQsIFZhbHVlRm9ybWF0IGZvcm1hdCkK
KyAgICB7CisgICAgICAgIEV4aXRWYWx1ZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQg
PSBFeGl0VmFsdWVSZWNvdmVyeTsKKyAgICAgICAgcmVzdWx0LnUucmVjb3Zlcnkub3Bjb2RlID0g
b3Bjb2RlOworICAgICAgICByZXN1bHQudS5yZWNvdmVyeS5sZWZ0QXJndW1lbnQgPSBsZWZ0QXJn
dW1lbnQ7CisgICAgICAgIHJlc3VsdC51LnJlY292ZXJ5LnJpZ2h0QXJndW1lbnQgPSByaWdodEFy
Z3VtZW50OworICAgICAgICByZXN1bHQudS5yZWNvdmVyeS5mb3JtYXQgPSBmb3JtYXQ7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIEV4aXRWYWx1ZUtpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIAogICAgIGJvb2wgaXNEZWFkKCkgY29uc3Qg
eyByZXR1cm4ga2luZCgpID09IEV4aXRWYWx1ZURlYWQ7IH0KQEAgLTEzNSw2ICsxNDgsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBFeGl0VmFsdWVDb25zdGFudDsgfQogICAgIGJvb2wgaXNBcmd1bWVudCgpIGNvbnN0IHsg
cmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFsdWVBcmd1bWVudDsgfQorICAgIGJvb2wgaXNSZWNvdmVy
eSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBFeGl0VmFsdWVSZWNvdmVyeTsgfQogICAgIAog
ICAgIEV4aXRBcmd1bWVudCBleGl0QXJndW1lbnQoKSBjb25zdAogICAgIHsKQEAgLTE0Miw2ICsx
NTYsMzAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRXhpdEFyZ3VtZW50KHUuYXJndW1lbnQp
OwogICAgIH0KICAgICAKKyAgICB1bnNpZ25lZCBsZWZ0UmVjb3ZlcnlBcmd1bWVudCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQoaXNSZWNvdmVyeSgpKTsKKyAgICAgICAgcmV0dXJuIHUu
cmVjb3ZlcnkubGVmdEFyZ3VtZW50OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCByaWdodFJl
Y292ZXJ5QXJndW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzUmVjb3Zlcnko
KSk7CisgICAgICAgIHJldHVybiB1LnJlY292ZXJ5LnJpZ2h0QXJndW1lbnQ7CisgICAgfQorICAg
IAorICAgIFZhbHVlRm9ybWF0IHJlY292ZXJ5Rm9ybWF0KCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc1JlY292ZXJ5KCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWVG
b3JtYXQ+KHUucmVjb3ZlcnkuZm9ybWF0KTsKKyAgICB9CisgICAgCisgICAgUmVjb3ZlcnlPcGNv
ZGUgcmVjb3ZlcnlPcGNvZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzUmVjb3Zl
cnkoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWNvdmVyeU9wY29kZT4odS5yZWNv
dmVyeS5vcGNvZGUpOworICAgIH0KKyAgICAKICAgICBKU1ZhbHVlIGNvbnN0YW50KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc0NvbnN0YW50KCkpOwpAQCAtMTkwLDYgKzIyOCw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEV4aXRWYWx1ZUluSlNTdGFja0Fz
RG91YmxlOgogICAgICAgICAgICAgcmV0dXJuIFZhbHVlRm9ybWF0RG91YmxlOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRXhpdFZhbHVlUmVjb3Zlcnk6CisgICAgICAgICAgICByZXR1cm4g
cmVjb3ZlcnlGb3JtYXQoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwNSw2ICsyNDYsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgRXhpdEFyZ3VtZW50UmVwcmVzZW50YXRpb24gYXJndW1lbnQ7CiAgICAgICAgIEVuY29kZWRK
U1ZhbHVlIGNvbnN0YW50OwogICAgICAgICBpbnQgdmlydHVhbFJlZ2lzdGVyOworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgbGVmdEFyZ3VtZW50OworICAgICAgICAgICAg
dWludDE2X3QgcmlnaHRBcmd1bWVudDsKKyAgICAgICAgICAgIHVpbnQxNl90IG9wY29kZTsKKyAg
ICAgICAgICAgIHVpbnQxNl90IGZvcm1hdDsKKyAgICAgICAgfSByZWNvdmVyeTsKICAgICB9IHU7
CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAkocmV2aXNpb24gMTYxNTIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmgiCiAjaW5jbHVkZSAiRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oIgorI2luY2x1ZGUgIkZUTEF2YWlsYWJsZVJlY292ZXJ5LmgiCiAjaW5jbHVkZSAiRlRMRm9y
T1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMRm9ybWF0dGVkVmFsdWUuaCIKICNpbmNs
dWRlICJGVExJbmxpbmVDYWNoZVNpemUuaCIKQEAgLTI1Niw2ICsyNTcsOCBAQCBwcml2YXRlOgog
ICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgZGF0
YUxvZygiTG93ZXJpbmcgIiwgbV9ub2RlLCAiXG4iKTsKICAgICAgICAgCisgICAgICAgIG1fYXZh
aWxhYmxlUmVjb3Zlcmllcy5yZXNpemUoMCk7CisgICAgICAgIAogICAgICAgICBib29sIHNob3Vs
ZEV4ZWN1dGVFZmZlY3RzID0gbV9pbnRlcnByZXRlci5zdGFydEV4ZWN1dGluZyhtX25vZGUpOwog
ICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKQEAgLTI5NSwxMCArMjk4
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbXBpbGVWYWx1ZUFkZCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAgICAgICAgICBjb21waWxlQWRk
U3ViKCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcml0aFN1YjoKLSAgICAg
ICAgICAgIGNvbXBpbGVBZGRTdWIoKTsKKyAgICAgICAgICAgIGNvbXBpbGVBcml0aEFkZE9yU3Vi
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcml0aE11bDoKICAgICAgICAg
ICAgIGNvbXBpbGVBcml0aE11bCgpOwpAQCAtODA4LDcgKzgwOSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQyKCkpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUFkZFN1YigpCisgICAg
dm9pZCBjb21waWxlQXJpdGhBZGRPclN1YigpCiAgICAgewogICAgICAgICBib29sIGlzU3ViID0g
IG1fbm9kZS0+b3AoKSA9PSBBcml0aFN1YjsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmJpbmFy
eVVzZUtpbmQoKSkgewpAQCAtODIxLDcgKzgyMiwzNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
aXNTdWIgPyBtX291dC5zdWJXaXRoT3ZlcmZsb3czMihsZWZ0LCByaWdodCkgOiBtX291dC5hZGRX
aXRoT3ZlcmZsb3czMihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0Owor
ICAgICAgICAgICAgaWYgKCFpc1N1YikgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0
LmFkZFdpdGhPdmVyZmxvdzMyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBpZiAoZG9lc0tpbGwobV9ub2RlLT5jaGlsZDIoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X25vZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBsZWZ0LCBWYWx1ZUZvcm1hdEludDMyKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZEF2YWlsYWJsZVJlY292ZXJ5KAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwgU3ViUmVjb3ZlcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSwgcmlnaHQsIFZhbHVlRm9ybWF0
SW50MzIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJmbG93MzIobGVmdCwgcmlnaHQpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChkb2VzS2lsbChtX25vZGUtPmNo
aWxkMigpKSkgeworICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgPSBsZWZ0IC0gcmlnaHQK
KyAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0IC0gbGVmdCA9IC1yaWdodAorICAgICAgICAg
ICAgICAgICAgICAvLyByaWdodCA9IGxlZnQgLSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAg
YWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNo
aWxkMigpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsIG1fb3V0
LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCBWYWx1ZUZvcm1hdEludDMyKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGRvZXNLaWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIHJlc3VsdCA9IGxlZnQgLSByaWdodAorICAgICAgICAgICAgICAgICAgICAv
LyByZXN1bHQgKyByaWdodCA9IGxlZnQKKyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxl
UmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLCBBZGRS
ZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1
bHQsIDApLCByaWdodCwgVmFsdWVGb3JtYXRJbnQzMik7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwg
MCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMSkpOwogICAgICAgICAgICAgc2V0SW50MzIo
bV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCkpOwpAQCAtODQxLDcgKzg3MiwzOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dJbnQ1MihtX25vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQyKCkp
OwogCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gaXNTdWIgPyBtX291dC5zdWJXaXRoT3Zl
cmZsb3c2NChsZWZ0LCByaWdodCkgOiBtX291dC5hZGRXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICAgICAgaWYgKCFpc1N1Yikg
eworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzY0KGxlZnQs
IHJpZ2h0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZG9lc0tpbGwo
bV9ub2RlLT5jaGlsZDIoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVj
b3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBTdWJSZWNv
dmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQs
IDApLCBsZWZ0LCBWYWx1ZUZvcm1hdEludDUyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGRvZXNLaWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZEF2
YWlsYWJsZVJlY292ZXJ5KAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEo
KSwgU3ViUmVjb3ZlcnksCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5leHRyYWN0VmFs
dWUocmVzdWx0LCAwKSwgcmlnaHQsIFZhbHVlRm9ybWF0SW50NTIpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQu
c3ViV2l0aE92ZXJmbG93NjQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGlmIChkb2VzS2lsbChtX25vZGUtPmNoaWxkMigpKSkgeworICAgICAgICAgICAg
ICAgICAgICAvLyByZXN1bHQgPSBsZWZ0IC0gcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgLy8g
cmVzdWx0IC0gbGVmdCA9IC1yaWdodAorICAgICAgICAgICAgICAgICAgICAvLyByaWdodCA9IGxl
ZnQgLSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpLCBTdWJSZWNvdmVyeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnQsIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDAp
LCBWYWx1ZUZvcm1hdEludDUyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvZXNLaWxs
KG1fbm9kZS0+Y2hpbGQxKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdCA9IGxl
ZnQgLSByaWdodAorICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgKyByaWdodCA9IGxlZnQK
KyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLCBBZGRSZWNvdmVyeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCByaWdodCwgVmFsdWVGb3Jt
YXRJbnQ1Mik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICBzcGVjdWxhdGUoSW50NTJPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFs
dWUocmVzdWx0LCAxKSk7CiAgICAgICAgICAgICBzZXRJbnQ1MihtX291dC5leHRyYWN0VmFsdWUo
cmVzdWx0LCAwKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwNjUsOCArNDEyNywxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgYXBwZW5kT1NSRXhpdCgKICAgICAgICAgRXhpdEtpbmQga2luZCwg
Rm9ybWF0dGVkVmFsdWUgbG93VmFsdWUsIE5vZGUqIGhpZ2hWYWx1ZSwgTFZhbHVlIGZhaWxDb25k
aXRpb24pCiAgICAgewotICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQor
ICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgT1NSIGV4aXQgIyIsIG1fZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXpl
KCksICIgd2l0aCBhdmFpbGFiaWxpdHk6ICIsIG1fYXZhaWxhYmlsaXR5LCAiXG4iKTsKKyAgICAg
ICAgICAgIGlmICghbV9hdmFpbGFibGVSZWNvdmVyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICAgIEF2YWlsYWJsZSByZWNvdmVyaWVzOiAiLCBsaXN0RHVtcCht
X2F2YWlsYWJsZVJlY292ZXJpZXMpLCAiXG4iKTsKKyAgICAgICAgfQogCiAgICAgICAgIEFTU0VS
VChtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4aXQuc2l6ZSgpID09IG1fZnRsU3RhdGUuZmluYWxp
emVyLT5vc3JFeGl0LnNpemUoKSk7CiAgICAgICAgIApAQCAtNDE5MSw2ICs0MjU2LDE5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmICh0cnlUb1NldENvbnN0YW50RXhpdEFyZ3VtZW50KGV4aXQsIGlu
ZGV4LCBub2RlKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2F2YWlsYWJsZVJlY292ZXJpZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIEF2YWlsYWJsZVJlY292ZXJ5IHJlY292ZXJ5ID0gbV9hdmFpbGFibGVSZWNv
dmVyaWVzW2ldOworICAgICAgICAgICAgaWYgKHJlY292ZXJ5Lm5vZGUoKSAhPSBub2RlKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBleGl0Lm1f
dmFsdWVzW2luZGV4XSA9IEV4aXRWYWx1ZTo6cmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgcmVj
b3Zlcnkub3Bjb2RlKCksIGFyZ3VtZW50cy5zaXplKCksIGFyZ3VtZW50cy5zaXplKCkgKyAxLAor
ICAgICAgICAgICAgICAgIHJlY292ZXJ5LmZvcm1hdCgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQocmVjb3ZlcnkubGVmdCgpKTsKKyAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
cmVjb3ZlcnkucmlnaHQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2ludDMyVmFsdWVzLmdldChu
b2RlKTsKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBhZGRFeGl0
QXJndW1lbnQoZXhpdCwgYXJndW1lbnRzLCBpbmRleCwgVmFsdWVGb3JtYXRJbnQzMiwgdmFsdWUu
dmFsdWUoKSk7CkBAIC00MjYwLDYgKzQzMzgsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZCh2YWx1ZSk7CiAgICAgfQogICAgIAorICAgIGJvb2wgZG9lc0tpbGwoRWRnZSBl
ZGdlKQorICAgIHsKKyAgICAgICAgaWYgKGVkZ2UuZG9lc05vdEtpbGwoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmIChlZGdlLT5oYXNDb25zdGFudCgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAg
IE5vZGUqIG5vZGUsIFJlY292ZXJ5T3Bjb2RlIG9wY29kZSwgTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCwgVmFsdWVGb3JtYXQgZm9ybWF0KQorICAgIHsKKyAgICAgICAgbV9hdmFpbGFibGVSZWNv
dmVyaWVzLmFwcGVuZChBdmFpbGFibGVSZWNvdmVyeShub2RlLCBvcGNvZGUsIGxlZnQsIHJpZ2h0
LCBmb3JtYXQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhZGRBdmFpbGFibGVSZWNvdmVyeSgK
KyAgICAgICAgRWRnZSBlZGdlLCBSZWNvdmVyeU9wY29kZSBvcGNvZGUsIExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQsIFZhbHVlRm9ybWF0IGZvcm1hdCkKKyAgICB7CisgICAgICAgIGFkZEF2YWls
YWJsZVJlY292ZXJ5KGVkZ2Uubm9kZSgpLCBvcGNvZGUsIGxlZnQsIHJpZ2h0LCBmb3JtYXQpOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIHNldEludDMyKE5vZGUqIG5vZGUsIExWYWx1ZSB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIG1faW50MzJWYWx1ZXMuc2V0KG5vZGUsIExvd2VyZWROb2RlVmFsdWUo
dmFsdWUsIG1faGlnaEJsb2NrKSk7CkBAIC00NDIzLDYgKzQ1MjQsOCBAQCBwcml2YXRlOgogICAg
IAogICAgIE9wZXJhbmRzPEF2YWlsYWJpbGl0eT4gbV9hdmFpbGFiaWxpdHk7CiAgICAgCisgICAg
VmVjdG9yPEF2YWlsYWJsZVJlY292ZXJ5LCAzPiBtX2F2YWlsYWJsZVJlY292ZXJpZXM7CisgICAg
CiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJl
dGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVycHJldGVyOwogICAgIEJhc2ljQmxvY2sq
IG1faGlnaEJsb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTYxNTIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzQsNiAr
MTM0LDQ0IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAgaml0LmxvYWQ2
NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IodmFsdWUudmlydHVhbFJlZ2lzdGVyKCkpLCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEV4aXRWYWx1ZVJlY292ZXJ5OgorICAgICAgICAgICAgcmVjb3JkLT5sb2NhdGlvbnNb
dmFsdWUucmlnaHRSZWNvdmVyeUFyZ3VtZW50KCldLnJlc3RvcmVJbnRvKAorICAgICAgICAgICAg
ICAgIGppdCwgaml0Q29kZS0+c3RhY2ttYXBzLCByZWdpc3RlclNjcmF0Y2gsIEdQUkluZm86OnJl
Z1QxKTsKKyAgICAgICAgICAgIHJlY29yZC0+bG9jYXRpb25zW3ZhbHVlLmxlZnRSZWNvdmVyeUFy
Z3VtZW50KCldLnJlc3RvcmVJbnRvKAorICAgICAgICAgICAgICAgIGppdCwgaml0Q29kZS0+c3Rh
Y2ttYXBzLCByZWdpc3RlclNjcmF0Y2gsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIHN3
aXRjaCAodmFsdWUucmVjb3ZlcnlPcGNvZGUoKSkgeworICAgICAgICAgICAgY2FzZSBBZGRSZWNv
dmVyeToKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLnJlY292ZXJ5Rm9ybWF0KCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlRm9ybWF0SW50MzI6CisgICAgICAgICAgICAgICAg
ICAgIGppdC5hZGQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFZhbHVlRm9ybWF0SW50NTI6
CisgICAgICAgICAgICAgICAgICAgIGppdC5hZGQ2NChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6
cmVnVDApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN1YlJlY292ZXJ5OgorICAgICAgICAgICAg
ICAgIHN3aXRjaCAodmFsdWUucmVjb3ZlcnlGb3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgVmFsdWVGb3JtYXRJbnQzMjoKKyAgICAgICAgICAgICAgICAgICAgaml0LnN1YjMyKEdQUklu
Zm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQ1MjoKKyAgICAgICAgICAgICAgICAg
ICAgaml0LnN1YjY0KEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZU
TFJlY292ZXJ5T3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEpTQzo6RlRMOjpSZWNvdmVyeU9wY29kZSBvcGNvZGUpCit7Cisg
ICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIEpTQzo6RlRMOjpBZGRSZWNvdmVyeToKKyAg
ICAgICAgb3V0LnByaW50KCJBZGQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpG
VEw6OlN1YlJlY292ZXJ5OgorICAgICAgICBvdXQucHJpbnQoIlN1YiIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNvZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZUTFJlY292ZXJ5T3Bjb2RlX2gKKyNkZWZpbmUgRlRM
UmVjb3ZlcnlPcGNvZGVfaAorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKKworZW51bSBSZWNvdmVyeU9wY29kZSB7CisgICAgQWRkUmVjb3Zl
cnksCisgICAgU3ViUmVjb3ZlcnkKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKKwor
bmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiwgSlNDOjpGVEw6OlJlY292ZXJ5T3Bjb2RlKTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKworI2VuZGlmIC8vIEZUTFJlY292
ZXJ5T3Bjb2RlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGFja01h
cHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YWNrTWFw
cy5oCShyZXZpc2lvbiAxNjE1MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0
YWNrTWFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBTdGFja01h
cHMgewogICAgICAgICB1aW50MTZfdCBkd2FyZlJlZ051bTsgLy8gUmVwcmVzZW50ZWQgYXMgYSAx
Mi1iaXQgaW50IGluIHRoZSBzZWN0aW9uLgogICAgICAgICBpbnQ4X3Qgc2l6ZTsKICAgICAgICAg
S2luZCBraW5kOwotICAgICAgICBpbnQxNl90IG9mZnNldDsKKyAgICAgICAgaW50MzJfdCBvZmZz
ZXQ7CiAgICAgICAgIAogICAgICAgICB2b2lkIHBhcnNlKERhdGFWaWV3KiwgdW5zaWduZWQmIG9m
ZnNldCk7CiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWRkLWNvbnN0YW50LW92ZXJmbG93
LXJlY292ZXJ5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYWRkLWNvbnN0YW50LW92ZXJmbG93LXJlY292ZXJ5LmpzCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hZGQtY29uc3RhbnQtb3ZlcmZsb3ct
cmVjb3ZlcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorZnVuY3Rpb24gZm9v
KGEpIHsKKyAgICByZXR1cm4gYS5mICsgMjAwMDAwMDAwMDsKK30KKworbm9JbmxpbmUoZm9vKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBm
b28oe2Y6MX0pOworICAgIGlmIChyZXN1bHQgIT0gMjAwMDAwMDAwMSkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKHtm
OjIwMDAwMDAwMDB9KTsKK2lmIChyZXN1bHQgIT0gNDAwMDAwMDAwMCkKKyAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2FkZC1vdmVyZmxvdy1yZWNvdmVyeS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FkZC1vdmVyZmxvdy1yZWNvdmVyeS5qcwko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWRkLW92
ZXJmbG93LXJlY292ZXJ5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0
aW9uIGZvbyhhLCBiKSB7CisgICAgcmV0dXJuIGEuZiArIGIuZjsKK30KKworbm9JbmxpbmUoZm9v
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSBmb28oe2Y6MX0sIHtmOjJ9KTsKKyAgICBpZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbyh7
ZjoyMDAwMDAwMDAwfSwge2Y6MjAwMDAwMDAwMH0pOworaWYgKHJlc3VsdCAhPSA0MDAwMDAwMDAw
KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWRkLXNtYWxsLWNvbnN0YW50LW92ZXJmbG93
LXJlY292ZXJ5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYWRkLXNtYWxsLWNvbnN0YW50LW92ZXJmbG93LXJlY292ZXJ5LmpzCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hZGQtc21hbGwtY29uc3Rh
bnQtb3ZlcmZsb3ctcmVjb3ZlcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAor
ZnVuY3Rpb24gZm9vKGEpIHsKKyAgICByZXR1cm4gYS5mICsgMTAwMDsKK30KKworbm9JbmxpbmUo
Zm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1
bHQgPSBmb28oe2Y6MX0pOworICAgIGlmIChyZXN1bHQgIT0gMTAwMSkKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKHtm
OjIxNDc0ODMxNDh9KTsKK2lmIChyZXN1bHQgIT0gMjE0NzQ4NDE0OCkKKyAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220676</attachid>
            <date>2014-01-08 16:51:53 -0800</date>
            <delta_ts>2014-01-09 00:03:49 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37938</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNTI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBA
CisyMDE0LTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBub3QgdXNlIHRoZSBpbnB1dHMgb2YgYW4gYWRkIG9yIHN1YiBhcyB0aGUgbGl2
ZS1hdC1leGl0IHZhbHVlcyBpbiBhbiBvdmVyZmxvdyBjaGVjaywgaWYgdGhlIHZhbHVlcyBhcmVu
J3QgbGl2ZSBhZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBJbnRyb2R1Y2VzIHRoZSBub3Rpb24gb2YgYW4gRXhpdFZhbHVlIHRoYXQg
aXMgY29tcHV0ZWQgYnkgZG9pbmcgc29tZSBtYXRoIG9uIHR3bworICAgICAgICBleGl0IGFyZ3Vt
ZW50cy4gVGhpcyBnZXRzIHVzZWQgYnkgTG93ZXJERkdUb0xMVk0gYnkgdHJhY2tpbmcgdGhlCisg
ICAgICAgIEF2YWlsYWJsZVJlY292ZXJpZXMgLSBpLmUuIHRoZSBzZXQgb2Ygd2F5cyB3ZSBrbm93
IGhvdyB0byByZWNvdmVyIHRoZSB2YWx1ZSBvZiBhCisgICAgICAgIG5vZGUgYnkgcGVyZm9ybWlu
ZyBtYXRoIG9uIExWYWx1ZSdzIC0gYW5kIHRoZW4gdHJ5aW5nIHRvIHBpY2sgYW4gQXZhaWxhYmxl
UmVjb3ZlcnkKKyAgICAgICAgaWYgd2UgdHJ5IHRvIGV4aXQgd2l0aCBhbiBBdmFpbGFiaWxpdHkg
cG9pbnRpbmcgdG8gYSBOb2RlIHRoYXQgaXNuJ3QgYSBjb25zdGFudC4KKyAgICAgICAgVGhlIGNv
bXBpbGVBcml0aEFkZE9yU3ViKCkgY29kZSBhZGRzIEF2YWlsYWJsZVJlY292ZXJpZXMgZm9yIHRo
ZSB3YXlzIHlvdSBjb3VsZAorICAgICAgICByZWNvdmVyeSB0aGUgbGVmdCBvciByaWdodCBvcGVy
YW5kIGJ5IHVzaW5nIHRoZSByZXN1bHQuCisgICAgICAgIAorICAgICAgICBEb2luZyB0aGlzIHVu
Y292ZXJlZCBhIGJ1ZyBpbiBzdGFja21hcCBjb25zdGFudCBwYXJzaW5nIHdoZXJlIHdlIHdlcmUg
Y2FzdGluZyBhCisgICAgICAgIDMyLWJpdCB2YWx1ZSB0byAxNi1iaXQsIHRoZXJlYnkgbG9zaW5n
IHRoZSB0b3AgYml0cy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zlcnk6OmR1bXApOgorICAgICAg
ICAqIGZ0bC9GVExBdmFpbGFibGVSZWNvdmVyeS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpBdmFpbGFibGVSZWNvdmVyeTo6QXZhaWxhYmxlUmVjb3ZlcnkpOgorICAgICAgICAoSlNDOjpG
VEw6OkF2YWlsYWJsZVJlY292ZXJ5Ojpub2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFi
bGVSZWNvdmVyeTo6Zm9ybWF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVy
eTo6b3Bjb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBdmFpbGFibGVSZWNvdmVyeTo6bGVmdCk6
CisgICAgICAgIChKU0M6OkZUTDo6QXZhaWxhYmxlUmVjb3Zlcnk6OnJpZ2h0KToKKyAgICAgICAg
KiBmdGwvRlRMRXhpdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OmR1
bXBJbkNvbnRleHQpOgorICAgICAgICAqIGZ0bC9GVExFeGl0VmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpFeGl0VmFsdWU6OnJlY292ZXJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFs
dWU6OmlzUmVjb3ZlcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6bGVmdFJlY292
ZXJ5QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkV4aXRWYWx1ZTo6cmlnaHRSZWNvdmVy
eUFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnJlY292ZXJ5Rm9ybWF0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnJlY292ZXJ5T3Bjb2RlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpFeGl0VmFsdWU6OnZhbHVlRm9ybWF0KToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVB
cml0aEFkZE9yU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6YXBwZW5k
T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFkZEV4aXRBcmd1
bWVudEZvck5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpkb2VzS2ls
bCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFkZEF2YWlsYWJsZVJlY292
ZXJ5KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmNw
cDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGZ0bC9G
VExSZWNvdmVyeU9wY29kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBmdGwvRlRMU3RhY2tNYXBzLmg6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2FkZC1jb25zdGFudC1vdmVyZmxvdy1yZWNvdmVyeS5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hZGQtaW50
NTItY29uc3RhbnQtb3ZlcmZsb3ctcmVjb3ZlcnkuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYWRkLWludDUyLWxhcmdlLWNvbnN0YW50LW92ZXJmbG93
LXJlY292ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2FkZC1vdmVyZmxvdy1yZWNvdmVyeS5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9hZGQtc21hbGwtY29uc3RhbnQtb3ZlcmZsb3ctcmVjb3Zlcnku
anM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwogMjAxNC0wMS0wOCAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSB0
aGUgZGlzYWJsaW5nIG9mIEFWWApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE2MTUyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNiArMjM2LDEw
IEBACiAJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0
QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDg1MzIxMTg3NzUwNTYwMDgzQjY4
NyAvKiBERkdBcml0aE1vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0ODUzMUYxODc3NTA1NjAwODNCNjg3IC8qIERGR0FyaXRoTW9kZS5jcHAg
Ki87IH07CiAJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDg1MzIwMTg3NzUw
NTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ4NTMyNzE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZh
aWxhYmxlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0ODUzMjMxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5
LmNwcCAqLzsgfTsKKwkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJl
Y292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ4NTMyNDE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ4NTMyOTE4N0RG
REVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0ODUzMjUxODdERkRFQzAwODNCNjg3IC8qIEZU
TFJlY292ZXJ5T3Bjb2RlLmNwcCAqLzsgfTsKKwkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8q
IEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ5
M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhC
IC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJMEY0Qjk0REMxN0I5RjA3NTAwREQwM0E0
IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjRCOTREQjE3QjlGMDc1MDBERDAzQTQgLyogVHlwZWRBcnJheUlubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjU1NDFCMTE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NTQxQUYxNjEzQzFGQjAwQ0Uz
RTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLzsgfTsKQEAgLTE1NjYsNiArMTU3MCwxMCBAQAog
CQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDg1MzFGMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdB
cml0aE1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXJp
dGhNb2RlLmNwcDsgcGF0aCA9IGRmZy9ERkdBcml0aE1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjQ4NTMyMDE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJpdGhNb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FyaXRoTW9kZS5oOyBwYXRoID0g
ZGZnL0RGR0FyaXRoTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ4NTMy
MzE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwOyBwYXRo
ID0gZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0ODUzMjQxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEF2YWlsYWJsZVJlY292ZXJ5Lmg7
IHBhdGggPSBmdGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0ODUzMjUxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTFJlY292ZXJ5T3Bjb2Rl
LmNwcDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDg1MzI2MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExSZWNvdmVyeU9wY29kZS5o
OyBwYXRoID0gZnRsL0ZUTFJlY292ZXJ5T3Bjb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDkzQUY4MTZEMENBRDEwMDg0NTA4QiAvKiBTb3VyY2VQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VQcm92aWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNEI5NERCMTdCOUYwNzUwMEREMDNBNCAvKiBU
eXBlZEFycmF5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBl
ZEFycmF5SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1NDFBRjE2
MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3BlY2lhbFBvaW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjg2NCw2ICsyODcyLDggQEAKIAkJCQkwRkVBMEExODE3MDhCMDA3MDBCQjcy
MkMgLyogRlRMQWJzdHJhY3RIZWFwLmggKi8sCiAJCQkJMEZFQTBBMTkxNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovLAogCQkJCTBGRUEwQTFBMTcwOEIw
MDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggKi8sCisJCQkJMEY0ODUz
MjMxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcCAqLywKKwkJCQkw
RjQ4NTMyNDE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCAqLywKIAkJ
CQkwRkVBMDlGRTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmNwcCAqLywKIAkJ
CQkwRkVBMDlGRjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJ
MEZFQTBBMjUxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5jcHAgKi8sCkBAIC0y
OTEyLDYgKzI5MjIsOCBAQAogCQkJCTBGMjM1QkNBMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JF
eGl0Q29tcGlsZXIuaCAqLywKIAkJCQkwRkVBMEEyOTE3MDk2Mjk2MDBCQjcyMkMgLyogRlRMT3V0
cHV0LmNwcCAqLywKIAkJCQkwRkVBMEEwNjE3MDUxM0RCMDBCQjcyMkMgLyogRlRMT3V0cHV0Lmgg
Ki8sCisJCQkJMEY0ODUzMjUxODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmNw
cCAqLywKKwkJCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUu
aCAqLywKIAkJCQkwRjZCMUNCRjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMUmVnaXN0ZXJBdE9mZnNl
dC5jcHAgKi8sCiAJCQkJMEY2QjFDQzAxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRP
ZmZzZXQuaCAqLywKIAkJCQkwRkNFRkFBOTE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3Rv
cmUuY3BwICovLApAQCAtNDQxOSw2ICs0NDMxLDcgQEAKIAkJCQkwRjgzNjRCNzE2NEIwQzExMDA1
MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlD
MDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxl
UmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAv
KiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ1NTEsNiArNDU2NCw3IEBACiAJCQkJMEZFQTBBMUYxNzA4QjAw
NzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBh
YmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAv
KiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMjMxNzA5NjA2
OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBB
MEMxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjM1QkQ0MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtNTU2NSw2ICs1NTc5LDcgQEAKIAkJCQkwRkMwOTdBMTE0NkIyOENBMDBDRjI0NDIgLyog
REZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhBMzI3MTdENTFGNTcwMENBMkM0
MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRDhBMzI5MTdENTFGNTcwMENBMkM0MCAvKiBERkdUb0ZUTERlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ4NTMyNzE4N0RGREVDMDA4M0I2ODcg
LyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEOEEzMkIx
N0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2Mzk0NDAxNUM3NUYxRDAwNkE1OTdD
IC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
RTBGNzYxNkMxREIwRjAwODJDNUU4IC8qIERGR1VuaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC01Njk3LDYgKzU3MTIsNyBAQAogCQkJCTE0MjgwODc1MTA3RUMxM0UwMDEzRTdC
MiAvKiBKU0xvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI1RDcwOUIxNkRFOTlGNDAwRkNB
NkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwMDg3NDExN0NC
RThFQjAwQzNFNjQzIC8qIEpTTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDg1MzI5MTg3
REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDg3NEFFMzE1RUJERTRBMDAyRTM1ODcgLyogSlNOYW1lU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTcyNzAwOTAwREFDNkJCQzAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDQxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBdmFp
bGFibGVSZWNvdmVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBdmFpbGFibGVSZWNvdmVyeS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGVExBdmFpbGFibGVSZWNvdmVyeS5o
IgorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKKwordm9pZCBBdmFpbGFibGVSZWNvdmVyeTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIG91dC5wcmludChub2RlKCksICIgPT4gIiwgb3Bjb2RlKCksICIsICIsIFJhd1Bv
aW50ZXIobV9sZWZ0KSwgIiwgIiwgUmF3UG9pbnRlcihtX3JpZ2h0KSwgIiwgIiwgbV9mb3JtYXQp
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRM
X0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBdmFpbGFibGVSZWNv
dmVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZhaWxh
YmxlUmVjb3ZlcnkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQXZhaWxhYmxlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlRM
QXZhaWxhYmxlUmVjb3ZlcnlfaAorI2RlZmluZSBGVExBdmFpbGFibGVSZWNvdmVyeV9oCisKKyNp
ZiBFTkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJGVExB
YmJyZXZpYXRlZFR5cGVzLmgiCisjaW5jbHVkZSAiRlRMUmVjb3ZlcnlPcGNvZGUuaCIKKyNpbmNs
dWRlICJGVExWYWx1ZUZvcm1hdC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CisKK2NsYXNzIEF2YWlsYWJsZVJlY292ZXJ5IHsKK3B1YmxpYzoKKyAgICBBdmFpbGFibGVSZWNv
dmVyeSgpCisgICAgICAgIDogbV9ub2RlKDApCisgICAgICAgICwgbV9mb3JtYXQoSW52YWxpZFZh
bHVlRm9ybWF0KQorICAgICAgICAsIG1fb3Bjb2RlKEFkZFJlY292ZXJ5KQorICAgICAgICAsIG1f
bGVmdCgwKQorICAgICAgICAsIG1fcmlnaHQoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIEF2
YWlsYWJsZVJlY292ZXJ5KERGRzo6Tm9kZSogbm9kZSwgUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlLCBM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0LCBWYWx1ZUZvcm1hdCBmb3JtYXQpCisgICAgICAgIDog
bV9ub2RlKG5vZGUpCisgICAgICAgICwgbV9mb3JtYXQoZm9ybWF0KQorICAgICAgICAsIG1fb3Bj
b2RlKG9wY29kZSkKKyAgICAgICAgLCBtX2xlZnQobGVmdCkKKyAgICAgICAgLCBtX3JpZ2h0KHJp
Z2h0KQorICAgIHsKKyAgICB9CisgICAgCisgICAgREZHOjpOb2RlKiBub2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ub2RlOyB9CisgICAgVmFsdWVGb3JtYXQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXQ7IH0KKyAgICBSZWNvdmVyeU9wY29kZSBvcGNvZGUoKSBjb25zdCB7IHJldHVybiBt
X29wY29kZTsgfQorICAgIExWYWx1ZSBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9Cisg
ICAgTFZhbHVlIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQorICAgIAorICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBERkc6Ok5v
ZGUqIG1fbm9kZTsKKyAgICBWYWx1ZUZvcm1hdCBtX2Zvcm1hdDsKKyAgICBSZWNvdmVyeU9wY29k
ZSBtX29wY29kZTsKKyAgICBMVmFsdWUgbV9sZWZ0OworICAgIExWYWx1ZSBtX3JpZ2h0OworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQp
CisKKyNlbmRpZiAvLyBGVExBdmFpbGFibGVSZWNvdmVyeV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1ZS5jcHAJKHJldmlzaW9uIDE2MTUyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTksNiArNTksOSBAQCB2b2lkIEV4aXRWYWx1ZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhCiAg
ICAgY2FzZSBFeGl0VmFsdWVJbkpTU3RhY2tBc0RvdWJsZToKICAgICAgICAgb3V0LnByaW50KCJJ
bkpTU3RhY2tBc0RvdWJsZTpyIiwgdmlydHVhbFJlZ2lzdGVyKCkpOwogICAgICAgICByZXR1cm47
CisgICAgY2FzZSBFeGl0VmFsdWVSZWNvdmVyeToKKyAgICAgICAgb3V0LnByaW50KCJSZWNvdmVy
eSgiLCByZWNvdmVyeU9wY29kZSgpLCAiLCBhcmciLCBsZWZ0UmVjb3ZlcnlBcmd1bWVudCgpLCAi
LCBhcmciLCByaWdodFJlY292ZXJ5QXJndW1lbnQoKSwgIiwgIiwgcmVjb3ZlcnlGb3JtYXQoKSwg
IikiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFs
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4aXRWYWx1
ZS5oCShyZXZpc2lvbiAxNjE1MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEV4
aXRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKEZUTF9K
SVQpCiAKICNpbmNsdWRlICJGVExFeGl0QXJndW1lbnQuaCIKKyNpbmNsdWRlICJGVExSZWNvdmVy
eU9wY29kZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVn
aXN0ZXIuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTUxLDcgKzUyLDggQEAg
ZW51bSBFeGl0VmFsdWVLaW5kIHsKICAgICBFeGl0VmFsdWVJbkpTU3RhY2ssCiAgICAgRXhpdFZh
bHVlSW5KU1N0YWNrQXNJbnQzMiwKICAgICBFeGl0VmFsdWVJbkpTU3RhY2tBc0ludDUyLAotICAg
IEV4aXRWYWx1ZUluSlNTdGFja0FzRG91YmxlCisgICAgRXhpdFZhbHVlSW5KU1N0YWNrQXNEb3Vi
bGUsCisgICAgRXhpdFZhbHVlUmVjb3ZlcnkKIH07CiAKIGNsYXNzIEV4aXRWYWx1ZSB7CkBAIC0x
MTgsNiArMTIwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgCisgICAgc3RhdGljIEV4aXRWYWx1ZSByZWNvdmVyeShSZWNvdmVyeU9wY29kZSBvcGNvZGUs
IHVuc2lnbmVkIGxlZnRBcmd1bWVudCwgdW5zaWduZWQgcmlnaHRBcmd1bWVudCwgVmFsdWVGb3Jt
YXQgZm9ybWF0KQorICAgIHsKKyAgICAgICAgRXhpdFZhbHVlIHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0Lm1fa2luZCA9IEV4aXRWYWx1ZVJlY292ZXJ5OworICAgICAgICByZXN1bHQudS5yZWNvdmVy
eS5vcGNvZGUgPSBvcGNvZGU7CisgICAgICAgIHJlc3VsdC51LnJlY292ZXJ5LmxlZnRBcmd1bWVu
dCA9IGxlZnRBcmd1bWVudDsKKyAgICAgICAgcmVzdWx0LnUucmVjb3ZlcnkucmlnaHRBcmd1bWVu
dCA9IHJpZ2h0QXJndW1lbnQ7CisgICAgICAgIHJlc3VsdC51LnJlY292ZXJ5LmZvcm1hdCA9IGZv
cm1hdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAgICAgRXhpdFZhbHVl
S2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAgICAgCiAgICAgYm9vbCBpc0Rl
YWQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gRXhpdFZhbHVlRGVhZDsgfQpAQCAtMTM1LDYg
KzE0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyBy
ZXR1cm4ga2luZCgpID09IEV4aXRWYWx1ZUNvbnN0YW50OyB9CiAgICAgYm9vbCBpc0FyZ3VtZW50
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEV4aXRWYWx1ZUFyZ3VtZW50OyB9CisgICAgYm9v
bCBpc1JlY292ZXJ5KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IEV4aXRWYWx1ZVJlY292ZXJ5
OyB9CiAgICAgCiAgICAgRXhpdEFyZ3VtZW50IGV4aXRBcmd1bWVudCgpIGNvbnN0CiAgICAgewpA
QCAtMTQyLDYgKzE1NiwzMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBFeGl0QXJndW1lbnQo
dS5hcmd1bWVudCk7CiAgICAgfQogICAgIAorICAgIHVuc2lnbmVkIGxlZnRSZWNvdmVyeUFyZ3Vt
ZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1JlY292ZXJ5KCkpOworICAgICAg
ICByZXR1cm4gdS5yZWNvdmVyeS5sZWZ0QXJndW1lbnQ7CisgICAgfQorICAgIAorICAgIHVuc2ln
bmVkIHJpZ2h0UmVjb3ZlcnlBcmd1bWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
aXNSZWNvdmVyeSgpKTsKKyAgICAgICAgcmV0dXJuIHUucmVjb3ZlcnkucmlnaHRBcmd1bWVudDsK
KyAgICB9CisgICAgCisgICAgVmFsdWVGb3JtYXQgcmVjb3ZlcnlGb3JtYXQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzUmVjb3ZlcnkoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxWYWx1ZUZvcm1hdD4odS5yZWNvdmVyeS5mb3JtYXQpOworICAgIH0KKyAgICAKKyAgICBS
ZWNvdmVyeU9wY29kZSByZWNvdmVyeU9wY29kZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoaXNSZWNvdmVyeSgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlY292ZXJ5T3Bj
b2RlPih1LnJlY292ZXJ5Lm9wY29kZSk7CisgICAgfQorICAgIAogICAgIEpTVmFsdWUgY29uc3Rh
bnQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzQ29uc3RhbnQoKSk7CkBAIC0xOTAs
NiArMjI4LDkgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRXhpdFZhbHVl
SW5KU1N0YWNrQXNEb3VibGU6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVGb3JtYXREb3VibGU7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBFeGl0VmFsdWVSZWNvdmVyeToKKyAgICAgICAg
ICAgIHJldHVybiByZWNvdmVyeUZvcm1hdCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA1LDYgKzI0NiwxMiBAQCBwcml2
YXRlOgogICAgICAgICBFeGl0QXJndW1lbnRSZXByZXNlbnRhdGlvbiBhcmd1bWVudDsKICAgICAg
ICAgRW5jb2RlZEpTVmFsdWUgY29uc3RhbnQ7CiAgICAgICAgIGludCB2aXJ0dWFsUmVnaXN0ZXI7
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MTZfdCBsZWZ0QXJndW1lbnQ7Cisg
ICAgICAgICAgICB1aW50MTZfdCByaWdodEFyZ3VtZW50OworICAgICAgICAgICAgdWludDE2X3Qg
b3Bjb2RlOworICAgICAgICAgICAgdWludDE2X3QgZm9ybWF0OworICAgICAgICB9IHJlY292ZXJ5
OwogICAgIH0gdTsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjE1MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCIKICNpbmNsdWRlICJGVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgiCisjaW5jbHVkZSAiRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCIKICNpbmNs
dWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExGb3JtYXR0ZWRWYWx1
ZS5oIgogI2luY2x1ZGUgIkZUTElubGluZUNhY2hlU2l6ZS5oIgpAQCAtMjU2LDYgKzI1Nyw4IEBA
IHByaXZhdGU6CiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJMb3dlcmluZyAiLCBtX25vZGUsICJcbiIpOwogICAgICAgICAKKyAg
ICAgICAgbV9hdmFpbGFibGVSZWNvdmVyaWVzLnJlc2l6ZSgwKTsKKyAgICAgICAgCiAgICAgICAg
IGJvb2wgc2hvdWxkRXhlY3V0ZUVmZmVjdHMgPSBtX2ludGVycHJldGVyLnN0YXJ0RXhlY3V0aW5n
KG1fbm9kZSk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+b3AoKSkgewpAQCAt
Mjk1LDEwICsyOTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVZhbHVlQWRkKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcml0aEFkZDoKLSAgICAgICAgICAg
IGNvbXBpbGVBZGRTdWIoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRo
U3ViOgotICAgICAgICAgICAgY29tcGlsZUFkZFN1YigpOworICAgICAgICAgICAgY29tcGlsZUFy
aXRoQWRkT3JTdWIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRoTXVs
OgogICAgICAgICAgICAgY29tcGlsZUFyaXRoTXVsKCk7CkBAIC04MDgsNyArODA5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlQWRk
U3ViKCkKKyAgICB2b2lkIGNvbXBpbGVBcml0aEFkZE9yU3ViKCkKICAgICB7CiAgICAgICAgIGJv
b2wgaXNTdWIgPSAgbV9ub2RlLT5vcCgpID09IEFyaXRoU3ViOwogICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpKSB7CkBAIC04MjEsNyArODIyLDM3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSBpc1N1YiA/IG1fb3V0LnN1YldpdGhPdmVyZmxvdzMyKGxlZnQsIHJpZ2h0KSA6
IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzMyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQ7CisgICAgICAgICAgICBpZiAoIWlzU3ViKSB7CisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gbV9vdXQuYWRkV2l0aE92ZXJmbG93MzIobGVmdCwgcmlnaHQpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChkb2VzS2lsbChtX25vZGUtPmNoaWxkMigpKSkgewor
ICAgICAgICAgICAgICAgICAgICBhZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbm9kZS0+Y2hpbGQyKCksIFN1YlJlY292ZXJ5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCksIGxlZnQsIFZhbHVlRm9ybWF0
SW50MzIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9lc0tpbGwobV9ub2RlLT5jaGls
ZDEoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLCBTdWJSZWNvdmVyeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCByaWdodCwg
VmFsdWVGb3JtYXRJbnQzMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZsb3czMihsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGRvZXNLaWxs
KG1fbm9kZS0+Y2hpbGQyKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdCA9IGxl
ZnQgLSByaWdodAorICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgLSBsZWZ0ID0gLXJpZ2h0
CisgICAgICAgICAgICAgICAgICAgIC8vIHJpZ2h0ID0gbGVmdCAtIHJlc3VsdAorICAgICAgICAg
ICAgICAgICAgICBhZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fbm9kZS0+Y2hpbGQyKCksIFN1YlJlY292ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdCwgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCksIFZhbHVlRm9ybWF0SW50MzIpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9lc0tpbGwobV9ub2RlLT5jaGlsZDEoKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0ID0gbGVmdCAtIHJpZ2h0CisgICAgICAgICAg
ICAgICAgICAgIC8vIHJlc3VsdCArIHJpZ2h0ID0gbGVmdAorICAgICAgICAgICAgICAgICAgICBh
ZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hp
bGQxKCksIEFkZFJlY292ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZXh0cmFj
dFZhbHVlKHJlc3VsdCwgMCksIHJpZ2h0LCBWYWx1ZUZvcm1hdEludDMyKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywg
bm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CiAgICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CkBAIC04NDEsNyArODcy
LDM4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0ludDUyKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2Rl
LT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBpc1N1YiA/IG1fb3V0
LnN1YldpdGhPdmVyZmxvdzY0KGxlZnQsIHJpZ2h0KSA6IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzY0
KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQ7CisgICAgICAgICAgICBp
ZiAoIWlzU3ViKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuYWRkV2l0aE92ZXJm
bG93NjQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlm
IChkb2VzS2lsbChtX25vZGUtPmNoaWxkMigpKSkgeworICAgICAgICAgICAgICAgICAgICBhZGRB
dmFpbGFibGVSZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQy
KCksIFN1YlJlY292ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZXh0cmFjdFZh
bHVlKHJlc3VsdCwgMCksIGxlZnQsIFZhbHVlRm9ybWF0SW50NTIpOworICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoZG9lc0tpbGwobV9ub2RlLT5jaGlsZDEoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPmNoaWxkMSgpLCBTdWJSZWNvdmVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDApLCByaWdodCwgVmFsdWVGb3JtYXRJbnQ1Mik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgaWYgKGRvZXNLaWxsKG1fbm9kZS0+Y2hpbGQyKCkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdCA9IGxlZnQgLSByaWdodAorICAgICAgICAgICAg
ICAgICAgICAvLyByZXN1bHQgLSBsZWZ0ID0gLXJpZ2h0CisgICAgICAgICAgICAgICAgICAgIC8v
IHJpZ2h0ID0gbGVmdCAtIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICBhZGRBdmFpbGFibGVS
ZWNvdmVyeSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQyKCksIFN1YlJl
Y292ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCwgbV9vdXQuZXh0cmFjdFZhbHVl
KHJlc3VsdCwgMCksIFZhbHVlRm9ybWF0SW50NTIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoZG9lc0tpbGwobV9ub2RlLT5jaGlsZDEoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
cmVzdWx0ID0gbGVmdCAtIHJpZ2h0CisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VsdCArIHJp
Z2h0ID0gbGVmdAorICAgICAgICAgICAgICAgICAgICBhZGRBdmFpbGFibGVSZWNvdmVyeSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+Y2hpbGQxKCksIEFkZFJlY292ZXJ5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZXh0cmFjdFZhbHVlKHJlc3VsdCwgMCksIHJpZ2h0
LCBWYWx1ZUZvcm1hdEludDUyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIHNwZWN1bGF0ZShJbnQ1Mk92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0
LmV4dHJhY3RWYWx1ZShyZXN1bHQsIDEpKTsKICAgICAgICAgICAgIHNldEludDUyKG1fb3V0LmV4
dHJhY3RWYWx1ZShyZXN1bHQsIDApKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA2NSw4ICs0
MTI3LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRPU1JFeGl0KAogICAgICAgICBFeGl0
S2luZCBraW5kLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgTm9kZSogaGlnaFZhbHVlLCBMVmFs
dWUgZmFpbENvbmRpdGlvbikKICAgICB7Ci0gICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25F
bmFibGVkKCkpCisgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZXhpdCAjIiwgbV9mdGxTdGF0ZS5qaXRDb2RlLT5v
c3JFeGl0LnNpemUoKSwgIiB3aXRoIGF2YWlsYWJpbGl0eTogIiwgbV9hdmFpbGFiaWxpdHksICJc
biIpOworICAgICAgICAgICAgaWYgKCFtX2F2YWlsYWJsZVJlY292ZXJpZXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgQXZhaWxhYmxlIHJlY292ZXJpZXM6ICIs
IGxpc3REdW1wKG1fYXZhaWxhYmxlUmVjb3ZlcmllcyksICJcbiIpOworICAgICAgICB9CiAKICAg
ICAgICAgQVNTRVJUKG1fZnRsU3RhdGUuaml0Q29kZS0+b3NyRXhpdC5zaXplKCkgPT0gbV9mdGxT
dGF0ZS5maW5hbGl6ZXItPm9zckV4aXQuc2l6ZSgpKTsKICAgICAgICAgCkBAIC00MTkxLDYgKzQy
NTYsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHRyeVRvU2V0Q29uc3RhbnRFeGl0QXJndW1l
bnQoZXhpdCwgaW5kZXgsIG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXZhaWxhYmxlUmVjb3Zlcmllcy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgQXZhaWxhYmxlUmVjb3ZlcnkgcmVjb3ZlcnkgPSBtX2F2
YWlsYWJsZVJlY292ZXJpZXNbaV07CisgICAgICAgICAgICBpZiAocmVjb3Zlcnkubm9kZSgpICE9
IG5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGV4aXQubV92YWx1ZXNbaW5kZXhdID0gRXhpdFZhbHVlOjpyZWNvdmVyeSgKKyAgICAgICAg
ICAgICAgICByZWNvdmVyeS5vcGNvZGUoKSwgYXJndW1lbnRzLnNpemUoKSwgYXJndW1lbnRzLnNp
emUoKSArIDEsCisgICAgICAgICAgICAgICAgcmVjb3ZlcnkuZm9ybWF0KCkpOworICAgICAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZChyZWNvdmVyeS5sZWZ0KCkpOworICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChyZWNvdmVyeS5yaWdodCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1faW50MzJW
YWx1ZXMuZ2V0KG5vZGUpOwogICAgICAgICBpZiAoaXNWYWxpZCh2YWx1ZSkpIHsKICAgICAgICAg
ICAgIGFkZEV4aXRBcmd1bWVudChleGl0LCBhcmd1bWVudHMsIGluZGV4LCBWYWx1ZUZvcm1hdElu
dDMyLCB2YWx1ZS52YWx1ZSgpKTsKQEAgLTQyNjAsNiArNDMzOCwyOSBAQCBwcml2YXRlOgogICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBkb2Vz
S2lsbChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBpZiAoZWRnZS5kb2VzTm90S2lsbCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKGVkZ2UtPmhh
c0NvbnN0YW50KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhZGRBdmFpbGFibGVSZWNvdmVy
eSgKKyAgICAgICAgTm9kZSogbm9kZSwgUmVjb3ZlcnlPcGNvZGUgb3Bjb2RlLCBMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0LCBWYWx1ZUZvcm1hdCBmb3JtYXQpCisgICAgeworICAgICAgICBtX2F2
YWlsYWJsZVJlY292ZXJpZXMuYXBwZW5kKEF2YWlsYWJsZVJlY292ZXJ5KG5vZGUsIG9wY29kZSwg
bGVmdCwgcmlnaHQsIGZvcm1hdCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZEF2YWlsYWJs
ZVJlY292ZXJ5KAorICAgICAgICBFZGdlIGVkZ2UsIFJlY292ZXJ5T3Bjb2RlIG9wY29kZSwgTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCwgVmFsdWVGb3JtYXQgZm9ybWF0KQorICAgIHsKKyAgICAg
ICAgYWRkQXZhaWxhYmxlUmVjb3ZlcnkoZWRnZS5ub2RlKCksIG9wY29kZSwgbGVmdCwgcmlnaHQs
IGZvcm1hdCk7CisgICAgfQorICAgIAogICAgIHZvaWQgc2V0SW50MzIoTm9kZSogbm9kZSwgTFZh
bHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9pbnQzMlZhbHVlcy5zZXQobm9kZSwgTG93ZXJl
ZE5vZGVWYWx1ZSh2YWx1ZSwgbV9oaWdoQmxvY2spKTsKQEAgLTQ0MjMsNiArNDUyNCw4IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgT3BlcmFuZHM8QXZhaWxhYmlsaXR5PiBtX2F2YWlsYWJpbGl0eTsK
ICAgICAKKyAgICBWZWN0b3I8QXZhaWxhYmxlUmVjb3ZlcnksIDM+IG1fYXZhaWxhYmxlUmVjb3Zl
cmllczsKKyAgICAKICAgICBJblBsYWNlQWJzdHJhY3RTdGF0ZSBtX3N0YXRlOwogICAgIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+IG1faW50ZXJwcmV0ZXI7CiAgICAg
QmFzaWNCbG9jayogbV9oaWdoQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNjE1MjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEzNCw2ICsxMzQsNDQgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAgICAg
ICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcih2YWx1ZS52aXJ0dWFsUmVn
aXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgRXhpdFZhbHVlUmVjb3Zlcnk6CisgICAgICAgICAgICByZWNvcmQt
PmxvY2F0aW9uc1t2YWx1ZS5yaWdodFJlY292ZXJ5QXJndW1lbnQoKV0ucmVzdG9yZUludG8oCisg
ICAgICAgICAgICAgICAgaml0LCBqaXRDb2RlLT5zdGFja21hcHMsIHJlZ2lzdGVyU2NyYXRjaCwg
R1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgcmVjb3JkLT5sb2NhdGlvbnNbdmFsdWUubGVm
dFJlY292ZXJ5QXJndW1lbnQoKV0ucmVzdG9yZUludG8oCisgICAgICAgICAgICAgICAgaml0LCBq
aXRDb2RlLT5zdGFja21hcHMsIHJlZ2lzdGVyU2NyYXRjaCwgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgc3dpdGNoICh2YWx1ZS5yZWNvdmVyeU9wY29kZSgpKSB7CisgICAgICAgICAgICBj
YXNlIEFkZFJlY292ZXJ5OgorICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUucmVjb3ZlcnlG
b3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVGb3JtYXRJbnQzMjoKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmFkZDMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVG
b3JtYXRJbnQ1MjoKKyAgICAgICAgICAgICAgICAgICAgaml0LmFkZDY0KEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3ViUmVjb3Zlcnk6Cisg
ICAgICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS5yZWNvdmVyeUZvcm1hdCgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBWYWx1ZUZvcm1hdEludDMyOgorICAgICAgICAgICAgICAgICAgICBqaXQu
c3ViMzIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZUZvcm1hdEludDUyOgorICAgICAg
ICAgICAgICAgICAgICBqaXQuc3ViNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNvZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNvZGUu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWNvdmVy
eU9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRlRMUmVjb3ZlcnlPcGNvZGUuaCIKKworI2lmIEVOQUJMRShGVExfSklUKQorCisj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpGVEw6OlJlY292ZXJ5T3Bjb2RlIG9w
Y29kZSkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZSkgeworICAgIGNhc2UgSlNDOjpGVEw6OkFkZFJl
Y292ZXJ5OgorICAgICAgICBvdXQucHJpbnQoIkFkZCIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBKU0M6OkZUTDo6U3ViUmVjb3Zlcnk6CisgICAgICAgIG91dC5wcmludCgiU3ViIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWNvdmVyeU9wY29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNvZGUuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVjb3ZlcnlPcGNv
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRlRMUmVjb3ZlcnlPcGNvZGVfaAor
I2RlZmluZSBGVExSZWNvdmVyeU9wY29kZV9oCisKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitlbnVtIFJlY292ZXJ5T3Bjb2RlIHsKKyAg
ICBBZGRSZWNvdmVyeSwKKyAgICBTdWJSZWNvdmVyeQorfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkZUTAorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07Cit2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkZUTDo6UmVjb3ZlcnlPcGNvZGUpOworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorCisjZW5kaWYg
Ly8gRlRMUmVjb3ZlcnlPcGNvZGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFN0YWNrTWFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMU3RhY2tNYXBzLmgJKHJldmlzaW9uIDE2MTUyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU3RhY2tNYXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgc3Ry
dWN0IFN0YWNrTWFwcyB7CiAgICAgICAgIHVpbnQxNl90IGR3YXJmUmVnTnVtOyAvLyBSZXByZXNl
bnRlZCBhcyBhIDEyLWJpdCBpbnQgaW4gdGhlIHNlY3Rpb24uCiAgICAgICAgIGludDhfdCBzaXpl
OwogICAgICAgICBLaW5kIGtpbmQ7Ci0gICAgICAgIGludDE2X3Qgb2Zmc2V0OworICAgICAgICBp
bnQzMl90IG9mZnNldDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgcGFyc2UoRGF0YVZpZXcqLCB1
bnNpZ25lZCYgb2Zmc2V0KTsKICAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hZGQtY29uc3Rh
bnQtb3ZlcmZsb3ctcmVjb3ZlcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9hZGQtY29uc3RhbnQtb3ZlcmZsb3ctcmVjb3ZlcnkuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FkZC1jb25zdGFu
dC1vdmVyZmxvdy1yZWNvdmVyeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACitm
dW5jdGlvbiBmb28oYSkgeworICAgIHJldHVybiBhLmYgKyAyMDAwMDAwMDAwOworfQorCitub0lu
bGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFy
IHJlc3VsdCA9IGZvbyh7ZjoxfSk7CisgICAgaWYgKHJlc3VsdCAhPSAyMDAwMDAwMDAxKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisKK3ZhciByZXN1
bHQgPSBmb28oe2Y6MjAwMDAwMDAwMH0pOworaWYgKHJlc3VsdCAhPSA0MDAwMDAwMDAwKQorICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWRkLWludDUyLWNvbnN0YW50LW92ZXJmbG93LXJlY292
ZXJ5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YWRkLWludDUyLWNvbnN0YW50LW92ZXJmbG93LXJlY292ZXJ5LmpzCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hZGQtaW50NTItY29uc3RhbnQtb3Zl
cmZsb3ctcmVjb3ZlcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorZnVuY3Rp
b24gZm9vKGEpIHsKKyAgICByZXR1cm4gYSAqIDIwOTcxNDQgKyAxMDczNzQ1OTIwOworfQorCitu
b0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAg
dmFyIHJlc3VsdCA9IGZvbygxMDczNzM2MzgzKTsKKyAgICBpZiAocmVzdWx0ICE9IDIyNTE3ODA4
ODY5MzYwNzIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
K30KKwordmFyIHJlc3VsdCA9IGZvbygxMDczNzQ1OTE5KTsKK2lmIChyZXN1bHQgIT0gMjI1MTgw
MDg4NTMwMTI1NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FkZC1pbnQ1Mi1sYXJnZS1j
b25zdGFudC1vdmVyZmxvdy1yZWNvdmVyeS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2FkZC1pbnQ1Mi1sYXJnZS1jb25zdGFudC1vdmVyZmxvdy1y
ZWNvdmVyeS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYWRkLWludDUyLWxhcmdlLWNvbnN0YW50LW92ZXJmbG93LXJlY292ZXJ5LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIGZvbyhhKSB7CisgICAgcmV0dXJu
IGEgKiAyMDk3MTQ0ICsgMTAwMDAwMDAwMDA7Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKDEwNzM3
NDExNTEpOworICAgIGlmIChyZXN1bHQgIT0gMjI1MTc5OTgxMjM3Mjc0NCkKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9v
KDEwNzM3NDExNTIpOworaWYgKHJlc3VsdCAhPSAyMjUxNzk5ODE0NDY5ODg4KQorICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvYWRkLW92ZXJmbG93LXJlY292ZXJ5LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYWRkLW92ZXJmbG93LXJlY292ZXJ5
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
ZGQtb3ZlcmZsb3ctcmVjb3ZlcnkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAor
ZnVuY3Rpb24gZm9vKGEsIGIpIHsKKyAgICByZXR1cm4gYS5mICsgYi5mOworfQorCitub0lubGlu
ZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJl
c3VsdCA9IGZvbyh7ZjoxfSwge2Y6Mn0pOworICAgIGlmIChyZXN1bHQgIT0gMykKKyAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0g
Zm9vKHtmOjIwMDAwMDAwMDB9LCB7ZjoyMDAwMDAwMDAwfSk7CitpZiAocmVzdWx0ICE9IDQwMDAw
MDAwMDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hZGQtc21hbGwtY29uc3RhbnQtb3Zl
cmZsb3ctcmVjb3ZlcnkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hZGQtc21hbGwtY29uc3RhbnQtb3ZlcmZsb3ctcmVjb3ZlcnkuanMJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FkZC1zbWFsbC1j
b25zdGFudC1vdmVyZmxvdy1yZWNvdmVyeS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1
IEBACitmdW5jdGlvbiBmb28oYSkgeworICAgIHJldHVybiBhLmYgKyAxMDAwOworfQorCitub0lu
bGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFy
IHJlc3VsdCA9IGZvbyh7ZjoxfSk7CisgICAgaWYgKHJlc3VsdCAhPSAxMDAxKQorICAgICAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisKK3ZhciByZXN1bHQgPSBm
b28oe2Y6MjE0NzQ4MzE0OH0pOworaWYgKHJlc3VsdCAhPSAyMTQ3NDg0MTQ4KQorICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
</data>
<flag name="review"
          id="244441"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>